From 2602102ce620f1bef6b5534677c4d0cca1d51a3d Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Sat, 2 Mar 2024 11:55:16 -0800 Subject: [PATCH 01/23] feat(proxy_server.py): enable `/organizations/new` endpoint allows admins to create organizations which can own teams --- litellm/proxy/_types.py | 38 +++++++++++++++ litellm/proxy/proxy_server.py | 90 ++++++++++++++++++++++++++++++++--- litellm/proxy/schema.prisma | 48 ++++++++++++++++--- schema.prisma | 43 +++++++++++++++-- 4 files changed, 202 insertions(+), 17 deletions(-) diff --git a/litellm/proxy/_types.py b/litellm/proxy/_types.py index ce4de2d14..6a73162ec 100644 --- a/litellm/proxy/_types.py +++ b/litellm/proxy/_types.py @@ -324,6 +324,44 @@ class TeamRequest(LiteLLMBase): teams: List[str] +class NewOrganizationRequest(LiteLLMBase): + organization_alias: Optional[str] = None + models: List = [] + budget_id: Optional[str] = None + tpm_limit: Optional[int] = None + rpm_limit: Optional[int] = None + max_budget: Optional[float] = None + + +class LiteLLM_BudgetTable(LiteLLMBase): + """Represents user-controllable params for a LiteLLM_BudgetTable record""" + + max_budget: Optional[float] = None + max_parallel_requests: Optional[int] = None + tpm_limit: Optional[int] = None + rpm_limit: Optional[int] = None + model_max_budget: dict + budget_duration: Optional[str] = None + budget_reset_at: Optional[datetime] = None + created_by: str + updated_by: str + + +class LiteLLM_OrganizationTable(LiteLLMBase): + + organization_id: str + organization_alias: Optional[str] = None + budget_id: str + metadata: dict + models: List[str] + spend: float + model_spend: dict + created_at: datetime + created_by: str + updated_at: datetime + updated_by: str + + class KeyManagementSystem(enum.Enum): GOOGLE_KMS = "google_kms" AZURE_KEY_VAULT = "azure_key_vault" diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 869de6dde..384d10961 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -239,6 +239,7 @@ health_check_interval = None health_check_results = {} queue: List = [] litellm_proxy_budget_name = "litellm-proxy-budget" +litellm_proxy_admin_name = "default_user_id" ui_access_mode: Literal["admin", "all"] = "all" proxy_budget_rescheduler_min_time = 597 proxy_budget_rescheduler_max_time = 605 @@ -335,7 +336,11 @@ async def user_api_key_auth( # note: never string compare api keys, this is vulenerable to a time attack. Use secrets.compare_digest instead is_master_key_valid = secrets.compare_digest(api_key, master_key) if is_master_key_valid: - return UserAPIKeyAuth(api_key=master_key, user_role="proxy_admin") + return UserAPIKeyAuth( + api_key=master_key, + user_role="proxy_admin", + user_id=litellm_proxy_admin_name, + ) if isinstance( api_key, str ): # if generated token, make sure it starts with sk-. @@ -360,7 +365,6 @@ async def user_api_key_auth( valid_token = await prisma_client.get_data( token=api_key, table_name="combined_view" ) - elif custom_db_client is not None: try: valid_token = await custom_db_client.get_data( @@ -2213,7 +2217,7 @@ def parse_cache_control(cache_control): @router.on_event("startup") async def startup_event(): - global prisma_client, master_key, use_background_health_checks, llm_router, llm_model_list, general_settings, proxy_budget_rescheduler_min_time, proxy_budget_rescheduler_max_time + global prisma_client, master_key, use_background_health_checks, llm_router, llm_model_list, general_settings, proxy_budget_rescheduler_min_time, proxy_budget_rescheduler_max_time, litellm_proxy_admin_name import json ### LOAD MASTER KEY ### @@ -2260,9 +2264,8 @@ async def startup_event(): if prisma_client is not None and master_key is not None: # add master key to db - user_id = "default_user_id" if os.getenv("PROXY_ADMIN_ID", None) is not None: - user_id = os.getenv("PROXY_ADMIN_ID") + litellm_proxy_admin_name = os.getenv("PROXY_ADMIN_ID") asyncio.create_task( generate_key_helper_fn( @@ -2272,7 +2275,7 @@ async def startup_event(): config={}, spend=0, token=master_key, - user_id=user_id, + user_id=litellm_proxy_admin_name, user_role="proxy_admin", query_type="update_data", update_key_values={ @@ -5412,6 +5415,81 @@ async def team_info( ) +#### ORGANIZATION MANAGEMENT #### + + +@router.post( + "/organization/new", + tags=["organization management"], + dependencies=[Depends(user_api_key_auth)], + response_model=LiteLLM_OrganizationTable, +) +async def new_organization( + data: NewOrganizationRequest, + user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth), +): + global prisma_client + + if prisma_client is None: + raise HTTPException(status_code=500, detail={"error": "No db connected"}) + + if data.budget_id is None: + """ + Every organization needs a budget attached. + + If none provided, create one based on user max + """ + budget_row = LiteLLM_BudgetTable( + max_budget=user_api_key_dict.max_budget, + max_parallel_requests=user_api_key_dict.max_parallel_requests, + model_max_budget=user_api_key_dict.model_max_budget, + tpm_limit=user_api_key_dict.tpm_limit, + rpm_limit=user_api_key_dict.rpm_limit, + budget_duration=user_api_key_dict.budget_duration, + budget_reset_at=user_api_key_dict.budget_reset_at, + created_by=user_api_key_dict.user_id or litellm_proxy_admin_name, + updated_by=user_api_key_dict.user_id or litellm_proxy_admin_name, + ) + + new_budget = prisma_client.jsonify_object( + budget_row.model_dump(exclude_none=True) + ) + + _budget = await prisma_client.db.litellm_budgettable.create(data={**new_budget}) # type: ignore + + data.budget_id = _budget.budget_id + + response = await prisma_client.db.litellm_organizationtable.create( + data={ + **data.model_dump(exclude_none=True), # type: ignore + "created_by": user_api_key_dict.user_id, + "updated_by": user_api_key_dict.user_id, + } + ) + + return response + + +@router.post( + "/organization/update", + tags=["organization management"], + dependencies=[Depends(user_api_key_auth)], + response_model=LiteLLM_TeamTable, +) +async def update_organization(): + pass + + +@router.post( + "/organization/delete", + tags=["organization management"], + dependencies=[Depends(user_api_key_auth)], + response_model=LiteLLM_TeamTable, +) +async def delete_organization(): + pass + + #### MODEL MANAGEMENT #### diff --git a/litellm/proxy/schema.prisma b/litellm/proxy/schema.prisma index 6a9b72728..4e0da8222 100644 --- a/litellm/proxy/schema.prisma +++ b/litellm/proxy/schema.prisma @@ -7,10 +7,44 @@ generator client { provider = "prisma-client-py" } +// Budget / Rate Limits for an org +model LiteLLM_BudgetTable { + budget_id String @id @default(uuid()) + max_budget Float? + max_parallel_requests Int? + tpm_limit BigInt? + rpm_limit BigInt? + model_max_budget Json @default("{}") + budget_duration String? + budget_reset_at DateTime? + created_at DateTime @default(now()) @map("created_at") + created_by String + updated_at DateTime @default(now()) @updatedAt @map("updated_at") + updated_by String + organization LiteLLM_OrganizationTable[] +} + +model LiteLLM_OrganizationTable { + organization_id String @id @default(uuid()) + organization_alias String? + budget_id String + metadata Json @default("{}") + models String[] + spend Float @default(0.0) + model_spend Json @default("{}") + created_at DateTime @default(now()) @map("created_at") + created_by String + updated_at DateTime @default(now()) @updatedAt @map("updated_at") + updated_by String + litellm_budget_table LiteLLM_BudgetTable? @relation(fields: [budget_id], references: [budget_id]) + teams LiteLLM_TeamTable[] +} + // Assign prod keys to groups, not individuals model LiteLLM_TeamTable { - team_id String @unique + team_id String @id @default(uuid()) team_alias String? + organization_id String? admins String[] members String[] members_with_roles Json @default("{}") @@ -27,11 +61,12 @@ model LiteLLM_TeamTable { updated_at DateTime @default(now()) @updatedAt @map("updated_at") model_spend Json @default("{}") model_max_budget Json @default("{}") + litellm_organization_table LiteLLM_OrganizationTable? @relation(fields: [organization_id], references: [organization_id]) } // Track spend, rate limit, budget Users model LiteLLM_UserTable { - user_id String @unique + user_id String @id team_id String? teams String[] @default([]) user_role String? @@ -51,7 +86,7 @@ model LiteLLM_UserTable { // Generate Tokens for Proxy model LiteLLM_VerificationToken { - token String @unique + token String @id key_name String? key_alias String? spend Float @default(0.0) @@ -82,7 +117,7 @@ model LiteLLM_Config { // View spend, model, api_key per request model LiteLLM_SpendLogs { - request_id String @unique + request_id String @id call_type String api_key String @default ("") spend Float @default(0.0) @@ -98,11 +133,12 @@ model LiteLLM_SpendLogs { cache_key String @default("") request_tags Json @default("[]") team_id String? - end_user String? + end_user String? } + // Beta - allow team members to request access to a model model LiteLLM_UserNotifications { - request_id String @unique + request_id String @id user_id String models String[] justification String diff --git a/schema.prisma b/schema.prisma index d08295e10..f31fa130a 100644 --- a/schema.prisma +++ b/schema.prisma @@ -7,10 +7,42 @@ generator client { provider = "prisma-client-py" } +// Budget / Rate Limits for an org +model LiteLLM_BudgetTable { + budget_id String @id @default(uuid()) + max_budget Float? + max_parallel_requests Int? + tpm_limit BigInt? + rpm_limit BigInt? + model_max_budget Json @default("{}") + budget_duration String? + budget_reset_at DateTime? + created_at DateTime @default(now()) @map("created_at") + created_by String + updated_at DateTime @default(now()) @updatedAt @map("updated_at") + updated_by String +} + +model LiteLLM_OrganizationTable { + organization_id String @id @default(uuid()) + organization_alias String? + budget_id String + metadata Json @default("{}") + models String[] + spend Float @default(0.0) + model_spend Json @default("{}") + created_at DateTime @default(now()) @map("created_at") + created_by String + updated_at DateTime @default(now()) @updatedAt @map("updated_at") + updated_by String + litellm_budget_table LiteLLM_BudgetTable @relation(fields: [budget_id], references: [budget_id]) +} + // Assign prod keys to groups, not individuals model LiteLLM_TeamTable { - team_id String @unique + team_id String @id @default(uuid()) team_alias String? + organization_id String? admins String[] members String[] members_with_roles Json @default("{}") @@ -27,11 +59,12 @@ model LiteLLM_TeamTable { updated_at DateTime @default(now()) @updatedAt @map("updated_at") model_spend Json @default("{}") model_max_budget Json @default("{}") + litellm_organization_table LiteLLM_OrganizationTable @relation(fields: [organization_id], references: [organization_id]) } // Track spend, rate limit, budget Users model LiteLLM_UserTable { - user_id String @unique + user_id String @id team_id String? teams String[] @default([]) user_role String? @@ -51,7 +84,7 @@ model LiteLLM_UserTable { // Generate Tokens for Proxy model LiteLLM_VerificationToken { - token String @unique + token String @id key_name String? key_alias String? spend Float @default(0.0) @@ -82,7 +115,7 @@ model LiteLLM_Config { // View spend, model, api_key per request model LiteLLM_SpendLogs { - request_id String @unique + request_id String @id call_type String api_key String @default ("") spend Float @default(0.0) @@ -103,7 +136,7 @@ model LiteLLM_SpendLogs { // Beta - allow team members to request access to a model model LiteLLM_UserNotifications { - request_id String @unique + request_id String @id user_id String models String[] justification String From eedd446a6ac0ca5f24f78e0283eff03f31f532b2 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Sat, 2 Mar 2024 12:01:05 -0800 Subject: [PATCH 02/23] fix(proxy_server.py): fix pydantic versioning issue --- litellm/proxy/proxy_server.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 384d10961..e5af9186c 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -5451,9 +5451,7 @@ async def new_organization( updated_by=user_api_key_dict.user_id or litellm_proxy_admin_name, ) - new_budget = prisma_client.jsonify_object( - budget_row.model_dump(exclude_none=True) - ) + new_budget = prisma_client.jsonify_object(budget_row.json(exclude_none=True)) _budget = await prisma_client.db.litellm_budgettable.create(data={**new_budget}) # type: ignore @@ -5461,7 +5459,7 @@ async def new_organization( response = await prisma_client.db.litellm_organizationtable.create( data={ - **data.model_dump(exclude_none=True), # type: ignore + **data.json(exclude_none=True), # type: ignore "created_by": user_api_key_dict.user_id, "updated_by": user_api_key_dict.user_id, } From 6fb19c5d420b9f8ac475df075ce8cadd5fc2a6bc Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Sat, 2 Mar 2024 12:13:54 -0800 Subject: [PATCH 03/23] test(test_organizations.py): add testing for `/organization/new` endpoint --- litellm/proxy/schema.prisma | 4 ++-- schema.prisma | 8 ++++--- tests/test_organizations.py | 46 +++++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 tests/test_organizations.py diff --git a/litellm/proxy/schema.prisma b/litellm/proxy/schema.prisma index 4e0da8222..2607cf2b0 100644 --- a/litellm/proxy/schema.prisma +++ b/litellm/proxy/schema.prisma @@ -21,12 +21,12 @@ model LiteLLM_BudgetTable { created_by String updated_at DateTime @default(now()) @updatedAt @map("updated_at") updated_by String - organization LiteLLM_OrganizationTable[] + organization LiteLLM_OrganizationTable[] // multiple orgs can have the same budget } model LiteLLM_OrganizationTable { organization_id String @id @default(uuid()) - organization_alias String? + organization_alias String budget_id String metadata Json @default("{}") models String[] diff --git a/schema.prisma b/schema.prisma index f31fa130a..2607cf2b0 100644 --- a/schema.prisma +++ b/schema.prisma @@ -21,11 +21,12 @@ model LiteLLM_BudgetTable { created_by String updated_at DateTime @default(now()) @updatedAt @map("updated_at") updated_by String + organization LiteLLM_OrganizationTable[] // multiple orgs can have the same budget } model LiteLLM_OrganizationTable { organization_id String @id @default(uuid()) - organization_alias String? + organization_alias String budget_id String metadata Json @default("{}") models String[] @@ -35,7 +36,8 @@ model LiteLLM_OrganizationTable { created_by String updated_at DateTime @default(now()) @updatedAt @map("updated_at") updated_by String - litellm_budget_table LiteLLM_BudgetTable @relation(fields: [budget_id], references: [budget_id]) + litellm_budget_table LiteLLM_BudgetTable? @relation(fields: [budget_id], references: [budget_id]) + teams LiteLLM_TeamTable[] } // Assign prod keys to groups, not individuals @@ -59,7 +61,7 @@ model LiteLLM_TeamTable { updated_at DateTime @default(now()) @updatedAt @map("updated_at") model_spend Json @default("{}") model_max_budget Json @default("{}") - litellm_organization_table LiteLLM_OrganizationTable @relation(fields: [organization_id], references: [organization_id]) + litellm_organization_table LiteLLM_OrganizationTable? @relation(fields: [organization_id], references: [organization_id]) } // Track spend, rate limit, budget Users diff --git a/tests/test_organizations.py b/tests/test_organizations.py new file mode 100644 index 000000000..00e99cb66 --- /dev/null +++ b/tests/test_organizations.py @@ -0,0 +1,46 @@ +# What this tests ? +## Tests /organization endpoints. +import pytest +import asyncio +import aiohttp +import time, uuid +from openai import AsyncOpenAI + + +async def new_organization(session, i, organization_alias, max_budget=None): + url = "http://0.0.0.0:4000/organization/new" + headers = {"Authorization": "Bearer sk-1234", "Content-Type": "application/json"} + data = { + "organization_alias": organization_alias, + "models": ["azure-models"], + "max_budget": max_budget, + } + + async with session.post(url, headers=headers, json=data) as response: + status = response.status + response_text = await response.text() + + print(f"Response {i} (Status code: {status}):") + print(response_text) + print() + + if status != 200: + raise Exception(f"Request {i} did not return a 200 status code: {status}") + + return await response.json() + + +@pytest.mark.asyncio +async def test_organization_new(): + """ + Make 20 parallel calls to /user/new. Assert all worked. + """ + organization_alias = f"Organization: {uuid.uuid4()}" + async with aiohttp.ClientSession() as session: + tasks = [ + new_organization( + session=session, i=0, organization_alias=organization_alias + ) + for i in range(1, 20) + ] + await asyncio.gather(*tasks) From 8d22ed762efe1219d84ee57e50d6389b2d117942 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Sat, 2 Mar 2024 14:38:42 -0800 Subject: [PATCH 04/23] fix(proxy_server.py): enable admin to create new budget if none set for org --- litellm/proxy/_types.py | 34 ++++----- litellm/proxy/proxy_server.py | 137 +++++++++++++++++++++++++++++----- schema.prisma | 2 +- 3 files changed, 134 insertions(+), 39 deletions(-) diff --git a/litellm/proxy/_types.py b/litellm/proxy/_types.py index 6a73162ec..a962b6aa6 100644 --- a/litellm/proxy/_types.py +++ b/litellm/proxy/_types.py @@ -324,15 +324,6 @@ class TeamRequest(LiteLLMBase): teams: List[str] -class NewOrganizationRequest(LiteLLMBase): - organization_alias: Optional[str] = None - models: List = [] - budget_id: Optional[str] = None - tpm_limit: Optional[int] = None - rpm_limit: Optional[int] = None - max_budget: Optional[float] = None - - class LiteLLM_BudgetTable(LiteLLMBase): """Represents user-controllable params for a LiteLLM_BudgetTable record""" @@ -340,28 +331,33 @@ class LiteLLM_BudgetTable(LiteLLMBase): max_parallel_requests: Optional[int] = None tpm_limit: Optional[int] = None rpm_limit: Optional[int] = None - model_max_budget: dict + model_max_budget: Optional[dict] = None budget_duration: Optional[str] = None - budget_reset_at: Optional[datetime] = None - created_by: str - updated_by: str + + +class NewOrganizationRequest(LiteLLM_BudgetTable): + organization_alias: str + models: List = [] + budget_id: Optional[str] = None class LiteLLM_OrganizationTable(LiteLLMBase): + """Represents user-controllable params for a LiteLLM_OrganizationTable record""" - organization_id: str organization_alias: Optional[str] = None budget_id: str - metadata: dict + metadata: Optional[dict] = None models: List[str] - spend: float - model_spend: dict - created_at: datetime created_by: str - updated_at: datetime updated_by: str +class NewOrganizationResponse(LiteLLM_OrganizationTable): + organization_id: str + created_at: datetime + updated_at: datetime + + class KeyManagementSystem(enum.Enum): GOOGLE_KMS = "google_kms" AZURE_KEY_VAULT = "azure_key_vault" diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index e5af9186c..f4909a408 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -5422,46 +5422,133 @@ async def team_info( "/organization/new", tags=["organization management"], dependencies=[Depends(user_api_key_auth)], - response_model=LiteLLM_OrganizationTable, + response_model=NewOrganizationResponse, ) async def new_organization( data: NewOrganizationRequest, user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth), ): + """ + Allow orgs to own teams + + Set org level budgets + model access. + + Only admins can create orgs. + + # Parameters + + - `organization_alias`: *str* = The name of the organization. + - `models`: *List* = The models the organization has access to. + - `budget_id`: *Optional[str]* = The id for a budget (tpm/rpm/max budget) for the organization. + ### IF NO BUDGET - CREATE ONE WITH THESE PARAMS ### + - `max_budget`: *Optional[float]* = Max budget for org + - `tpm_limit`: *Optional[int]* = Max tpm limit for org + - `rpm_limit`: *Optional[int]* = Max rpm limit for org + - `model_max_budget`: *Optional[dict]* = Max budget for a specific model + - `budget_duration`: *Optional[str]* = Frequency of reseting org budget + + Case 1: Create new org **without** a budget_id + + ```bash + curl --location 'http://0.0.0.0:4000/organization/new' \ + + --header 'Authorization: Bearer sk-1234' \ + + --header 'Content-Type: application/json' \ + + --data '{ + "organization_alias": "my-secret-org", + "models": ["model1", "model2"], + "max_budget": 100 + }' + + + ``` + + Case 2: Create new org **with** a budget_id + + ```bash + curl --location 'http://0.0.0.0:4000/organization/new' \ + + --header 'Authorization: Bearer sk-1234' \ + + --header 'Content-Type: application/json' \ + + --data '{ + "organization_alias": "my-secret-org", + "models": ["model1", "model2"], + "budget_id": "428eeaa8-f3ac-4e85-a8fb-7dc8d7aa8689" + }' + ``` + """ global prisma_client if prisma_client is None: raise HTTPException(status_code=500, detail={"error": "No db connected"}) + if ( + user_api_key_dict.user_role is None + or user_api_key_dict.user_role != "proxy_admin" + ): + raise HTTPException( + status_code=401, + detail={ + "error": f"Only admins can create orgs. Your role is = {user_api_key_dict.user_role}" + }, + ) + if data.budget_id is None: """ Every organization needs a budget attached. - If none provided, create one based on user max + If none provided, create one based on provided values """ - budget_row = LiteLLM_BudgetTable( - max_budget=user_api_key_dict.max_budget, - max_parallel_requests=user_api_key_dict.max_parallel_requests, - model_max_budget=user_api_key_dict.model_max_budget, - tpm_limit=user_api_key_dict.tpm_limit, - rpm_limit=user_api_key_dict.rpm_limit, - budget_duration=user_api_key_dict.budget_duration, - budget_reset_at=user_api_key_dict.budget_reset_at, - created_by=user_api_key_dict.user_id or litellm_proxy_admin_name, - updated_by=user_api_key_dict.user_id or litellm_proxy_admin_name, - ) + budget_row = LiteLLM_BudgetTable(**data.json(exclude_none=True)) new_budget = prisma_client.jsonify_object(budget_row.json(exclude_none=True)) - _budget = await prisma_client.db.litellm_budgettable.create(data={**new_budget}) # type: ignore + _budget = await prisma_client.db.litellm_budgettable.create( + data={ + **new_budget, # type: ignore + "created_by": user_api_key_dict.user_id or litellm_proxy_admin_name, + "updated_by": user_api_key_dict.user_id or litellm_proxy_admin_name, + } + ) # type: ignore data.budget_id = _budget.budget_id + """ + Ensure only models that user has access to, are given to org + """ + if len(user_api_key_dict.models) == 0: # user has access to all models + pass + else: + if len(data.models) == 0: + raise HTTPException( + status_code=400, + detail={ + "error": f"User not allowed to give access to all models. Select models you want org to have access to." + }, + ) + for m in data.models: + if m not in user_api_key_dict.models: + raise HTTPException( + status_code=400, + detail={ + "error": f"User not allowed to give access to model={m}. Models you have access to = {user_api_key_dict.models}" + }, + ) + organization_row = LiteLLM_OrganizationTable( + **data.json(exclude_none=True), + created_by=user_api_key_dict.user_id or litellm_proxy_admin_name, + updated_by=user_api_key_dict.user_id or litellm_proxy_admin_name, + ) + new_organization_row = prisma_client.jsonify_object( + organization_row.json(exclude_none=True) + ) response = await prisma_client.db.litellm_organizationtable.create( data={ - **data.json(exclude_none=True), # type: ignore - "created_by": user_api_key_dict.user_id, - "updated_by": user_api_key_dict.user_id, + **new_organization_row, # type: ignore } ) @@ -5472,9 +5559,9 @@ async def new_organization( "/organization/update", tags=["organization management"], dependencies=[Depends(user_api_key_auth)], - response_model=LiteLLM_TeamTable, ) async def update_organization(): + """[TODO] Not Implemented yet. Let us know if you need this - https://github.com/BerriAI/litellm/issues""" pass @@ -5482,9 +5569,21 @@ async def update_organization(): "/organization/delete", tags=["organization management"], dependencies=[Depends(user_api_key_auth)], - response_model=LiteLLM_TeamTable, ) async def delete_organization(): + """[TODO] Not Implemented yet. Let us know if you need this - https://github.com/BerriAI/litellm/issues""" + pass + + +@router.post( + "/organization/info", + tags=["organization management"], + dependencies=[Depends(user_api_key_auth)], +) +async def info_organization(): + """ + Get the org specific information + """ pass diff --git a/schema.prisma b/schema.prisma index 2607cf2b0..e7932d634 100644 --- a/schema.prisma +++ b/schema.prisma @@ -14,7 +14,7 @@ model LiteLLM_BudgetTable { max_parallel_requests Int? tpm_limit BigInt? rpm_limit BigInt? - model_max_budget Json @default("{}") + model_max_budget Json? budget_duration String? budget_reset_at DateTime? created_at DateTime @default(now()) @map("created_at") From 8bb6897b461c1d49d2a1e05947d8ee5040cd80bf Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Sat, 2 Mar 2024 15:07:33 -0800 Subject: [PATCH 05/23] feat(proxy_server.py): exposes `/organization/info` and `/budget/info` endpoints --- litellm/proxy/_types.py | 8 ++++++ litellm/proxy/proxy_server.py | 52 +++++++++++++++++++++++++++++++++-- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/litellm/proxy/_types.py b/litellm/proxy/_types.py index a962b6aa6..5cd289b66 100644 --- a/litellm/proxy/_types.py +++ b/litellm/proxy/_types.py @@ -358,6 +358,14 @@ class NewOrganizationResponse(LiteLLM_OrganizationTable): updated_at: datetime +class OrganizationRequest(LiteLLMBase): + organizations: List[str] + + +class BudgetRequest(LiteLLMBase): + budgets: List[str] + + class KeyManagementSystem(enum.Enum): GOOGLE_KMS = "google_kms" AZURE_KEY_VAULT = "azure_key_vault" diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index f4909a408..bd3d111a7 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -5580,11 +5580,59 @@ async def delete_organization(): tags=["organization management"], dependencies=[Depends(user_api_key_auth)], ) -async def info_organization(): +async def info_organization(data: OrganizationRequest): """ Get the org specific information """ - pass + global prisma_client + + if prisma_client is None: + raise HTTPException(status_code=500, detail={"error": "No db connected"}) + + if len(data.organizations) == 0: + raise HTTPException( + status_code=400, + detail={ + "error": f"Specify list of organization id's to query. Passed in={data.organizations}" + }, + ) + response = await prisma_client.db.litellm_organizationtable.find_many( + where={"organization_id": {"in": data.organizations}}, + include={"litellm_budget_table": True}, + ) + + return response + + +#### BUDGET TABLE MANAGEMENT #### + + +@router.post( + "/budget/info", + tags=["organization management"], + dependencies=[Depends(user_api_key_auth)], +) +async def info_budget(data: BudgetRequest): + """ + Get the budget id specific information + """ + global prisma_client + + if prisma_client is None: + raise HTTPException(status_code=500, detail={"error": "No db connected"}) + + if len(data.budgets) == 0: + raise HTTPException( + status_code=400, + detail={ + "error": f"Specify list of budget id's to query. Passed in={data.budgets}" + }, + ) + response = await prisma_client.db.litellm_budgettable.find_many( + where={"budget_id": {"in": data.budgets}}, + ) + + return response #### MODEL MANAGEMENT #### From 96f11157c90a40286282a962bb4ded358996b17c Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Sat, 2 Mar 2024 15:32:43 -0800 Subject: [PATCH 06/23] fix(_types.py): have org id in newteamrequest pydantic object --- litellm/proxy/_types.py | 1 + 1 file changed, 1 insertion(+) diff --git a/litellm/proxy/_types.py b/litellm/proxy/_types.py index 5cd289b66..e981aef6d 100644 --- a/litellm/proxy/_types.py +++ b/litellm/proxy/_types.py @@ -250,6 +250,7 @@ class Member(LiteLLMBase): class NewTeamRequest(LiteLLMBase): team_alias: Optional[str] = None team_id: Optional[str] = None + organization_id: Optional[str] = None admins: list = [] members: list = [] members_with_roles: List[Member] = [] From 768c3d8491b345b5293177bc29054b4ae8fdc992 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 16:13:22 -0800 Subject: [PATCH 07/23] (feat) test slack alerts --- .../src/components/create_key_button.tsx | 18 ++++++++-- .../src/components/networking.tsx | 35 +++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/ui/litellm-dashboard/src/components/create_key_button.tsx b/ui/litellm-dashboard/src/components/create_key_button.tsx index e76e2d0c2..6c88fc568 100644 --- a/ui/litellm-dashboard/src/components/create_key_button.tsx +++ b/ui/litellm-dashboard/src/components/create_key_button.tsx @@ -12,7 +12,7 @@ import { Select, message, } from "antd"; -import { keyCreateCall } from "./networking"; +import { keyCreateCall, slackBudgetAlertsHealthCheck } from "./networking"; const { Option } = Select; @@ -68,6 +68,20 @@ const CreateKey: React.FC = ({ } }; + const sendSlackAlert = async () => { + try { + console.log("Sending Slack alert..."); + message.info("Sending Test Slack alert..."); + const response = await slackBudgetAlertsHealthCheck(accessToken); + console.log("slackBudgetAlertsHealthCheck Response:", response); + message.success("Test Slack Alert worked - check your Slack!"); + console.log("Testing Slack alert successful"); + } catch (error) { + console.error("Error sending Slack alert:", error); + } + }; + + return (
diff --git a/ui/litellm-dashboard/src/components/networking.tsx b/ui/litellm-dashboard/src/components/networking.tsx index fff9cce64..9e85a5ca4 100644 --- a/ui/litellm-dashboard/src/components/networking.tsx +++ b/ui/litellm-dashboard/src/components/networking.tsx @@ -810,3 +810,38 @@ export const PredictedSpendLogsCall = async ( throw error; } }; + +export const slackBudgetAlertsHealthCheck = async (accessToken: String) => { + try { + let url = proxyBaseUrl + ? `${proxyBaseUrl}/health/services?service=slack_budget_alerts` + : `health/services?service=slack_budget_alerts`; + + console.log("Checking Slack Budget Alerts service health"); + + const response = await fetch(url, { + method: "GET", + headers: { + Authorization: `Bearer ${accessToken}`, + "Content-Type": "application/json", + }, + }); + + if (!response.ok) { + const errorData = await response.text(); + console.error("Health Check failed:", errorData); + throw new Error("Health Check failed"); + } + + const data = await response.json(); + console.log("Service Health Response:", data); + + // You can add additional logic here based on the response if needed + + return data; + } catch (error) { + console.error("Failed to perform health check:", error); + throw error; + } +}; + From 0b8506108647e9720285306823b0747466c637b4 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 16:32:33 -0800 Subject: [PATCH 08/23] (docs) --- docs/my-website/sidebars.js | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/my-website/sidebars.js b/docs/my-website/sidebars.js index f1c69f53a..764e9e721 100644 --- a/docs/my-website/sidebars.js +++ b/docs/my-website/sidebars.js @@ -40,7 +40,6 @@ const sidebars = { "proxy/virtual_keys", "proxy/users", "proxy/ui", - "proxy/metrics", "proxy/model_management", "proxy/health", "proxy/debugging", From ebaf2eef1f3d4cdbb3cc6cf7187b940056762671 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 16:46:20 -0800 Subject: [PATCH 09/23] (feat) improve error for testing slack --- litellm/proxy/proxy_server.py | 57 ++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index ffae102a0..b6796a81b 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -6497,27 +6497,48 @@ async def health_services_endpoint( Used by the UI to let user check if slack alerting is working as expected. """ - global general_settings, proxy_logging_obj + try: + global general_settings, proxy_logging_obj - if service is None: - raise HTTPException( - status_code=400, detail={"error": "Service must be specified."} - ) + if service is None: + raise HTTPException( + status_code=400, detail={"error": "Service must be specified."} + ) - if service not in ["slack_budget_alerts"]: - raise HTTPException( - status_code=400, - detail={ - "error": f"Service must be in list. Service={service}. List={['slack_budget_alerts']}" - }, - ) + if service not in ["slack_budget_alerts"]: + raise HTTPException( + status_code=400, + detail={ + "error": f"Service must be in list. Service={service}. List={['slack_budget_alerts']}" + }, + ) - if "slack" in general_settings.get("alerting", []): - await proxy_logging_obj.alerting_handler(message="This is a test", level="Low") - else: - raise HTTPException( - status_code=422, - detail={"error": "No slack connection setup. Unable to test this."}, + if "slack" in general_settings.get("alerting", []): + await proxy_logging_obj.alerting_handler( + message="This is a test", level="Low" + ) + else: + raise HTTPException( + status_code=422, + detail={ + "error": '"slack" not in proxy config: general_settings. Unable to test this.' + }, + ) + except Exception as e: + if isinstance(e, HTTPException): + raise ProxyException( + message=getattr(e, "detail", f"Authentication Error({str(e)})"), + type="auth_error", + param=getattr(e, "param", "None"), + code=getattr(e, "status_code", status.HTTP_401_UNAUTHORIZED), + ) + elif isinstance(e, ProxyException): + raise e + raise ProxyException( + message="Authentication Error, " + str(e), + type="auth_error", + param=getattr(e, "param", "None"), + code=status.HTTP_401_UNAUTHORIZED, ) From 169b085e9c3d57c57a66ae9d324223cd16652945 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 16:47:00 -0800 Subject: [PATCH 10/23] (ui) link to slack docs to test soft limit budget alerts --- .../src/components/create_key_button.tsx | 11 +++++++---- ui/litellm-dashboard/src/components/networking.tsx | 9 ++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ui/litellm-dashboard/src/components/create_key_button.tsx b/ui/litellm-dashboard/src/components/create_key_button.tsx index 6c88fc568..fa80556b5 100644 --- a/ui/litellm-dashboard/src/components/create_key_button.tsx +++ b/ui/litellm-dashboard/src/components/create_key_button.tsx @@ -71,10 +71,8 @@ const CreateKey: React.FC = ({ const sendSlackAlert = async () => { try { console.log("Sending Slack alert..."); - message.info("Sending Test Slack alert..."); const response = await slackBudgetAlertsHealthCheck(accessToken); console.log("slackBudgetAlertsHealthCheck Response:", response); - message.success("Test Slack Alert worked - check your Slack!"); console.log("Testing Slack alert successful"); } catch (error) { console.error("Error sending Slack alert:", error); @@ -198,9 +196,14 @@ const CreateKey: React.FC = ({ Budgets Soft Limit Budget: ${softBudget} - + + (LiteLLM Docs - + + Set Up Slack Alerting) + +
) : ( Key being created, this might take 30s diff --git a/ui/litellm-dashboard/src/components/networking.tsx b/ui/litellm-dashboard/src/components/networking.tsx index 9e85a5ca4..a8ff29c00 100644 --- a/ui/litellm-dashboard/src/components/networking.tsx +++ b/ui/litellm-dashboard/src/components/networking.tsx @@ -818,6 +818,7 @@ export const slackBudgetAlertsHealthCheck = async (accessToken: String) => { : `health/services?service=slack_budget_alerts`; console.log("Checking Slack Budget Alerts service health"); + message.info("Sending Test Slack alert..."); const response = await fetch(url, { method: "GET", @@ -829,11 +830,13 @@ export const slackBudgetAlertsHealthCheck = async (accessToken: String) => { if (!response.ok) { const errorData = await response.text(); - console.error("Health Check failed:", errorData); - throw new Error("Health Check failed"); + message.error("Failed Slack Alert test: " + errorData); + // throw error with message + throw new Error(errorData); } - + const data = await response.json(); + message.success("Test Slack Alert worked - check your Slack!"); console.log("Service Health Response:", data); // You can add additional logic here based on the response if needed From 94301437665dc91319d8c626a28a23a967d1ea42 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 16:50:10 -0800 Subject: [PATCH 11/23] (feat) new ui build --- litellm/proxy/_experimental/out/404.html | 2 +- .../_buildManifest.js | 0 .../_ssgManifest.js | 0 ...layout-f9be08c86364b0fc.js => layout-a001706742fcd3bc.js} | 2 +- .../out/_next/static/chunks/app/page-1b778934c9b8fd3d.js | 1 + .../out/_next/static/chunks/app/page-a458360dd75bd774.js | 1 - ...-app-096338c8e1915716.js => main-app-9b4fb13a7db53edf.js} | 2 +- litellm/proxy/_experimental/out/index.html | 2 +- litellm/proxy/_experimental/out/index.txt | 4 ++-- ui/litellm-dashboard/out/404.html | 2 +- .../out/_next/static/8Qf_s48H0nBodS2RVsrIl/_buildManifest.js | 1 + .../out/_next/static/8Qf_s48H0nBodS2RVsrIl/_ssgManifest.js | 1 + .../out/_next/static/chunks/app/layout-a001706742fcd3bc.js | 1 + .../out/_next/static/chunks/app/page-1b778934c9b8fd3d.js | 1 + .../out/_next/static/chunks/main-app-9b4fb13a7db53edf.js | 1 + .../out/_next/static/chunks/webpack-59d9232c3e7a8be6.js | 1 + .../out/_next/static/css/32e93a3d13512de5.css | 5 +++++ ui/litellm-dashboard/out/index.html | 2 +- ui/litellm-dashboard/out/index.txt | 4 ++-- 19 files changed, 22 insertions(+), 11 deletions(-) rename litellm/proxy/_experimental/out/_next/static/{HnLepq2YNME88Nzo5qHls => 8Qf_s48H0nBodS2RVsrIl}/_buildManifest.js (100%) rename litellm/proxy/_experimental/out/_next/static/{HnLepq2YNME88Nzo5qHls => 8Qf_s48H0nBodS2RVsrIl}/_ssgManifest.js (100%) rename litellm/proxy/_experimental/out/_next/static/chunks/app/{layout-f9be08c86364b0fc.js => layout-a001706742fcd3bc.js} (60%) create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/page-a458360dd75bd774.js rename litellm/proxy/_experimental/out/_next/static/chunks/{main-app-096338c8e1915716.js => main-app-9b4fb13a7db53edf.js} (54%) create mode 100644 ui/litellm-dashboard/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_buildManifest.js create mode 100644 ui/litellm-dashboard/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_ssgManifest.js create mode 100644 ui/litellm-dashboard/out/_next/static/chunks/app/layout-a001706742fcd3bc.js create mode 100644 ui/litellm-dashboard/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js create mode 100644 ui/litellm-dashboard/out/_next/static/chunks/main-app-9b4fb13a7db53edf.js create mode 100644 ui/litellm-dashboard/out/_next/static/chunks/webpack-59d9232c3e7a8be6.js create mode 100644 ui/litellm-dashboard/out/_next/static/css/32e93a3d13512de5.css diff --git a/litellm/proxy/_experimental/out/404.html b/litellm/proxy/_experimental/out/404.html index 9b28cde0b..1f1e14ae0 100644 --- a/litellm/proxy/_experimental/out/404.html +++ b/litellm/proxy/_experimental/out/404.html @@ -1 +1 @@ -404: This page could not be found.🚅 LiteLLM

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.🚅 LiteLLM

404

This page could not be found.

\ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/HnLepq2YNME88Nzo5qHls/_buildManifest.js b/litellm/proxy/_experimental/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_buildManifest.js similarity index 100% rename from litellm/proxy/_experimental/out/_next/static/HnLepq2YNME88Nzo5qHls/_buildManifest.js rename to litellm/proxy/_experimental/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_buildManifest.js diff --git a/litellm/proxy/_experimental/out/_next/static/HnLepq2YNME88Nzo5qHls/_ssgManifest.js b/litellm/proxy/_experimental/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_ssgManifest.js similarity index 100% rename from litellm/proxy/_experimental/out/_next/static/HnLepq2YNME88Nzo5qHls/_ssgManifest.js rename to litellm/proxy/_experimental/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_ssgManifest.js diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/layout-f9be08c86364b0fc.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/layout-a001706742fcd3bc.js similarity index 60% rename from litellm/proxy/_experimental/out/_next/static/chunks/app/layout-f9be08c86364b0fc.js rename to litellm/proxy/_experimental/out/_next/static/chunks/app/layout-a001706742fcd3bc.js index fe5260feb..e261adc05 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/layout-f9be08c86364b0fc.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/layout-a001706742fcd3bc.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{11837:function(n,e,t){Promise.resolve().then(t.t.bind(t,99646,23)),Promise.resolve().then(t.t.bind(t,63385,23))},63385:function(){},99646:function(n){n.exports={style:{fontFamily:"'__Inter_c23dc8', '__Inter_Fallback_c23dc8'",fontStyle:"normal"},className:"__className_c23dc8"}}},function(n){n.O(0,[971,69,744],function(){return n(n.s=11837)}),_N_E=n.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{87421:function(n,e,t){Promise.resolve().then(t.t.bind(t,99646,23)),Promise.resolve().then(t.t.bind(t,63385,23))},63385:function(){},99646:function(n){n.exports={style:{fontFamily:"'__Inter_c23dc8', '__Inter_Fallback_c23dc8'",fontStyle:"normal"},className:"__className_c23dc8"}}},function(n){n.O(0,[971,69,744],function(){return n(n.s=87421)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js new file mode 100644 index 000000000..efda0f860 --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{20661:function(e,t,s){Promise.resolve().then(s.bind(s,56239))},56239:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return eF}});var l=s(3827),n=s(64090),r=s(47907),a=s(8792),o=s(2179),i=e=>{let{userID:t,userRole:s,userEmail:n,showSSOBanner:r}=e;return console.log("User ID:",t),console.log("userEmail:",n),(0,l.jsxs)("nav",{className:"left-0 right-0 top-0 flex justify-between items-center h-12 mb-4",children:[(0,l.jsx)("div",{className:"text-left my-2 absolute top-0 left-0",children:(0,l.jsx)("div",{className:"flex flex-col items-center",children:(0,l.jsx)(a.default,{href:"/",children:(0,l.jsx)("button",{className:"text-gray-800 text-2xl py-1 rounded text-center",children:(0,l.jsx)("img",{src:"/get_image",width:200,height:200,alt:"LiteLLM Brand",className:"mr-2"})})})})}),(0,l.jsxs)("div",{className:"text-right mx-4 my-2 absolute top-0 right-0 flex items-center justify-end space-x-2",children:[r?(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#setup-ssoauth-for-ui",target:"_blank",className:"mr-2",children:(0,l.jsx)(o.Z,{variant:"primary",size:"lg",children:"Enable SSO"})}):null,(0,l.jsxs)(o.Z,{variant:"secondary",size:"lg",children:[n,(0,l.jsxs)("p",{children:["Role: ",s]}),(0,l.jsxs)("p",{children:["ID: ",t]})]})]})]})},c=s(80588);let d=async(e,t,s)=>{try{if(console.log("Form Values in keyCreateCall:",s),s.description&&(s.metadata||(s.metadata={}),s.metadata.description=s.description,delete s.description,s.metadata=JSON.stringify(s.metadata)),s.metadata){console.log("formValues.metadata:",s.metadata);try{s.metadata=JSON.parse(s.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",s);let l=await fetch("/key/generate",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},h=async(e,t,s)=>{try{if(console.log("Form Values in keyCreateCall:",s),s.description&&(s.metadata||(s.metadata={}),s.metadata.description=s.description,delete s.description,s.metadata=JSON.stringify(s.metadata)),s.metadata){console.log("formValues.metadata:",s.metadata);try{s.metadata=JSON.parse(s.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",s);let l=await fetch("/user/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},m=async(e,t)=>{try{console.log("in keyDeleteCall:",t),c.ZP.info("Making key delete request");let s=await fetch("/key/delete",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[t]})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await s.json();return console.log(l),c.ZP.success("API Key Deleted"),l}catch(e){throw console.error("Failed to create key:",e),e}},u=async function(e,t,s){let l=arguments.length>3&&void 0!==arguments[3]&&arguments[3];try{let n="/user/info";"App Owner"==s&&t&&(n="".concat(n,"/?user_id=").concat(t)),console.log("in userInfoCall viewAll=",l),l&&(n="".concat(n,"/?view_all=true")),c.ZP.info("Requesting user data");let r=await fetch(n,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw c.ZP.error(e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),c.ZP.info("Received user data"),a}catch(e){throw console.error("Failed to create key:",e),e}},x=async(e,t,s)=>{try{c.ZP.info("Requesting model data");let t=await fetch("/v2/model/info",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return c.ZP.info("Received model data"),s}catch(e){throw console.error("Failed to create key:",e),e}},p=async(e,t,s)=>{try{c.ZP.info("Requesting model data");let t=await fetch("/models",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return c.ZP.info("Received model data"),s}catch(e){throw console.error("Failed to create key:",e),e}},j=async(e,t)=>{try{let s="/global/spend/logs";console.log("in keySpendLogsCall:",s);let l=await fetch("".concat(s,"/?api_key=").concat(t),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to create key:",e),e}},g=async(e,t,s,l,n,r)=>{try{console.log("user role in spend logs call: ".concat(s));let t="/spend/logs";t="App Owner"==s?"".concat(t,"/?user_id=").concat(l,"&start_date=").concat(n,"&end_date=").concat(r):"".concat(t,"/?start_date=").concat(n,"&end_date=").concat(r),c.ZP.info("Making spend logs request");let a=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw c.ZP.error(e),Error("Network response was not ok")}let o=await a.json();return console.log(o),c.ZP.success("Spend Logs received"),o}catch(e){throw console.error("Failed to create key:",e),e}},Z=async e=>{try{c.ZP.info("Making spend logs request");let t=await fetch("/global/spend/logs",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Spend Logs received"),s}catch(e){throw console.error("Failed to create key:",e),e}},y=async e=>{try{c.ZP.info("Making spend keys request");let t=await fetch("/global/spend/keys?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Spend Logs received"),s}catch(e){throw console.error("Failed to create key:",e),e}},f=async(e,t)=>{try{t&&JSON.stringify({api_key:t}),c.ZP.info("Making top end users request");let s={method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}};t&&(s.body=JSON.stringify({api_key:t}));let l=await fetch("/global/spend/end_users",s);if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Top End users received"),n}catch(e){throw console.error("Failed to create key:",e),e}},w=async e=>{try{c.ZP.info("Making top models request");let t=await fetch("/global/spend/models?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Top Models received"),s}catch(e){throw console.error("Failed to create key:",e),e}},k=async(e,t)=>{try{let s=await fetch("/v2/key/info",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:t})});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await s.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},_=async(e,t)=>{try{let s="/spend/users";console.log("in spendUsersCall:",s);let l=await fetch("".concat(s,"/?user_id=").concat(t),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to get spend for user",e),e}},b=async(e,t,s,l)=>{try{let n=await fetch("/user/request_model",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({models:[t],user_id:s,justification:l})});if(!n.ok){let e=await n.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let r=await n.json();return console.log(r),c.ZP.success(""),r}catch(e){throw console.error("Failed to create key:",e),e}},v=async e=>{try{let t="/user/get_requests";console.log("in userGetRequesedtModelsCall:",t);let s=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await s.json();return console.log(l),c.ZP.success(""),l}catch(e){throw console.error("Failed to get requested models:",e),e}},S=async(e,t)=>{try{let s="/user/get_users?role=".concat(t);console.log("in userGetAllUsersCall:",s);let l=await fetch(s,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Got all users"),n}catch(e){throw console.error("Failed to get requested models:",e),e}},N=async(e,t)=>{try{console.log("Form Values in teamCreateCall:",t);let s=await fetch("/team/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await s.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,t,s)=>{try{console.log("Form Values in teamMemberAddCall:",s);let l=await fetch("/team/member_add",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,member:s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},C=async(e,t)=>{try{console.log("Form Values in userUpdateUserCall:",t);let s=await fetch("/user/update",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_role:"proxy_admin_viewer",...t})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await s.json();return console.log("API Response:",l),c.ZP.success("User role updated"),l}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,t)=>{try{let s=await fetch("/global/predict/spend/logs",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({data:t})});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await s.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},P=async e=>{try{console.log("Checking Slack Budget Alerts service health"),c.ZP.info("Sending Test Slack alert...");let t=await fetch("health/services?service=slack_budget_alerts",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error("Failed Slack Alert test: "+e),Error(e)}let s=await t.json();return c.ZP.success("Test Slack Alert worked - check your Slack!"),console.log("Service Health Response:",s),s}catch(e){throw console.error("Failed to perform health check:",e),e}};var T=s(10384),E=s(46453),F=s(13810),M=s(71801),R=s(42440),O=s(17189),D=s(12143),U=s(77171),L=s(42539),z=s(88707),B=s(1861);let{Option:q}=O.default;var K=e=>{let{userID:t,teamID:s,userRole:r,accessToken:a,data:i,userModels:h,setData:m}=e,[u]=D.Z.useForm(),[x,p]=(0,n.useState)(!1),[j,g]=(0,n.useState)(null),[Z,y]=(0,n.useState)(null),f=()=>{p(!1),u.resetFields()},w=()=>{p(!1),g(null),u.resetFields()},k=async e=>{try{c.ZP.info("Making API Call"),p(!0);let s=await d(a,t,e);console.log("key create Response:",s),m(e=>e?[...e,s]:[s]),g(s.key),y(s.soft_budget),c.ZP.success("API Key Created"),u.resetFields(),localStorage.removeItem("userData"+t)}catch(e){console.error("Error creating the key:",e)}},_=async()=>{try{console.log("Sending Slack alert...");let e=await P(a);console.log("slackBudgetAlertsHealthCheck Response:",e),console.log("Testing Slack alert successful")}catch(e){console.error("Error sending Slack alert:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>p(!0),children:"+ Create New Key"}),(0,l.jsx)(U.Z,{title:"Create Key",visible:x,width:800,footer:null,onOk:f,onCancel:w,children:(0,l.jsxs)(D.Z,{form:u,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:["App Owner"===r||"Admin"===r?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team",defaultValue:s||""})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:h.map(e=>(0,l.jsx)(q,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Soft Budget (USD) Monthly",name:"soft_budget",initialValue:50,children:(0,l.jsx)(z.Z,{step:.01,precision:2,defaultValue:50,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,l.jsxs)(O.default,{defaultValue:null,placeholder:"n/a",children:[(0,l.jsx)(O.default.Option,{value:"24h",children:"daily"}),(0,l.jsx)(O.default.Option,{value:"30d",children:"monthly"})]})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Expire Key (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Team ID (Contact Group)",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team"})}),(0,l.jsx)(D.Z.Item,{label:"Description",name:"description",children:(0,l.jsx)(L.Z.TextArea,{placeholder:"Enter description",rows:4})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create Key"})})]})}),j&&(0,l.jsx)(U.Z,{visible:x,onOk:f,onCancel:w,footer:null,children:(0,l.jsx)(E.Z,{numItems:1,className:"gap-2 w-full",children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Save your Key"}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)("p",{children:["Please save this secret key somewhere safe and accessible. For security reasons, ",(0,l.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,l.jsx)(T.Z,{numColSpan:1,children:null!=j?(0,l.jsxs)("div",{children:[(0,l.jsxs)(M.Z,{children:["API Key: ",j]}),(0,l.jsx)(R.Z,{className:"mt-6",children:"Budgets"}),(0,l.jsxs)(M.Z,{children:["Soft Limit Budget: $",Z]}),(0,l.jsx)(o.Z,{className:"mt-3",onClick:_,children:"Test Slack Alert"}),(0,l.jsxs)(M.Z,{className:"mt-2",children:["(LiteLLM Docs -",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/alerting",target:"_blank",className:"text-blue-500",children:"Set Up Slack Alerting)"})]})]}):(0,l.jsx)(M.Z,{children:"Key being created, this might take 30s"})})]})})})]})},V=s(33393),J=s(61244),G=s(10827),$=s(3851),H=s(2044),W=s(64167),Y=s(74480),X=s(7178),Q=s(9853),ee=s(56863),et=e=>{let{token:t,accessToken:s,keySpend:r,keyBudget:a,keyName:i}=e,[c,d]=(0,n.useState)(!1),[h,m]=(0,n.useState)(null),[u,x]=(0,n.useState)(""),[p,g]=(0,n.useState)(null),Z=async()=>{try{if(null==s||null==t)return;console.log("accessToken: ".concat(s,"; token: ").concat(t));let e=await j(s,t);console.log("Response:",e),m(e);let l=await I(s,e);console.log("Response2:",l);let n=[...e,...l.response];m(n),x(l.predicted_spend),console.log("Combined Data:",n)}catch(e){console.error("There was an error fetching the data",e)}};return t?(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>{console.log("Show Modal triggered"),d(!0),Z()},variant:"secondary",children:"View Spend Report"}),(0,l.jsxs)(U.Z,{visible:c,width:1400,onOk:()=>{d(!1)},onCancel:()=>{d(!1)},footer:null,children:[(0,l.jsxs)(R.Z,{style:{textAlign:"left"},children:["Key Name: ",i]}),(0,l.jsxs)(ee.Z,{children:["Monthly Spend $",r]}),(0,l.jsx)(R.Z,{children:u}),(0,l.jsx)(F.Z,{className:"mt-6 mb-6",children:h&&(0,l.jsx)(Q.Z,{className:"mt-6",data:h,colors:["blue","amber"],index:"date",categories:["spend","predicted_spend"],yAxisWidth:80})})]})]}):null},es=e=>{let{userID:t,accessToken:s,data:r,setData:a}=e,[i,c]=(0,n.useState)(!1),[d,h]=(0,n.useState)(!1),[u,x]=(0,n.useState)(null),p=async e=>{null!=r&&(x(e),localStorage.removeItem("userData"+t),h(!0))},j=async()=>{if(null!=u&&null!=r){try{await m(s,u);let e=r.filter(e=>e.token!==u);a(e)}catch(e){console.error("Error deleting the key:",e)}h(!1),x(null)}};if(null!=r)return console.log("RERENDER TRIGGERED"),(0,l.jsxs)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:[(0,l.jsxs)(G.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Key Alias"}),(0,l.jsx)(Y.Z,{children:"Secret Key"}),(0,l.jsx)(Y.Z,{children:"Spend (USD)"}),(0,l.jsx)(Y.Z,{children:"Key Budget (USD)"}),(0,l.jsx)(Y.Z,{children:"Spend Report"}),(0,l.jsx)(Y.Z,{children:"Team ID"}),(0,l.jsx)(Y.Z,{children:"Metadata"}),(0,l.jsx)(Y.Z,{children:"Models"}),(0,l.jsx)(Y.Z,{children:"TPM / RPM Limits"}),(0,l.jsx)(Y.Z,{children:"Expires"})]})}),(0,l.jsx)($.Z,{children:r.map(e=>(console.log(e),"litellm-dashboard"===e.team_id)?null:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:null!=e.key_alias?(0,l.jsx)(M.Z,{children:e.key_alias}):(0,l.jsx)(M.Z,{children:"Not Set"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.key_name})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.spend})}),(0,l.jsx)(H.Z,{children:null!=e.max_budget?(0,l.jsx)(M.Z,{children:e.max_budget}):(0,l.jsx)(M.Z,{children:"Unlimited Budget"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(et,{token:e.token,accessToken:s,keySpend:e.spend,keyBudget:e.max_budget,keyName:e.key_name})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.team_id})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:JSON.stringify(e.metadata)})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:JSON.stringify(e.models)})}),(0,l.jsx)(H.Z,{children:(0,l.jsxs)(M.Z,{children:["TPM Limit: ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(H.Z,{children:null!=e.expires?(0,l.jsx)(M.Z,{children:e.expires}):(0,l.jsx)(M.Z,{children:"Never expires"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{onClick:()=>p(e.token),icon:V.Z,size:"sm"})})]},e.token))})]}),d&&(0,l.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,l.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,l.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,l.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,l.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,l.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,l.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,l.jsx)("div",{className:"sm:flex sm:items-start",children:(0,l.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,l.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Key"}),(0,l.jsx)("div",{className:"mt-2",children:(0,l.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this key ?"})})]})})}),(0,l.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,l.jsx)(o.Z,{onClick:j,color:"red",className:"ml-2",children:"Delete"}),(0,l.jsx)(o.Z,{onClick:()=>{h(!1),x(null)},children:"Cancel"})]})]})]})})]})},el=e=>{let{userID:t,userSpendData:s,userRole:r,accessToken:a}=e;console.log("User SpendData:",s);let[o,i]=(0,n.useState)(null==s?void 0:s.spend),[c,d]=(0,n.useState)((null==s?void 0:s.max_budget)||null);return(0,n.useEffect)(()=>{(async()=>{if("Admin"===r)try{let e=await _(a,"litellm-proxy-budget");console.log("Result from callSpendUsers:",e);let t=e[0];i(null==t?void 0:t.spend),d((null==t?void 0:t.max_budget)||null)}catch(e){console.error("Failed to get spend for user",e)}})()},[r,a,t]),(0,l.jsx)(l.Fragment,{children:(0,l.jsxs)(F.Z,{className:"mx-auto mb-4",children:[(0,l.jsxs)(ee.Z,{children:["$",o]}),(0,l.jsxs)(R.Z,{children:["/ ",null!==c?"$".concat(c," limit"):"No limit"]})]})})},en=s(36083),er=s(68967),ea=s(27166),eo=e=>{let{teams:t,setSelectedTeam:s}=e,{Title:r,Paragraph:a}=en.default,[o,i]=(0,n.useState)("");return(0,l.jsxs)("div",{className:"mt-10",children:[(0,l.jsx)(r,{level:4,children:"Default Team"}),(0,l.jsx)(a,{children:"If you belong to multiple teams, this setting controls which team is used by default when creating new API Keys."}),t&&t.length>0?(0,l.jsx)(er.Z,{defaultValue:"0",children:t.map((e,t)=>(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>s(e),children:e.team_alias},t))}):(0,l.jsxs)(a,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]})},ei=s(37963);console.log("isLocal:",!1);var ec=e=>{let{userID:t,userRole:s,teams:a,keys:o,setUserRole:i,userEmail:c,setUserEmail:d,setTeams:h,setKeys:m}=e,[x,j]=(0,n.useState)(null),g=(0,r.useSearchParams)();g.get("viewSpend"),(0,r.useRouter)();let Z=g.get("token"),[y,f]=(0,n.useState)(null),[w,k]=(0,n.useState)([]),[_,b]=(0,n.useState)(a?a[0]:null);if(window.addEventListener("beforeunload",function(){sessionStorage.clear()}),(0,n.useEffect)(()=>{if(Z){let e=(0,ei.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),f(e.key),e.user_role){let t=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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",t),i(t)}else console.log("User role not defined");e.user_email?d(e.user_email):console.log("User Email is not set ".concat(e))}}if(t&&y&&s&&!o&&!x){let e=sessionStorage.getItem("userModels"+t);e?k(JSON.parse(e)):(async()=>{try{let e=await u(y,t,s);console.log("received teams in user dashboard: ".concat(Object.keys(e),"; team values: ").concat(Object.entries(e.teams))),j(e.user_info),m(e.keys),h(e.teams),b(e.teams?e.teams[0]:null),sessionStorage.setItem("userData"+t,JSON.stringify(e.keys)),sessionStorage.setItem("userSpendData"+t,JSON.stringify(e.user_info));let l=(await p(y,t,s)).data.map(e=>e.id);console.log("available_model_names:",l),k(l),console.log("userModels:",w),sessionStorage.setItem("userModels"+t,JSON.stringify(l))}catch(e){console.error("There was an error fetching the data",e)}})()}},[t,Z,y,o,s]),null==t||null==Z){let e="/sso/key/generate";return console.log("Full URL:",e),window.location.href=e,null}if(null==y)return null;if(null==s&&i("App Owner"),s&&"Admin Viewer"==s){let{Title:e,Paragraph:t}=en.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(t,{children:"Ask your proxy admin for access to create keys"})]})}return(0,l.jsx)("div",{children:(0,l.jsx)(E.Z,{numItems:1,className:"gap-0 p-10 h-[75vh] w-full",children:(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(el,{userID:t,userSpendData:x,userRole:s,accessToken:y}),(0,l.jsx)(es,{userID:t,accessToken:y,data:o,setData:m}),(0,l.jsx)(K,{userID:t,teamID:_?_.team_id:null,userRole:s,userModels:w,accessToken:y,data:o,setData:m}),(0,l.jsx)(eo,{teams:a,setSelectedTeam:b})]})})})},ed=s(5);let{Option:eh}=O.default;var em=e=>{let{userModels:t,accessToken:s,userID:r}=e,[a]=D.Z.useForm(),[i,d]=(0,n.useState)(!1),h=async e=>{try{c.ZP.info("Requesting access");let{selectedModel:t,accessReason:l}=e;await b(s,t,r,l),d(!0)}catch(e){console.error("Error requesting access:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>d(!0),children:"Request Access"}),(0,l.jsx)(U.Z,{title:"Request Access",visible:i,width:800,footer:null,onOk:()=>{d(!1),a.resetFields()},onCancel:()=>{d(!1),a.resetFields()},children:(0,l.jsxs)(D.Z,{form:a,onFinish:h,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(D.Z.Item,{label:"Select Model",name:"selectedModel",children:(0,l.jsx)(O.default,{placeholder:"Select model",style:{width:"100%"},children:t.map(e=>(0,l.jsx)(eh,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Reason for Access",name:"accessReason",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter reason for access"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(o.Z,{children:"Request Access"})})]})})]})},eu=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,[i,c]=(0,n.useState)({data:[]}),[d,h]=(0,n.useState)([]);if((0,n.useEffect)(()=>{if(!t||!s||!r||!a)return;let e=async()=>{try{let e=await x(t,a,r);if(console.log("Model data response:",e.data),c(e),"Admin"===r&&t){let e=await v(t);console.log("Pending Requests:",d),h(e.requests||[])}}catch(e){console.error("There was an error fetching the model data",e)}};t&&s&&r&&a&&e()},[t,s,r,a]),!i||!t||!s||!r||!a)return(0,l.jsx)("div",{children:"Loading..."});let m=[];for(let e=0;e(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:e.model_name})}),(0,l.jsx)(H.Z,{children:e.provider}),(0,l.jsx)(H.Z,{children:e.user_access?(0,l.jsx)(ed.Z,{color:"green",children:"Yes"}):(0,l.jsx)(em,{userModels:m,accessToken:t,userID:a})}),(0,l.jsx)(H.Z,{children:e.input_cost}),(0,l.jsx)(H.Z,{children:e.output_cost}),(0,l.jsx)(H.Z,{children:e.max_tokens})]},e.model_name))})]})}),"Admin"===r&&d&&d.length>0?(0,l.jsx)(F.Z,{children:(0,l.jsxs)(G.Z,{children:[(0,l.jsxs)(W.Z,{children:[(0,l.jsx)(R.Z,{children:"Pending Requests"}),(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"User ID"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Requested Models"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Justification"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Justification"})})]})]}),(0,l.jsx)($.Z,{children:d.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.models[0]})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.justification})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(o.Z,{children:"Approve"}),(0,l.jsx)(o.Z,{variant:"secondary",className:"ml-2",children:"Deny"})]},e.request_id))})]})}):null]})})},ex=s(92836),ep=s(26734),ej=s(41608),eg=s(32126),eZ=s(23682);let{Option:ey}=O.default;var ef=e=>{let{userID:t,accessToken:s}=e,[r]=D.Z.useForm(),[a,i]=(0,n.useState)(!1),[d,m]=(0,n.useState)(null),[u,x]=(0,n.useState)([]);(0,n.useEffect)(()=>{(async()=>{try{let e=await p(s,t,"any"),l=[];for(let t=0;t{i(!1),r.resetFields()},g=()=>{i(!1),m(null),r.resetFields()},Z=async e=>{try{c.ZP.info("Making API Call"),i(!0),console.log("formValues in create user:",e);let l=await h(s,t,e);console.log("user create Response:",l),m(l.key),c.ZP.success("API user Created"),r.resetFields(),localStorage.removeItem("userData"+t)}catch(e){console.error("Error creating the user:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>i(!0),children:"+ Create New User"}),(0,l.jsx)(U.Z,{title:"Create User",visible:a,width:800,footer:null,onOk:j,onCancel:g,children:(0,l.jsxs)(D.Z,{form:r,onFinish:Z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",children:(0,l.jsx)(L.Z,{placeholder:"Enter User ID"})}),(0,l.jsx)(D.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team"})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:u.map(e=>(0,l.jsx)(ey,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Duration (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create User"})})]})}),d&&(0,l.jsxs)(U.Z,{title:"Save Your User",visible:a,onOk:j,onCancel:g,footer:null,children:[(0,l.jsxs)("p",{children:["Please save this secret user somewhere safe and accessible. For security reasons, ",(0,l.jsx)("b",{children:"you will not be able to view it again"})," ","through your LiteLLM account. If you lose this secret user, you will need to generate a new one."]}),(0,l.jsx)("p",{children:null!=d?"API user: ".concat(d):"User being created, this might take 30s"})]})]})},ew=e=>{let{accessToken:t,token:s,keys:r,userRole:a,userID:o,setKeys:i}=e,[c,d]=(0,n.useState)(null),[h,m]=(0,n.useState)(null),[x,p]=(0,n.useState)(1);if((0,n.useEffect)(()=>{if(!t||!s||!a||!o)return;let e=async()=>{try{let e=await u(t,null,a,!0);console.log("user data response:",e),d(e)}catch(e){console.error("There was an error fetching the model data",e)}};t&&s&&a&&o&&!c&&e();let l=async()=>{try{let e=await f(t,null);console.log("user data response:",e),m(e)}catch(e){console.error("There was an error fetching the model data",e)}};a&&("Admin"==a||"Admin Viewer"==a)&&!h&&l()},[t,s,a,o]),!c||!t||!s||!a||!o)return(0,l.jsx)("div",{children:"Loading..."});let j=async e=>{try{let s=await f(t,e);console.log("user data response:",s),m(s)}catch(e){console.error("There was an error fetching the model data",e)}};return(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(E.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(ef,{userID:o,accessToken:t}),(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{variant:"line",defaultValue:"1",children:[(0,l.jsx)(ex.Z,{value:"1",children:"Key Owners"}),(0,l.jsx)(ex.Z,{value:"2",children:"End-Users"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsx)(eg.Z,{children:(0,l.jsxs)(G.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"User ID"}),(0,l.jsx)(Y.Z,{children:"User Role"}),(0,l.jsx)(Y.Z,{children:"User Models"}),(0,l.jsx)(Y.Z,{children:"User Spend ($ USD)"}),(0,l.jsx)(Y.Z,{children:"User Max Budget ($ USD)"})]})}),(0,l.jsx)($.Z,{children:c.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_id}),(0,l.jsx)(H.Z,{children:e.user_role?e.user_role:"app_owner"}),(0,l.jsx)(H.Z,{children:e.models&&e.models.length>0?e.models:"All Models"}),(0,l.jsx)(H.Z,{children:e.spend?e.spend:0}),(0,l.jsx)(H.Z,{children:e.max_budget?e.max_budget:"Unlimited"})]},e.user_id))})]})}),(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)("div",{className:"flex-1 flex justify-between items-center",children:[(0,l.jsx)(M.Z,{className:"w-1/4 mr-2 text-right",children:"Key"}),(0,l.jsx)(er.Z,{defaultValue:"1",className:"w-3/4",children:null==r?void 0:r.map((e,t)=>{if(e&&null!==e.key_name&&e.key_name.length>0)return(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>j(e.token),children:e.key_name},t)})})]})]}),(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"End User"}),(0,l.jsx)(Y.Z,{children:"Spend"}),(0,l.jsx)(Y.Z,{children:"Total Events"})]})}),(0,l.jsx)($.Z,{children:null==h?void 0:h.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.end_user}),(0,l.jsx)(H.Z,{children:e.total_spend}),(0,l.jsx)(H.Z,{children:e.total_events})]},t))})]})]})]})]})}),function(){if(!c)return null;let e=Math.ceil(c.length/25),t=Math.min(25*x,c.length);return(0,l.jsxs)("div",{className:"flex justify-between items-center",children:[(0,l.jsxs)("div",{children:["Showing ",(x-1)*25+1," – ",t," of ",c.length]}),(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-l focus:outline-none",disabled:1===x,onClick:()=>p(x-1),children:"← Prev"}),(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-r focus:outline-none",disabled:x===e,onClick:()=>p(x+1),children:"Next →"})]})]})}()]})})},ek=s(8510),e_=e=>{let{teams:t,searchParams:s,accessToken:r,setTeams:a}=e,[i]=D.Z.useForm(),[d]=D.Z.useForm(),{Title:h,Paragraph:m}=en.default,[u,x]=(0,n.useState)(""),[p,j]=(0,n.useState)(t?t[0]:null),[g,Z]=(0,n.useState)(!1),[y,f]=(0,n.useState)(!1),w=async e=>{try{if(null!=r){c.ZP.info("Making API Call");let s=await N(r,e);null!==t?a([...t,s]):a([s]),console.log("response for team create call: ".concat(s)),Z(!1)}}catch(e){console.error("Error creating the key:",e)}},k=async e=>{try{if(null!=r&&null!=t){c.ZP.info("Making API Call");let s={role:"user",user_email:e.user_email,user_id:e.user_id},l=await A(r,p.team_id,s);console.log("response for team create call: ".concat(l.data));let n=t.findIndex(e=>(console.log("team.team_id=".concat(e.team_id,"; response.data.team_id=").concat(l.data.team_id)),e.team_id===l.data.team_id));if(console.log("foundIndex: ".concat(n)),-1!==n){let e=[...t];e[n]=l.data,a(e),j(l.data)}f(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("received teams ".concat(t)),(0,l.jsx)("div",{className:"w-full",children:(0,l.jsxs)(E.Z,{numItems:1,className:"gap-2 p-2 h-[75vh] w-full",children:[(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"All Teams"}),(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Team Name"}),(0,l.jsx)(Y.Z,{children:"Spend (USD)"}),(0,l.jsx)(Y.Z,{children:"Budget (USD)"}),(0,l.jsx)(Y.Z,{children:"TPM / RPM Limits"})]})}),(0,l.jsx)($.Z,{children:t&&t.length>0?t.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.team_alias}),(0,l.jsx)(H.Z,{children:e.spend}),(0,l.jsx)(H.Z,{children:e.max_budget?e.max_budget:"No limit"}),(0,l.jsx)(H.Z,{children:(0,l.jsxs)(M.Z,{children:["TPM Limit:"," ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},e.team_id)):null})]})})]}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>Z(!0),children:"+ Create New Team"}),(0,l.jsx)(U.Z,{title:"Create Team",visible:g,width:800,footer:null,onOk:()=>{Z(!1),i.resetFields()},onCancel:()=>{Z(!1),i.resetFields()},children:(0,l.jsxs)(D.Z,{form:i,onFinish:w,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Team Name",name:"team_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"}})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create Team"})})]})})]}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"Team Members"}),(0,l.jsx)(m,{children:"If you belong to multiple teams, this setting controls which teams members you see."}),t&&t.length>0?(0,l.jsx)(er.Z,{defaultValue:"0",children:t.map((e,t)=>(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>{j(e)},children:e.team_alias},t))}):(0,l.jsxs)(m,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Member Name"}),(0,l.jsx)(Y.Z,{children:"Role"}),(0,l.jsx)(Y.Z,{children:"Action"})]})}),(0,l.jsx)($.Z,{children:p?p.members_with_roles.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(H.Z,{children:e.role}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},t)):null})]})})}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>f(!0),children:"+ Add member"}),(0,l.jsx)(U.Z,{title:"Add member",visible:y,width:800,footer:null,onOk:()=>{f(!1),d.resetFields()},onCancel:()=>{f(!1),d.resetFields()},children:(0,l.jsxs)(D.Z,{form:i,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})})},eb=e=>{let{searchParams:t,accessToken:s}=e,[r]=D.Z.useForm(),[a]=D.Z.useForm(),{Title:i,Paragraph:d}=en.default,[h,m]=(0,n.useState)(""),[u,x]=(0,n.useState)(null),[p,j]=(0,n.useState)(!1);(0,n.useEffect)(()=>{(async()=>{if(null!=s){let e=[],t=await S(s,"proxy_admin_viewer");t.forEach(t=>{e.push({user_role:t.user_role,user_id:t.user_id,user_email:t.user_email})}),console.log("proxy viewers: ".concat(t));let l=await S(s,"proxy_admin");l.forEach(t=>{e.push({user_role:t.user_role,user_id:t.user_id,user_email:t.user_email})}),console.log("proxy admins: ".concat(l)),console.log("combinedList: ".concat(e)),x(e)}})()},[s]);let g=async e=>{try{if(null!=s&&null!=u){c.ZP.info("Making API Call"),e.user_email,e.user_id;let t=await C(s,e);console.log("response for team create call: ".concat(t));let l=u.findIndex(e=>(console.log("user.user_id=".concat(e.user_id,"; response.user_id=").concat(t.user_id)),e.user_id===t.user_id));console.log("foundIndex: ".concat(l)),-1==l&&(console.log("updates admin with new user"),u.push(t),x(u)),j(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("admins: ".concat(null==u?void 0:u.length)),(0,l.jsxs)("div",{className:"w-full m-2",children:[(0,l.jsx)(i,{level:4,children:"Restricted Access"}),(0,l.jsxs)(d,{children:["Add other people to just view spend. They cannot create keys, teams or grant users access to new models."," ",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#restrict-ui-access",children:"Requires SSO Setup"})]}),(0,l.jsxs)(E.Z,{numItems:1,className:"gap-2 p-0 w-full",children:[(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Member Name"}),(0,l.jsx)(Y.Z,{children:"Role"}),(0,l.jsx)(Y.Z,{children:"Action"})]})}),(0,l.jsx)($.Z,{children:u?u.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(H.Z,{children:e.user_role}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},t)):null})]})})}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>j(!0),children:"+ Add viewer"}),(0,l.jsx)(U.Z,{title:"Add viewer",visible:p,width:800,footer:null,onOk:()=>{j(!1),a.resetFields()},onCancel:()=>{j(!1),a.resetFields()},children:(0,l.jsxs)(D.Z,{form:r,onFinish:g,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})]})},ev=s(12968),eS=s(67951);async function eN(e,t,s,l){console.log("isLocal:",!1);let n=window.location.origin,r=new ev.ZP.OpenAI({apiKey:l,baseURL:n,dangerouslyAllowBrowser:!0});for await(let l of(await r.chat.completions.create({model:s,stream:!0,messages:[{role:"user",content:e}]})))console.log(l),l.choices[0].delta.content&&t(l.choices[0].delta.content)}var eA=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,[o,i]=(0,n.useState)(""),[c,d]=(0,n.useState)([]),[h,m]=(0,n.useState)(void 0),[u,x]=(0,n.useState)(null);(0,n.useEffect)(()=>{t&&s&&r&&a&&(async()=>{let e=await p(t,a,r);console.log("model_info:",e),(null==e?void 0:e.data.length)>0&&(x(e.data),m(e.data[0].id))})()},[t,a,r]);let j=(e,t)=>{d(s=>{let l=s[s.length-1];return l&&l.role===e?[...s.slice(0,s.length-1),{role:e,content:l.content+t}]:[...s,{role:e,content:t}]})},g=async()=>{if(""!==o.trim()&&t&&s&&r&&a){d(e=>[...e,{role:"user",content:o}]);try{h&&await eN(o,e=>j("assistant",e),h,t)}catch(e){console.error("Error fetching model response",e),j("assistant","Error fetching model response")}i("")}};if(r&&"Admin Viewer"==r){let{Title:e,Paragraph:t}=en.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(t,{children:"Ask your proxy admin for access to test models"})]})}return(0,l.jsx)("div",{style:{width:"100%",position:"relative"},children:(0,l.jsx)(E.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:(0,l.jsx)(F.Z,{children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{className:"mt-4",children:[(0,l.jsx)(ex.Z,{children:"Chat"}),(0,l.jsx)(ex.Z,{children:"API Reference"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{children:"Select Model:"}),(0,l.jsx)("select",{value:h||"",onChange:e=>m(e.target.value),children:null==u?void 0:u.map(e=>(0,l.jsx)("option",{value:e.id,children:e.id},e.id))})]}),(0,l.jsxs)(G.Z,{className:"mt-5",style:{display:"block",maxHeight:"60vh",overflowY:"auto"},children:[(0,l.jsx)(W.Z,{children:(0,l.jsx)(X.Z,{children:(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Chat"})})})}),(0,l.jsx)($.Z,{children:c.map((e,t)=>(0,l.jsx)(X.Z,{children:(0,l.jsx)(H.Z,{children:"".concat(e.role,": ").concat(e.content)})},t))})]}),(0,l.jsx)("div",{className:"mt-3",style:{position:"absolute",bottom:5,width:"95%"},children:(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("input",{type:"text",value:o,onChange:e=>i(e.target.value),className:"flex-1 p-2 border rounded-md mr-2",placeholder:"Type your message..."}),(0,l.jsx)("button",{onClick:g,className:"p-2 bg-blue-500 text-white rounded-md",children:"Send"})]})})]}),(0,l.jsx)(eg.Z,{children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{children:[(0,l.jsx)(ex.Z,{children:"OpenAI Python SDK"}),(0,l.jsx)(ex.Z,{children:"LlamaIndex"}),(0,l.jsx)(ex.Z,{children:"Langchain Py"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.Z,{language:"python",children:'\nimport openai\nclient = openai.OpenAI(\n api_key="your_api_key",\n base_url="http://0.0.0.0:4000" # proxy base url\n)\n\nresponse = client.chat.completions.create(\n model="gpt-3.5-turbo", # model to use from Models Tab\n messages = [\n {\n "role": "user",\n "content": "this is a test request, write a short poem"\n }\n ],\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-openai-client",\n "generation_id": "openai-client-gen-id22",\n "trace_id": "openai-client-trace-id22",\n "trace_user_id": "openai-client-user-id2"\n }\n }\n)\n\nprint(response)\n '})}),(0,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.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="http://0.0.0.0:4000", # 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="http://0.0.0.0:4000",\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,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.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="http://0.0.0.0:8000",\n model = "gpt-3.5-turbo",\n temperature=0.1,\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-langchain-client",\n "generation_id": "langchain-client-gen-id22",\n "trace_id": "langchain-client-trace-id22",\n "trace_user_id": "langchain-client-user-id2"\n }\n }\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 '})})]})]})})]})]})})})})},eC=s(33509),eI=s(30569);let{Sider:eP}=eC.default;var eT=e=>{let{setPage:t,userRole:s,defaultSelectedKey:n}=e;return"Admin Viewer"==s?(0,l.jsx)(eC.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eP,{width:120,children:(0,l.jsxs)(eI.Z,{mode:"inline",defaultSelectedKeys:n||["4"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eI.Z.Item,{onClick:()=>t("api-keys"),children:"API Keys"},"4"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("models"),children:"Models"},"2"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("usage"),children:"Usage"},"1")]})})}):(0,l.jsx)(eC.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eP,{width:120,children:(0,l.jsxs)(eI.Z,{mode:"inline",defaultSelectedKeys:n||["1"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eI.Z.Item,{onClick:()=>t("api-keys"),children:"API Keys"},"1"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("models"),children:"Models"},"2"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("usage"),children:"Usage"},"4"),"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("users"),children:"Users"},"5"):null,"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("teams"),children:"Teams"},"6"):null,"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("admin-panel"),children:"Admin"},"7"):null]})})})},eE=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,o=new Date,[i,c]=(0,n.useState)([]),[d,h]=(0,n.useState)([]),[m,u]=(0,n.useState)([]),[x,p]=(0,n.useState)([]),j=new Date(o.getFullYear(),o.getMonth(),1),f=new Date(o.getFullYear(),o.getMonth()+1,0),_=v(j),b=v(f);function v(e){let t=e.getFullYear(),s=e.getMonth()+1,l=e.getDate();return"".concat(t,"-").concat(s<10?"0"+s:s,"-").concat(l<10?"0"+l:l)}return console.log("Start date is ".concat(_)),console.log("End date is ".concat(b)),(0,n.useEffect)(()=>{t&&s&&r&&a&&(async()=>{try{if(console.log("user role: ".concat(r)),"Admin"==r||"Admin Viewer"==r){let e=await Z(t);c(e);let s=(await y(t)).map(e=>({key:(e.key_name||e.key_alias||e.api_key).substring(0,7),spend:e.total_spend}));h(s);let l=(await w(t)).map(e=>({key:e.model,spend:e.total_spend}));u(l)}else"App Owner"==r&&await g(t,s,r,a,_,b).then(async e=>{if(console.log("result from spend logs call",e),"daily_spend"in e){let t=e.daily_spend;console.log("daily spend",t),c(t);let s=e.top_api_keys;h(s)}else{let s=(await k(t,function(e){let t=[];e.forEach(e=>{Object.entries(e).forEach(e=>{let[s,l]=e;"spend"!==s&&"startTime"!==s&&"models"!==s&&"users"!==s&&t.push({key:s,spend:l})})}),t.sort((e,t)=>Number(t.spend)-Number(e.spend));let s=t.slice(0,5).map(e=>e.key);return console.log("topKeys: ".concat(Object.keys(s[0]))),s}(e))).info.map(e=>({key:(e.key_name||e.key_alias||e.token).substring(0,7),spend:e.spend}));h(s),p(function(e){let t={};e.forEach(e=>{Object.entries(e.users).forEach(e=>{let[s,l]=e;""!==s&&null!=s&&"None"!=s&&(t[s]||(t[s]=0),t[s]+=l)})});let s=Object.entries(t).map(e=>{let[t,s]=e;return{user_id:t,spend:s}});s.sort((e,t)=>t.spend-e.spend);let l=s.slice(0,5);return console.log("topKeys: ".concat(Object.values(l[0]))),l}(e)),c(e)}})}catch(e){console.error("There was an error fetching the data",e)}})()},[t,s,r,a,_,b]),(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(E.Z,{numItems:2,className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(T.Z,{numColSpan:2,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Monthly Spend"}),(0,l.jsx)(Q.Z,{data:i,index:"date",categories:["spend"],colors:["blue"],valueFormatter:e=>"$ ".concat(new Intl.NumberFormat("us").format(e).toString()),yAxisWidth:100,tickGap:5})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top API Keys"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:d,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:80,tickGap:5,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top Users"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:x,index:"user_id",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top Models"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:m,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})})]})})},eF=()=>{let{Title:e,Paragraph:t}=en.default,[s,a]=(0,n.useState)(""),[o,c]=(0,n.useState)(null),[d,h]=(0,n.useState)(null),[m,u]=(0,n.useState)(null),[x,p]=(0,n.useState)(!0),j=(0,r.useSearchParams)(),g=j.get("userID"),Z=j.get("token"),[y,f]=(0,n.useState)("api-keys"),[w,k]=(0,n.useState)(null);return(0,n.useEffect)(()=>{if(Z){let e=(0,ei.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),k(e.key),e.user_role){let t=function(e){if(!e)return"Undefined Role";switch(console.log("Received user role: ".concat(e.toLowerCase())),console.log("Received user role length: ".concat(e.toLowerCase().length)),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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",t),a(t),"Admin Viewer"==t&&f("usage")}else console.log("User role not defined");e.user_email?c(e.user_email):console.log("User Email is not set ".concat(e)),e.login_method?p("username_password"==e.login_method):console.log("User Email is not set ".concat(e))}}},[Z]),(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)("div",{children:"Loading..."}),children:(0,l.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,l.jsx)(i,{userID:g,userRole:s,userEmail:o,showSSOBanner:x}),(0,l.jsxs)("div",{className:"flex flex-1 overflow-auto",children:[(0,l.jsx)(eT,{setPage:f,userRole:s,defaultSelectedKey:null}),"api-keys"==y?(0,l.jsx)(ec,{userID:g,userRole:s,teams:d,keys:m,setUserRole:a,userEmail:o,setUserEmail:c,setTeams:h,setKeys:u}):"models"==y?(0,l.jsx)(eu,{userID:g,userRole:s,token:Z,accessToken:w}):"llm-playground"==y?(0,l.jsx)(eA,{userID:g,userRole:s,token:Z,accessToken:w}):"users"==y?(0,l.jsx)(ew,{userID:g,userRole:s,token:Z,keys:m,accessToken:w,setKeys:u}):"teams"==y?(0,l.jsx)(e_,{teams:d,setTeams:h,searchParams:j,accessToken:w}):"admin-panel"==y?(0,l.jsx)(eb,{setTeams:h,searchParams:j,accessToken:w}):(0,l.jsx)(eE,{userID:g,userRole:s,token:Z,accessToken:w})]})]})})}}},function(e){e.O(0,[730,971,69,744],function(){return e(e.s=20661)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/page-a458360dd75bd774.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/page-a458360dd75bd774.js deleted file mode 100644 index e0372da4f..000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/page-a458360dd75bd774.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{79615:function(e,s,t){Promise.resolve().then(t.bind(t,74961))},74961:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return eE}});var l=t(3827),n=t(64090),r=t(47907),a=t(8792),o=t(2179),i=e=>{let{userID:s,userRole:t,userEmail:n,showSSOBanner:r}=e;return console.log("User ID:",s),console.log("userEmail:",n),(0,l.jsxs)("nav",{className:"left-0 right-0 top-0 flex justify-between items-center h-12 mb-4",children:[(0,l.jsx)("div",{className:"text-left my-2 absolute top-0 left-0",children:(0,l.jsx)("div",{className:"flex flex-col items-center",children:(0,l.jsx)(a.default,{href:"/",children:(0,l.jsx)("button",{className:"text-gray-800 text-2xl py-1 rounded text-center",children:(0,l.jsx)("img",{src:"/get_image",width:200,height:200,alt:"LiteLLM Brand",className:"mr-2"})})})})}),(0,l.jsxs)("div",{className:"text-right mx-4 my-2 absolute top-0 right-0 flex items-center justify-end space-x-2",children:[r?(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#setup-ssoauth-for-ui",target:"_blank",className:"mr-2",children:(0,l.jsx)(o.Z,{variant:"primary",size:"lg",children:"Enable SSO"})}):null,(0,l.jsxs)(o.Z,{variant:"secondary",size:"lg",children:[n,(0,l.jsxs)("p",{children:["Role: ",t]}),(0,l.jsxs)("p",{children:["ID: ",s]})]})]})]})},c=t(80588);let d=async(e,s,t)=>{try{if(console.log("Form Values in keyCreateCall:",t),t.description&&(t.metadata||(t.metadata={}),t.metadata.description=t.description,delete t.description,t.metadata=JSON.stringify(t.metadata)),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",t);let l=await fetch("/key/generate",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:s,...t})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},h=async(e,s,t)=>{try{if(console.log("Form Values in keyCreateCall:",t),t.description&&(t.metadata||(t.metadata={}),t.metadata.description=t.description,delete t.description,t.metadata=JSON.stringify(t.metadata)),t.metadata){console.log("formValues.metadata:",t.metadata);try{t.metadata=JSON.parse(t.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",t);let l=await fetch("/user/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:s,...t})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},m=async(e,s)=>{try{console.log("in keyDeleteCall:",s),c.ZP.info("Making key delete request");let t=await fetch("/key/delete",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[s]})});if(!t.ok){let e=await t.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await t.json();return console.log(l),c.ZP.success("API Key Deleted"),l}catch(e){throw console.error("Failed to create key:",e),e}},u=async function(e,s,t){let l=arguments.length>3&&void 0!==arguments[3]&&arguments[3];try{let n="/user/info";"App Owner"==t&&s&&(n="".concat(n,"/?user_id=").concat(s)),console.log("in userInfoCall viewAll=",l),l&&(n="".concat(n,"/?view_all=true")),c.ZP.info("Requesting user data");let r=await fetch(n,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw c.ZP.error(e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),c.ZP.info("Received user data"),a}catch(e){throw console.error("Failed to create key:",e),e}},x=async(e,s,t)=>{try{c.ZP.info("Requesting model data");let s=await fetch("/v2/model/info",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let t=await s.json();return c.ZP.info("Received model data"),t}catch(e){throw console.error("Failed to create key:",e),e}},p=async(e,s,t)=>{try{c.ZP.info("Requesting model data");let s=await fetch("/models",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let t=await s.json();return c.ZP.info("Received model data"),t}catch(e){throw console.error("Failed to create key:",e),e}},j=async(e,s)=>{try{let t="/global/spend/logs";console.log("in keySpendLogsCall:",t);let l=await fetch("".concat(t,"/?api_key=").concat(s),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to create key:",e),e}},g=async(e,s,t,l,n,r)=>{try{console.log("user role in spend logs call: ".concat(t));let s="/spend/logs";s="App Owner"==t?"".concat(s,"/?user_id=").concat(l,"&start_date=").concat(n,"&end_date=").concat(r):"".concat(s,"/?start_date=").concat(n,"&end_date=").concat(r),c.ZP.info("Making spend logs request");let a=await fetch(s,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw c.ZP.error(e),Error("Network response was not ok")}let o=await a.json();return console.log(o),c.ZP.success("Spend Logs received"),o}catch(e){throw console.error("Failed to create key:",e),e}},Z=async e=>{try{c.ZP.info("Making spend logs request");let s=await fetch("/global/spend/logs",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let t=await s.json();return console.log(t),c.ZP.success("Spend Logs received"),t}catch(e){throw console.error("Failed to create key:",e),e}},y=async e=>{try{c.ZP.info("Making spend keys request");let s=await fetch("/global/spend/keys?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let t=await s.json();return console.log(t),c.ZP.success("Spend Logs received"),t}catch(e){throw console.error("Failed to create key:",e),e}},f=async(e,s)=>{try{s&&JSON.stringify({api_key:s}),c.ZP.info("Making top end users request");let t={method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}};s&&(t.body=JSON.stringify({api_key:s}));let l=await fetch("/global/spend/end_users",t);if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Top End users received"),n}catch(e){throw console.error("Failed to create key:",e),e}},w=async e=>{try{c.ZP.info("Making top models request");let s=await fetch("/global/spend/models?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let t=await s.json();return console.log(t),c.ZP.success("Top Models received"),t}catch(e){throw console.error("Failed to create key:",e),e}},k=async(e,s)=>{try{let t=await fetch("/v2/key/info",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:s})});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await t.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},_=async(e,s)=>{try{let t="/spend/users";console.log("in spendUsersCall:",t);let l=await fetch("".concat(t,"/?user_id=").concat(s),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to get spend for user",e),e}},b=async(e,s,t,l)=>{try{let n=await fetch("/user/request_model",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({models:[s],user_id:t,justification:l})});if(!n.ok){let e=await n.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let r=await n.json();return console.log(r),c.ZP.success(""),r}catch(e){throw console.error("Failed to create key:",e),e}},v=async e=>{try{let s="/user/get_requests";console.log("in userGetRequesedtModelsCall:",s);let t=await fetch(s,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await t.json();return console.log(l),c.ZP.success(""),l}catch(e){throw console.error("Failed to get requested models:",e),e}},S=async(e,s)=>{try{let t="/user/get_users?role=".concat(s);console.log("in userGetAllUsersCall:",t);let l=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Got all users"),n}catch(e){throw console.error("Failed to get requested models:",e),e}},N=async(e,s)=>{try{console.log("Form Values in teamCreateCall:",s);let t=await fetch("/team/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...s})});if(!t.ok){let e=await t.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await t.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,s,t)=>{try{console.log("Form Values in teamMemberAddCall:",t);let l=await fetch("/team/member_add",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:s,member:t})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},C=async(e,s)=>{try{console.log("Form Values in userUpdateUserCall:",s);let t=await fetch("/user/update",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_role:"proxy_admin_viewer",...s})});if(!t.ok){let e=await t.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await t.json();return console.log("API Response:",l),c.ZP.success("User role updated"),l}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,s)=>{try{let t=await fetch("/global/predict/spend/logs",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({data:s})});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await t.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}};var P=t(10384),T=t(46453),E=t(71801),F=t(17189),M=t(12143),O=t(77171),R=t(42539),D=t(88707),U=t(1861);let{Option:L}=F.default;var z=e=>{let{userID:s,teamID:t,userRole:r,accessToken:a,data:i,userModels:h,setData:m}=e,[u]=M.Z.useForm(),[x,p]=(0,n.useState)(!1),[j,g]=(0,n.useState)(null),Z=()=>{p(!1),u.resetFields()},y=()=>{p(!1),g(null),u.resetFields()},f=async e=>{try{c.ZP.info("Making API Call"),p(!0);let t=await d(a,s,e);m(e=>e?[...e,t]:[t]),g(t.key),c.ZP.success("API Key Created"),u.resetFields(),localStorage.removeItem("userData"+s)}catch(e){console.error("Error creating the key:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>p(!0),children:"+ Create New Key"}),(0,l.jsx)(O.Z,{title:"Create Key",visible:x,width:800,footer:null,onOk:Z,onCancel:y,children:(0,l.jsxs)(M.Z,{form:u,onFinish:f,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:["App Owner"===r||"Admin"===r?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(M.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(R.Z,{})}),(0,l.jsx)(M.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(R.Z,{placeholder:"ai_team",defaultValue:t||""})}),(0,l.jsx)(M.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(F.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:h.map(e=>(0,l.jsx)(L,{value:e,children:e},e))})}),(0,l.jsx)(M.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(D.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(M.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,l.jsxs)(F.default,{defaultValue:null,placeholder:"n/a",children:[(0,l.jsx)(F.default.Option,{value:"24h",children:"daily"}),(0,l.jsx)(F.default.Option,{value:"30d",children:"monthly"})]})}),(0,l.jsx)(M.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(D.Z,{step:1,width:400})}),(0,l.jsx)(M.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(D.Z,{step:1,width:400})}),(0,l.jsx)(M.Z.Item,{label:"Expire Key (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(R.Z,{})}),(0,l.jsx)(M.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(R.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(M.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(R.Z,{})}),(0,l.jsx)(M.Z.Item,{label:"Team ID (Contact Group)",name:"team_id",children:(0,l.jsx)(R.Z,{placeholder:"ai_team"})}),(0,l.jsx)(M.Z.Item,{label:"Description",name:"description",children:(0,l.jsx)(R.Z.TextArea,{placeholder:"Enter description",rows:4})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(U.ZP,{htmlType:"submit",children:"Create Key"})})]})}),j&&(0,l.jsx)(O.Z,{title:"Save your key",visible:x,onOk:Z,onCancel:y,footer:null,children:(0,l.jsxs)(T.Z,{numItems:1,className:"gap-2 w-full",children:[(0,l.jsx)(P.Z,{numColSpan:1,children:(0,l.jsxs)("p",{children:["Please save this secret key somewhere safe and accessible. For security reasons, ",(0,l.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,l.jsx)(P.Z,{numColSpan:1,children:null!=j?(0,l.jsxs)(E.Z,{children:["API Key: ",j]}):(0,l.jsx)(E.Z,{children:"Key being created, this might take 30s"})})]})})]})},q=t(33393),B=t(13810),K=t(61244),V=t(10827),J=t(3851),G=t(2044),W=t(64167),$=t(74480),Y=t(7178),H=t(9853),X=t(56863),Q=t(42440),ee=e=>{let{token:s,accessToken:t,keySpend:r,keyBudget:a,keyName:i}=e,[c,d]=(0,n.useState)(!1),[h,m]=(0,n.useState)(null),[u,x]=(0,n.useState)(""),[p,g]=(0,n.useState)(null),Z=async()=>{try{if(null==t||null==s)return;console.log("accessToken: ".concat(t,"; token: ").concat(s));let e=await j(t,s);console.log("Response:",e),m(e);let l=await I(t,e);console.log("Response2:",l);let n=[...e,...l.response];m(n),x(l.predicted_spend),console.log("Combined Data:",n)}catch(e){console.error("There was an error fetching the data",e)}};return s?(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>{console.log("Show Modal triggered"),d(!0),Z()},children:"View Spend Report"}),(0,l.jsxs)(O.Z,{visible:c,width:1400,onOk:()=>{d(!1)},onCancel:()=>{d(!1)},footer:null,children:[(0,l.jsxs)(Q.Z,{style:{textAlign:"left"},children:["Key Name: ",i]}),(0,l.jsxs)(X.Z,{children:["Monthly Spend $",r]}),(0,l.jsx)(Q.Z,{children:u}),(0,l.jsx)(B.Z,{className:"mt-6 mb-6",children:h&&(0,l.jsx)(H.Z,{className:"mt-6",data:h,colors:["blue","amber"],index:"date",categories:["spend","predicted_spend"],yAxisWidth:80})})]})]}):null},es=e=>{let{userID:s,accessToken:t,data:r,setData:a}=e,[i,c]=(0,n.useState)(!1),[d,h]=(0,n.useState)(!1),[u,x]=(0,n.useState)(null),p=async e=>{null!=r&&(x(e),localStorage.removeItem("userData"+s),h(!0))},j=async()=>{if(null!=u&&null!=r){try{await m(t,u);let e=r.filter(e=>e.token!==u);a(e)}catch(e){console.error("Error deleting the key:",e)}h(!1),x(null)}};if(null!=r)return console.log("RERENDER TRIGGERED"),(0,l.jsxs)(B.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:[(0,l.jsxs)(V.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)($.Z,{children:"Key Alias"}),(0,l.jsx)($.Z,{children:"Secret Key"}),(0,l.jsx)($.Z,{children:"Spend (USD)"}),(0,l.jsx)($.Z,{children:"Key Budget (USD)"}),(0,l.jsx)($.Z,{children:"Spend Report"}),(0,l.jsx)($.Z,{children:"Team ID"}),(0,l.jsx)($.Z,{children:"Metadata"}),(0,l.jsx)($.Z,{children:"Models"}),(0,l.jsx)($.Z,{children:"TPM / RPM Limits"}),(0,l.jsx)($.Z,{children:"Expires"})]})}),(0,l.jsx)(J.Z,{children:r.map(e=>(console.log(e),"litellm-dashboard"===e.team_id)?null:(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)(G.Z,{children:null!=e.key_alias?(0,l.jsx)(E.Z,{children:e.key_alias}):(0,l.jsx)(E.Z,{children:"Not Set"})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(E.Z,{children:e.key_name})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(E.Z,{children:e.spend})}),(0,l.jsx)(G.Z,{children:null!=e.max_budget?(0,l.jsx)(E.Z,{children:e.max_budget}):(0,l.jsx)(E.Z,{children:"Unlimited Budget"})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(ee,{token:e.token,accessToken:t,keySpend:e.spend,keyBudget:e.max_budget,keyName:e.key_name})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(E.Z,{children:e.team_id})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(E.Z,{children:JSON.stringify(e.metadata)})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(E.Z,{children:JSON.stringify(e.models)})}),(0,l.jsx)(G.Z,{children:(0,l.jsxs)(E.Z,{children:["TPM Limit: ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(G.Z,{children:null!=e.expires?(0,l.jsx)(E.Z,{children:e.expires}):(0,l.jsx)(E.Z,{children:"Never expires"})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(K.Z,{onClick:()=>p(e.token),icon:q.Z,size:"sm"})})]},e.token))})]}),d&&(0,l.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,l.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,l.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,l.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,l.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,l.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,l.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,l.jsx)("div",{className:"sm:flex sm:items-start",children:(0,l.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,l.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Key"}),(0,l.jsx)("div",{className:"mt-2",children:(0,l.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this key ?"})})]})})}),(0,l.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,l.jsx)(o.Z,{onClick:j,color:"red",className:"ml-2",children:"Delete"}),(0,l.jsx)(o.Z,{onClick:()=>{h(!1),x(null)},children:"Cancel"})]})]})]})})]})},et=e=>{let{userID:s,userSpendData:t,userRole:r,accessToken:a}=e;console.log("User SpendData:",t);let[o,i]=(0,n.useState)(null==t?void 0:t.spend),[c,d]=(0,n.useState)((null==t?void 0:t.max_budget)||null);return(0,n.useEffect)(()=>{(async()=>{if("Admin"===r)try{let e=await _(a,"litellm-proxy-budget");console.log("Result from callSpendUsers:",e);let s=e[0];i(null==s?void 0:s.spend),d((null==s?void 0:s.max_budget)||null)}catch(e){console.error("Failed to get spend for user",e)}})()},[r,a,s]),(0,l.jsx)(l.Fragment,{children:(0,l.jsxs)(B.Z,{className:"mx-auto mb-4",children:[(0,l.jsxs)(X.Z,{children:["$",o]}),(0,l.jsxs)(Q.Z,{children:["/ ",null!==c?"$".concat(c," limit"):"No limit"]})]})})},el=t(36083),en=t(68967),er=t(27166),ea=e=>{let{teams:s,setSelectedTeam:t}=e,{Title:r,Paragraph:a}=el.default,[o,i]=(0,n.useState)("");return(0,l.jsxs)("div",{className:"mt-10",children:[(0,l.jsx)(r,{level:4,children:"Default Team"}),(0,l.jsx)(a,{children:"If you belong to multiple teams, this setting controls which team is used by default when creating new API Keys."}),s&&s.length>0?(0,l.jsx)(en.Z,{defaultValue:"0",children:s.map((e,s)=>(0,l.jsx)(er.Z,{value:String(s),onClick:()=>t(e),children:e.team_alias},s))}):(0,l.jsxs)(a,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]})},eo=t(37963);console.log("isLocal:",!1);var ei=e=>{let{userID:s,userRole:t,teams:a,keys:o,setUserRole:i,userEmail:c,setUserEmail:d,setTeams:h,setKeys:m}=e,[x,j]=(0,n.useState)(null),g=(0,r.useSearchParams)();g.get("viewSpend"),(0,r.useRouter)();let Z=g.get("token"),[y,f]=(0,n.useState)(null),[w,k]=(0,n.useState)([]),[_,b]=(0,n.useState)(a?a[0]:null);if(window.addEventListener("beforeunload",function(){sessionStorage.clear()}),(0,n.useEffect)(()=>{if(Z){let e=(0,eo.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),f(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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",s),i(s)}else console.log("User role not defined");e.user_email?d(e.user_email):console.log("User Email is not set ".concat(e))}}if(s&&y&&t&&!o&&!x){let e=sessionStorage.getItem("userModels"+s);e?k(JSON.parse(e)):(async()=>{try{let e=await u(y,s,t);console.log("received teams in user dashboard: ".concat(Object.keys(e),"; team values: ").concat(Object.entries(e.teams))),j(e.user_info),m(e.keys),h(e.teams),b(e.teams?e.teams[0]:null),sessionStorage.setItem("userData"+s,JSON.stringify(e.keys)),sessionStorage.setItem("userSpendData"+s,JSON.stringify(e.user_info));let l=(await p(y,s,t)).data.map(e=>e.id);console.log("available_model_names:",l),k(l),console.log("userModels:",w),sessionStorage.setItem("userModels"+s,JSON.stringify(l))}catch(e){console.error("There was an error fetching the data",e)}})()}},[s,Z,y,o,t]),null==s||null==Z){let e="/sso/key/generate";return console.log("Full URL:",e),window.location.href=e,null}if(null==y)return null;if(null==t&&i("App Owner"),t&&"Admin Viewer"==t){let{Title:e,Paragraph:s}=el.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(s,{children:"Ask your proxy admin for access to create keys"})]})}return(0,l.jsx)("div",{children:(0,l.jsx)(T.Z,{numItems:1,className:"gap-0 p-10 h-[75vh] w-full",children:(0,l.jsxs)(P.Z,{numColSpan:1,children:[(0,l.jsx)(et,{userID:s,userSpendData:x,userRole:t,accessToken:y}),(0,l.jsx)(es,{userID:s,accessToken:y,data:o,setData:m}),(0,l.jsx)(z,{userID:s,teamID:_?_.team_id:null,userRole:t,userModels:w,accessToken:y,data:o,setData:m}),(0,l.jsx)(ea,{teams:a,setSelectedTeam:b})]})})})},ec=t(5);let{Option:ed}=F.default;var eh=e=>{let{userModels:s,accessToken:t,userID:r}=e,[a]=M.Z.useForm(),[i,d]=(0,n.useState)(!1),h=async e=>{try{c.ZP.info("Requesting access");let{selectedModel:s,accessReason:l}=e;await b(t,s,r,l),d(!0)}catch(e){console.error("Error requesting access:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>d(!0),children:"Request Access"}),(0,l.jsx)(O.Z,{title:"Request Access",visible:i,width:800,footer:null,onOk:()=>{d(!1),a.resetFields()},onCancel:()=>{d(!1),a.resetFields()},children:(0,l.jsxs)(M.Z,{form:a,onFinish:h,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(M.Z.Item,{label:"Select Model",name:"selectedModel",children:(0,l.jsx)(F.default,{placeholder:"Select model",style:{width:"100%"},children:s.map(e=>(0,l.jsx)(ed,{value:e,children:e},e))})}),(0,l.jsx)(M.Z.Item,{label:"Reason for Access",name:"accessReason",children:(0,l.jsx)(R.Z.TextArea,{rows:4,placeholder:"Enter reason for access"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(o.Z,{children:"Request Access"})})]})})]})},em=e=>{let{accessToken:s,token:t,userRole:r,userID:a}=e,[i,c]=(0,n.useState)({data:[]}),[d,h]=(0,n.useState)([]);if((0,n.useEffect)(()=>{if(!s||!t||!r||!a)return;let e=async()=>{try{let e=await x(s,a,r);if(console.log("Model data response:",e.data),c(e),"Admin"===r&&s){let e=await v(s);console.log("Pending Requests:",d),h(e.requests||[])}}catch(e){console.error("There was an error fetching the model data",e)}};s&&t&&r&&a&&e()},[s,t,r,a]),!i||!s||!t||!r||!a)return(0,l.jsx)("div",{children:"Loading..."});let m=[];for(let e=0;e(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)(G.Z,{children:(0,l.jsx)(Q.Z,{children:e.model_name})}),(0,l.jsx)(G.Z,{children:e.provider}),(0,l.jsx)(G.Z,{children:e.user_access?(0,l.jsx)(ec.Z,{color:"green",children:"Yes"}):(0,l.jsx)(eh,{userModels:m,accessToken:s,userID:a})}),(0,l.jsx)(G.Z,{children:e.input_cost}),(0,l.jsx)(G.Z,{children:e.output_cost}),(0,l.jsx)(G.Z,{children:e.max_tokens})]},e.model_name))})]})}),"Admin"===r&&d&&d.length>0?(0,l.jsx)(B.Z,{children:(0,l.jsxs)(V.Z,{children:[(0,l.jsxs)(W.Z,{children:[(0,l.jsx)(Q.Z,{children:"Pending Requests"}),(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)(G.Z,{children:(0,l.jsx)(Q.Z,{children:"User ID"})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(Q.Z,{children:"Requested Models"})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(Q.Z,{children:"Justification"})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(Q.Z,{children:"Justification"})})]})]}),(0,l.jsx)(J.Z,{children:d.map(e=>(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)(G.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)("p",{children:e.models[0]})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)("p",{children:e.justification})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(o.Z,{children:"Approve"}),(0,l.jsx)(o.Z,{variant:"secondary",className:"ml-2",children:"Deny"})]},e.request_id))})]})}):null]})})},eu=t(92836),ex=t(26734),ep=t(41608),ej=t(32126),eg=t(23682);let{Option:eZ}=F.default;var ey=e=>{let{userID:s,accessToken:t}=e,[r]=M.Z.useForm(),[a,i]=(0,n.useState)(!1),[d,m]=(0,n.useState)(null),[u,x]=(0,n.useState)([]);(0,n.useEffect)(()=>{(async()=>{try{let e=await p(t,s,"any"),l=[];for(let s=0;s{i(!1),r.resetFields()},g=()=>{i(!1),m(null),r.resetFields()},Z=async e=>{try{c.ZP.info("Making API Call"),i(!0),console.log("formValues in create user:",e);let l=await h(t,s,e);console.log("user create Response:",l),m(l.key),c.ZP.success("API user Created"),r.resetFields(),localStorage.removeItem("userData"+s)}catch(e){console.error("Error creating the user:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>i(!0),children:"+ Create New User"}),(0,l.jsx)(O.Z,{title:"Create User",visible:a,width:800,footer:null,onOk:j,onCancel:g,children:(0,l.jsxs)(M.Z,{form:r,onFinish:Z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(M.Z.Item,{label:"User ID",name:"user_id",children:(0,l.jsx)(R.Z,{placeholder:"Enter User ID"})}),(0,l.jsx)(M.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(R.Z,{placeholder:"ai_team"})}),(0,l.jsx)(M.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(F.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:u.map(e=>(0,l.jsx)(eZ,{value:e,children:e},e))})}),(0,l.jsx)(M.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(D.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(M.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(D.Z,{step:1,width:400})}),(0,l.jsx)(M.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(D.Z,{step:1,width:400})}),(0,l.jsx)(M.Z.Item,{label:"Duration (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(R.Z,{})}),(0,l.jsx)(M.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(R.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(U.ZP,{htmlType:"submit",children:"Create User"})})]})}),d&&(0,l.jsxs)(O.Z,{title:"Save Your User",visible:a,onOk:j,onCancel:g,footer:null,children:[(0,l.jsxs)("p",{children:["Please save this secret user somewhere safe and accessible. For security reasons, ",(0,l.jsx)("b",{children:"you will not be able to view it again"})," ","through your LiteLLM account. If you lose this secret user, you will need to generate a new one."]}),(0,l.jsx)("p",{children:null!=d?"API user: ".concat(d):"User being created, this might take 30s"})]})]})},ef=e=>{let{accessToken:s,token:t,keys:r,userRole:a,userID:o,setKeys:i}=e,[c,d]=(0,n.useState)(null),[h,m]=(0,n.useState)(null),[x,p]=(0,n.useState)(1);if((0,n.useEffect)(()=>{if(!s||!t||!a||!o)return;let e=async()=>{try{let e=await u(s,null,a,!0);console.log("user data response:",e),d(e)}catch(e){console.error("There was an error fetching the model data",e)}};s&&t&&a&&o&&!c&&e();let l=async()=>{try{let e=await f(s,null);console.log("user data response:",e),m(e)}catch(e){console.error("There was an error fetching the model data",e)}};a&&("Admin"==a||"Admin Viewer"==a)&&!h&&l()},[s,t,a,o]),!c||!s||!t||!a||!o)return(0,l.jsx)("div",{children:"Loading..."});let j=async e=>{try{let t=await f(s,e);console.log("user data response:",t),m(t)}catch(e){console.error("There was an error fetching the model data",e)}};return(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(T.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(ey,{userID:o,accessToken:s}),(0,l.jsx)(B.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:(0,l.jsxs)(ex.Z,{children:[(0,l.jsxs)(ep.Z,{variant:"line",defaultValue:"1",children:[(0,l.jsx)(eu.Z,{value:"1",children:"Key Owners"}),(0,l.jsx)(eu.Z,{value:"2",children:"End-Users"})]}),(0,l.jsxs)(eg.Z,{children:[(0,l.jsx)(ej.Z,{children:(0,l.jsxs)(V.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)($.Z,{children:"User ID"}),(0,l.jsx)($.Z,{children:"User Role"}),(0,l.jsx)($.Z,{children:"User Models"}),(0,l.jsx)($.Z,{children:"User Spend ($ USD)"}),(0,l.jsx)($.Z,{children:"User Max Budget ($ USD)"})]})}),(0,l.jsx)(J.Z,{children:c.map(e=>(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)(G.Z,{children:e.user_id}),(0,l.jsx)(G.Z,{children:e.user_role?e.user_role:"app_owner"}),(0,l.jsx)(G.Z,{children:e.models&&e.models.length>0?e.models:"All Models"}),(0,l.jsx)(G.Z,{children:e.spend?e.spend:0}),(0,l.jsx)(G.Z,{children:e.max_budget?e.max_budget:"Unlimited"})]},e.user_id))})]})}),(0,l.jsxs)(ej.Z,{children:[(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)("div",{className:"flex-1 flex justify-between items-center",children:[(0,l.jsx)(E.Z,{className:"w-1/4 mr-2 text-right",children:"Key"}),(0,l.jsx)(en.Z,{defaultValue:"1",className:"w-3/4",children:null==r?void 0:r.map((e,s)=>{if(e&&null!==e.key_name&&e.key_name.length>0)return(0,l.jsx)(er.Z,{value:String(s),onClick:()=>j(e.token),children:e.key_name},s)})})]})]}),(0,l.jsxs)(V.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)($.Z,{children:"End User"}),(0,l.jsx)($.Z,{children:"Spend"}),(0,l.jsx)($.Z,{children:"Total Events"})]})}),(0,l.jsx)(J.Z,{children:null==h?void 0:h.map((e,s)=>(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)(G.Z,{children:e.end_user}),(0,l.jsx)(G.Z,{children:e.total_spend}),(0,l.jsx)(G.Z,{children:e.total_events})]},s))})]})]})]})]})}),function(){if(!c)return null;let e=Math.ceil(c.length/25),s=Math.min(25*x,c.length);return(0,l.jsxs)("div",{className:"flex justify-between items-center",children:[(0,l.jsxs)("div",{children:["Showing ",(x-1)*25+1," – ",s," of ",c.length]}),(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-l focus:outline-none",disabled:1===x,onClick:()=>p(x-1),children:"← Prev"}),(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-r focus:outline-none",disabled:x===e,onClick:()=>p(x+1),children:"Next →"})]})]})}()]})})},ew=t(8510),ek=e=>{let{teams:s,searchParams:t,accessToken:r,setTeams:a}=e,[i]=M.Z.useForm(),[d]=M.Z.useForm(),{Title:h,Paragraph:m}=el.default,[u,x]=(0,n.useState)(""),[p,j]=(0,n.useState)(s?s[0]:null),[g,Z]=(0,n.useState)(!1),[y,f]=(0,n.useState)(!1),w=async e=>{try{if(null!=r){c.ZP.info("Making API Call");let t=await N(r,e);null!==s?a([...s,t]):a([t]),console.log("response for team create call: ".concat(t)),Z(!1)}}catch(e){console.error("Error creating the key:",e)}},k=async e=>{try{if(null!=r&&null!=s){c.ZP.info("Making API Call");let t={role:"user",user_email:e.user_email,user_id:e.user_id},l=await A(r,p.team_id,t);console.log("response for team create call: ".concat(l.data));let n=s.findIndex(e=>(console.log("team.team_id=".concat(e.team_id,"; response.data.team_id=").concat(l.data.team_id)),e.team_id===l.data.team_id));if(console.log("foundIndex: ".concat(n)),-1!==n){let e=[...s];e[n]=l.data,a(e),j(l.data)}f(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("received teams ".concat(s)),(0,l.jsx)("div",{className:"w-full",children:(0,l.jsxs)(T.Z,{numItems:1,className:"gap-2 p-2 h-[75vh] w-full",children:[(0,l.jsxs)(P.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"All Teams"}),(0,l.jsx)(B.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(V.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)($.Z,{children:"Team Name"}),(0,l.jsx)($.Z,{children:"Spend (USD)"}),(0,l.jsx)($.Z,{children:"Budget (USD)"}),(0,l.jsx)($.Z,{children:"TPM / RPM Limits"})]})}),(0,l.jsx)(J.Z,{children:s&&s.length>0?s.map(e=>(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)(G.Z,{children:e.team_alias}),(0,l.jsx)(G.Z,{children:e.spend}),(0,l.jsx)(G.Z,{children:e.max_budget?e.max_budget:"No limit"}),(0,l.jsx)(G.Z,{children:(0,l.jsxs)(E.Z,{children:["TPM Limit:"," ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(K.Z,{icon:ew.Z,size:"sm"})})]},e.team_id)):null})]})})]}),(0,l.jsxs)(P.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>Z(!0),children:"+ Create New Team"}),(0,l.jsx)(O.Z,{title:"Create Team",visible:g,width:800,footer:null,onOk:()=>{Z(!1),i.resetFields()},onCancel:()=>{Z(!1),i.resetFields()},children:(0,l.jsxs)(M.Z,{form:i,onFinish:w,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(M.Z.Item,{label:"Team Name",name:"team_alias",children:(0,l.jsx)(R.Z,{})}),(0,l.jsx)(M.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(F.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"}})}),(0,l.jsx)(M.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(D.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(M.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(D.Z,{step:1,width:400})}),(0,l.jsx)(M.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(D.Z,{step:1,width:400})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(U.ZP,{htmlType:"submit",children:"Create Team"})})]})})]}),(0,l.jsxs)(P.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"Team Members"}),(0,l.jsx)(m,{children:"If you belong to multiple teams, this setting controls which teams members you see."}),s&&s.length>0?(0,l.jsx)(en.Z,{defaultValue:"0",children:s.map((e,s)=>(0,l.jsx)(er.Z,{value:String(s),onClick:()=>{j(e)},children:e.team_alias},s))}):(0,l.jsxs)(m,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]}),(0,l.jsx)(P.Z,{numColSpan:1,children:(0,l.jsx)(B.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(V.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)($.Z,{children:"Member Name"}),(0,l.jsx)($.Z,{children:"Role"}),(0,l.jsx)($.Z,{children:"Action"})]})}),(0,l.jsx)(J.Z,{children:p?p.members_with_roles.map((e,s)=>(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)(G.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(G.Z,{children:e.role}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(K.Z,{icon:ew.Z,size:"sm"})})]},s)):null})]})})}),(0,l.jsxs)(P.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>f(!0),children:"+ Add member"}),(0,l.jsx)(O.Z,{title:"Add member",visible:y,width:800,footer:null,onOk:()=>{f(!1),d.resetFields()},onCancel:()=>{f(!1),d.resetFields()},children:(0,l.jsxs)(M.Z,{form:i,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(M.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(R.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(M.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(R.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(U.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})})},e_=e=>{let{searchParams:s,accessToken:t}=e,[r]=M.Z.useForm(),[a]=M.Z.useForm(),{Title:i,Paragraph:d}=el.default,[h,m]=(0,n.useState)(""),[u,x]=(0,n.useState)(null),[p,j]=(0,n.useState)(!1);(0,n.useEffect)(()=>{(async()=>{if(null!=t){let e=[],s=await S(t,"proxy_admin_viewer");s.forEach(s=>{e.push({user_role:s.user_role,user_id:s.user_id,user_email:s.user_email})}),console.log("proxy viewers: ".concat(s));let l=await S(t,"proxy_admin");l.forEach(s=>{e.push({user_role:s.user_role,user_id:s.user_id,user_email:s.user_email})}),console.log("proxy admins: ".concat(l)),console.log("combinedList: ".concat(e)),x(e)}})()},[t]);let g=async e=>{try{if(null!=t&&null!=u){c.ZP.info("Making API Call"),e.user_email,e.user_id;let s=await C(t,e);console.log("response for team create call: ".concat(s));let l=u.findIndex(e=>(console.log("user.user_id=".concat(e.user_id,"; response.user_id=").concat(s.user_id)),e.user_id===s.user_id));console.log("foundIndex: ".concat(l)),-1==l&&(console.log("updates admin with new user"),u.push(s),x(u)),j(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("admins: ".concat(null==u?void 0:u.length)),(0,l.jsxs)("div",{className:"w-full m-2",children:[(0,l.jsx)(i,{level:4,children:"Restricted Access"}),(0,l.jsxs)(d,{children:["Add other people to just view spend. They cannot create keys, teams or grant users access to new models."," ",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#restrict-ui-access",children:"Requires SSO Setup"})]}),(0,l.jsxs)(T.Z,{numItems:1,className:"gap-2 p-0 w-full",children:[(0,l.jsx)(P.Z,{numColSpan:1,children:(0,l.jsx)(B.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(V.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)($.Z,{children:"Member Name"}),(0,l.jsx)($.Z,{children:"Role"}),(0,l.jsx)($.Z,{children:"Action"})]})}),(0,l.jsx)(J.Z,{children:u?u.map((e,s)=>(0,l.jsxs)(Y.Z,{children:[(0,l.jsx)(G.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(G.Z,{children:e.user_role}),(0,l.jsx)(G.Z,{children:(0,l.jsx)(K.Z,{icon:ew.Z,size:"sm"})})]},s)):null})]})})}),(0,l.jsxs)(P.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>j(!0),children:"+ Add viewer"}),(0,l.jsx)(O.Z,{title:"Add viewer",visible:p,width:800,footer:null,onOk:()=>{j(!1),a.resetFields()},onCancel:()=>{j(!1),a.resetFields()},children:(0,l.jsxs)(M.Z,{form:r,onFinish:g,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(M.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(R.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(M.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(R.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(U.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})]})},eb=t(12968),ev=t(67951);async function eS(e,s,t,l){console.log("isLocal:",!1);let n=window.location.origin,r=new eb.ZP.OpenAI({apiKey:l,baseURL:n,dangerouslyAllowBrowser:!0});for await(let l of(await r.chat.completions.create({model:t,stream:!0,messages:[{role:"user",content:e}]})))console.log(l),l.choices[0].delta.content&&s(l.choices[0].delta.content)}var eN=e=>{let{accessToken:s,token:t,userRole:r,userID:a}=e,[o,i]=(0,n.useState)(""),[c,d]=(0,n.useState)([]),[h,m]=(0,n.useState)(void 0),[u,x]=(0,n.useState)(null);(0,n.useEffect)(()=>{s&&t&&r&&a&&(async()=>{let e=await p(s,a,r);console.log("model_info:",e),(null==e?void 0:e.data.length)>0&&(x(e.data),m(e.data[0].id))})()},[s,a,r]);let j=(e,s)=>{d(t=>{let l=t[t.length-1];return l&&l.role===e?[...t.slice(0,t.length-1),{role:e,content:l.content+s}]:[...t,{role:e,content:s}]})},g=async()=>{if(""!==o.trim()&&s&&t&&r&&a){d(e=>[...e,{role:"user",content:o}]);try{h&&await eS(o,e=>j("assistant",e),h,s)}catch(e){console.error("Error fetching model response",e),j("assistant","Error fetching model response")}i("")}};if(r&&"Admin Viewer"==r){let{Title:e,Paragraph:s}=el.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(s,{children:"Ask your proxy admin for access to test models"})]})}return(0,l.jsx)("div",{style:{width:"100%",position:"relative"},children:(0,l.jsx)(T.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:(0,l.jsx)(B.Z,{children:(0,l.jsxs)(ex.Z,{children:[(0,l.jsxs)(ep.Z,{className:"mt-4",children:[(0,l.jsx)(eu.Z,{children:"Chat"}),(0,l.jsx)(eu.Z,{children:"API Reference"})]}),(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)(ej.Z,{children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{children:"Select Model:"}),(0,l.jsx)("select",{value:h||"",onChange:e=>m(e.target.value),children:null==u?void 0:u.map(e=>(0,l.jsx)("option",{value:e.id,children:e.id},e.id))})]}),(0,l.jsxs)(V.Z,{className:"mt-5",style:{display:"block",maxHeight:"60vh",overflowY:"auto"},children:[(0,l.jsx)(W.Z,{children:(0,l.jsx)(Y.Z,{children:(0,l.jsx)(G.Z,{children:(0,l.jsx)(Q.Z,{children:"Chat"})})})}),(0,l.jsx)(J.Z,{children:c.map((e,s)=>(0,l.jsx)(Y.Z,{children:(0,l.jsx)(G.Z,{children:"".concat(e.role,": ").concat(e.content)})},s))})]}),(0,l.jsx)("div",{className:"mt-3",style:{position:"absolute",bottom:5,width:"95%"},children:(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("input",{type:"text",value:o,onChange:e=>i(e.target.value),className:"flex-1 p-2 border rounded-md mr-2",placeholder:"Type your message..."}),(0,l.jsx)("button",{onClick:g,className:"p-2 bg-blue-500 text-white rounded-md",children:"Send"})]})})]}),(0,l.jsx)(ej.Z,{children:(0,l.jsxs)(ex.Z,{children:[(0,l.jsxs)(ep.Z,{children:[(0,l.jsx)(eu.Z,{children:"OpenAI Python SDK"}),(0,l.jsx)(eu.Z,{children:"LlamaIndex"}),(0,l.jsx)(eu.Z,{children:"Langchain Py"})]}),(0,l.jsxs)(eg.Z,{children:[(0,l.jsx)(ej.Z,{children:(0,l.jsx)(ev.Z,{language:"python",children:'\nimport openai\nclient = openai.OpenAI(\n api_key="your_api_key",\n base_url="http://0.0.0.0:4000" # proxy base url\n)\n\nresponse = client.chat.completions.create(\n model="gpt-3.5-turbo", # model to use from Models Tab\n messages = [\n {\n "role": "user",\n "content": "this is a test request, write a short poem"\n }\n ],\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-openai-client",\n "generation_id": "openai-client-gen-id22",\n "trace_id": "openai-client-trace-id22",\n "trace_user_id": "openai-client-user-id2"\n }\n }\n)\n\nprint(response)\n '})}),(0,l.jsx)(ej.Z,{children:(0,l.jsx)(ev.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="http://0.0.0.0:4000", # 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="http://0.0.0.0:4000",\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,l.jsx)(ej.Z,{children:(0,l.jsx)(ev.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="http://0.0.0.0:8000",\n model = "gpt-3.5-turbo",\n temperature=0.1,\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-langchain-client",\n "generation_id": "langchain-client-gen-id22",\n "trace_id": "langchain-client-trace-id22",\n "trace_user_id": "langchain-client-user-id2"\n }\n }\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 '})})]})]})})]})]})})})})},eA=t(33509),eC=t(30569);let{Sider:eI}=eA.default;var eP=e=>{let{setPage:s,userRole:t,defaultSelectedKey:n}=e;return"Admin Viewer"==t?(0,l.jsx)(eA.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eI,{width:120,children:(0,l.jsxs)(eC.Z,{mode:"inline",defaultSelectedKeys:n||["4"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eC.Z.Item,{onClick:()=>s("api-keys"),children:"API Keys"},"4"),(0,l.jsx)(eC.Z.Item,{onClick:()=>s("models"),children:"Models"},"2"),(0,l.jsx)(eC.Z.Item,{onClick:()=>s("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eC.Z.Item,{onClick:()=>s("usage"),children:"Usage"},"1")]})})}):(0,l.jsx)(eA.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eI,{width:120,children:(0,l.jsxs)(eC.Z,{mode:"inline",defaultSelectedKeys:n||["1"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eC.Z.Item,{onClick:()=>s("api-keys"),children:"API Keys"},"1"),(0,l.jsx)(eC.Z.Item,{onClick:()=>s("models"),children:"Models"},"2"),(0,l.jsx)(eC.Z.Item,{onClick:()=>s("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eC.Z.Item,{onClick:()=>s("usage"),children:"Usage"},"4"),"Admin"==t?(0,l.jsx)(eC.Z.Item,{onClick:()=>s("users"),children:"Users"},"5"):null,"Admin"==t?(0,l.jsx)(eC.Z.Item,{onClick:()=>s("teams"),children:"Teams"},"6"):null,"Admin"==t?(0,l.jsx)(eC.Z.Item,{onClick:()=>s("admin-panel"),children:"Admin"},"7"):null]})})})},eT=e=>{let{accessToken:s,token:t,userRole:r,userID:a}=e,o=new Date,[i,c]=(0,n.useState)([]),[d,h]=(0,n.useState)([]),[m,u]=(0,n.useState)([]),[x,p]=(0,n.useState)([]),j=new Date(o.getFullYear(),o.getMonth(),1),f=new Date(o.getFullYear(),o.getMonth()+1,0),_=v(j),b=v(f);function v(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)}return console.log("Start date is ".concat(_)),console.log("End date is ".concat(b)),(0,n.useEffect)(()=>{s&&t&&r&&a&&(async()=>{try{if(console.log("user role: ".concat(r)),"Admin"==r||"Admin Viewer"==r){let e=await Z(s);c(e);let t=(await y(s)).map(e=>({key:(e.key_name||e.key_alias||e.api_key).substring(0,7),spend:e.total_spend}));h(t);let l=(await w(s)).map(e=>({key:e.model,spend:e.total_spend}));u(l)}else"App Owner"==r&&await g(s,t,r,a,_,b).then(async e=>{if(console.log("result from spend logs call",e),"daily_spend"in e){let s=e.daily_spend;console.log("daily spend",s),c(s);let t=e.top_api_keys;h(t)}else{let t=(await k(s,function(e){let s=[];e.forEach(e=>{Object.entries(e).forEach(e=>{let[t,l]=e;"spend"!==t&&"startTime"!==t&&"models"!==t&&"users"!==t&&s.push({key:t,spend:l})})}),s.sort((e,s)=>Number(s.spend)-Number(e.spend));let t=s.slice(0,5).map(e=>e.key);return console.log("topKeys: ".concat(Object.keys(t[0]))),t}(e))).info.map(e=>({key:(e.key_name||e.key_alias||e.token).substring(0,7),spend:e.spend}));h(t),p(function(e){let s={};e.forEach(e=>{Object.entries(e.users).forEach(e=>{let[t,l]=e;""!==t&&null!=t&&"None"!=t&&(s[t]||(s[t]=0),s[t]+=l)})});let t=Object.entries(s).map(e=>{let[s,t]=e;return{user_id:s,spend:t}});t.sort((e,s)=>s.spend-e.spend);let l=t.slice(0,5);return console.log("topKeys: ".concat(Object.values(l[0]))),l}(e)),c(e)}})}catch(e){console.error("There was an error fetching the data",e)}})()},[s,t,r,a,_,b]),(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(T.Z,{numItems:2,className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(P.Z,{numColSpan:2,children:(0,l.jsxs)(B.Z,{children:[(0,l.jsx)(Q.Z,{children:"Monthly Spend"}),(0,l.jsx)(H.Z,{data:i,index:"date",categories:["spend"],colors:["blue"],valueFormatter:e=>"$ ".concat(new Intl.NumberFormat("us").format(e).toString()),yAxisWidth:100,tickGap:5})]})}),(0,l.jsx)(P.Z,{numColSpan:1,children:(0,l.jsxs)(B.Z,{children:[(0,l.jsx)(Q.Z,{children:"Top API Keys"}),(0,l.jsx)(H.Z,{className:"mt-4 h-40",data:d,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:80,tickGap:5,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(P.Z,{numColSpan:1,children:(0,l.jsxs)(B.Z,{children:[(0,l.jsx)(Q.Z,{children:"Top Users"}),(0,l.jsx)(H.Z,{className:"mt-4 h-40",data:x,index:"user_id",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(P.Z,{numColSpan:1,children:(0,l.jsxs)(B.Z,{children:[(0,l.jsx)(Q.Z,{children:"Top Models"}),(0,l.jsx)(H.Z,{className:"mt-4 h-40",data:m,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})})]})})},eE=()=>{let{Title:e,Paragraph:s}=el.default,[t,a]=(0,n.useState)(""),[o,c]=(0,n.useState)(null),[d,h]=(0,n.useState)(null),[m,u]=(0,n.useState)(null),[x,p]=(0,n.useState)(!0),j=(0,r.useSearchParams)(),g=j.get("userID"),Z=j.get("token"),[y,f]=(0,n.useState)("api-keys"),[w,k]=(0,n.useState)(null);return(0,n.useEffect)(()=>{if(Z){let e=(0,eo.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),k(e.key),e.user_role){let s=function(e){if(!e)return"Undefined Role";switch(console.log("Received user role: ".concat(e.toLowerCase())),console.log("Received user role length: ".concat(e.toLowerCase().length)),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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",s),a(s),"Admin Viewer"==s&&f("usage")}else console.log("User role not defined");e.user_email?c(e.user_email):console.log("User Email is not set ".concat(e)),e.login_method?p("username_password"==e.login_method):console.log("User Email is not set ".concat(e))}}},[Z]),(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)("div",{children:"Loading..."}),children:(0,l.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,l.jsx)(i,{userID:g,userRole:t,userEmail:o,showSSOBanner:x}),(0,l.jsxs)("div",{className:"flex flex-1 overflow-auto",children:[(0,l.jsx)(eP,{setPage:f,userRole:t,defaultSelectedKey:null}),"api-keys"==y?(0,l.jsx)(ei,{userID:g,userRole:t,teams:d,keys:m,setUserRole:a,userEmail:o,setUserEmail:c,setTeams:h,setKeys:u}):"models"==y?(0,l.jsx)(em,{userID:g,userRole:t,token:Z,accessToken:w}):"llm-playground"==y?(0,l.jsx)(eN,{userID:g,userRole:t,token:Z,accessToken:w}):"users"==y?(0,l.jsx)(ef,{userID:g,userRole:t,token:Z,keys:m,accessToken:w,setKeys:u}):"teams"==y?(0,l.jsx)(ek,{teams:d,setTeams:h,searchParams:j,accessToken:w}):"admin-panel"==y?(0,l.jsx)(e_,{setTeams:h,searchParams:j,accessToken:w}):(0,l.jsx)(eT,{userID:g,userRole:t,token:Z,accessToken:w})]})]})})}}},function(e){e.O(0,[730,971,69,744],function(){return e(e.s=79615)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/main-app-096338c8e1915716.js b/litellm/proxy/_experimental/out/_next/static/chunks/main-app-9b4fb13a7db53edf.js similarity index 54% rename from litellm/proxy/_experimental/out/_next/static/chunks/main-app-096338c8e1915716.js rename to litellm/proxy/_experimental/out/_next/static/chunks/main-app-9b4fb13a7db53edf.js index 421ae3e2c..440df3cb3 100644 --- a/litellm/proxy/_experimental/out/_next/static/chunks/main-app-096338c8e1915716.js +++ b/litellm/proxy/_experimental/out/_next/static/chunks/main-app-9b4fb13a7db53edf.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[744],{70377:function(e,n,t){Promise.resolve().then(t.t.bind(t,47690,23)),Promise.resolve().then(t.t.bind(t,48955,23)),Promise.resolve().then(t.t.bind(t,5613,23)),Promise.resolve().then(t.t.bind(t,11902,23)),Promise.resolve().then(t.t.bind(t,31778,23)),Promise.resolve().then(t.t.bind(t,77831,23))}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[971,69],function(){return n(35317),n(70377)}),_N_E=e.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[744],{32028:function(e,n,t){Promise.resolve().then(t.t.bind(t,47690,23)),Promise.resolve().then(t.t.bind(t,48955,23)),Promise.resolve().then(t.t.bind(t,5613,23)),Promise.resolve().then(t.t.bind(t,11902,23)),Promise.resolve().then(t.t.bind(t,31778,23)),Promise.resolve().then(t.t.bind(t,77831,23))}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[971,69],function(){return n(35317),n(32028)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/index.html b/litellm/proxy/_experimental/out/index.html index 99ac50ef5..0c7a9b87f 100644 --- a/litellm/proxy/_experimental/out/index.html +++ b/litellm/proxy/_experimental/out/index.html @@ -1 +1 @@ -🚅 LiteLLM \ No newline at end of file +🚅 LiteLLM \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/index.txt b/litellm/proxy/_experimental/out/index.txt index a259886a9..5afb31dc0 100644 --- a/litellm/proxy/_experimental/out/index.txt +++ b/litellm/proxy/_experimental/out/index.txt @@ -1,7 +1,7 @@ 2:I[77831,[],""] -3:I[74961,["730","static/chunks/730-1411b729a1c79695.js","931","static/chunks/app/page-a458360dd75bd774.js"],""] +3:I[56239,["730","static/chunks/730-1411b729a1c79695.js","931","static/chunks/app/page-1b778934c9b8fd3d.js"],""] 4:I[5613,[],""] 5:I[31778,[],""] -0:["HnLepq2YNME88Nzo5qHls",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},["$L1",["$","$L2",null,{"propsForComponent":{"params":{}},"Component":"$3","isStaticGeneration":true}],null]]},[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_c23dc8","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"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":[],"styles":null}]}]}],null]],[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/css/32e93a3d13512de5.css","precedence":"next","crossOrigin":""}]],"$L6"]]]] +0:["8Qf_s48H0nBodS2RVsrIl",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},["$L1",["$","$L2",null,{"propsForComponent":{"params":{}},"Component":"$3","isStaticGeneration":true}],null]]},[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_c23dc8","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"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":[],"styles":null}]}]}],null]],[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/css/32e93a3d13512de5.css","precedence":"next","crossOrigin":""}]],"$L6"]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"🚅 LiteLLM"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/ui/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","meta","5",{"name":"next-size-adjust"}]] 1:null diff --git a/ui/litellm-dashboard/out/404.html b/ui/litellm-dashboard/out/404.html index 9b28cde0b..1f1e14ae0 100644 --- a/ui/litellm-dashboard/out/404.html +++ b/ui/litellm-dashboard/out/404.html @@ -1 +1 @@ -404: This page could not be found.🚅 LiteLLM

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.🚅 LiteLLM

404

This page could not be found.

\ No newline at end of file diff --git a/ui/litellm-dashboard/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_buildManifest.js b/ui/litellm-dashboard/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_buildManifest.js new file mode 100644 index 000000000..f779caa02 --- /dev/null +++ b/ui/litellm-dashboard/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_buildManifest.js @@ -0,0 +1 @@ +self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-d6107f1aac0c574c.js"],sortedPages:["/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/ui/litellm-dashboard/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_ssgManifest.js b/ui/litellm-dashboard/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_ssgManifest.js new file mode 100644 index 000000000..5b3ff592f --- /dev/null +++ b/ui/litellm-dashboard/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_ssgManifest.js @@ -0,0 +1 @@ +self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB() \ No newline at end of file diff --git a/ui/litellm-dashboard/out/_next/static/chunks/app/layout-a001706742fcd3bc.js b/ui/litellm-dashboard/out/_next/static/chunks/app/layout-a001706742fcd3bc.js new file mode 100644 index 000000000..e261adc05 --- /dev/null +++ b/ui/litellm-dashboard/out/_next/static/chunks/app/layout-a001706742fcd3bc.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{87421:function(n,e,t){Promise.resolve().then(t.t.bind(t,99646,23)),Promise.resolve().then(t.t.bind(t,63385,23))},63385:function(){},99646:function(n){n.exports={style:{fontFamily:"'__Inter_c23dc8', '__Inter_Fallback_c23dc8'",fontStyle:"normal"},className:"__className_c23dc8"}}},function(n){n.O(0,[971,69,744],function(){return n(n.s=87421)}),_N_E=n.O()}]); \ No newline at end of file diff --git a/ui/litellm-dashboard/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js b/ui/litellm-dashboard/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js new file mode 100644 index 000000000..efda0f860 --- /dev/null +++ b/ui/litellm-dashboard/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{20661:function(e,t,s){Promise.resolve().then(s.bind(s,56239))},56239:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return eF}});var l=s(3827),n=s(64090),r=s(47907),a=s(8792),o=s(2179),i=e=>{let{userID:t,userRole:s,userEmail:n,showSSOBanner:r}=e;return console.log("User ID:",t),console.log("userEmail:",n),(0,l.jsxs)("nav",{className:"left-0 right-0 top-0 flex justify-between items-center h-12 mb-4",children:[(0,l.jsx)("div",{className:"text-left my-2 absolute top-0 left-0",children:(0,l.jsx)("div",{className:"flex flex-col items-center",children:(0,l.jsx)(a.default,{href:"/",children:(0,l.jsx)("button",{className:"text-gray-800 text-2xl py-1 rounded text-center",children:(0,l.jsx)("img",{src:"/get_image",width:200,height:200,alt:"LiteLLM Brand",className:"mr-2"})})})})}),(0,l.jsxs)("div",{className:"text-right mx-4 my-2 absolute top-0 right-0 flex items-center justify-end space-x-2",children:[r?(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#setup-ssoauth-for-ui",target:"_blank",className:"mr-2",children:(0,l.jsx)(o.Z,{variant:"primary",size:"lg",children:"Enable SSO"})}):null,(0,l.jsxs)(o.Z,{variant:"secondary",size:"lg",children:[n,(0,l.jsxs)("p",{children:["Role: ",s]}),(0,l.jsxs)("p",{children:["ID: ",t]})]})]})]})},c=s(80588);let d=async(e,t,s)=>{try{if(console.log("Form Values in keyCreateCall:",s),s.description&&(s.metadata||(s.metadata={}),s.metadata.description=s.description,delete s.description,s.metadata=JSON.stringify(s.metadata)),s.metadata){console.log("formValues.metadata:",s.metadata);try{s.metadata=JSON.parse(s.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",s);let l=await fetch("/key/generate",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},h=async(e,t,s)=>{try{if(console.log("Form Values in keyCreateCall:",s),s.description&&(s.metadata||(s.metadata={}),s.metadata.description=s.description,delete s.description,s.metadata=JSON.stringify(s.metadata)),s.metadata){console.log("formValues.metadata:",s.metadata);try{s.metadata=JSON.parse(s.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",s);let l=await fetch("/user/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},m=async(e,t)=>{try{console.log("in keyDeleteCall:",t),c.ZP.info("Making key delete request");let s=await fetch("/key/delete",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[t]})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await s.json();return console.log(l),c.ZP.success("API Key Deleted"),l}catch(e){throw console.error("Failed to create key:",e),e}},u=async function(e,t,s){let l=arguments.length>3&&void 0!==arguments[3]&&arguments[3];try{let n="/user/info";"App Owner"==s&&t&&(n="".concat(n,"/?user_id=").concat(t)),console.log("in userInfoCall viewAll=",l),l&&(n="".concat(n,"/?view_all=true")),c.ZP.info("Requesting user data");let r=await fetch(n,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw c.ZP.error(e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),c.ZP.info("Received user data"),a}catch(e){throw console.error("Failed to create key:",e),e}},x=async(e,t,s)=>{try{c.ZP.info("Requesting model data");let t=await fetch("/v2/model/info",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return c.ZP.info("Received model data"),s}catch(e){throw console.error("Failed to create key:",e),e}},p=async(e,t,s)=>{try{c.ZP.info("Requesting model data");let t=await fetch("/models",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return c.ZP.info("Received model data"),s}catch(e){throw console.error("Failed to create key:",e),e}},j=async(e,t)=>{try{let s="/global/spend/logs";console.log("in keySpendLogsCall:",s);let l=await fetch("".concat(s,"/?api_key=").concat(t),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to create key:",e),e}},g=async(e,t,s,l,n,r)=>{try{console.log("user role in spend logs call: ".concat(s));let t="/spend/logs";t="App Owner"==s?"".concat(t,"/?user_id=").concat(l,"&start_date=").concat(n,"&end_date=").concat(r):"".concat(t,"/?start_date=").concat(n,"&end_date=").concat(r),c.ZP.info("Making spend logs request");let a=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw c.ZP.error(e),Error("Network response was not ok")}let o=await a.json();return console.log(o),c.ZP.success("Spend Logs received"),o}catch(e){throw console.error("Failed to create key:",e),e}},Z=async e=>{try{c.ZP.info("Making spend logs request");let t=await fetch("/global/spend/logs",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Spend Logs received"),s}catch(e){throw console.error("Failed to create key:",e),e}},y=async e=>{try{c.ZP.info("Making spend keys request");let t=await fetch("/global/spend/keys?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Spend Logs received"),s}catch(e){throw console.error("Failed to create key:",e),e}},f=async(e,t)=>{try{t&&JSON.stringify({api_key:t}),c.ZP.info("Making top end users request");let s={method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}};t&&(s.body=JSON.stringify({api_key:t}));let l=await fetch("/global/spend/end_users",s);if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Top End users received"),n}catch(e){throw console.error("Failed to create key:",e),e}},w=async e=>{try{c.ZP.info("Making top models request");let t=await fetch("/global/spend/models?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Top Models received"),s}catch(e){throw console.error("Failed to create key:",e),e}},k=async(e,t)=>{try{let s=await fetch("/v2/key/info",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:t})});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await s.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},_=async(e,t)=>{try{let s="/spend/users";console.log("in spendUsersCall:",s);let l=await fetch("".concat(s,"/?user_id=").concat(t),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to get spend for user",e),e}},b=async(e,t,s,l)=>{try{let n=await fetch("/user/request_model",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({models:[t],user_id:s,justification:l})});if(!n.ok){let e=await n.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let r=await n.json();return console.log(r),c.ZP.success(""),r}catch(e){throw console.error("Failed to create key:",e),e}},v=async e=>{try{let t="/user/get_requests";console.log("in userGetRequesedtModelsCall:",t);let s=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await s.json();return console.log(l),c.ZP.success(""),l}catch(e){throw console.error("Failed to get requested models:",e),e}},S=async(e,t)=>{try{let s="/user/get_users?role=".concat(t);console.log("in userGetAllUsersCall:",s);let l=await fetch(s,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Got all users"),n}catch(e){throw console.error("Failed to get requested models:",e),e}},N=async(e,t)=>{try{console.log("Form Values in teamCreateCall:",t);let s=await fetch("/team/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await s.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,t,s)=>{try{console.log("Form Values in teamMemberAddCall:",s);let l=await fetch("/team/member_add",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,member:s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},C=async(e,t)=>{try{console.log("Form Values in userUpdateUserCall:",t);let s=await fetch("/user/update",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_role:"proxy_admin_viewer",...t})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await s.json();return console.log("API Response:",l),c.ZP.success("User role updated"),l}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,t)=>{try{let s=await fetch("/global/predict/spend/logs",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({data:t})});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await s.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},P=async e=>{try{console.log("Checking Slack Budget Alerts service health"),c.ZP.info("Sending Test Slack alert...");let t=await fetch("health/services?service=slack_budget_alerts",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error("Failed Slack Alert test: "+e),Error(e)}let s=await t.json();return c.ZP.success("Test Slack Alert worked - check your Slack!"),console.log("Service Health Response:",s),s}catch(e){throw console.error("Failed to perform health check:",e),e}};var T=s(10384),E=s(46453),F=s(13810),M=s(71801),R=s(42440),O=s(17189),D=s(12143),U=s(77171),L=s(42539),z=s(88707),B=s(1861);let{Option:q}=O.default;var K=e=>{let{userID:t,teamID:s,userRole:r,accessToken:a,data:i,userModels:h,setData:m}=e,[u]=D.Z.useForm(),[x,p]=(0,n.useState)(!1),[j,g]=(0,n.useState)(null),[Z,y]=(0,n.useState)(null),f=()=>{p(!1),u.resetFields()},w=()=>{p(!1),g(null),u.resetFields()},k=async e=>{try{c.ZP.info("Making API Call"),p(!0);let s=await d(a,t,e);console.log("key create Response:",s),m(e=>e?[...e,s]:[s]),g(s.key),y(s.soft_budget),c.ZP.success("API Key Created"),u.resetFields(),localStorage.removeItem("userData"+t)}catch(e){console.error("Error creating the key:",e)}},_=async()=>{try{console.log("Sending Slack alert...");let e=await P(a);console.log("slackBudgetAlertsHealthCheck Response:",e),console.log("Testing Slack alert successful")}catch(e){console.error("Error sending Slack alert:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>p(!0),children:"+ Create New Key"}),(0,l.jsx)(U.Z,{title:"Create Key",visible:x,width:800,footer:null,onOk:f,onCancel:w,children:(0,l.jsxs)(D.Z,{form:u,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:["App Owner"===r||"Admin"===r?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team",defaultValue:s||""})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:h.map(e=>(0,l.jsx)(q,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Soft Budget (USD) Monthly",name:"soft_budget",initialValue:50,children:(0,l.jsx)(z.Z,{step:.01,precision:2,defaultValue:50,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,l.jsxs)(O.default,{defaultValue:null,placeholder:"n/a",children:[(0,l.jsx)(O.default.Option,{value:"24h",children:"daily"}),(0,l.jsx)(O.default.Option,{value:"30d",children:"monthly"})]})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Expire Key (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Team ID (Contact Group)",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team"})}),(0,l.jsx)(D.Z.Item,{label:"Description",name:"description",children:(0,l.jsx)(L.Z.TextArea,{placeholder:"Enter description",rows:4})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create Key"})})]})}),j&&(0,l.jsx)(U.Z,{visible:x,onOk:f,onCancel:w,footer:null,children:(0,l.jsx)(E.Z,{numItems:1,className:"gap-2 w-full",children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Save your Key"}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)("p",{children:["Please save this secret key somewhere safe and accessible. For security reasons, ",(0,l.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,l.jsx)(T.Z,{numColSpan:1,children:null!=j?(0,l.jsxs)("div",{children:[(0,l.jsxs)(M.Z,{children:["API Key: ",j]}),(0,l.jsx)(R.Z,{className:"mt-6",children:"Budgets"}),(0,l.jsxs)(M.Z,{children:["Soft Limit Budget: $",Z]}),(0,l.jsx)(o.Z,{className:"mt-3",onClick:_,children:"Test Slack Alert"}),(0,l.jsxs)(M.Z,{className:"mt-2",children:["(LiteLLM Docs -",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/alerting",target:"_blank",className:"text-blue-500",children:"Set Up Slack Alerting)"})]})]}):(0,l.jsx)(M.Z,{children:"Key being created, this might take 30s"})})]})})})]})},V=s(33393),J=s(61244),G=s(10827),$=s(3851),H=s(2044),W=s(64167),Y=s(74480),X=s(7178),Q=s(9853),ee=s(56863),et=e=>{let{token:t,accessToken:s,keySpend:r,keyBudget:a,keyName:i}=e,[c,d]=(0,n.useState)(!1),[h,m]=(0,n.useState)(null),[u,x]=(0,n.useState)(""),[p,g]=(0,n.useState)(null),Z=async()=>{try{if(null==s||null==t)return;console.log("accessToken: ".concat(s,"; token: ").concat(t));let e=await j(s,t);console.log("Response:",e),m(e);let l=await I(s,e);console.log("Response2:",l);let n=[...e,...l.response];m(n),x(l.predicted_spend),console.log("Combined Data:",n)}catch(e){console.error("There was an error fetching the data",e)}};return t?(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>{console.log("Show Modal triggered"),d(!0),Z()},variant:"secondary",children:"View Spend Report"}),(0,l.jsxs)(U.Z,{visible:c,width:1400,onOk:()=>{d(!1)},onCancel:()=>{d(!1)},footer:null,children:[(0,l.jsxs)(R.Z,{style:{textAlign:"left"},children:["Key Name: ",i]}),(0,l.jsxs)(ee.Z,{children:["Monthly Spend $",r]}),(0,l.jsx)(R.Z,{children:u}),(0,l.jsx)(F.Z,{className:"mt-6 mb-6",children:h&&(0,l.jsx)(Q.Z,{className:"mt-6",data:h,colors:["blue","amber"],index:"date",categories:["spend","predicted_spend"],yAxisWidth:80})})]})]}):null},es=e=>{let{userID:t,accessToken:s,data:r,setData:a}=e,[i,c]=(0,n.useState)(!1),[d,h]=(0,n.useState)(!1),[u,x]=(0,n.useState)(null),p=async e=>{null!=r&&(x(e),localStorage.removeItem("userData"+t),h(!0))},j=async()=>{if(null!=u&&null!=r){try{await m(s,u);let e=r.filter(e=>e.token!==u);a(e)}catch(e){console.error("Error deleting the key:",e)}h(!1),x(null)}};if(null!=r)return console.log("RERENDER TRIGGERED"),(0,l.jsxs)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:[(0,l.jsxs)(G.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Key Alias"}),(0,l.jsx)(Y.Z,{children:"Secret Key"}),(0,l.jsx)(Y.Z,{children:"Spend (USD)"}),(0,l.jsx)(Y.Z,{children:"Key Budget (USD)"}),(0,l.jsx)(Y.Z,{children:"Spend Report"}),(0,l.jsx)(Y.Z,{children:"Team ID"}),(0,l.jsx)(Y.Z,{children:"Metadata"}),(0,l.jsx)(Y.Z,{children:"Models"}),(0,l.jsx)(Y.Z,{children:"TPM / RPM Limits"}),(0,l.jsx)(Y.Z,{children:"Expires"})]})}),(0,l.jsx)($.Z,{children:r.map(e=>(console.log(e),"litellm-dashboard"===e.team_id)?null:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:null!=e.key_alias?(0,l.jsx)(M.Z,{children:e.key_alias}):(0,l.jsx)(M.Z,{children:"Not Set"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.key_name})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.spend})}),(0,l.jsx)(H.Z,{children:null!=e.max_budget?(0,l.jsx)(M.Z,{children:e.max_budget}):(0,l.jsx)(M.Z,{children:"Unlimited Budget"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(et,{token:e.token,accessToken:s,keySpend:e.spend,keyBudget:e.max_budget,keyName:e.key_name})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.team_id})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:JSON.stringify(e.metadata)})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:JSON.stringify(e.models)})}),(0,l.jsx)(H.Z,{children:(0,l.jsxs)(M.Z,{children:["TPM Limit: ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(H.Z,{children:null!=e.expires?(0,l.jsx)(M.Z,{children:e.expires}):(0,l.jsx)(M.Z,{children:"Never expires"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{onClick:()=>p(e.token),icon:V.Z,size:"sm"})})]},e.token))})]}),d&&(0,l.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,l.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,l.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,l.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,l.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,l.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,l.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,l.jsx)("div",{className:"sm:flex sm:items-start",children:(0,l.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,l.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Key"}),(0,l.jsx)("div",{className:"mt-2",children:(0,l.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this key ?"})})]})})}),(0,l.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,l.jsx)(o.Z,{onClick:j,color:"red",className:"ml-2",children:"Delete"}),(0,l.jsx)(o.Z,{onClick:()=>{h(!1),x(null)},children:"Cancel"})]})]})]})})]})},el=e=>{let{userID:t,userSpendData:s,userRole:r,accessToken:a}=e;console.log("User SpendData:",s);let[o,i]=(0,n.useState)(null==s?void 0:s.spend),[c,d]=(0,n.useState)((null==s?void 0:s.max_budget)||null);return(0,n.useEffect)(()=>{(async()=>{if("Admin"===r)try{let e=await _(a,"litellm-proxy-budget");console.log("Result from callSpendUsers:",e);let t=e[0];i(null==t?void 0:t.spend),d((null==t?void 0:t.max_budget)||null)}catch(e){console.error("Failed to get spend for user",e)}})()},[r,a,t]),(0,l.jsx)(l.Fragment,{children:(0,l.jsxs)(F.Z,{className:"mx-auto mb-4",children:[(0,l.jsxs)(ee.Z,{children:["$",o]}),(0,l.jsxs)(R.Z,{children:["/ ",null!==c?"$".concat(c," limit"):"No limit"]})]})})},en=s(36083),er=s(68967),ea=s(27166),eo=e=>{let{teams:t,setSelectedTeam:s}=e,{Title:r,Paragraph:a}=en.default,[o,i]=(0,n.useState)("");return(0,l.jsxs)("div",{className:"mt-10",children:[(0,l.jsx)(r,{level:4,children:"Default Team"}),(0,l.jsx)(a,{children:"If you belong to multiple teams, this setting controls which team is used by default when creating new API Keys."}),t&&t.length>0?(0,l.jsx)(er.Z,{defaultValue:"0",children:t.map((e,t)=>(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>s(e),children:e.team_alias},t))}):(0,l.jsxs)(a,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]})},ei=s(37963);console.log("isLocal:",!1);var ec=e=>{let{userID:t,userRole:s,teams:a,keys:o,setUserRole:i,userEmail:c,setUserEmail:d,setTeams:h,setKeys:m}=e,[x,j]=(0,n.useState)(null),g=(0,r.useSearchParams)();g.get("viewSpend"),(0,r.useRouter)();let Z=g.get("token"),[y,f]=(0,n.useState)(null),[w,k]=(0,n.useState)([]),[_,b]=(0,n.useState)(a?a[0]:null);if(window.addEventListener("beforeunload",function(){sessionStorage.clear()}),(0,n.useEffect)(()=>{if(Z){let e=(0,ei.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),f(e.key),e.user_role){let t=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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",t),i(t)}else console.log("User role not defined");e.user_email?d(e.user_email):console.log("User Email is not set ".concat(e))}}if(t&&y&&s&&!o&&!x){let e=sessionStorage.getItem("userModels"+t);e?k(JSON.parse(e)):(async()=>{try{let e=await u(y,t,s);console.log("received teams in user dashboard: ".concat(Object.keys(e),"; team values: ").concat(Object.entries(e.teams))),j(e.user_info),m(e.keys),h(e.teams),b(e.teams?e.teams[0]:null),sessionStorage.setItem("userData"+t,JSON.stringify(e.keys)),sessionStorage.setItem("userSpendData"+t,JSON.stringify(e.user_info));let l=(await p(y,t,s)).data.map(e=>e.id);console.log("available_model_names:",l),k(l),console.log("userModels:",w),sessionStorage.setItem("userModels"+t,JSON.stringify(l))}catch(e){console.error("There was an error fetching the data",e)}})()}},[t,Z,y,o,s]),null==t||null==Z){let e="/sso/key/generate";return console.log("Full URL:",e),window.location.href=e,null}if(null==y)return null;if(null==s&&i("App Owner"),s&&"Admin Viewer"==s){let{Title:e,Paragraph:t}=en.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(t,{children:"Ask your proxy admin for access to create keys"})]})}return(0,l.jsx)("div",{children:(0,l.jsx)(E.Z,{numItems:1,className:"gap-0 p-10 h-[75vh] w-full",children:(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(el,{userID:t,userSpendData:x,userRole:s,accessToken:y}),(0,l.jsx)(es,{userID:t,accessToken:y,data:o,setData:m}),(0,l.jsx)(K,{userID:t,teamID:_?_.team_id:null,userRole:s,userModels:w,accessToken:y,data:o,setData:m}),(0,l.jsx)(eo,{teams:a,setSelectedTeam:b})]})})})},ed=s(5);let{Option:eh}=O.default;var em=e=>{let{userModels:t,accessToken:s,userID:r}=e,[a]=D.Z.useForm(),[i,d]=(0,n.useState)(!1),h=async e=>{try{c.ZP.info("Requesting access");let{selectedModel:t,accessReason:l}=e;await b(s,t,r,l),d(!0)}catch(e){console.error("Error requesting access:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>d(!0),children:"Request Access"}),(0,l.jsx)(U.Z,{title:"Request Access",visible:i,width:800,footer:null,onOk:()=>{d(!1),a.resetFields()},onCancel:()=>{d(!1),a.resetFields()},children:(0,l.jsxs)(D.Z,{form:a,onFinish:h,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(D.Z.Item,{label:"Select Model",name:"selectedModel",children:(0,l.jsx)(O.default,{placeholder:"Select model",style:{width:"100%"},children:t.map(e=>(0,l.jsx)(eh,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Reason for Access",name:"accessReason",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter reason for access"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(o.Z,{children:"Request Access"})})]})})]})},eu=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,[i,c]=(0,n.useState)({data:[]}),[d,h]=(0,n.useState)([]);if((0,n.useEffect)(()=>{if(!t||!s||!r||!a)return;let e=async()=>{try{let e=await x(t,a,r);if(console.log("Model data response:",e.data),c(e),"Admin"===r&&t){let e=await v(t);console.log("Pending Requests:",d),h(e.requests||[])}}catch(e){console.error("There was an error fetching the model data",e)}};t&&s&&r&&a&&e()},[t,s,r,a]),!i||!t||!s||!r||!a)return(0,l.jsx)("div",{children:"Loading..."});let m=[];for(let e=0;e(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:e.model_name})}),(0,l.jsx)(H.Z,{children:e.provider}),(0,l.jsx)(H.Z,{children:e.user_access?(0,l.jsx)(ed.Z,{color:"green",children:"Yes"}):(0,l.jsx)(em,{userModels:m,accessToken:t,userID:a})}),(0,l.jsx)(H.Z,{children:e.input_cost}),(0,l.jsx)(H.Z,{children:e.output_cost}),(0,l.jsx)(H.Z,{children:e.max_tokens})]},e.model_name))})]})}),"Admin"===r&&d&&d.length>0?(0,l.jsx)(F.Z,{children:(0,l.jsxs)(G.Z,{children:[(0,l.jsxs)(W.Z,{children:[(0,l.jsx)(R.Z,{children:"Pending Requests"}),(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"User ID"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Requested Models"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Justification"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Justification"})})]})]}),(0,l.jsx)($.Z,{children:d.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.models[0]})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.justification})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(o.Z,{children:"Approve"}),(0,l.jsx)(o.Z,{variant:"secondary",className:"ml-2",children:"Deny"})]},e.request_id))})]})}):null]})})},ex=s(92836),ep=s(26734),ej=s(41608),eg=s(32126),eZ=s(23682);let{Option:ey}=O.default;var ef=e=>{let{userID:t,accessToken:s}=e,[r]=D.Z.useForm(),[a,i]=(0,n.useState)(!1),[d,m]=(0,n.useState)(null),[u,x]=(0,n.useState)([]);(0,n.useEffect)(()=>{(async()=>{try{let e=await p(s,t,"any"),l=[];for(let t=0;t{i(!1),r.resetFields()},g=()=>{i(!1),m(null),r.resetFields()},Z=async e=>{try{c.ZP.info("Making API Call"),i(!0),console.log("formValues in create user:",e);let l=await h(s,t,e);console.log("user create Response:",l),m(l.key),c.ZP.success("API user Created"),r.resetFields(),localStorage.removeItem("userData"+t)}catch(e){console.error("Error creating the user:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>i(!0),children:"+ Create New User"}),(0,l.jsx)(U.Z,{title:"Create User",visible:a,width:800,footer:null,onOk:j,onCancel:g,children:(0,l.jsxs)(D.Z,{form:r,onFinish:Z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",children:(0,l.jsx)(L.Z,{placeholder:"Enter User ID"})}),(0,l.jsx)(D.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team"})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:u.map(e=>(0,l.jsx)(ey,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Duration (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create User"})})]})}),d&&(0,l.jsxs)(U.Z,{title:"Save Your User",visible:a,onOk:j,onCancel:g,footer:null,children:[(0,l.jsxs)("p",{children:["Please save this secret user somewhere safe and accessible. For security reasons, ",(0,l.jsx)("b",{children:"you will not be able to view it again"})," ","through your LiteLLM account. If you lose this secret user, you will need to generate a new one."]}),(0,l.jsx)("p",{children:null!=d?"API user: ".concat(d):"User being created, this might take 30s"})]})]})},ew=e=>{let{accessToken:t,token:s,keys:r,userRole:a,userID:o,setKeys:i}=e,[c,d]=(0,n.useState)(null),[h,m]=(0,n.useState)(null),[x,p]=(0,n.useState)(1);if((0,n.useEffect)(()=>{if(!t||!s||!a||!o)return;let e=async()=>{try{let e=await u(t,null,a,!0);console.log("user data response:",e),d(e)}catch(e){console.error("There was an error fetching the model data",e)}};t&&s&&a&&o&&!c&&e();let l=async()=>{try{let e=await f(t,null);console.log("user data response:",e),m(e)}catch(e){console.error("There was an error fetching the model data",e)}};a&&("Admin"==a||"Admin Viewer"==a)&&!h&&l()},[t,s,a,o]),!c||!t||!s||!a||!o)return(0,l.jsx)("div",{children:"Loading..."});let j=async e=>{try{let s=await f(t,e);console.log("user data response:",s),m(s)}catch(e){console.error("There was an error fetching the model data",e)}};return(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(E.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(ef,{userID:o,accessToken:t}),(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{variant:"line",defaultValue:"1",children:[(0,l.jsx)(ex.Z,{value:"1",children:"Key Owners"}),(0,l.jsx)(ex.Z,{value:"2",children:"End-Users"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsx)(eg.Z,{children:(0,l.jsxs)(G.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"User ID"}),(0,l.jsx)(Y.Z,{children:"User Role"}),(0,l.jsx)(Y.Z,{children:"User Models"}),(0,l.jsx)(Y.Z,{children:"User Spend ($ USD)"}),(0,l.jsx)(Y.Z,{children:"User Max Budget ($ USD)"})]})}),(0,l.jsx)($.Z,{children:c.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_id}),(0,l.jsx)(H.Z,{children:e.user_role?e.user_role:"app_owner"}),(0,l.jsx)(H.Z,{children:e.models&&e.models.length>0?e.models:"All Models"}),(0,l.jsx)(H.Z,{children:e.spend?e.spend:0}),(0,l.jsx)(H.Z,{children:e.max_budget?e.max_budget:"Unlimited"})]},e.user_id))})]})}),(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)("div",{className:"flex-1 flex justify-between items-center",children:[(0,l.jsx)(M.Z,{className:"w-1/4 mr-2 text-right",children:"Key"}),(0,l.jsx)(er.Z,{defaultValue:"1",className:"w-3/4",children:null==r?void 0:r.map((e,t)=>{if(e&&null!==e.key_name&&e.key_name.length>0)return(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>j(e.token),children:e.key_name},t)})})]})]}),(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"End User"}),(0,l.jsx)(Y.Z,{children:"Spend"}),(0,l.jsx)(Y.Z,{children:"Total Events"})]})}),(0,l.jsx)($.Z,{children:null==h?void 0:h.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.end_user}),(0,l.jsx)(H.Z,{children:e.total_spend}),(0,l.jsx)(H.Z,{children:e.total_events})]},t))})]})]})]})]})}),function(){if(!c)return null;let e=Math.ceil(c.length/25),t=Math.min(25*x,c.length);return(0,l.jsxs)("div",{className:"flex justify-between items-center",children:[(0,l.jsxs)("div",{children:["Showing ",(x-1)*25+1," – ",t," of ",c.length]}),(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-l focus:outline-none",disabled:1===x,onClick:()=>p(x-1),children:"← Prev"}),(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-r focus:outline-none",disabled:x===e,onClick:()=>p(x+1),children:"Next →"})]})]})}()]})})},ek=s(8510),e_=e=>{let{teams:t,searchParams:s,accessToken:r,setTeams:a}=e,[i]=D.Z.useForm(),[d]=D.Z.useForm(),{Title:h,Paragraph:m}=en.default,[u,x]=(0,n.useState)(""),[p,j]=(0,n.useState)(t?t[0]:null),[g,Z]=(0,n.useState)(!1),[y,f]=(0,n.useState)(!1),w=async e=>{try{if(null!=r){c.ZP.info("Making API Call");let s=await N(r,e);null!==t?a([...t,s]):a([s]),console.log("response for team create call: ".concat(s)),Z(!1)}}catch(e){console.error("Error creating the key:",e)}},k=async e=>{try{if(null!=r&&null!=t){c.ZP.info("Making API Call");let s={role:"user",user_email:e.user_email,user_id:e.user_id},l=await A(r,p.team_id,s);console.log("response for team create call: ".concat(l.data));let n=t.findIndex(e=>(console.log("team.team_id=".concat(e.team_id,"; response.data.team_id=").concat(l.data.team_id)),e.team_id===l.data.team_id));if(console.log("foundIndex: ".concat(n)),-1!==n){let e=[...t];e[n]=l.data,a(e),j(l.data)}f(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("received teams ".concat(t)),(0,l.jsx)("div",{className:"w-full",children:(0,l.jsxs)(E.Z,{numItems:1,className:"gap-2 p-2 h-[75vh] w-full",children:[(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"All Teams"}),(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Team Name"}),(0,l.jsx)(Y.Z,{children:"Spend (USD)"}),(0,l.jsx)(Y.Z,{children:"Budget (USD)"}),(0,l.jsx)(Y.Z,{children:"TPM / RPM Limits"})]})}),(0,l.jsx)($.Z,{children:t&&t.length>0?t.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.team_alias}),(0,l.jsx)(H.Z,{children:e.spend}),(0,l.jsx)(H.Z,{children:e.max_budget?e.max_budget:"No limit"}),(0,l.jsx)(H.Z,{children:(0,l.jsxs)(M.Z,{children:["TPM Limit:"," ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},e.team_id)):null})]})})]}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>Z(!0),children:"+ Create New Team"}),(0,l.jsx)(U.Z,{title:"Create Team",visible:g,width:800,footer:null,onOk:()=>{Z(!1),i.resetFields()},onCancel:()=>{Z(!1),i.resetFields()},children:(0,l.jsxs)(D.Z,{form:i,onFinish:w,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Team Name",name:"team_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"}})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create Team"})})]})})]}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"Team Members"}),(0,l.jsx)(m,{children:"If you belong to multiple teams, this setting controls which teams members you see."}),t&&t.length>0?(0,l.jsx)(er.Z,{defaultValue:"0",children:t.map((e,t)=>(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>{j(e)},children:e.team_alias},t))}):(0,l.jsxs)(m,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Member Name"}),(0,l.jsx)(Y.Z,{children:"Role"}),(0,l.jsx)(Y.Z,{children:"Action"})]})}),(0,l.jsx)($.Z,{children:p?p.members_with_roles.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(H.Z,{children:e.role}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},t)):null})]})})}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>f(!0),children:"+ Add member"}),(0,l.jsx)(U.Z,{title:"Add member",visible:y,width:800,footer:null,onOk:()=>{f(!1),d.resetFields()},onCancel:()=>{f(!1),d.resetFields()},children:(0,l.jsxs)(D.Z,{form:i,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})})},eb=e=>{let{searchParams:t,accessToken:s}=e,[r]=D.Z.useForm(),[a]=D.Z.useForm(),{Title:i,Paragraph:d}=en.default,[h,m]=(0,n.useState)(""),[u,x]=(0,n.useState)(null),[p,j]=(0,n.useState)(!1);(0,n.useEffect)(()=>{(async()=>{if(null!=s){let e=[],t=await S(s,"proxy_admin_viewer");t.forEach(t=>{e.push({user_role:t.user_role,user_id:t.user_id,user_email:t.user_email})}),console.log("proxy viewers: ".concat(t));let l=await S(s,"proxy_admin");l.forEach(t=>{e.push({user_role:t.user_role,user_id:t.user_id,user_email:t.user_email})}),console.log("proxy admins: ".concat(l)),console.log("combinedList: ".concat(e)),x(e)}})()},[s]);let g=async e=>{try{if(null!=s&&null!=u){c.ZP.info("Making API Call"),e.user_email,e.user_id;let t=await C(s,e);console.log("response for team create call: ".concat(t));let l=u.findIndex(e=>(console.log("user.user_id=".concat(e.user_id,"; response.user_id=").concat(t.user_id)),e.user_id===t.user_id));console.log("foundIndex: ".concat(l)),-1==l&&(console.log("updates admin with new user"),u.push(t),x(u)),j(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("admins: ".concat(null==u?void 0:u.length)),(0,l.jsxs)("div",{className:"w-full m-2",children:[(0,l.jsx)(i,{level:4,children:"Restricted Access"}),(0,l.jsxs)(d,{children:["Add other people to just view spend. They cannot create keys, teams or grant users access to new models."," ",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#restrict-ui-access",children:"Requires SSO Setup"})]}),(0,l.jsxs)(E.Z,{numItems:1,className:"gap-2 p-0 w-full",children:[(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Member Name"}),(0,l.jsx)(Y.Z,{children:"Role"}),(0,l.jsx)(Y.Z,{children:"Action"})]})}),(0,l.jsx)($.Z,{children:u?u.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(H.Z,{children:e.user_role}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},t)):null})]})})}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>j(!0),children:"+ Add viewer"}),(0,l.jsx)(U.Z,{title:"Add viewer",visible:p,width:800,footer:null,onOk:()=>{j(!1),a.resetFields()},onCancel:()=>{j(!1),a.resetFields()},children:(0,l.jsxs)(D.Z,{form:r,onFinish:g,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})]})},ev=s(12968),eS=s(67951);async function eN(e,t,s,l){console.log("isLocal:",!1);let n=window.location.origin,r=new ev.ZP.OpenAI({apiKey:l,baseURL:n,dangerouslyAllowBrowser:!0});for await(let l of(await r.chat.completions.create({model:s,stream:!0,messages:[{role:"user",content:e}]})))console.log(l),l.choices[0].delta.content&&t(l.choices[0].delta.content)}var eA=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,[o,i]=(0,n.useState)(""),[c,d]=(0,n.useState)([]),[h,m]=(0,n.useState)(void 0),[u,x]=(0,n.useState)(null);(0,n.useEffect)(()=>{t&&s&&r&&a&&(async()=>{let e=await p(t,a,r);console.log("model_info:",e),(null==e?void 0:e.data.length)>0&&(x(e.data),m(e.data[0].id))})()},[t,a,r]);let j=(e,t)=>{d(s=>{let l=s[s.length-1];return l&&l.role===e?[...s.slice(0,s.length-1),{role:e,content:l.content+t}]:[...s,{role:e,content:t}]})},g=async()=>{if(""!==o.trim()&&t&&s&&r&&a){d(e=>[...e,{role:"user",content:o}]);try{h&&await eN(o,e=>j("assistant",e),h,t)}catch(e){console.error("Error fetching model response",e),j("assistant","Error fetching model response")}i("")}};if(r&&"Admin Viewer"==r){let{Title:e,Paragraph:t}=en.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(t,{children:"Ask your proxy admin for access to test models"})]})}return(0,l.jsx)("div",{style:{width:"100%",position:"relative"},children:(0,l.jsx)(E.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:(0,l.jsx)(F.Z,{children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{className:"mt-4",children:[(0,l.jsx)(ex.Z,{children:"Chat"}),(0,l.jsx)(ex.Z,{children:"API Reference"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{children:"Select Model:"}),(0,l.jsx)("select",{value:h||"",onChange:e=>m(e.target.value),children:null==u?void 0:u.map(e=>(0,l.jsx)("option",{value:e.id,children:e.id},e.id))})]}),(0,l.jsxs)(G.Z,{className:"mt-5",style:{display:"block",maxHeight:"60vh",overflowY:"auto"},children:[(0,l.jsx)(W.Z,{children:(0,l.jsx)(X.Z,{children:(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Chat"})})})}),(0,l.jsx)($.Z,{children:c.map((e,t)=>(0,l.jsx)(X.Z,{children:(0,l.jsx)(H.Z,{children:"".concat(e.role,": ").concat(e.content)})},t))})]}),(0,l.jsx)("div",{className:"mt-3",style:{position:"absolute",bottom:5,width:"95%"},children:(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("input",{type:"text",value:o,onChange:e=>i(e.target.value),className:"flex-1 p-2 border rounded-md mr-2",placeholder:"Type your message..."}),(0,l.jsx)("button",{onClick:g,className:"p-2 bg-blue-500 text-white rounded-md",children:"Send"})]})})]}),(0,l.jsx)(eg.Z,{children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{children:[(0,l.jsx)(ex.Z,{children:"OpenAI Python SDK"}),(0,l.jsx)(ex.Z,{children:"LlamaIndex"}),(0,l.jsx)(ex.Z,{children:"Langchain Py"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.Z,{language:"python",children:'\nimport openai\nclient = openai.OpenAI(\n api_key="your_api_key",\n base_url="http://0.0.0.0:4000" # proxy base url\n)\n\nresponse = client.chat.completions.create(\n model="gpt-3.5-turbo", # model to use from Models Tab\n messages = [\n {\n "role": "user",\n "content": "this is a test request, write a short poem"\n }\n ],\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-openai-client",\n "generation_id": "openai-client-gen-id22",\n "trace_id": "openai-client-trace-id22",\n "trace_user_id": "openai-client-user-id2"\n }\n }\n)\n\nprint(response)\n '})}),(0,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.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="http://0.0.0.0:4000", # 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="http://0.0.0.0:4000",\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,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.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="http://0.0.0.0:8000",\n model = "gpt-3.5-turbo",\n temperature=0.1,\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-langchain-client",\n "generation_id": "langchain-client-gen-id22",\n "trace_id": "langchain-client-trace-id22",\n "trace_user_id": "langchain-client-user-id2"\n }\n }\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 '})})]})]})})]})]})})})})},eC=s(33509),eI=s(30569);let{Sider:eP}=eC.default;var eT=e=>{let{setPage:t,userRole:s,defaultSelectedKey:n}=e;return"Admin Viewer"==s?(0,l.jsx)(eC.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eP,{width:120,children:(0,l.jsxs)(eI.Z,{mode:"inline",defaultSelectedKeys:n||["4"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eI.Z.Item,{onClick:()=>t("api-keys"),children:"API Keys"},"4"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("models"),children:"Models"},"2"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("usage"),children:"Usage"},"1")]})})}):(0,l.jsx)(eC.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eP,{width:120,children:(0,l.jsxs)(eI.Z,{mode:"inline",defaultSelectedKeys:n||["1"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eI.Z.Item,{onClick:()=>t("api-keys"),children:"API Keys"},"1"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("models"),children:"Models"},"2"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("usage"),children:"Usage"},"4"),"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("users"),children:"Users"},"5"):null,"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("teams"),children:"Teams"},"6"):null,"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("admin-panel"),children:"Admin"},"7"):null]})})})},eE=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,o=new Date,[i,c]=(0,n.useState)([]),[d,h]=(0,n.useState)([]),[m,u]=(0,n.useState)([]),[x,p]=(0,n.useState)([]),j=new Date(o.getFullYear(),o.getMonth(),1),f=new Date(o.getFullYear(),o.getMonth()+1,0),_=v(j),b=v(f);function v(e){let t=e.getFullYear(),s=e.getMonth()+1,l=e.getDate();return"".concat(t,"-").concat(s<10?"0"+s:s,"-").concat(l<10?"0"+l:l)}return console.log("Start date is ".concat(_)),console.log("End date is ".concat(b)),(0,n.useEffect)(()=>{t&&s&&r&&a&&(async()=>{try{if(console.log("user role: ".concat(r)),"Admin"==r||"Admin Viewer"==r){let e=await Z(t);c(e);let s=(await y(t)).map(e=>({key:(e.key_name||e.key_alias||e.api_key).substring(0,7),spend:e.total_spend}));h(s);let l=(await w(t)).map(e=>({key:e.model,spend:e.total_spend}));u(l)}else"App Owner"==r&&await g(t,s,r,a,_,b).then(async e=>{if(console.log("result from spend logs call",e),"daily_spend"in e){let t=e.daily_spend;console.log("daily spend",t),c(t);let s=e.top_api_keys;h(s)}else{let s=(await k(t,function(e){let t=[];e.forEach(e=>{Object.entries(e).forEach(e=>{let[s,l]=e;"spend"!==s&&"startTime"!==s&&"models"!==s&&"users"!==s&&t.push({key:s,spend:l})})}),t.sort((e,t)=>Number(t.spend)-Number(e.spend));let s=t.slice(0,5).map(e=>e.key);return console.log("topKeys: ".concat(Object.keys(s[0]))),s}(e))).info.map(e=>({key:(e.key_name||e.key_alias||e.token).substring(0,7),spend:e.spend}));h(s),p(function(e){let t={};e.forEach(e=>{Object.entries(e.users).forEach(e=>{let[s,l]=e;""!==s&&null!=s&&"None"!=s&&(t[s]||(t[s]=0),t[s]+=l)})});let s=Object.entries(t).map(e=>{let[t,s]=e;return{user_id:t,spend:s}});s.sort((e,t)=>t.spend-e.spend);let l=s.slice(0,5);return console.log("topKeys: ".concat(Object.values(l[0]))),l}(e)),c(e)}})}catch(e){console.error("There was an error fetching the data",e)}})()},[t,s,r,a,_,b]),(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(E.Z,{numItems:2,className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(T.Z,{numColSpan:2,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Monthly Spend"}),(0,l.jsx)(Q.Z,{data:i,index:"date",categories:["spend"],colors:["blue"],valueFormatter:e=>"$ ".concat(new Intl.NumberFormat("us").format(e).toString()),yAxisWidth:100,tickGap:5})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top API Keys"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:d,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:80,tickGap:5,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top Users"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:x,index:"user_id",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top Models"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:m,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})})]})})},eF=()=>{let{Title:e,Paragraph:t}=en.default,[s,a]=(0,n.useState)(""),[o,c]=(0,n.useState)(null),[d,h]=(0,n.useState)(null),[m,u]=(0,n.useState)(null),[x,p]=(0,n.useState)(!0),j=(0,r.useSearchParams)(),g=j.get("userID"),Z=j.get("token"),[y,f]=(0,n.useState)("api-keys"),[w,k]=(0,n.useState)(null);return(0,n.useEffect)(()=>{if(Z){let e=(0,ei.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),k(e.key),e.user_role){let t=function(e){if(!e)return"Undefined Role";switch(console.log("Received user role: ".concat(e.toLowerCase())),console.log("Received user role length: ".concat(e.toLowerCase().length)),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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",t),a(t),"Admin Viewer"==t&&f("usage")}else console.log("User role not defined");e.user_email?c(e.user_email):console.log("User Email is not set ".concat(e)),e.login_method?p("username_password"==e.login_method):console.log("User Email is not set ".concat(e))}}},[Z]),(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)("div",{children:"Loading..."}),children:(0,l.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,l.jsx)(i,{userID:g,userRole:s,userEmail:o,showSSOBanner:x}),(0,l.jsxs)("div",{className:"flex flex-1 overflow-auto",children:[(0,l.jsx)(eT,{setPage:f,userRole:s,defaultSelectedKey:null}),"api-keys"==y?(0,l.jsx)(ec,{userID:g,userRole:s,teams:d,keys:m,setUserRole:a,userEmail:o,setUserEmail:c,setTeams:h,setKeys:u}):"models"==y?(0,l.jsx)(eu,{userID:g,userRole:s,token:Z,accessToken:w}):"llm-playground"==y?(0,l.jsx)(eA,{userID:g,userRole:s,token:Z,accessToken:w}):"users"==y?(0,l.jsx)(ew,{userID:g,userRole:s,token:Z,keys:m,accessToken:w,setKeys:u}):"teams"==y?(0,l.jsx)(e_,{teams:d,setTeams:h,searchParams:j,accessToken:w}):"admin-panel"==y?(0,l.jsx)(eb,{setTeams:h,searchParams:j,accessToken:w}):(0,l.jsx)(eE,{userID:g,userRole:s,token:Z,accessToken:w})]})]})})}}},function(e){e.O(0,[730,971,69,744],function(){return e(e.s=20661)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/ui/litellm-dashboard/out/_next/static/chunks/main-app-9b4fb13a7db53edf.js b/ui/litellm-dashboard/out/_next/static/chunks/main-app-9b4fb13a7db53edf.js new file mode 100644 index 000000000..440df3cb3 --- /dev/null +++ b/ui/litellm-dashboard/out/_next/static/chunks/main-app-9b4fb13a7db53edf.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[744],{32028:function(e,n,t){Promise.resolve().then(t.t.bind(t,47690,23)),Promise.resolve().then(t.t.bind(t,48955,23)),Promise.resolve().then(t.t.bind(t,5613,23)),Promise.resolve().then(t.t.bind(t,11902,23)),Promise.resolve().then(t.t.bind(t,31778,23)),Promise.resolve().then(t.t.bind(t,77831,23))}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[971,69],function(){return n(35317),n(32028)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/ui/litellm-dashboard/out/_next/static/chunks/webpack-59d9232c3e7a8be6.js b/ui/litellm-dashboard/out/_next/static/chunks/webpack-59d9232c3e7a8be6.js new file mode 100644 index 000000000..7f7915bb5 --- /dev/null +++ b/ui/litellm-dashboard/out/_next/static/chunks/webpack-59d9232c3e7a8be6.js @@ -0,0 +1 @@ +!function(){"use strict";var e,t,n,r,o,u,i,c,f,a={},l={};function d(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={id:e,loaded:!1,exports:{}},r=!0;try{a[e](n,n.exports,d),r=!1}finally{r&&delete l[e]}return n.loaded=!0,n.exports}d.m=a,e=[],d.O=function(t,n,r,o){if(n){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u=o&&Object.keys(d.O).every(function(e){return d.O[e](n[f])})?n.splice(f--,1):(c=!1,o: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-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-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-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))}.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-tremor-border>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-clip{overflow-x:clip}.overflow-x-scroll{overflow-x:scroll}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.\!rounded-none{border-radius:0!important}.rounded{border-radius:.25rem}.rounded-\[1px\]{border-radius:1px}.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-b-tremor-default{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.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-t-tremor-default{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-4{border-bottom-width:4px}.border-l{border-left-width:1px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-r-4{border-right-width:4px}.border-t-4{border-top-width:4px}.border-t-\[1px\]{border-top-width:1px}.border-dashed{border-style:dashed}.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))}.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-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-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-faint{--tw-bg-opacity:1;background-color:rgb(108 111 237/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-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.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-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.to-tremor-background{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.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}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.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}.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-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-\[10px\]{padding-top:10px;padding-bottom:10px}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.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}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.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-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.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}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm,.text-tremor-default{font-size:.875rem;line-height:1.25rem}.text-tremor-label{font-size:.75rem;line-height:.4rem}.text-tremor-metric{font-size:1.875rem;line-height:2.25rem}.text-tremor-title{font-size:1.125rem;line-height:1.75rem}.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}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;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}.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-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-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-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}.accent-dark-tremor-brand,.accent-tremor-brand{accent-color:#6366f1}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.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,.shadow-dark-tremor-card,.shadow-dark-tremor-input{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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-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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.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-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,.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)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-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}.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}body{color:rgb(var(--foreground-rgb));background:linear-gradient(to bottom,transparent,rgb(var(--background-end-rgb))) rgb(var(--background-start-rgb))}.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\:rounded-r-\[4px\]:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.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-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-tremor-brand-faint:hover{--tw-bg-opacity:1;background-color:rgb(108 111 237/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}.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-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.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)}.focus\:ring-tremor-brand-muted:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(134 136 239/var(--tw-ring-opacity))}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.group:hover .group-hover\:text-tremor-content-emphasis{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.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-subtle){--tw-text-opacity:1;color:rgb(75 85 99/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\: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\: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\: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}}@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\: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} \ No newline at end of file diff --git a/ui/litellm-dashboard/out/index.html b/ui/litellm-dashboard/out/index.html index 99ac50ef5..0c7a9b87f 100644 --- a/ui/litellm-dashboard/out/index.html +++ b/ui/litellm-dashboard/out/index.html @@ -1 +1 @@ -🚅 LiteLLM \ No newline at end of file +🚅 LiteLLM \ No newline at end of file diff --git a/ui/litellm-dashboard/out/index.txt b/ui/litellm-dashboard/out/index.txt index a259886a9..5afb31dc0 100644 --- a/ui/litellm-dashboard/out/index.txt +++ b/ui/litellm-dashboard/out/index.txt @@ -1,7 +1,7 @@ 2:I[77831,[],""] -3:I[74961,["730","static/chunks/730-1411b729a1c79695.js","931","static/chunks/app/page-a458360dd75bd774.js"],""] +3:I[56239,["730","static/chunks/730-1411b729a1c79695.js","931","static/chunks/app/page-1b778934c9b8fd3d.js"],""] 4:I[5613,[],""] 5:I[31778,[],""] -0:["HnLepq2YNME88Nzo5qHls",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},["$L1",["$","$L2",null,{"propsForComponent":{"params":{}},"Component":"$3","isStaticGeneration":true}],null]]},[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_c23dc8","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"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":[],"styles":null}]}]}],null]],[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/css/32e93a3d13512de5.css","precedence":"next","crossOrigin":""}]],"$L6"]]]] +0:["8Qf_s48H0nBodS2RVsrIl",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},["$L1",["$","$L2",null,{"propsForComponent":{"params":{}},"Component":"$3","isStaticGeneration":true}],null]]},[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_c23dc8","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"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":[],"styles":null}]}]}],null]],[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/css/32e93a3d13512de5.css","precedence":"next","crossOrigin":""}]],"$L6"]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"🚅 LiteLLM"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/ui/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","meta","5",{"name":"next-size-adjust"}]] 1:null From d72c195bf653ca764a01814caed8cdc788a52ab6 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 16:51:31 -0800 Subject: [PATCH 12/23] =?UTF-8?q?bump:=20version=201.28.9=20=E2=86=92=201.?= =?UTF-8?q?28.10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 65e8645fc..2d5666935 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "litellm" -version = "1.28.9" +version = "1.28.10" description = "Library to easily interface with LLM API providers" authors = ["BerriAI"] license = "MIT" @@ -74,7 +74,7 @@ requires = ["poetry-core", "wheel"] build-backend = "poetry.core.masonry.api" [tool.commitizen] -version = "1.28.9" +version = "1.28.10" version_files = [ "pyproject.toml:^version" ] From 9bc1f5f6642992c187bb801e3bae3c774b0a458a Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 16:57:35 -0800 Subject: [PATCH 13/23] (proxy) test budgets --- litellm/proxy/proxy_server.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index fc327e13a..75f3a944d 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -6513,12 +6513,9 @@ async def health_services_endpoint( }, ) - if "slack" in general_settings.get("alerting", []): - test_message = f"""\n🚨 `ProjectedLimitExceededError` 💸\n\n`Key Alias:` my-secret-project \n`Expected Day of Error`: 28th March \n`Current Spend`: 100 \n`Projected Spend at end of month`: 1000 \n""" - await proxy_logging_obj.alerting_handler( - message=test_message, level="Low" - ) + test_message = f"""\n🚨 `ProjectedLimitExceededError` 💸\n\n`Key Alias:` litellm-ui-test-alert \n`Expected Day of Error`: 28th March \n`Current Spend`: $100.00 \n`Projected Spend at end of month`: $1000.00 \n""" + await proxy_logging_obj.alerting_handler(message=test_message, level="Low") else: raise HTTPException( status_code=422, @@ -6541,6 +6538,8 @@ async def health_services_endpoint( type="auth_error", param=getattr(e, "param", "None"), code=status.HTTP_401_UNAUTHORIZED, + ) + @router.get("/health", tags=["health"], dependencies=[Depends(user_api_key_auth)]) async def health_endpoint( From 2f09970c917aed7409115ff3514dd110ec207bdd Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 16:57:53 -0800 Subject: [PATCH 14/23] (feat) new ui build --- litellm/proxy/_experimental/out/404.html | 2 +- .../out/_next/static/chunks/app/page-1b778934c9b8fd3d.js | 1 - .../out/_next/static/chunks/app/page-37bd7c3d0bb898a3.js | 1 + .../_buildManifest.js | 0 .../_ssgManifest.js | 0 litellm/proxy/_experimental/out/index.html | 2 +- litellm/proxy/_experimental/out/index.txt | 4 ++-- ui/litellm-dashboard/out/404.html | 2 +- .../out/_next/static/chunks/app/page-1b778934c9b8fd3d.js | 1 - .../out/_next/static/chunks/app/page-37bd7c3d0bb898a3.js | 1 + .../_buildManifest.js | 0 .../_ssgManifest.js | 0 ui/litellm-dashboard/out/index.html | 2 +- ui/litellm-dashboard/out/index.txt | 4 ++-- ui/litellm-dashboard/src/components/networking.tsx | 2 +- 15 files changed, 11 insertions(+), 11 deletions(-) delete mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js create mode 100644 litellm/proxy/_experimental/out/_next/static/chunks/app/page-37bd7c3d0bb898a3.js rename litellm/proxy/_experimental/out/_next/static/{8Qf_s48H0nBodS2RVsrIl => p1zjZBLDqxGf-NaFvZkeF}/_buildManifest.js (100%) rename litellm/proxy/_experimental/out/_next/static/{8Qf_s48H0nBodS2RVsrIl => p1zjZBLDqxGf-NaFvZkeF}/_ssgManifest.js (100%) delete mode 100644 ui/litellm-dashboard/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js create mode 100644 ui/litellm-dashboard/out/_next/static/chunks/app/page-37bd7c3d0bb898a3.js rename ui/litellm-dashboard/out/_next/static/{8Qf_s48H0nBodS2RVsrIl => p1zjZBLDqxGf-NaFvZkeF}/_buildManifest.js (100%) rename ui/litellm-dashboard/out/_next/static/{8Qf_s48H0nBodS2RVsrIl => p1zjZBLDqxGf-NaFvZkeF}/_ssgManifest.js (100%) diff --git a/litellm/proxy/_experimental/out/404.html b/litellm/proxy/_experimental/out/404.html index 1f1e14ae0..064bb2163 100644 --- a/litellm/proxy/_experimental/out/404.html +++ b/litellm/proxy/_experimental/out/404.html @@ -1 +1 @@ -404: This page could not be found.🚅 LiteLLM

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.🚅 LiteLLM

404

This page could not be found.

\ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js deleted file mode 100644 index efda0f860..000000000 --- a/litellm/proxy/_experimental/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{20661:function(e,t,s){Promise.resolve().then(s.bind(s,56239))},56239:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return eF}});var l=s(3827),n=s(64090),r=s(47907),a=s(8792),o=s(2179),i=e=>{let{userID:t,userRole:s,userEmail:n,showSSOBanner:r}=e;return console.log("User ID:",t),console.log("userEmail:",n),(0,l.jsxs)("nav",{className:"left-0 right-0 top-0 flex justify-between items-center h-12 mb-4",children:[(0,l.jsx)("div",{className:"text-left my-2 absolute top-0 left-0",children:(0,l.jsx)("div",{className:"flex flex-col items-center",children:(0,l.jsx)(a.default,{href:"/",children:(0,l.jsx)("button",{className:"text-gray-800 text-2xl py-1 rounded text-center",children:(0,l.jsx)("img",{src:"/get_image",width:200,height:200,alt:"LiteLLM Brand",className:"mr-2"})})})})}),(0,l.jsxs)("div",{className:"text-right mx-4 my-2 absolute top-0 right-0 flex items-center justify-end space-x-2",children:[r?(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#setup-ssoauth-for-ui",target:"_blank",className:"mr-2",children:(0,l.jsx)(o.Z,{variant:"primary",size:"lg",children:"Enable SSO"})}):null,(0,l.jsxs)(o.Z,{variant:"secondary",size:"lg",children:[n,(0,l.jsxs)("p",{children:["Role: ",s]}),(0,l.jsxs)("p",{children:["ID: ",t]})]})]})]})},c=s(80588);let d=async(e,t,s)=>{try{if(console.log("Form Values in keyCreateCall:",s),s.description&&(s.metadata||(s.metadata={}),s.metadata.description=s.description,delete s.description,s.metadata=JSON.stringify(s.metadata)),s.metadata){console.log("formValues.metadata:",s.metadata);try{s.metadata=JSON.parse(s.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",s);let l=await fetch("/key/generate",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},h=async(e,t,s)=>{try{if(console.log("Form Values in keyCreateCall:",s),s.description&&(s.metadata||(s.metadata={}),s.metadata.description=s.description,delete s.description,s.metadata=JSON.stringify(s.metadata)),s.metadata){console.log("formValues.metadata:",s.metadata);try{s.metadata=JSON.parse(s.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",s);let l=await fetch("/user/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},m=async(e,t)=>{try{console.log("in keyDeleteCall:",t),c.ZP.info("Making key delete request");let s=await fetch("/key/delete",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[t]})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await s.json();return console.log(l),c.ZP.success("API Key Deleted"),l}catch(e){throw console.error("Failed to create key:",e),e}},u=async function(e,t,s){let l=arguments.length>3&&void 0!==arguments[3]&&arguments[3];try{let n="/user/info";"App Owner"==s&&t&&(n="".concat(n,"/?user_id=").concat(t)),console.log("in userInfoCall viewAll=",l),l&&(n="".concat(n,"/?view_all=true")),c.ZP.info("Requesting user data");let r=await fetch(n,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw c.ZP.error(e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),c.ZP.info("Received user data"),a}catch(e){throw console.error("Failed to create key:",e),e}},x=async(e,t,s)=>{try{c.ZP.info("Requesting model data");let t=await fetch("/v2/model/info",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return c.ZP.info("Received model data"),s}catch(e){throw console.error("Failed to create key:",e),e}},p=async(e,t,s)=>{try{c.ZP.info("Requesting model data");let t=await fetch("/models",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return c.ZP.info("Received model data"),s}catch(e){throw console.error("Failed to create key:",e),e}},j=async(e,t)=>{try{let s="/global/spend/logs";console.log("in keySpendLogsCall:",s);let l=await fetch("".concat(s,"/?api_key=").concat(t),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to create key:",e),e}},g=async(e,t,s,l,n,r)=>{try{console.log("user role in spend logs call: ".concat(s));let t="/spend/logs";t="App Owner"==s?"".concat(t,"/?user_id=").concat(l,"&start_date=").concat(n,"&end_date=").concat(r):"".concat(t,"/?start_date=").concat(n,"&end_date=").concat(r),c.ZP.info("Making spend logs request");let a=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw c.ZP.error(e),Error("Network response was not ok")}let o=await a.json();return console.log(o),c.ZP.success("Spend Logs received"),o}catch(e){throw console.error("Failed to create key:",e),e}},Z=async e=>{try{c.ZP.info("Making spend logs request");let t=await fetch("/global/spend/logs",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Spend Logs received"),s}catch(e){throw console.error("Failed to create key:",e),e}},y=async e=>{try{c.ZP.info("Making spend keys request");let t=await fetch("/global/spend/keys?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Spend Logs received"),s}catch(e){throw console.error("Failed to create key:",e),e}},f=async(e,t)=>{try{t&&JSON.stringify({api_key:t}),c.ZP.info("Making top end users request");let s={method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}};t&&(s.body=JSON.stringify({api_key:t}));let l=await fetch("/global/spend/end_users",s);if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Top End users received"),n}catch(e){throw console.error("Failed to create key:",e),e}},w=async e=>{try{c.ZP.info("Making top models request");let t=await fetch("/global/spend/models?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Top Models received"),s}catch(e){throw console.error("Failed to create key:",e),e}},k=async(e,t)=>{try{let s=await fetch("/v2/key/info",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:t})});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await s.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},_=async(e,t)=>{try{let s="/spend/users";console.log("in spendUsersCall:",s);let l=await fetch("".concat(s,"/?user_id=").concat(t),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to get spend for user",e),e}},b=async(e,t,s,l)=>{try{let n=await fetch("/user/request_model",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({models:[t],user_id:s,justification:l})});if(!n.ok){let e=await n.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let r=await n.json();return console.log(r),c.ZP.success(""),r}catch(e){throw console.error("Failed to create key:",e),e}},v=async e=>{try{let t="/user/get_requests";console.log("in userGetRequesedtModelsCall:",t);let s=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await s.json();return console.log(l),c.ZP.success(""),l}catch(e){throw console.error("Failed to get requested models:",e),e}},S=async(e,t)=>{try{let s="/user/get_users?role=".concat(t);console.log("in userGetAllUsersCall:",s);let l=await fetch(s,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Got all users"),n}catch(e){throw console.error("Failed to get requested models:",e),e}},N=async(e,t)=>{try{console.log("Form Values in teamCreateCall:",t);let s=await fetch("/team/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await s.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,t,s)=>{try{console.log("Form Values in teamMemberAddCall:",s);let l=await fetch("/team/member_add",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,member:s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},C=async(e,t)=>{try{console.log("Form Values in userUpdateUserCall:",t);let s=await fetch("/user/update",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_role:"proxy_admin_viewer",...t})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await s.json();return console.log("API Response:",l),c.ZP.success("User role updated"),l}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,t)=>{try{let s=await fetch("/global/predict/spend/logs",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({data:t})});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await s.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},P=async e=>{try{console.log("Checking Slack Budget Alerts service health"),c.ZP.info("Sending Test Slack alert...");let t=await fetch("health/services?service=slack_budget_alerts",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error("Failed Slack Alert test: "+e),Error(e)}let s=await t.json();return c.ZP.success("Test Slack Alert worked - check your Slack!"),console.log("Service Health Response:",s),s}catch(e){throw console.error("Failed to perform health check:",e),e}};var T=s(10384),E=s(46453),F=s(13810),M=s(71801),R=s(42440),O=s(17189),D=s(12143),U=s(77171),L=s(42539),z=s(88707),B=s(1861);let{Option:q}=O.default;var K=e=>{let{userID:t,teamID:s,userRole:r,accessToken:a,data:i,userModels:h,setData:m}=e,[u]=D.Z.useForm(),[x,p]=(0,n.useState)(!1),[j,g]=(0,n.useState)(null),[Z,y]=(0,n.useState)(null),f=()=>{p(!1),u.resetFields()},w=()=>{p(!1),g(null),u.resetFields()},k=async e=>{try{c.ZP.info("Making API Call"),p(!0);let s=await d(a,t,e);console.log("key create Response:",s),m(e=>e?[...e,s]:[s]),g(s.key),y(s.soft_budget),c.ZP.success("API Key Created"),u.resetFields(),localStorage.removeItem("userData"+t)}catch(e){console.error("Error creating the key:",e)}},_=async()=>{try{console.log("Sending Slack alert...");let e=await P(a);console.log("slackBudgetAlertsHealthCheck Response:",e),console.log("Testing Slack alert successful")}catch(e){console.error("Error sending Slack alert:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>p(!0),children:"+ Create New Key"}),(0,l.jsx)(U.Z,{title:"Create Key",visible:x,width:800,footer:null,onOk:f,onCancel:w,children:(0,l.jsxs)(D.Z,{form:u,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:["App Owner"===r||"Admin"===r?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team",defaultValue:s||""})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:h.map(e=>(0,l.jsx)(q,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Soft Budget (USD) Monthly",name:"soft_budget",initialValue:50,children:(0,l.jsx)(z.Z,{step:.01,precision:2,defaultValue:50,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,l.jsxs)(O.default,{defaultValue:null,placeholder:"n/a",children:[(0,l.jsx)(O.default.Option,{value:"24h",children:"daily"}),(0,l.jsx)(O.default.Option,{value:"30d",children:"monthly"})]})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Expire Key (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Team ID (Contact Group)",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team"})}),(0,l.jsx)(D.Z.Item,{label:"Description",name:"description",children:(0,l.jsx)(L.Z.TextArea,{placeholder:"Enter description",rows:4})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create Key"})})]})}),j&&(0,l.jsx)(U.Z,{visible:x,onOk:f,onCancel:w,footer:null,children:(0,l.jsx)(E.Z,{numItems:1,className:"gap-2 w-full",children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Save your Key"}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)("p",{children:["Please save this secret key somewhere safe and accessible. For security reasons, ",(0,l.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,l.jsx)(T.Z,{numColSpan:1,children:null!=j?(0,l.jsxs)("div",{children:[(0,l.jsxs)(M.Z,{children:["API Key: ",j]}),(0,l.jsx)(R.Z,{className:"mt-6",children:"Budgets"}),(0,l.jsxs)(M.Z,{children:["Soft Limit Budget: $",Z]}),(0,l.jsx)(o.Z,{className:"mt-3",onClick:_,children:"Test Slack Alert"}),(0,l.jsxs)(M.Z,{className:"mt-2",children:["(LiteLLM Docs -",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/alerting",target:"_blank",className:"text-blue-500",children:"Set Up Slack Alerting)"})]})]}):(0,l.jsx)(M.Z,{children:"Key being created, this might take 30s"})})]})})})]})},V=s(33393),J=s(61244),G=s(10827),$=s(3851),H=s(2044),W=s(64167),Y=s(74480),X=s(7178),Q=s(9853),ee=s(56863),et=e=>{let{token:t,accessToken:s,keySpend:r,keyBudget:a,keyName:i}=e,[c,d]=(0,n.useState)(!1),[h,m]=(0,n.useState)(null),[u,x]=(0,n.useState)(""),[p,g]=(0,n.useState)(null),Z=async()=>{try{if(null==s||null==t)return;console.log("accessToken: ".concat(s,"; token: ").concat(t));let e=await j(s,t);console.log("Response:",e),m(e);let l=await I(s,e);console.log("Response2:",l);let n=[...e,...l.response];m(n),x(l.predicted_spend),console.log("Combined Data:",n)}catch(e){console.error("There was an error fetching the data",e)}};return t?(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>{console.log("Show Modal triggered"),d(!0),Z()},variant:"secondary",children:"View Spend Report"}),(0,l.jsxs)(U.Z,{visible:c,width:1400,onOk:()=>{d(!1)},onCancel:()=>{d(!1)},footer:null,children:[(0,l.jsxs)(R.Z,{style:{textAlign:"left"},children:["Key Name: ",i]}),(0,l.jsxs)(ee.Z,{children:["Monthly Spend $",r]}),(0,l.jsx)(R.Z,{children:u}),(0,l.jsx)(F.Z,{className:"mt-6 mb-6",children:h&&(0,l.jsx)(Q.Z,{className:"mt-6",data:h,colors:["blue","amber"],index:"date",categories:["spend","predicted_spend"],yAxisWidth:80})})]})]}):null},es=e=>{let{userID:t,accessToken:s,data:r,setData:a}=e,[i,c]=(0,n.useState)(!1),[d,h]=(0,n.useState)(!1),[u,x]=(0,n.useState)(null),p=async e=>{null!=r&&(x(e),localStorage.removeItem("userData"+t),h(!0))},j=async()=>{if(null!=u&&null!=r){try{await m(s,u);let e=r.filter(e=>e.token!==u);a(e)}catch(e){console.error("Error deleting the key:",e)}h(!1),x(null)}};if(null!=r)return console.log("RERENDER TRIGGERED"),(0,l.jsxs)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:[(0,l.jsxs)(G.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Key Alias"}),(0,l.jsx)(Y.Z,{children:"Secret Key"}),(0,l.jsx)(Y.Z,{children:"Spend (USD)"}),(0,l.jsx)(Y.Z,{children:"Key Budget (USD)"}),(0,l.jsx)(Y.Z,{children:"Spend Report"}),(0,l.jsx)(Y.Z,{children:"Team ID"}),(0,l.jsx)(Y.Z,{children:"Metadata"}),(0,l.jsx)(Y.Z,{children:"Models"}),(0,l.jsx)(Y.Z,{children:"TPM / RPM Limits"}),(0,l.jsx)(Y.Z,{children:"Expires"})]})}),(0,l.jsx)($.Z,{children:r.map(e=>(console.log(e),"litellm-dashboard"===e.team_id)?null:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:null!=e.key_alias?(0,l.jsx)(M.Z,{children:e.key_alias}):(0,l.jsx)(M.Z,{children:"Not Set"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.key_name})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.spend})}),(0,l.jsx)(H.Z,{children:null!=e.max_budget?(0,l.jsx)(M.Z,{children:e.max_budget}):(0,l.jsx)(M.Z,{children:"Unlimited Budget"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(et,{token:e.token,accessToken:s,keySpend:e.spend,keyBudget:e.max_budget,keyName:e.key_name})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.team_id})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:JSON.stringify(e.metadata)})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:JSON.stringify(e.models)})}),(0,l.jsx)(H.Z,{children:(0,l.jsxs)(M.Z,{children:["TPM Limit: ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(H.Z,{children:null!=e.expires?(0,l.jsx)(M.Z,{children:e.expires}):(0,l.jsx)(M.Z,{children:"Never expires"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{onClick:()=>p(e.token),icon:V.Z,size:"sm"})})]},e.token))})]}),d&&(0,l.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,l.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,l.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,l.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,l.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,l.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,l.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,l.jsx)("div",{className:"sm:flex sm:items-start",children:(0,l.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,l.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Key"}),(0,l.jsx)("div",{className:"mt-2",children:(0,l.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this key ?"})})]})})}),(0,l.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,l.jsx)(o.Z,{onClick:j,color:"red",className:"ml-2",children:"Delete"}),(0,l.jsx)(o.Z,{onClick:()=>{h(!1),x(null)},children:"Cancel"})]})]})]})})]})},el=e=>{let{userID:t,userSpendData:s,userRole:r,accessToken:a}=e;console.log("User SpendData:",s);let[o,i]=(0,n.useState)(null==s?void 0:s.spend),[c,d]=(0,n.useState)((null==s?void 0:s.max_budget)||null);return(0,n.useEffect)(()=>{(async()=>{if("Admin"===r)try{let e=await _(a,"litellm-proxy-budget");console.log("Result from callSpendUsers:",e);let t=e[0];i(null==t?void 0:t.spend),d((null==t?void 0:t.max_budget)||null)}catch(e){console.error("Failed to get spend for user",e)}})()},[r,a,t]),(0,l.jsx)(l.Fragment,{children:(0,l.jsxs)(F.Z,{className:"mx-auto mb-4",children:[(0,l.jsxs)(ee.Z,{children:["$",o]}),(0,l.jsxs)(R.Z,{children:["/ ",null!==c?"$".concat(c," limit"):"No limit"]})]})})},en=s(36083),er=s(68967),ea=s(27166),eo=e=>{let{teams:t,setSelectedTeam:s}=e,{Title:r,Paragraph:a}=en.default,[o,i]=(0,n.useState)("");return(0,l.jsxs)("div",{className:"mt-10",children:[(0,l.jsx)(r,{level:4,children:"Default Team"}),(0,l.jsx)(a,{children:"If you belong to multiple teams, this setting controls which team is used by default when creating new API Keys."}),t&&t.length>0?(0,l.jsx)(er.Z,{defaultValue:"0",children:t.map((e,t)=>(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>s(e),children:e.team_alias},t))}):(0,l.jsxs)(a,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]})},ei=s(37963);console.log("isLocal:",!1);var ec=e=>{let{userID:t,userRole:s,teams:a,keys:o,setUserRole:i,userEmail:c,setUserEmail:d,setTeams:h,setKeys:m}=e,[x,j]=(0,n.useState)(null),g=(0,r.useSearchParams)();g.get("viewSpend"),(0,r.useRouter)();let Z=g.get("token"),[y,f]=(0,n.useState)(null),[w,k]=(0,n.useState)([]),[_,b]=(0,n.useState)(a?a[0]:null);if(window.addEventListener("beforeunload",function(){sessionStorage.clear()}),(0,n.useEffect)(()=>{if(Z){let e=(0,ei.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),f(e.key),e.user_role){let t=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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",t),i(t)}else console.log("User role not defined");e.user_email?d(e.user_email):console.log("User Email is not set ".concat(e))}}if(t&&y&&s&&!o&&!x){let e=sessionStorage.getItem("userModels"+t);e?k(JSON.parse(e)):(async()=>{try{let e=await u(y,t,s);console.log("received teams in user dashboard: ".concat(Object.keys(e),"; team values: ").concat(Object.entries(e.teams))),j(e.user_info),m(e.keys),h(e.teams),b(e.teams?e.teams[0]:null),sessionStorage.setItem("userData"+t,JSON.stringify(e.keys)),sessionStorage.setItem("userSpendData"+t,JSON.stringify(e.user_info));let l=(await p(y,t,s)).data.map(e=>e.id);console.log("available_model_names:",l),k(l),console.log("userModels:",w),sessionStorage.setItem("userModels"+t,JSON.stringify(l))}catch(e){console.error("There was an error fetching the data",e)}})()}},[t,Z,y,o,s]),null==t||null==Z){let e="/sso/key/generate";return console.log("Full URL:",e),window.location.href=e,null}if(null==y)return null;if(null==s&&i("App Owner"),s&&"Admin Viewer"==s){let{Title:e,Paragraph:t}=en.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(t,{children:"Ask your proxy admin for access to create keys"})]})}return(0,l.jsx)("div",{children:(0,l.jsx)(E.Z,{numItems:1,className:"gap-0 p-10 h-[75vh] w-full",children:(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(el,{userID:t,userSpendData:x,userRole:s,accessToken:y}),(0,l.jsx)(es,{userID:t,accessToken:y,data:o,setData:m}),(0,l.jsx)(K,{userID:t,teamID:_?_.team_id:null,userRole:s,userModels:w,accessToken:y,data:o,setData:m}),(0,l.jsx)(eo,{teams:a,setSelectedTeam:b})]})})})},ed=s(5);let{Option:eh}=O.default;var em=e=>{let{userModels:t,accessToken:s,userID:r}=e,[a]=D.Z.useForm(),[i,d]=(0,n.useState)(!1),h=async e=>{try{c.ZP.info("Requesting access");let{selectedModel:t,accessReason:l}=e;await b(s,t,r,l),d(!0)}catch(e){console.error("Error requesting access:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>d(!0),children:"Request Access"}),(0,l.jsx)(U.Z,{title:"Request Access",visible:i,width:800,footer:null,onOk:()=>{d(!1),a.resetFields()},onCancel:()=>{d(!1),a.resetFields()},children:(0,l.jsxs)(D.Z,{form:a,onFinish:h,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(D.Z.Item,{label:"Select Model",name:"selectedModel",children:(0,l.jsx)(O.default,{placeholder:"Select model",style:{width:"100%"},children:t.map(e=>(0,l.jsx)(eh,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Reason for Access",name:"accessReason",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter reason for access"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(o.Z,{children:"Request Access"})})]})})]})},eu=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,[i,c]=(0,n.useState)({data:[]}),[d,h]=(0,n.useState)([]);if((0,n.useEffect)(()=>{if(!t||!s||!r||!a)return;let e=async()=>{try{let e=await x(t,a,r);if(console.log("Model data response:",e.data),c(e),"Admin"===r&&t){let e=await v(t);console.log("Pending Requests:",d),h(e.requests||[])}}catch(e){console.error("There was an error fetching the model data",e)}};t&&s&&r&&a&&e()},[t,s,r,a]),!i||!t||!s||!r||!a)return(0,l.jsx)("div",{children:"Loading..."});let m=[];for(let e=0;e(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:e.model_name})}),(0,l.jsx)(H.Z,{children:e.provider}),(0,l.jsx)(H.Z,{children:e.user_access?(0,l.jsx)(ed.Z,{color:"green",children:"Yes"}):(0,l.jsx)(em,{userModels:m,accessToken:t,userID:a})}),(0,l.jsx)(H.Z,{children:e.input_cost}),(0,l.jsx)(H.Z,{children:e.output_cost}),(0,l.jsx)(H.Z,{children:e.max_tokens})]},e.model_name))})]})}),"Admin"===r&&d&&d.length>0?(0,l.jsx)(F.Z,{children:(0,l.jsxs)(G.Z,{children:[(0,l.jsxs)(W.Z,{children:[(0,l.jsx)(R.Z,{children:"Pending Requests"}),(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"User ID"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Requested Models"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Justification"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Justification"})})]})]}),(0,l.jsx)($.Z,{children:d.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.models[0]})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.justification})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(o.Z,{children:"Approve"}),(0,l.jsx)(o.Z,{variant:"secondary",className:"ml-2",children:"Deny"})]},e.request_id))})]})}):null]})})},ex=s(92836),ep=s(26734),ej=s(41608),eg=s(32126),eZ=s(23682);let{Option:ey}=O.default;var ef=e=>{let{userID:t,accessToken:s}=e,[r]=D.Z.useForm(),[a,i]=(0,n.useState)(!1),[d,m]=(0,n.useState)(null),[u,x]=(0,n.useState)([]);(0,n.useEffect)(()=>{(async()=>{try{let e=await p(s,t,"any"),l=[];for(let t=0;t{i(!1),r.resetFields()},g=()=>{i(!1),m(null),r.resetFields()},Z=async e=>{try{c.ZP.info("Making API Call"),i(!0),console.log("formValues in create user:",e);let l=await h(s,t,e);console.log("user create Response:",l),m(l.key),c.ZP.success("API user Created"),r.resetFields(),localStorage.removeItem("userData"+t)}catch(e){console.error("Error creating the user:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>i(!0),children:"+ Create New User"}),(0,l.jsx)(U.Z,{title:"Create User",visible:a,width:800,footer:null,onOk:j,onCancel:g,children:(0,l.jsxs)(D.Z,{form:r,onFinish:Z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",children:(0,l.jsx)(L.Z,{placeholder:"Enter User ID"})}),(0,l.jsx)(D.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team"})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:u.map(e=>(0,l.jsx)(ey,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Duration (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create User"})})]})}),d&&(0,l.jsxs)(U.Z,{title:"Save Your User",visible:a,onOk:j,onCancel:g,footer:null,children:[(0,l.jsxs)("p",{children:["Please save this secret user somewhere safe and accessible. For security reasons, ",(0,l.jsx)("b",{children:"you will not be able to view it again"})," ","through your LiteLLM account. If you lose this secret user, you will need to generate a new one."]}),(0,l.jsx)("p",{children:null!=d?"API user: ".concat(d):"User being created, this might take 30s"})]})]})},ew=e=>{let{accessToken:t,token:s,keys:r,userRole:a,userID:o,setKeys:i}=e,[c,d]=(0,n.useState)(null),[h,m]=(0,n.useState)(null),[x,p]=(0,n.useState)(1);if((0,n.useEffect)(()=>{if(!t||!s||!a||!o)return;let e=async()=>{try{let e=await u(t,null,a,!0);console.log("user data response:",e),d(e)}catch(e){console.error("There was an error fetching the model data",e)}};t&&s&&a&&o&&!c&&e();let l=async()=>{try{let e=await f(t,null);console.log("user data response:",e),m(e)}catch(e){console.error("There was an error fetching the model data",e)}};a&&("Admin"==a||"Admin Viewer"==a)&&!h&&l()},[t,s,a,o]),!c||!t||!s||!a||!o)return(0,l.jsx)("div",{children:"Loading..."});let j=async e=>{try{let s=await f(t,e);console.log("user data response:",s),m(s)}catch(e){console.error("There was an error fetching the model data",e)}};return(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(E.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(ef,{userID:o,accessToken:t}),(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{variant:"line",defaultValue:"1",children:[(0,l.jsx)(ex.Z,{value:"1",children:"Key Owners"}),(0,l.jsx)(ex.Z,{value:"2",children:"End-Users"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsx)(eg.Z,{children:(0,l.jsxs)(G.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"User ID"}),(0,l.jsx)(Y.Z,{children:"User Role"}),(0,l.jsx)(Y.Z,{children:"User Models"}),(0,l.jsx)(Y.Z,{children:"User Spend ($ USD)"}),(0,l.jsx)(Y.Z,{children:"User Max Budget ($ USD)"})]})}),(0,l.jsx)($.Z,{children:c.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_id}),(0,l.jsx)(H.Z,{children:e.user_role?e.user_role:"app_owner"}),(0,l.jsx)(H.Z,{children:e.models&&e.models.length>0?e.models:"All Models"}),(0,l.jsx)(H.Z,{children:e.spend?e.spend:0}),(0,l.jsx)(H.Z,{children:e.max_budget?e.max_budget:"Unlimited"})]},e.user_id))})]})}),(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)("div",{className:"flex-1 flex justify-between items-center",children:[(0,l.jsx)(M.Z,{className:"w-1/4 mr-2 text-right",children:"Key"}),(0,l.jsx)(er.Z,{defaultValue:"1",className:"w-3/4",children:null==r?void 0:r.map((e,t)=>{if(e&&null!==e.key_name&&e.key_name.length>0)return(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>j(e.token),children:e.key_name},t)})})]})]}),(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"End User"}),(0,l.jsx)(Y.Z,{children:"Spend"}),(0,l.jsx)(Y.Z,{children:"Total Events"})]})}),(0,l.jsx)($.Z,{children:null==h?void 0:h.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.end_user}),(0,l.jsx)(H.Z,{children:e.total_spend}),(0,l.jsx)(H.Z,{children:e.total_events})]},t))})]})]})]})]})}),function(){if(!c)return null;let e=Math.ceil(c.length/25),t=Math.min(25*x,c.length);return(0,l.jsxs)("div",{className:"flex justify-between items-center",children:[(0,l.jsxs)("div",{children:["Showing ",(x-1)*25+1," – ",t," of ",c.length]}),(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-l focus:outline-none",disabled:1===x,onClick:()=>p(x-1),children:"← Prev"}),(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-r focus:outline-none",disabled:x===e,onClick:()=>p(x+1),children:"Next →"})]})]})}()]})})},ek=s(8510),e_=e=>{let{teams:t,searchParams:s,accessToken:r,setTeams:a}=e,[i]=D.Z.useForm(),[d]=D.Z.useForm(),{Title:h,Paragraph:m}=en.default,[u,x]=(0,n.useState)(""),[p,j]=(0,n.useState)(t?t[0]:null),[g,Z]=(0,n.useState)(!1),[y,f]=(0,n.useState)(!1),w=async e=>{try{if(null!=r){c.ZP.info("Making API Call");let s=await N(r,e);null!==t?a([...t,s]):a([s]),console.log("response for team create call: ".concat(s)),Z(!1)}}catch(e){console.error("Error creating the key:",e)}},k=async e=>{try{if(null!=r&&null!=t){c.ZP.info("Making API Call");let s={role:"user",user_email:e.user_email,user_id:e.user_id},l=await A(r,p.team_id,s);console.log("response for team create call: ".concat(l.data));let n=t.findIndex(e=>(console.log("team.team_id=".concat(e.team_id,"; response.data.team_id=").concat(l.data.team_id)),e.team_id===l.data.team_id));if(console.log("foundIndex: ".concat(n)),-1!==n){let e=[...t];e[n]=l.data,a(e),j(l.data)}f(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("received teams ".concat(t)),(0,l.jsx)("div",{className:"w-full",children:(0,l.jsxs)(E.Z,{numItems:1,className:"gap-2 p-2 h-[75vh] w-full",children:[(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"All Teams"}),(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Team Name"}),(0,l.jsx)(Y.Z,{children:"Spend (USD)"}),(0,l.jsx)(Y.Z,{children:"Budget (USD)"}),(0,l.jsx)(Y.Z,{children:"TPM / RPM Limits"})]})}),(0,l.jsx)($.Z,{children:t&&t.length>0?t.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.team_alias}),(0,l.jsx)(H.Z,{children:e.spend}),(0,l.jsx)(H.Z,{children:e.max_budget?e.max_budget:"No limit"}),(0,l.jsx)(H.Z,{children:(0,l.jsxs)(M.Z,{children:["TPM Limit:"," ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},e.team_id)):null})]})})]}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>Z(!0),children:"+ Create New Team"}),(0,l.jsx)(U.Z,{title:"Create Team",visible:g,width:800,footer:null,onOk:()=>{Z(!1),i.resetFields()},onCancel:()=>{Z(!1),i.resetFields()},children:(0,l.jsxs)(D.Z,{form:i,onFinish:w,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Team Name",name:"team_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"}})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create Team"})})]})})]}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"Team Members"}),(0,l.jsx)(m,{children:"If you belong to multiple teams, this setting controls which teams members you see."}),t&&t.length>0?(0,l.jsx)(er.Z,{defaultValue:"0",children:t.map((e,t)=>(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>{j(e)},children:e.team_alias},t))}):(0,l.jsxs)(m,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Member Name"}),(0,l.jsx)(Y.Z,{children:"Role"}),(0,l.jsx)(Y.Z,{children:"Action"})]})}),(0,l.jsx)($.Z,{children:p?p.members_with_roles.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(H.Z,{children:e.role}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},t)):null})]})})}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>f(!0),children:"+ Add member"}),(0,l.jsx)(U.Z,{title:"Add member",visible:y,width:800,footer:null,onOk:()=>{f(!1),d.resetFields()},onCancel:()=>{f(!1),d.resetFields()},children:(0,l.jsxs)(D.Z,{form:i,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})})},eb=e=>{let{searchParams:t,accessToken:s}=e,[r]=D.Z.useForm(),[a]=D.Z.useForm(),{Title:i,Paragraph:d}=en.default,[h,m]=(0,n.useState)(""),[u,x]=(0,n.useState)(null),[p,j]=(0,n.useState)(!1);(0,n.useEffect)(()=>{(async()=>{if(null!=s){let e=[],t=await S(s,"proxy_admin_viewer");t.forEach(t=>{e.push({user_role:t.user_role,user_id:t.user_id,user_email:t.user_email})}),console.log("proxy viewers: ".concat(t));let l=await S(s,"proxy_admin");l.forEach(t=>{e.push({user_role:t.user_role,user_id:t.user_id,user_email:t.user_email})}),console.log("proxy admins: ".concat(l)),console.log("combinedList: ".concat(e)),x(e)}})()},[s]);let g=async e=>{try{if(null!=s&&null!=u){c.ZP.info("Making API Call"),e.user_email,e.user_id;let t=await C(s,e);console.log("response for team create call: ".concat(t));let l=u.findIndex(e=>(console.log("user.user_id=".concat(e.user_id,"; response.user_id=").concat(t.user_id)),e.user_id===t.user_id));console.log("foundIndex: ".concat(l)),-1==l&&(console.log("updates admin with new user"),u.push(t),x(u)),j(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("admins: ".concat(null==u?void 0:u.length)),(0,l.jsxs)("div",{className:"w-full m-2",children:[(0,l.jsx)(i,{level:4,children:"Restricted Access"}),(0,l.jsxs)(d,{children:["Add other people to just view spend. They cannot create keys, teams or grant users access to new models."," ",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#restrict-ui-access",children:"Requires SSO Setup"})]}),(0,l.jsxs)(E.Z,{numItems:1,className:"gap-2 p-0 w-full",children:[(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Member Name"}),(0,l.jsx)(Y.Z,{children:"Role"}),(0,l.jsx)(Y.Z,{children:"Action"})]})}),(0,l.jsx)($.Z,{children:u?u.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(H.Z,{children:e.user_role}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},t)):null})]})})}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>j(!0),children:"+ Add viewer"}),(0,l.jsx)(U.Z,{title:"Add viewer",visible:p,width:800,footer:null,onOk:()=>{j(!1),a.resetFields()},onCancel:()=>{j(!1),a.resetFields()},children:(0,l.jsxs)(D.Z,{form:r,onFinish:g,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})]})},ev=s(12968),eS=s(67951);async function eN(e,t,s,l){console.log("isLocal:",!1);let n=window.location.origin,r=new ev.ZP.OpenAI({apiKey:l,baseURL:n,dangerouslyAllowBrowser:!0});for await(let l of(await r.chat.completions.create({model:s,stream:!0,messages:[{role:"user",content:e}]})))console.log(l),l.choices[0].delta.content&&t(l.choices[0].delta.content)}var eA=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,[o,i]=(0,n.useState)(""),[c,d]=(0,n.useState)([]),[h,m]=(0,n.useState)(void 0),[u,x]=(0,n.useState)(null);(0,n.useEffect)(()=>{t&&s&&r&&a&&(async()=>{let e=await p(t,a,r);console.log("model_info:",e),(null==e?void 0:e.data.length)>0&&(x(e.data),m(e.data[0].id))})()},[t,a,r]);let j=(e,t)=>{d(s=>{let l=s[s.length-1];return l&&l.role===e?[...s.slice(0,s.length-1),{role:e,content:l.content+t}]:[...s,{role:e,content:t}]})},g=async()=>{if(""!==o.trim()&&t&&s&&r&&a){d(e=>[...e,{role:"user",content:o}]);try{h&&await eN(o,e=>j("assistant",e),h,t)}catch(e){console.error("Error fetching model response",e),j("assistant","Error fetching model response")}i("")}};if(r&&"Admin Viewer"==r){let{Title:e,Paragraph:t}=en.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(t,{children:"Ask your proxy admin for access to test models"})]})}return(0,l.jsx)("div",{style:{width:"100%",position:"relative"},children:(0,l.jsx)(E.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:(0,l.jsx)(F.Z,{children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{className:"mt-4",children:[(0,l.jsx)(ex.Z,{children:"Chat"}),(0,l.jsx)(ex.Z,{children:"API Reference"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{children:"Select Model:"}),(0,l.jsx)("select",{value:h||"",onChange:e=>m(e.target.value),children:null==u?void 0:u.map(e=>(0,l.jsx)("option",{value:e.id,children:e.id},e.id))})]}),(0,l.jsxs)(G.Z,{className:"mt-5",style:{display:"block",maxHeight:"60vh",overflowY:"auto"},children:[(0,l.jsx)(W.Z,{children:(0,l.jsx)(X.Z,{children:(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Chat"})})})}),(0,l.jsx)($.Z,{children:c.map((e,t)=>(0,l.jsx)(X.Z,{children:(0,l.jsx)(H.Z,{children:"".concat(e.role,": ").concat(e.content)})},t))})]}),(0,l.jsx)("div",{className:"mt-3",style:{position:"absolute",bottom:5,width:"95%"},children:(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("input",{type:"text",value:o,onChange:e=>i(e.target.value),className:"flex-1 p-2 border rounded-md mr-2",placeholder:"Type your message..."}),(0,l.jsx)("button",{onClick:g,className:"p-2 bg-blue-500 text-white rounded-md",children:"Send"})]})})]}),(0,l.jsx)(eg.Z,{children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{children:[(0,l.jsx)(ex.Z,{children:"OpenAI Python SDK"}),(0,l.jsx)(ex.Z,{children:"LlamaIndex"}),(0,l.jsx)(ex.Z,{children:"Langchain Py"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.Z,{language:"python",children:'\nimport openai\nclient = openai.OpenAI(\n api_key="your_api_key",\n base_url="http://0.0.0.0:4000" # proxy base url\n)\n\nresponse = client.chat.completions.create(\n model="gpt-3.5-turbo", # model to use from Models Tab\n messages = [\n {\n "role": "user",\n "content": "this is a test request, write a short poem"\n }\n ],\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-openai-client",\n "generation_id": "openai-client-gen-id22",\n "trace_id": "openai-client-trace-id22",\n "trace_user_id": "openai-client-user-id2"\n }\n }\n)\n\nprint(response)\n '})}),(0,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.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="http://0.0.0.0:4000", # 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="http://0.0.0.0:4000",\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,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.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="http://0.0.0.0:8000",\n model = "gpt-3.5-turbo",\n temperature=0.1,\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-langchain-client",\n "generation_id": "langchain-client-gen-id22",\n "trace_id": "langchain-client-trace-id22",\n "trace_user_id": "langchain-client-user-id2"\n }\n }\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 '})})]})]})})]})]})})})})},eC=s(33509),eI=s(30569);let{Sider:eP}=eC.default;var eT=e=>{let{setPage:t,userRole:s,defaultSelectedKey:n}=e;return"Admin Viewer"==s?(0,l.jsx)(eC.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eP,{width:120,children:(0,l.jsxs)(eI.Z,{mode:"inline",defaultSelectedKeys:n||["4"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eI.Z.Item,{onClick:()=>t("api-keys"),children:"API Keys"},"4"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("models"),children:"Models"},"2"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("usage"),children:"Usage"},"1")]})})}):(0,l.jsx)(eC.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eP,{width:120,children:(0,l.jsxs)(eI.Z,{mode:"inline",defaultSelectedKeys:n||["1"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eI.Z.Item,{onClick:()=>t("api-keys"),children:"API Keys"},"1"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("models"),children:"Models"},"2"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("usage"),children:"Usage"},"4"),"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("users"),children:"Users"},"5"):null,"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("teams"),children:"Teams"},"6"):null,"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("admin-panel"),children:"Admin"},"7"):null]})})})},eE=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,o=new Date,[i,c]=(0,n.useState)([]),[d,h]=(0,n.useState)([]),[m,u]=(0,n.useState)([]),[x,p]=(0,n.useState)([]),j=new Date(o.getFullYear(),o.getMonth(),1),f=new Date(o.getFullYear(),o.getMonth()+1,0),_=v(j),b=v(f);function v(e){let t=e.getFullYear(),s=e.getMonth()+1,l=e.getDate();return"".concat(t,"-").concat(s<10?"0"+s:s,"-").concat(l<10?"0"+l:l)}return console.log("Start date is ".concat(_)),console.log("End date is ".concat(b)),(0,n.useEffect)(()=>{t&&s&&r&&a&&(async()=>{try{if(console.log("user role: ".concat(r)),"Admin"==r||"Admin Viewer"==r){let e=await Z(t);c(e);let s=(await y(t)).map(e=>({key:(e.key_name||e.key_alias||e.api_key).substring(0,7),spend:e.total_spend}));h(s);let l=(await w(t)).map(e=>({key:e.model,spend:e.total_spend}));u(l)}else"App Owner"==r&&await g(t,s,r,a,_,b).then(async e=>{if(console.log("result from spend logs call",e),"daily_spend"in e){let t=e.daily_spend;console.log("daily spend",t),c(t);let s=e.top_api_keys;h(s)}else{let s=(await k(t,function(e){let t=[];e.forEach(e=>{Object.entries(e).forEach(e=>{let[s,l]=e;"spend"!==s&&"startTime"!==s&&"models"!==s&&"users"!==s&&t.push({key:s,spend:l})})}),t.sort((e,t)=>Number(t.spend)-Number(e.spend));let s=t.slice(0,5).map(e=>e.key);return console.log("topKeys: ".concat(Object.keys(s[0]))),s}(e))).info.map(e=>({key:(e.key_name||e.key_alias||e.token).substring(0,7),spend:e.spend}));h(s),p(function(e){let t={};e.forEach(e=>{Object.entries(e.users).forEach(e=>{let[s,l]=e;""!==s&&null!=s&&"None"!=s&&(t[s]||(t[s]=0),t[s]+=l)})});let s=Object.entries(t).map(e=>{let[t,s]=e;return{user_id:t,spend:s}});s.sort((e,t)=>t.spend-e.spend);let l=s.slice(0,5);return console.log("topKeys: ".concat(Object.values(l[0]))),l}(e)),c(e)}})}catch(e){console.error("There was an error fetching the data",e)}})()},[t,s,r,a,_,b]),(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(E.Z,{numItems:2,className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(T.Z,{numColSpan:2,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Monthly Spend"}),(0,l.jsx)(Q.Z,{data:i,index:"date",categories:["spend"],colors:["blue"],valueFormatter:e=>"$ ".concat(new Intl.NumberFormat("us").format(e).toString()),yAxisWidth:100,tickGap:5})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top API Keys"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:d,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:80,tickGap:5,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top Users"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:x,index:"user_id",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top Models"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:m,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})})]})})},eF=()=>{let{Title:e,Paragraph:t}=en.default,[s,a]=(0,n.useState)(""),[o,c]=(0,n.useState)(null),[d,h]=(0,n.useState)(null),[m,u]=(0,n.useState)(null),[x,p]=(0,n.useState)(!0),j=(0,r.useSearchParams)(),g=j.get("userID"),Z=j.get("token"),[y,f]=(0,n.useState)("api-keys"),[w,k]=(0,n.useState)(null);return(0,n.useEffect)(()=>{if(Z){let e=(0,ei.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),k(e.key),e.user_role){let t=function(e){if(!e)return"Undefined Role";switch(console.log("Received user role: ".concat(e.toLowerCase())),console.log("Received user role length: ".concat(e.toLowerCase().length)),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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",t),a(t),"Admin Viewer"==t&&f("usage")}else console.log("User role not defined");e.user_email?c(e.user_email):console.log("User Email is not set ".concat(e)),e.login_method?p("username_password"==e.login_method):console.log("User Email is not set ".concat(e))}}},[Z]),(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)("div",{children:"Loading..."}),children:(0,l.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,l.jsx)(i,{userID:g,userRole:s,userEmail:o,showSSOBanner:x}),(0,l.jsxs)("div",{className:"flex flex-1 overflow-auto",children:[(0,l.jsx)(eT,{setPage:f,userRole:s,defaultSelectedKey:null}),"api-keys"==y?(0,l.jsx)(ec,{userID:g,userRole:s,teams:d,keys:m,setUserRole:a,userEmail:o,setUserEmail:c,setTeams:h,setKeys:u}):"models"==y?(0,l.jsx)(eu,{userID:g,userRole:s,token:Z,accessToken:w}):"llm-playground"==y?(0,l.jsx)(eA,{userID:g,userRole:s,token:Z,accessToken:w}):"users"==y?(0,l.jsx)(ew,{userID:g,userRole:s,token:Z,keys:m,accessToken:w,setKeys:u}):"teams"==y?(0,l.jsx)(e_,{teams:d,setTeams:h,searchParams:j,accessToken:w}):"admin-panel"==y?(0,l.jsx)(eb,{setTeams:h,searchParams:j,accessToken:w}):(0,l.jsx)(eE,{userID:g,userRole:s,token:Z,accessToken:w})]})]})})}}},function(e){e.O(0,[730,971,69,744],function(){return e(e.s=20661)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/chunks/app/page-37bd7c3d0bb898a3.js b/litellm/proxy/_experimental/out/_next/static/chunks/app/page-37bd7c3d0bb898a3.js new file mode 100644 index 000000000..8d5377ae4 --- /dev/null +++ b/litellm/proxy/_experimental/out/_next/static/chunks/app/page-37bd7c3d0bb898a3.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{20661:function(e,t,s){Promise.resolve().then(s.bind(s,56239))},56239:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return eF}});var l=s(3827),n=s(64090),r=s(47907),a=s(8792),o=s(2179),i=e=>{let{userID:t,userRole:s,userEmail:n,showSSOBanner:r}=e;return console.log("User ID:",t),console.log("userEmail:",n),(0,l.jsxs)("nav",{className:"left-0 right-0 top-0 flex justify-between items-center h-12 mb-4",children:[(0,l.jsx)("div",{className:"text-left my-2 absolute top-0 left-0",children:(0,l.jsx)("div",{className:"flex flex-col items-center",children:(0,l.jsx)(a.default,{href:"/",children:(0,l.jsx)("button",{className:"text-gray-800 text-2xl py-1 rounded text-center",children:(0,l.jsx)("img",{src:"/get_image",width:200,height:200,alt:"LiteLLM Brand",className:"mr-2"})})})})}),(0,l.jsxs)("div",{className:"text-right mx-4 my-2 absolute top-0 right-0 flex items-center justify-end space-x-2",children:[r?(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#setup-ssoauth-for-ui",target:"_blank",className:"mr-2",children:(0,l.jsx)(o.Z,{variant:"primary",size:"lg",children:"Enable SSO"})}):null,(0,l.jsxs)(o.Z,{variant:"secondary",size:"lg",children:[n,(0,l.jsxs)("p",{children:["Role: ",s]}),(0,l.jsxs)("p",{children:["ID: ",t]})]})]})]})},c=s(80588);let d=async(e,t,s)=>{try{if(console.log("Form Values in keyCreateCall:",s),s.description&&(s.metadata||(s.metadata={}),s.metadata.description=s.description,delete s.description,s.metadata=JSON.stringify(s.metadata)),s.metadata){console.log("formValues.metadata:",s.metadata);try{s.metadata=JSON.parse(s.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",s);let l=await fetch("/key/generate",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},h=async(e,t,s)=>{try{if(console.log("Form Values in keyCreateCall:",s),s.description&&(s.metadata||(s.metadata={}),s.metadata.description=s.description,delete s.description,s.metadata=JSON.stringify(s.metadata)),s.metadata){console.log("formValues.metadata:",s.metadata);try{s.metadata=JSON.parse(s.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",s);let l=await fetch("/user/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},m=async(e,t)=>{try{console.log("in keyDeleteCall:",t),c.ZP.info("Making key delete request");let s=await fetch("/key/delete",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[t]})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await s.json();return console.log(l),c.ZP.success("API Key Deleted"),l}catch(e){throw console.error("Failed to create key:",e),e}},u=async function(e,t,s){let l=arguments.length>3&&void 0!==arguments[3]&&arguments[3];try{let n="/user/info";"App Owner"==s&&t&&(n="".concat(n,"/?user_id=").concat(t)),console.log("in userInfoCall viewAll=",l),l&&(n="".concat(n,"/?view_all=true")),c.ZP.info("Requesting user data");let r=await fetch(n,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw c.ZP.error(e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),c.ZP.info("Received user data"),a}catch(e){throw console.error("Failed to create key:",e),e}},x=async(e,t,s)=>{try{c.ZP.info("Requesting model data");let t=await fetch("/v2/model/info",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return c.ZP.info("Received model data"),s}catch(e){throw console.error("Failed to create key:",e),e}},p=async(e,t,s)=>{try{c.ZP.info("Requesting model data");let t=await fetch("/models",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return c.ZP.info("Received model data"),s}catch(e){throw console.error("Failed to create key:",e),e}},j=async(e,t)=>{try{let s="/global/spend/logs";console.log("in keySpendLogsCall:",s);let l=await fetch("".concat(s,"/?api_key=").concat(t),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to create key:",e),e}},g=async(e,t,s,l,n,r)=>{try{console.log("user role in spend logs call: ".concat(s));let t="/spend/logs";t="App Owner"==s?"".concat(t,"/?user_id=").concat(l,"&start_date=").concat(n,"&end_date=").concat(r):"".concat(t,"/?start_date=").concat(n,"&end_date=").concat(r),c.ZP.info("Making spend logs request");let a=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw c.ZP.error(e),Error("Network response was not ok")}let o=await a.json();return console.log(o),c.ZP.success("Spend Logs received"),o}catch(e){throw console.error("Failed to create key:",e),e}},Z=async e=>{try{c.ZP.info("Making spend logs request");let t=await fetch("/global/spend/logs",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Spend Logs received"),s}catch(e){throw console.error("Failed to create key:",e),e}},y=async e=>{try{c.ZP.info("Making spend keys request");let t=await fetch("/global/spend/keys?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Spend Logs received"),s}catch(e){throw console.error("Failed to create key:",e),e}},f=async(e,t)=>{try{t&&JSON.stringify({api_key:t}),c.ZP.info("Making top end users request");let s={method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}};t&&(s.body=JSON.stringify({api_key:t}));let l=await fetch("/global/spend/end_users",s);if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Top End users received"),n}catch(e){throw console.error("Failed to create key:",e),e}},w=async e=>{try{c.ZP.info("Making top models request");let t=await fetch("/global/spend/models?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Top Models received"),s}catch(e){throw console.error("Failed to create key:",e),e}},k=async(e,t)=>{try{let s=await fetch("/v2/key/info",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:t})});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await s.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},_=async(e,t)=>{try{let s="/spend/users";console.log("in spendUsersCall:",s);let l=await fetch("".concat(s,"/?user_id=").concat(t),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to get spend for user",e),e}},b=async(e,t,s,l)=>{try{let n=await fetch("/user/request_model",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({models:[t],user_id:s,justification:l})});if(!n.ok){let e=await n.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let r=await n.json();return console.log(r),c.ZP.success(""),r}catch(e){throw console.error("Failed to create key:",e),e}},v=async e=>{try{let t="/user/get_requests";console.log("in userGetRequesedtModelsCall:",t);let s=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await s.json();return console.log(l),c.ZP.success(""),l}catch(e){throw console.error("Failed to get requested models:",e),e}},S=async(e,t)=>{try{let s="/user/get_users?role=".concat(t);console.log("in userGetAllUsersCall:",s);let l=await fetch(s,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Got all users"),n}catch(e){throw console.error("Failed to get requested models:",e),e}},N=async(e,t)=>{try{console.log("Form Values in teamCreateCall:",t);let s=await fetch("/team/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await s.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,t,s)=>{try{console.log("Form Values in teamMemberAddCall:",s);let l=await fetch("/team/member_add",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,member:s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},C=async(e,t)=>{try{console.log("Form Values in userUpdateUserCall:",t);let s=await fetch("/user/update",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_role:"proxy_admin_viewer",...t})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await s.json();return console.log("API Response:",l),c.ZP.success("User role updated"),l}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,t)=>{try{let s=await fetch("/global/predict/spend/logs",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({data:t})});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await s.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},P=async e=>{try{console.log("Checking Slack Budget Alerts service health"),c.ZP.info("Sending Test Slack alert...");let t=await fetch("/health/services?service=slack_budget_alerts",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error("Failed Slack Alert test: "+e),Error(e)}let s=await t.json();return c.ZP.success("Test Slack Alert worked - check your Slack!"),console.log("Service Health Response:",s),s}catch(e){throw console.error("Failed to perform health check:",e),e}};var T=s(10384),E=s(46453),F=s(13810),M=s(71801),R=s(42440),O=s(17189),D=s(12143),U=s(77171),L=s(42539),z=s(88707),B=s(1861);let{Option:q}=O.default;var K=e=>{let{userID:t,teamID:s,userRole:r,accessToken:a,data:i,userModels:h,setData:m}=e,[u]=D.Z.useForm(),[x,p]=(0,n.useState)(!1),[j,g]=(0,n.useState)(null),[Z,y]=(0,n.useState)(null),f=()=>{p(!1),u.resetFields()},w=()=>{p(!1),g(null),u.resetFields()},k=async e=>{try{c.ZP.info("Making API Call"),p(!0);let s=await d(a,t,e);console.log("key create Response:",s),m(e=>e?[...e,s]:[s]),g(s.key),y(s.soft_budget),c.ZP.success("API Key Created"),u.resetFields(),localStorage.removeItem("userData"+t)}catch(e){console.error("Error creating the key:",e)}},_=async()=>{try{console.log("Sending Slack alert...");let e=await P(a);console.log("slackBudgetAlertsHealthCheck Response:",e),console.log("Testing Slack alert successful")}catch(e){console.error("Error sending Slack alert:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>p(!0),children:"+ Create New Key"}),(0,l.jsx)(U.Z,{title:"Create Key",visible:x,width:800,footer:null,onOk:f,onCancel:w,children:(0,l.jsxs)(D.Z,{form:u,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:["App Owner"===r||"Admin"===r?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team",defaultValue:s||""})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:h.map(e=>(0,l.jsx)(q,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Soft Budget (USD) Monthly",name:"soft_budget",initialValue:50,children:(0,l.jsx)(z.Z,{step:.01,precision:2,defaultValue:50,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,l.jsxs)(O.default,{defaultValue:null,placeholder:"n/a",children:[(0,l.jsx)(O.default.Option,{value:"24h",children:"daily"}),(0,l.jsx)(O.default.Option,{value:"30d",children:"monthly"})]})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Expire Key (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Team ID (Contact Group)",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team"})}),(0,l.jsx)(D.Z.Item,{label:"Description",name:"description",children:(0,l.jsx)(L.Z.TextArea,{placeholder:"Enter description",rows:4})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create Key"})})]})}),j&&(0,l.jsx)(U.Z,{visible:x,onOk:f,onCancel:w,footer:null,children:(0,l.jsx)(E.Z,{numItems:1,className:"gap-2 w-full",children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Save your Key"}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)("p",{children:["Please save this secret key somewhere safe and accessible. For security reasons, ",(0,l.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,l.jsx)(T.Z,{numColSpan:1,children:null!=j?(0,l.jsxs)("div",{children:[(0,l.jsxs)(M.Z,{children:["API Key: ",j]}),(0,l.jsx)(R.Z,{className:"mt-6",children:"Budgets"}),(0,l.jsxs)(M.Z,{children:["Soft Limit Budget: $",Z]}),(0,l.jsx)(o.Z,{className:"mt-3",onClick:_,children:"Test Slack Alert"}),(0,l.jsxs)(M.Z,{className:"mt-2",children:["(LiteLLM Docs -",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/alerting",target:"_blank",className:"text-blue-500",children:"Set Up Slack Alerting)"})]})]}):(0,l.jsx)(M.Z,{children:"Key being created, this might take 30s"})})]})})})]})},V=s(33393),J=s(61244),G=s(10827),$=s(3851),H=s(2044),W=s(64167),Y=s(74480),X=s(7178),Q=s(9853),ee=s(56863),et=e=>{let{token:t,accessToken:s,keySpend:r,keyBudget:a,keyName:i}=e,[c,d]=(0,n.useState)(!1),[h,m]=(0,n.useState)(null),[u,x]=(0,n.useState)(""),[p,g]=(0,n.useState)(null),Z=async()=>{try{if(null==s||null==t)return;console.log("accessToken: ".concat(s,"; token: ").concat(t));let e=await j(s,t);console.log("Response:",e),m(e);let l=await I(s,e);console.log("Response2:",l);let n=[...e,...l.response];m(n),x(l.predicted_spend),console.log("Combined Data:",n)}catch(e){console.error("There was an error fetching the data",e)}};return t?(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>{console.log("Show Modal triggered"),d(!0),Z()},variant:"secondary",children:"View Spend Report"}),(0,l.jsxs)(U.Z,{visible:c,width:1400,onOk:()=>{d(!1)},onCancel:()=>{d(!1)},footer:null,children:[(0,l.jsxs)(R.Z,{style:{textAlign:"left"},children:["Key Name: ",i]}),(0,l.jsxs)(ee.Z,{children:["Monthly Spend $",r]}),(0,l.jsx)(R.Z,{children:u}),(0,l.jsx)(F.Z,{className:"mt-6 mb-6",children:h&&(0,l.jsx)(Q.Z,{className:"mt-6",data:h,colors:["blue","amber"],index:"date",categories:["spend","predicted_spend"],yAxisWidth:80})})]})]}):null},es=e=>{let{userID:t,accessToken:s,data:r,setData:a}=e,[i,c]=(0,n.useState)(!1),[d,h]=(0,n.useState)(!1),[u,x]=(0,n.useState)(null),p=async e=>{null!=r&&(x(e),localStorage.removeItem("userData"+t),h(!0))},j=async()=>{if(null!=u&&null!=r){try{await m(s,u);let e=r.filter(e=>e.token!==u);a(e)}catch(e){console.error("Error deleting the key:",e)}h(!1),x(null)}};if(null!=r)return console.log("RERENDER TRIGGERED"),(0,l.jsxs)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:[(0,l.jsxs)(G.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Key Alias"}),(0,l.jsx)(Y.Z,{children:"Secret Key"}),(0,l.jsx)(Y.Z,{children:"Spend (USD)"}),(0,l.jsx)(Y.Z,{children:"Key Budget (USD)"}),(0,l.jsx)(Y.Z,{children:"Spend Report"}),(0,l.jsx)(Y.Z,{children:"Team ID"}),(0,l.jsx)(Y.Z,{children:"Metadata"}),(0,l.jsx)(Y.Z,{children:"Models"}),(0,l.jsx)(Y.Z,{children:"TPM / RPM Limits"}),(0,l.jsx)(Y.Z,{children:"Expires"})]})}),(0,l.jsx)($.Z,{children:r.map(e=>(console.log(e),"litellm-dashboard"===e.team_id)?null:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:null!=e.key_alias?(0,l.jsx)(M.Z,{children:e.key_alias}):(0,l.jsx)(M.Z,{children:"Not Set"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.key_name})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.spend})}),(0,l.jsx)(H.Z,{children:null!=e.max_budget?(0,l.jsx)(M.Z,{children:e.max_budget}):(0,l.jsx)(M.Z,{children:"Unlimited Budget"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(et,{token:e.token,accessToken:s,keySpend:e.spend,keyBudget:e.max_budget,keyName:e.key_name})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.team_id})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:JSON.stringify(e.metadata)})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:JSON.stringify(e.models)})}),(0,l.jsx)(H.Z,{children:(0,l.jsxs)(M.Z,{children:["TPM Limit: ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(H.Z,{children:null!=e.expires?(0,l.jsx)(M.Z,{children:e.expires}):(0,l.jsx)(M.Z,{children:"Never expires"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{onClick:()=>p(e.token),icon:V.Z,size:"sm"})})]},e.token))})]}),d&&(0,l.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,l.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,l.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,l.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,l.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,l.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,l.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,l.jsx)("div",{className:"sm:flex sm:items-start",children:(0,l.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,l.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Key"}),(0,l.jsx)("div",{className:"mt-2",children:(0,l.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this key ?"})})]})})}),(0,l.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,l.jsx)(o.Z,{onClick:j,color:"red",className:"ml-2",children:"Delete"}),(0,l.jsx)(o.Z,{onClick:()=>{h(!1),x(null)},children:"Cancel"})]})]})]})})]})},el=e=>{let{userID:t,userSpendData:s,userRole:r,accessToken:a}=e;console.log("User SpendData:",s);let[o,i]=(0,n.useState)(null==s?void 0:s.spend),[c,d]=(0,n.useState)((null==s?void 0:s.max_budget)||null);return(0,n.useEffect)(()=>{(async()=>{if("Admin"===r)try{let e=await _(a,"litellm-proxy-budget");console.log("Result from callSpendUsers:",e);let t=e[0];i(null==t?void 0:t.spend),d((null==t?void 0:t.max_budget)||null)}catch(e){console.error("Failed to get spend for user",e)}})()},[r,a,t]),(0,l.jsx)(l.Fragment,{children:(0,l.jsxs)(F.Z,{className:"mx-auto mb-4",children:[(0,l.jsxs)(ee.Z,{children:["$",o]}),(0,l.jsxs)(R.Z,{children:["/ ",null!==c?"$".concat(c," limit"):"No limit"]})]})})},en=s(36083),er=s(68967),ea=s(27166),eo=e=>{let{teams:t,setSelectedTeam:s}=e,{Title:r,Paragraph:a}=en.default,[o,i]=(0,n.useState)("");return(0,l.jsxs)("div",{className:"mt-10",children:[(0,l.jsx)(r,{level:4,children:"Default Team"}),(0,l.jsx)(a,{children:"If you belong to multiple teams, this setting controls which team is used by default when creating new API Keys."}),t&&t.length>0?(0,l.jsx)(er.Z,{defaultValue:"0",children:t.map((e,t)=>(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>s(e),children:e.team_alias},t))}):(0,l.jsxs)(a,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]})},ei=s(37963);console.log("isLocal:",!1);var ec=e=>{let{userID:t,userRole:s,teams:a,keys:o,setUserRole:i,userEmail:c,setUserEmail:d,setTeams:h,setKeys:m}=e,[x,j]=(0,n.useState)(null),g=(0,r.useSearchParams)();g.get("viewSpend"),(0,r.useRouter)();let Z=g.get("token"),[y,f]=(0,n.useState)(null),[w,k]=(0,n.useState)([]),[_,b]=(0,n.useState)(a?a[0]:null);if(window.addEventListener("beforeunload",function(){sessionStorage.clear()}),(0,n.useEffect)(()=>{if(Z){let e=(0,ei.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),f(e.key),e.user_role){let t=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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",t),i(t)}else console.log("User role not defined");e.user_email?d(e.user_email):console.log("User Email is not set ".concat(e))}}if(t&&y&&s&&!o&&!x){let e=sessionStorage.getItem("userModels"+t);e?k(JSON.parse(e)):(async()=>{try{let e=await u(y,t,s);console.log("received teams in user dashboard: ".concat(Object.keys(e),"; team values: ").concat(Object.entries(e.teams))),j(e.user_info),m(e.keys),h(e.teams),b(e.teams?e.teams[0]:null),sessionStorage.setItem("userData"+t,JSON.stringify(e.keys)),sessionStorage.setItem("userSpendData"+t,JSON.stringify(e.user_info));let l=(await p(y,t,s)).data.map(e=>e.id);console.log("available_model_names:",l),k(l),console.log("userModels:",w),sessionStorage.setItem("userModels"+t,JSON.stringify(l))}catch(e){console.error("There was an error fetching the data",e)}})()}},[t,Z,y,o,s]),null==t||null==Z){let e="/sso/key/generate";return console.log("Full URL:",e),window.location.href=e,null}if(null==y)return null;if(null==s&&i("App Owner"),s&&"Admin Viewer"==s){let{Title:e,Paragraph:t}=en.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(t,{children:"Ask your proxy admin for access to create keys"})]})}return(0,l.jsx)("div",{children:(0,l.jsx)(E.Z,{numItems:1,className:"gap-0 p-10 h-[75vh] w-full",children:(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(el,{userID:t,userSpendData:x,userRole:s,accessToken:y}),(0,l.jsx)(es,{userID:t,accessToken:y,data:o,setData:m}),(0,l.jsx)(K,{userID:t,teamID:_?_.team_id:null,userRole:s,userModels:w,accessToken:y,data:o,setData:m}),(0,l.jsx)(eo,{teams:a,setSelectedTeam:b})]})})})},ed=s(5);let{Option:eh}=O.default;var em=e=>{let{userModels:t,accessToken:s,userID:r}=e,[a]=D.Z.useForm(),[i,d]=(0,n.useState)(!1),h=async e=>{try{c.ZP.info("Requesting access");let{selectedModel:t,accessReason:l}=e;await b(s,t,r,l),d(!0)}catch(e){console.error("Error requesting access:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>d(!0),children:"Request Access"}),(0,l.jsx)(U.Z,{title:"Request Access",visible:i,width:800,footer:null,onOk:()=>{d(!1),a.resetFields()},onCancel:()=>{d(!1),a.resetFields()},children:(0,l.jsxs)(D.Z,{form:a,onFinish:h,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(D.Z.Item,{label:"Select Model",name:"selectedModel",children:(0,l.jsx)(O.default,{placeholder:"Select model",style:{width:"100%"},children:t.map(e=>(0,l.jsx)(eh,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Reason for Access",name:"accessReason",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter reason for access"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(o.Z,{children:"Request Access"})})]})})]})},eu=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,[i,c]=(0,n.useState)({data:[]}),[d,h]=(0,n.useState)([]);if((0,n.useEffect)(()=>{if(!t||!s||!r||!a)return;let e=async()=>{try{let e=await x(t,a,r);if(console.log("Model data response:",e.data),c(e),"Admin"===r&&t){let e=await v(t);console.log("Pending Requests:",d),h(e.requests||[])}}catch(e){console.error("There was an error fetching the model data",e)}};t&&s&&r&&a&&e()},[t,s,r,a]),!i||!t||!s||!r||!a)return(0,l.jsx)("div",{children:"Loading..."});let m=[];for(let e=0;e(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:e.model_name})}),(0,l.jsx)(H.Z,{children:e.provider}),(0,l.jsx)(H.Z,{children:e.user_access?(0,l.jsx)(ed.Z,{color:"green",children:"Yes"}):(0,l.jsx)(em,{userModels:m,accessToken:t,userID:a})}),(0,l.jsx)(H.Z,{children:e.input_cost}),(0,l.jsx)(H.Z,{children:e.output_cost}),(0,l.jsx)(H.Z,{children:e.max_tokens})]},e.model_name))})]})}),"Admin"===r&&d&&d.length>0?(0,l.jsx)(F.Z,{children:(0,l.jsxs)(G.Z,{children:[(0,l.jsxs)(W.Z,{children:[(0,l.jsx)(R.Z,{children:"Pending Requests"}),(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"User ID"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Requested Models"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Justification"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Justification"})})]})]}),(0,l.jsx)($.Z,{children:d.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.models[0]})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.justification})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(o.Z,{children:"Approve"}),(0,l.jsx)(o.Z,{variant:"secondary",className:"ml-2",children:"Deny"})]},e.request_id))})]})}):null]})})},ex=s(92836),ep=s(26734),ej=s(41608),eg=s(32126),eZ=s(23682);let{Option:ey}=O.default;var ef=e=>{let{userID:t,accessToken:s}=e,[r]=D.Z.useForm(),[a,i]=(0,n.useState)(!1),[d,m]=(0,n.useState)(null),[u,x]=(0,n.useState)([]);(0,n.useEffect)(()=>{(async()=>{try{let e=await p(s,t,"any"),l=[];for(let t=0;t{i(!1),r.resetFields()},g=()=>{i(!1),m(null),r.resetFields()},Z=async e=>{try{c.ZP.info("Making API Call"),i(!0),console.log("formValues in create user:",e);let l=await h(s,t,e);console.log("user create Response:",l),m(l.key),c.ZP.success("API user Created"),r.resetFields(),localStorage.removeItem("userData"+t)}catch(e){console.error("Error creating the user:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>i(!0),children:"+ Create New User"}),(0,l.jsx)(U.Z,{title:"Create User",visible:a,width:800,footer:null,onOk:j,onCancel:g,children:(0,l.jsxs)(D.Z,{form:r,onFinish:Z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",children:(0,l.jsx)(L.Z,{placeholder:"Enter User ID"})}),(0,l.jsx)(D.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team"})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:u.map(e=>(0,l.jsx)(ey,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Duration (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create User"})})]})}),d&&(0,l.jsxs)(U.Z,{title:"Save Your User",visible:a,onOk:j,onCancel:g,footer:null,children:[(0,l.jsxs)("p",{children:["Please save this secret user somewhere safe and accessible. For security reasons, ",(0,l.jsx)("b",{children:"you will not be able to view it again"})," ","through your LiteLLM account. If you lose this secret user, you will need to generate a new one."]}),(0,l.jsx)("p",{children:null!=d?"API user: ".concat(d):"User being created, this might take 30s"})]})]})},ew=e=>{let{accessToken:t,token:s,keys:r,userRole:a,userID:o,setKeys:i}=e,[c,d]=(0,n.useState)(null),[h,m]=(0,n.useState)(null),[x,p]=(0,n.useState)(1);if((0,n.useEffect)(()=>{if(!t||!s||!a||!o)return;let e=async()=>{try{let e=await u(t,null,a,!0);console.log("user data response:",e),d(e)}catch(e){console.error("There was an error fetching the model data",e)}};t&&s&&a&&o&&!c&&e();let l=async()=>{try{let e=await f(t,null);console.log("user data response:",e),m(e)}catch(e){console.error("There was an error fetching the model data",e)}};a&&("Admin"==a||"Admin Viewer"==a)&&!h&&l()},[t,s,a,o]),!c||!t||!s||!a||!o)return(0,l.jsx)("div",{children:"Loading..."});let j=async e=>{try{let s=await f(t,e);console.log("user data response:",s),m(s)}catch(e){console.error("There was an error fetching the model data",e)}};return(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(E.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(ef,{userID:o,accessToken:t}),(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{variant:"line",defaultValue:"1",children:[(0,l.jsx)(ex.Z,{value:"1",children:"Key Owners"}),(0,l.jsx)(ex.Z,{value:"2",children:"End-Users"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsx)(eg.Z,{children:(0,l.jsxs)(G.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"User ID"}),(0,l.jsx)(Y.Z,{children:"User Role"}),(0,l.jsx)(Y.Z,{children:"User Models"}),(0,l.jsx)(Y.Z,{children:"User Spend ($ USD)"}),(0,l.jsx)(Y.Z,{children:"User Max Budget ($ USD)"})]})}),(0,l.jsx)($.Z,{children:c.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_id}),(0,l.jsx)(H.Z,{children:e.user_role?e.user_role:"app_owner"}),(0,l.jsx)(H.Z,{children:e.models&&e.models.length>0?e.models:"All Models"}),(0,l.jsx)(H.Z,{children:e.spend?e.spend:0}),(0,l.jsx)(H.Z,{children:e.max_budget?e.max_budget:"Unlimited"})]},e.user_id))})]})}),(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)("div",{className:"flex-1 flex justify-between items-center",children:[(0,l.jsx)(M.Z,{className:"w-1/4 mr-2 text-right",children:"Key"}),(0,l.jsx)(er.Z,{defaultValue:"1",className:"w-3/4",children:null==r?void 0:r.map((e,t)=>{if(e&&null!==e.key_name&&e.key_name.length>0)return(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>j(e.token),children:e.key_name},t)})})]})]}),(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"End User"}),(0,l.jsx)(Y.Z,{children:"Spend"}),(0,l.jsx)(Y.Z,{children:"Total Events"})]})}),(0,l.jsx)($.Z,{children:null==h?void 0:h.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.end_user}),(0,l.jsx)(H.Z,{children:e.total_spend}),(0,l.jsx)(H.Z,{children:e.total_events})]},t))})]})]})]})]})}),function(){if(!c)return null;let e=Math.ceil(c.length/25),t=Math.min(25*x,c.length);return(0,l.jsxs)("div",{className:"flex justify-between items-center",children:[(0,l.jsxs)("div",{children:["Showing ",(x-1)*25+1," – ",t," of ",c.length]}),(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-l focus:outline-none",disabled:1===x,onClick:()=>p(x-1),children:"← Prev"}),(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-r focus:outline-none",disabled:x===e,onClick:()=>p(x+1),children:"Next →"})]})]})}()]})})},ek=s(8510),e_=e=>{let{teams:t,searchParams:s,accessToken:r,setTeams:a}=e,[i]=D.Z.useForm(),[d]=D.Z.useForm(),{Title:h,Paragraph:m}=en.default,[u,x]=(0,n.useState)(""),[p,j]=(0,n.useState)(t?t[0]:null),[g,Z]=(0,n.useState)(!1),[y,f]=(0,n.useState)(!1),w=async e=>{try{if(null!=r){c.ZP.info("Making API Call");let s=await N(r,e);null!==t?a([...t,s]):a([s]),console.log("response for team create call: ".concat(s)),Z(!1)}}catch(e){console.error("Error creating the key:",e)}},k=async e=>{try{if(null!=r&&null!=t){c.ZP.info("Making API Call");let s={role:"user",user_email:e.user_email,user_id:e.user_id},l=await A(r,p.team_id,s);console.log("response for team create call: ".concat(l.data));let n=t.findIndex(e=>(console.log("team.team_id=".concat(e.team_id,"; response.data.team_id=").concat(l.data.team_id)),e.team_id===l.data.team_id));if(console.log("foundIndex: ".concat(n)),-1!==n){let e=[...t];e[n]=l.data,a(e),j(l.data)}f(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("received teams ".concat(t)),(0,l.jsx)("div",{className:"w-full",children:(0,l.jsxs)(E.Z,{numItems:1,className:"gap-2 p-2 h-[75vh] w-full",children:[(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"All Teams"}),(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Team Name"}),(0,l.jsx)(Y.Z,{children:"Spend (USD)"}),(0,l.jsx)(Y.Z,{children:"Budget (USD)"}),(0,l.jsx)(Y.Z,{children:"TPM / RPM Limits"})]})}),(0,l.jsx)($.Z,{children:t&&t.length>0?t.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.team_alias}),(0,l.jsx)(H.Z,{children:e.spend}),(0,l.jsx)(H.Z,{children:e.max_budget?e.max_budget:"No limit"}),(0,l.jsx)(H.Z,{children:(0,l.jsxs)(M.Z,{children:["TPM Limit:"," ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},e.team_id)):null})]})})]}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>Z(!0),children:"+ Create New Team"}),(0,l.jsx)(U.Z,{title:"Create Team",visible:g,width:800,footer:null,onOk:()=>{Z(!1),i.resetFields()},onCancel:()=>{Z(!1),i.resetFields()},children:(0,l.jsxs)(D.Z,{form:i,onFinish:w,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Team Name",name:"team_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"}})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create Team"})})]})})]}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"Team Members"}),(0,l.jsx)(m,{children:"If you belong to multiple teams, this setting controls which teams members you see."}),t&&t.length>0?(0,l.jsx)(er.Z,{defaultValue:"0",children:t.map((e,t)=>(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>{j(e)},children:e.team_alias},t))}):(0,l.jsxs)(m,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Member Name"}),(0,l.jsx)(Y.Z,{children:"Role"}),(0,l.jsx)(Y.Z,{children:"Action"})]})}),(0,l.jsx)($.Z,{children:p?p.members_with_roles.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(H.Z,{children:e.role}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},t)):null})]})})}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>f(!0),children:"+ Add member"}),(0,l.jsx)(U.Z,{title:"Add member",visible:y,width:800,footer:null,onOk:()=>{f(!1),d.resetFields()},onCancel:()=>{f(!1),d.resetFields()},children:(0,l.jsxs)(D.Z,{form:i,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})})},eb=e=>{let{searchParams:t,accessToken:s}=e,[r]=D.Z.useForm(),[a]=D.Z.useForm(),{Title:i,Paragraph:d}=en.default,[h,m]=(0,n.useState)(""),[u,x]=(0,n.useState)(null),[p,j]=(0,n.useState)(!1);(0,n.useEffect)(()=>{(async()=>{if(null!=s){let e=[],t=await S(s,"proxy_admin_viewer");t.forEach(t=>{e.push({user_role:t.user_role,user_id:t.user_id,user_email:t.user_email})}),console.log("proxy viewers: ".concat(t));let l=await S(s,"proxy_admin");l.forEach(t=>{e.push({user_role:t.user_role,user_id:t.user_id,user_email:t.user_email})}),console.log("proxy admins: ".concat(l)),console.log("combinedList: ".concat(e)),x(e)}})()},[s]);let g=async e=>{try{if(null!=s&&null!=u){c.ZP.info("Making API Call"),e.user_email,e.user_id;let t=await C(s,e);console.log("response for team create call: ".concat(t));let l=u.findIndex(e=>(console.log("user.user_id=".concat(e.user_id,"; response.user_id=").concat(t.user_id)),e.user_id===t.user_id));console.log("foundIndex: ".concat(l)),-1==l&&(console.log("updates admin with new user"),u.push(t),x(u)),j(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("admins: ".concat(null==u?void 0:u.length)),(0,l.jsxs)("div",{className:"w-full m-2",children:[(0,l.jsx)(i,{level:4,children:"Restricted Access"}),(0,l.jsxs)(d,{children:["Add other people to just view spend. They cannot create keys, teams or grant users access to new models."," ",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#restrict-ui-access",children:"Requires SSO Setup"})]}),(0,l.jsxs)(E.Z,{numItems:1,className:"gap-2 p-0 w-full",children:[(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Member Name"}),(0,l.jsx)(Y.Z,{children:"Role"}),(0,l.jsx)(Y.Z,{children:"Action"})]})}),(0,l.jsx)($.Z,{children:u?u.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(H.Z,{children:e.user_role}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},t)):null})]})})}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>j(!0),children:"+ Add viewer"}),(0,l.jsx)(U.Z,{title:"Add viewer",visible:p,width:800,footer:null,onOk:()=>{j(!1),a.resetFields()},onCancel:()=>{j(!1),a.resetFields()},children:(0,l.jsxs)(D.Z,{form:r,onFinish:g,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})]})},ev=s(12968),eS=s(67951);async function eN(e,t,s,l){console.log("isLocal:",!1);let n=window.location.origin,r=new ev.ZP.OpenAI({apiKey:l,baseURL:n,dangerouslyAllowBrowser:!0});for await(let l of(await r.chat.completions.create({model:s,stream:!0,messages:[{role:"user",content:e}]})))console.log(l),l.choices[0].delta.content&&t(l.choices[0].delta.content)}var eA=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,[o,i]=(0,n.useState)(""),[c,d]=(0,n.useState)([]),[h,m]=(0,n.useState)(void 0),[u,x]=(0,n.useState)(null);(0,n.useEffect)(()=>{t&&s&&r&&a&&(async()=>{let e=await p(t,a,r);console.log("model_info:",e),(null==e?void 0:e.data.length)>0&&(x(e.data),m(e.data[0].id))})()},[t,a,r]);let j=(e,t)=>{d(s=>{let l=s[s.length-1];return l&&l.role===e?[...s.slice(0,s.length-1),{role:e,content:l.content+t}]:[...s,{role:e,content:t}]})},g=async()=>{if(""!==o.trim()&&t&&s&&r&&a){d(e=>[...e,{role:"user",content:o}]);try{h&&await eN(o,e=>j("assistant",e),h,t)}catch(e){console.error("Error fetching model response",e),j("assistant","Error fetching model response")}i("")}};if(r&&"Admin Viewer"==r){let{Title:e,Paragraph:t}=en.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(t,{children:"Ask your proxy admin for access to test models"})]})}return(0,l.jsx)("div",{style:{width:"100%",position:"relative"},children:(0,l.jsx)(E.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:(0,l.jsx)(F.Z,{children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{className:"mt-4",children:[(0,l.jsx)(ex.Z,{children:"Chat"}),(0,l.jsx)(ex.Z,{children:"API Reference"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{children:"Select Model:"}),(0,l.jsx)("select",{value:h||"",onChange:e=>m(e.target.value),children:null==u?void 0:u.map(e=>(0,l.jsx)("option",{value:e.id,children:e.id},e.id))})]}),(0,l.jsxs)(G.Z,{className:"mt-5",style:{display:"block",maxHeight:"60vh",overflowY:"auto"},children:[(0,l.jsx)(W.Z,{children:(0,l.jsx)(X.Z,{children:(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Chat"})})})}),(0,l.jsx)($.Z,{children:c.map((e,t)=>(0,l.jsx)(X.Z,{children:(0,l.jsx)(H.Z,{children:"".concat(e.role,": ").concat(e.content)})},t))})]}),(0,l.jsx)("div",{className:"mt-3",style:{position:"absolute",bottom:5,width:"95%"},children:(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("input",{type:"text",value:o,onChange:e=>i(e.target.value),className:"flex-1 p-2 border rounded-md mr-2",placeholder:"Type your message..."}),(0,l.jsx)("button",{onClick:g,className:"p-2 bg-blue-500 text-white rounded-md",children:"Send"})]})})]}),(0,l.jsx)(eg.Z,{children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{children:[(0,l.jsx)(ex.Z,{children:"OpenAI Python SDK"}),(0,l.jsx)(ex.Z,{children:"LlamaIndex"}),(0,l.jsx)(ex.Z,{children:"Langchain Py"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.Z,{language:"python",children:'\nimport openai\nclient = openai.OpenAI(\n api_key="your_api_key",\n base_url="http://0.0.0.0:4000" # proxy base url\n)\n\nresponse = client.chat.completions.create(\n model="gpt-3.5-turbo", # model to use from Models Tab\n messages = [\n {\n "role": "user",\n "content": "this is a test request, write a short poem"\n }\n ],\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-openai-client",\n "generation_id": "openai-client-gen-id22",\n "trace_id": "openai-client-trace-id22",\n "trace_user_id": "openai-client-user-id2"\n }\n }\n)\n\nprint(response)\n '})}),(0,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.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="http://0.0.0.0:4000", # 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="http://0.0.0.0:4000",\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,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.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="http://0.0.0.0:8000",\n model = "gpt-3.5-turbo",\n temperature=0.1,\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-langchain-client",\n "generation_id": "langchain-client-gen-id22",\n "trace_id": "langchain-client-trace-id22",\n "trace_user_id": "langchain-client-user-id2"\n }\n }\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 '})})]})]})})]})]})})})})},eC=s(33509),eI=s(30569);let{Sider:eP}=eC.default;var eT=e=>{let{setPage:t,userRole:s,defaultSelectedKey:n}=e;return"Admin Viewer"==s?(0,l.jsx)(eC.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eP,{width:120,children:(0,l.jsxs)(eI.Z,{mode:"inline",defaultSelectedKeys:n||["4"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eI.Z.Item,{onClick:()=>t("api-keys"),children:"API Keys"},"4"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("models"),children:"Models"},"2"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("usage"),children:"Usage"},"1")]})})}):(0,l.jsx)(eC.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eP,{width:120,children:(0,l.jsxs)(eI.Z,{mode:"inline",defaultSelectedKeys:n||["1"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eI.Z.Item,{onClick:()=>t("api-keys"),children:"API Keys"},"1"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("models"),children:"Models"},"2"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("usage"),children:"Usage"},"4"),"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("users"),children:"Users"},"5"):null,"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("teams"),children:"Teams"},"6"):null,"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("admin-panel"),children:"Admin"},"7"):null]})})})},eE=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,o=new Date,[i,c]=(0,n.useState)([]),[d,h]=(0,n.useState)([]),[m,u]=(0,n.useState)([]),[x,p]=(0,n.useState)([]),j=new Date(o.getFullYear(),o.getMonth(),1),f=new Date(o.getFullYear(),o.getMonth()+1,0),_=v(j),b=v(f);function v(e){let t=e.getFullYear(),s=e.getMonth()+1,l=e.getDate();return"".concat(t,"-").concat(s<10?"0"+s:s,"-").concat(l<10?"0"+l:l)}return console.log("Start date is ".concat(_)),console.log("End date is ".concat(b)),(0,n.useEffect)(()=>{t&&s&&r&&a&&(async()=>{try{if(console.log("user role: ".concat(r)),"Admin"==r||"Admin Viewer"==r){let e=await Z(t);c(e);let s=(await y(t)).map(e=>({key:(e.key_name||e.key_alias||e.api_key).substring(0,7),spend:e.total_spend}));h(s);let l=(await w(t)).map(e=>({key:e.model,spend:e.total_spend}));u(l)}else"App Owner"==r&&await g(t,s,r,a,_,b).then(async e=>{if(console.log("result from spend logs call",e),"daily_spend"in e){let t=e.daily_spend;console.log("daily spend",t),c(t);let s=e.top_api_keys;h(s)}else{let s=(await k(t,function(e){let t=[];e.forEach(e=>{Object.entries(e).forEach(e=>{let[s,l]=e;"spend"!==s&&"startTime"!==s&&"models"!==s&&"users"!==s&&t.push({key:s,spend:l})})}),t.sort((e,t)=>Number(t.spend)-Number(e.spend));let s=t.slice(0,5).map(e=>e.key);return console.log("topKeys: ".concat(Object.keys(s[0]))),s}(e))).info.map(e=>({key:(e.key_name||e.key_alias||e.token).substring(0,7),spend:e.spend}));h(s),p(function(e){let t={};e.forEach(e=>{Object.entries(e.users).forEach(e=>{let[s,l]=e;""!==s&&null!=s&&"None"!=s&&(t[s]||(t[s]=0),t[s]+=l)})});let s=Object.entries(t).map(e=>{let[t,s]=e;return{user_id:t,spend:s}});s.sort((e,t)=>t.spend-e.spend);let l=s.slice(0,5);return console.log("topKeys: ".concat(Object.values(l[0]))),l}(e)),c(e)}})}catch(e){console.error("There was an error fetching the data",e)}})()},[t,s,r,a,_,b]),(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(E.Z,{numItems:2,className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(T.Z,{numColSpan:2,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Monthly Spend"}),(0,l.jsx)(Q.Z,{data:i,index:"date",categories:["spend"],colors:["blue"],valueFormatter:e=>"$ ".concat(new Intl.NumberFormat("us").format(e).toString()),yAxisWidth:100,tickGap:5})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top API Keys"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:d,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:80,tickGap:5,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top Users"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:x,index:"user_id",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top Models"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:m,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})})]})})},eF=()=>{let{Title:e,Paragraph:t}=en.default,[s,a]=(0,n.useState)(""),[o,c]=(0,n.useState)(null),[d,h]=(0,n.useState)(null),[m,u]=(0,n.useState)(null),[x,p]=(0,n.useState)(!0),j=(0,r.useSearchParams)(),g=j.get("userID"),Z=j.get("token"),[y,f]=(0,n.useState)("api-keys"),[w,k]=(0,n.useState)(null);return(0,n.useEffect)(()=>{if(Z){let e=(0,ei.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),k(e.key),e.user_role){let t=function(e){if(!e)return"Undefined Role";switch(console.log("Received user role: ".concat(e.toLowerCase())),console.log("Received user role length: ".concat(e.toLowerCase().length)),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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",t),a(t),"Admin Viewer"==t&&f("usage")}else console.log("User role not defined");e.user_email?c(e.user_email):console.log("User Email is not set ".concat(e)),e.login_method?p("username_password"==e.login_method):console.log("User Email is not set ".concat(e))}}},[Z]),(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)("div",{children:"Loading..."}),children:(0,l.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,l.jsx)(i,{userID:g,userRole:s,userEmail:o,showSSOBanner:x}),(0,l.jsxs)("div",{className:"flex flex-1 overflow-auto",children:[(0,l.jsx)(eT,{setPage:f,userRole:s,defaultSelectedKey:null}),"api-keys"==y?(0,l.jsx)(ec,{userID:g,userRole:s,teams:d,keys:m,setUserRole:a,userEmail:o,setUserEmail:c,setTeams:h,setKeys:u}):"models"==y?(0,l.jsx)(eu,{userID:g,userRole:s,token:Z,accessToken:w}):"llm-playground"==y?(0,l.jsx)(eA,{userID:g,userRole:s,token:Z,accessToken:w}):"users"==y?(0,l.jsx)(ew,{userID:g,userRole:s,token:Z,keys:m,accessToken:w,setKeys:u}):"teams"==y?(0,l.jsx)(e_,{teams:d,setTeams:h,searchParams:j,accessToken:w}):"admin-panel"==y?(0,l.jsx)(eb,{setTeams:h,searchParams:j,accessToken:w}):(0,l.jsx)(eE,{userID:g,userRole:s,token:Z,accessToken:w})]})]})})}}},function(e){e.O(0,[730,971,69,744],function(){return e(e.s=20661)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_buildManifest.js b/litellm/proxy/_experimental/out/_next/static/p1zjZBLDqxGf-NaFvZkeF/_buildManifest.js similarity index 100% rename from litellm/proxy/_experimental/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_buildManifest.js rename to litellm/proxy/_experimental/out/_next/static/p1zjZBLDqxGf-NaFvZkeF/_buildManifest.js diff --git a/litellm/proxy/_experimental/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_ssgManifest.js b/litellm/proxy/_experimental/out/_next/static/p1zjZBLDqxGf-NaFvZkeF/_ssgManifest.js similarity index 100% rename from litellm/proxy/_experimental/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_ssgManifest.js rename to litellm/proxy/_experimental/out/_next/static/p1zjZBLDqxGf-NaFvZkeF/_ssgManifest.js diff --git a/litellm/proxy/_experimental/out/index.html b/litellm/proxy/_experimental/out/index.html index 0c7a9b87f..aaaaa698a 100644 --- a/litellm/proxy/_experimental/out/index.html +++ b/litellm/proxy/_experimental/out/index.html @@ -1 +1 @@ -🚅 LiteLLM \ No newline at end of file +🚅 LiteLLM \ No newline at end of file diff --git a/litellm/proxy/_experimental/out/index.txt b/litellm/proxy/_experimental/out/index.txt index 5afb31dc0..72b67997a 100644 --- a/litellm/proxy/_experimental/out/index.txt +++ b/litellm/proxy/_experimental/out/index.txt @@ -1,7 +1,7 @@ 2:I[77831,[],""] -3:I[56239,["730","static/chunks/730-1411b729a1c79695.js","931","static/chunks/app/page-1b778934c9b8fd3d.js"],""] +3:I[56239,["730","static/chunks/730-1411b729a1c79695.js","931","static/chunks/app/page-37bd7c3d0bb898a3.js"],""] 4:I[5613,[],""] 5:I[31778,[],""] -0:["8Qf_s48H0nBodS2RVsrIl",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},["$L1",["$","$L2",null,{"propsForComponent":{"params":{}},"Component":"$3","isStaticGeneration":true}],null]]},[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_c23dc8","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"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":[],"styles":null}]}]}],null]],[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/css/32e93a3d13512de5.css","precedence":"next","crossOrigin":""}]],"$L6"]]]] +0:["p1zjZBLDqxGf-NaFvZkeF",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},["$L1",["$","$L2",null,{"propsForComponent":{"params":{}},"Component":"$3","isStaticGeneration":true}],null]]},[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_c23dc8","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"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":[],"styles":null}]}]}],null]],[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/css/32e93a3d13512de5.css","precedence":"next","crossOrigin":""}]],"$L6"]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"🚅 LiteLLM"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/ui/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","meta","5",{"name":"next-size-adjust"}]] 1:null diff --git a/ui/litellm-dashboard/out/404.html b/ui/litellm-dashboard/out/404.html index 1f1e14ae0..064bb2163 100644 --- a/ui/litellm-dashboard/out/404.html +++ b/ui/litellm-dashboard/out/404.html @@ -1 +1 @@ -404: This page could not be found.🚅 LiteLLM

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.🚅 LiteLLM

404

This page could not be found.

\ No newline at end of file diff --git a/ui/litellm-dashboard/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js b/ui/litellm-dashboard/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js deleted file mode 100644 index efda0f860..000000000 --- a/ui/litellm-dashboard/out/_next/static/chunks/app/page-1b778934c9b8fd3d.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{20661:function(e,t,s){Promise.resolve().then(s.bind(s,56239))},56239:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return eF}});var l=s(3827),n=s(64090),r=s(47907),a=s(8792),o=s(2179),i=e=>{let{userID:t,userRole:s,userEmail:n,showSSOBanner:r}=e;return console.log("User ID:",t),console.log("userEmail:",n),(0,l.jsxs)("nav",{className:"left-0 right-0 top-0 flex justify-between items-center h-12 mb-4",children:[(0,l.jsx)("div",{className:"text-left my-2 absolute top-0 left-0",children:(0,l.jsx)("div",{className:"flex flex-col items-center",children:(0,l.jsx)(a.default,{href:"/",children:(0,l.jsx)("button",{className:"text-gray-800 text-2xl py-1 rounded text-center",children:(0,l.jsx)("img",{src:"/get_image",width:200,height:200,alt:"LiteLLM Brand",className:"mr-2"})})})})}),(0,l.jsxs)("div",{className:"text-right mx-4 my-2 absolute top-0 right-0 flex items-center justify-end space-x-2",children:[r?(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#setup-ssoauth-for-ui",target:"_blank",className:"mr-2",children:(0,l.jsx)(o.Z,{variant:"primary",size:"lg",children:"Enable SSO"})}):null,(0,l.jsxs)(o.Z,{variant:"secondary",size:"lg",children:[n,(0,l.jsxs)("p",{children:["Role: ",s]}),(0,l.jsxs)("p",{children:["ID: ",t]})]})]})]})},c=s(80588);let d=async(e,t,s)=>{try{if(console.log("Form Values in keyCreateCall:",s),s.description&&(s.metadata||(s.metadata={}),s.metadata.description=s.description,delete s.description,s.metadata=JSON.stringify(s.metadata)),s.metadata){console.log("formValues.metadata:",s.metadata);try{s.metadata=JSON.parse(s.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",s);let l=await fetch("/key/generate",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},h=async(e,t,s)=>{try{if(console.log("Form Values in keyCreateCall:",s),s.description&&(s.metadata||(s.metadata={}),s.metadata.description=s.description,delete s.description,s.metadata=JSON.stringify(s.metadata)),s.metadata){console.log("formValues.metadata:",s.metadata);try{s.metadata=JSON.parse(s.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",s);let l=await fetch("/user/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},m=async(e,t)=>{try{console.log("in keyDeleteCall:",t),c.ZP.info("Making key delete request");let s=await fetch("/key/delete",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[t]})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await s.json();return console.log(l),c.ZP.success("API Key Deleted"),l}catch(e){throw console.error("Failed to create key:",e),e}},u=async function(e,t,s){let l=arguments.length>3&&void 0!==arguments[3]&&arguments[3];try{let n="/user/info";"App Owner"==s&&t&&(n="".concat(n,"/?user_id=").concat(t)),console.log("in userInfoCall viewAll=",l),l&&(n="".concat(n,"/?view_all=true")),c.ZP.info("Requesting user data");let r=await fetch(n,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw c.ZP.error(e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),c.ZP.info("Received user data"),a}catch(e){throw console.error("Failed to create key:",e),e}},x=async(e,t,s)=>{try{c.ZP.info("Requesting model data");let t=await fetch("/v2/model/info",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return c.ZP.info("Received model data"),s}catch(e){throw console.error("Failed to create key:",e),e}},p=async(e,t,s)=>{try{c.ZP.info("Requesting model data");let t=await fetch("/models",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return c.ZP.info("Received model data"),s}catch(e){throw console.error("Failed to create key:",e),e}},j=async(e,t)=>{try{let s="/global/spend/logs";console.log("in keySpendLogsCall:",s);let l=await fetch("".concat(s,"/?api_key=").concat(t),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to create key:",e),e}},g=async(e,t,s,l,n,r)=>{try{console.log("user role in spend logs call: ".concat(s));let t="/spend/logs";t="App Owner"==s?"".concat(t,"/?user_id=").concat(l,"&start_date=").concat(n,"&end_date=").concat(r):"".concat(t,"/?start_date=").concat(n,"&end_date=").concat(r),c.ZP.info("Making spend logs request");let a=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw c.ZP.error(e),Error("Network response was not ok")}let o=await a.json();return console.log(o),c.ZP.success("Spend Logs received"),o}catch(e){throw console.error("Failed to create key:",e),e}},Z=async e=>{try{c.ZP.info("Making spend logs request");let t=await fetch("/global/spend/logs",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Spend Logs received"),s}catch(e){throw console.error("Failed to create key:",e),e}},y=async e=>{try{c.ZP.info("Making spend keys request");let t=await fetch("/global/spend/keys?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Spend Logs received"),s}catch(e){throw console.error("Failed to create key:",e),e}},f=async(e,t)=>{try{t&&JSON.stringify({api_key:t}),c.ZP.info("Making top end users request");let s={method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}};t&&(s.body=JSON.stringify({api_key:t}));let l=await fetch("/global/spend/end_users",s);if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Top End users received"),n}catch(e){throw console.error("Failed to create key:",e),e}},w=async e=>{try{c.ZP.info("Making top models request");let t=await fetch("/global/spend/models?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Top Models received"),s}catch(e){throw console.error("Failed to create key:",e),e}},k=async(e,t)=>{try{let s=await fetch("/v2/key/info",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:t})});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await s.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},_=async(e,t)=>{try{let s="/spend/users";console.log("in spendUsersCall:",s);let l=await fetch("".concat(s,"/?user_id=").concat(t),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to get spend for user",e),e}},b=async(e,t,s,l)=>{try{let n=await fetch("/user/request_model",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({models:[t],user_id:s,justification:l})});if(!n.ok){let e=await n.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let r=await n.json();return console.log(r),c.ZP.success(""),r}catch(e){throw console.error("Failed to create key:",e),e}},v=async e=>{try{let t="/user/get_requests";console.log("in userGetRequesedtModelsCall:",t);let s=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await s.json();return console.log(l),c.ZP.success(""),l}catch(e){throw console.error("Failed to get requested models:",e),e}},S=async(e,t)=>{try{let s="/user/get_users?role=".concat(t);console.log("in userGetAllUsersCall:",s);let l=await fetch(s,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Got all users"),n}catch(e){throw console.error("Failed to get requested models:",e),e}},N=async(e,t)=>{try{console.log("Form Values in teamCreateCall:",t);let s=await fetch("/team/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await s.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,t,s)=>{try{console.log("Form Values in teamMemberAddCall:",s);let l=await fetch("/team/member_add",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,member:s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},C=async(e,t)=>{try{console.log("Form Values in userUpdateUserCall:",t);let s=await fetch("/user/update",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_role:"proxy_admin_viewer",...t})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await s.json();return console.log("API Response:",l),c.ZP.success("User role updated"),l}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,t)=>{try{let s=await fetch("/global/predict/spend/logs",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({data:t})});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await s.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},P=async e=>{try{console.log("Checking Slack Budget Alerts service health"),c.ZP.info("Sending Test Slack alert...");let t=await fetch("health/services?service=slack_budget_alerts",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error("Failed Slack Alert test: "+e),Error(e)}let s=await t.json();return c.ZP.success("Test Slack Alert worked - check your Slack!"),console.log("Service Health Response:",s),s}catch(e){throw console.error("Failed to perform health check:",e),e}};var T=s(10384),E=s(46453),F=s(13810),M=s(71801),R=s(42440),O=s(17189),D=s(12143),U=s(77171),L=s(42539),z=s(88707),B=s(1861);let{Option:q}=O.default;var K=e=>{let{userID:t,teamID:s,userRole:r,accessToken:a,data:i,userModels:h,setData:m}=e,[u]=D.Z.useForm(),[x,p]=(0,n.useState)(!1),[j,g]=(0,n.useState)(null),[Z,y]=(0,n.useState)(null),f=()=>{p(!1),u.resetFields()},w=()=>{p(!1),g(null),u.resetFields()},k=async e=>{try{c.ZP.info("Making API Call"),p(!0);let s=await d(a,t,e);console.log("key create Response:",s),m(e=>e?[...e,s]:[s]),g(s.key),y(s.soft_budget),c.ZP.success("API Key Created"),u.resetFields(),localStorage.removeItem("userData"+t)}catch(e){console.error("Error creating the key:",e)}},_=async()=>{try{console.log("Sending Slack alert...");let e=await P(a);console.log("slackBudgetAlertsHealthCheck Response:",e),console.log("Testing Slack alert successful")}catch(e){console.error("Error sending Slack alert:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>p(!0),children:"+ Create New Key"}),(0,l.jsx)(U.Z,{title:"Create Key",visible:x,width:800,footer:null,onOk:f,onCancel:w,children:(0,l.jsxs)(D.Z,{form:u,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:["App Owner"===r||"Admin"===r?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team",defaultValue:s||""})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:h.map(e=>(0,l.jsx)(q,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Soft Budget (USD) Monthly",name:"soft_budget",initialValue:50,children:(0,l.jsx)(z.Z,{step:.01,precision:2,defaultValue:50,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,l.jsxs)(O.default,{defaultValue:null,placeholder:"n/a",children:[(0,l.jsx)(O.default.Option,{value:"24h",children:"daily"}),(0,l.jsx)(O.default.Option,{value:"30d",children:"monthly"})]})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Expire Key (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Team ID (Contact Group)",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team"})}),(0,l.jsx)(D.Z.Item,{label:"Description",name:"description",children:(0,l.jsx)(L.Z.TextArea,{placeholder:"Enter description",rows:4})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create Key"})})]})}),j&&(0,l.jsx)(U.Z,{visible:x,onOk:f,onCancel:w,footer:null,children:(0,l.jsx)(E.Z,{numItems:1,className:"gap-2 w-full",children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Save your Key"}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)("p",{children:["Please save this secret key somewhere safe and accessible. For security reasons, ",(0,l.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,l.jsx)(T.Z,{numColSpan:1,children:null!=j?(0,l.jsxs)("div",{children:[(0,l.jsxs)(M.Z,{children:["API Key: ",j]}),(0,l.jsx)(R.Z,{className:"mt-6",children:"Budgets"}),(0,l.jsxs)(M.Z,{children:["Soft Limit Budget: $",Z]}),(0,l.jsx)(o.Z,{className:"mt-3",onClick:_,children:"Test Slack Alert"}),(0,l.jsxs)(M.Z,{className:"mt-2",children:["(LiteLLM Docs -",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/alerting",target:"_blank",className:"text-blue-500",children:"Set Up Slack Alerting)"})]})]}):(0,l.jsx)(M.Z,{children:"Key being created, this might take 30s"})})]})})})]})},V=s(33393),J=s(61244),G=s(10827),$=s(3851),H=s(2044),W=s(64167),Y=s(74480),X=s(7178),Q=s(9853),ee=s(56863),et=e=>{let{token:t,accessToken:s,keySpend:r,keyBudget:a,keyName:i}=e,[c,d]=(0,n.useState)(!1),[h,m]=(0,n.useState)(null),[u,x]=(0,n.useState)(""),[p,g]=(0,n.useState)(null),Z=async()=>{try{if(null==s||null==t)return;console.log("accessToken: ".concat(s,"; token: ").concat(t));let e=await j(s,t);console.log("Response:",e),m(e);let l=await I(s,e);console.log("Response2:",l);let n=[...e,...l.response];m(n),x(l.predicted_spend),console.log("Combined Data:",n)}catch(e){console.error("There was an error fetching the data",e)}};return t?(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>{console.log("Show Modal triggered"),d(!0),Z()},variant:"secondary",children:"View Spend Report"}),(0,l.jsxs)(U.Z,{visible:c,width:1400,onOk:()=>{d(!1)},onCancel:()=>{d(!1)},footer:null,children:[(0,l.jsxs)(R.Z,{style:{textAlign:"left"},children:["Key Name: ",i]}),(0,l.jsxs)(ee.Z,{children:["Monthly Spend $",r]}),(0,l.jsx)(R.Z,{children:u}),(0,l.jsx)(F.Z,{className:"mt-6 mb-6",children:h&&(0,l.jsx)(Q.Z,{className:"mt-6",data:h,colors:["blue","amber"],index:"date",categories:["spend","predicted_spend"],yAxisWidth:80})})]})]}):null},es=e=>{let{userID:t,accessToken:s,data:r,setData:a}=e,[i,c]=(0,n.useState)(!1),[d,h]=(0,n.useState)(!1),[u,x]=(0,n.useState)(null),p=async e=>{null!=r&&(x(e),localStorage.removeItem("userData"+t),h(!0))},j=async()=>{if(null!=u&&null!=r){try{await m(s,u);let e=r.filter(e=>e.token!==u);a(e)}catch(e){console.error("Error deleting the key:",e)}h(!1),x(null)}};if(null!=r)return console.log("RERENDER TRIGGERED"),(0,l.jsxs)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:[(0,l.jsxs)(G.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Key Alias"}),(0,l.jsx)(Y.Z,{children:"Secret Key"}),(0,l.jsx)(Y.Z,{children:"Spend (USD)"}),(0,l.jsx)(Y.Z,{children:"Key Budget (USD)"}),(0,l.jsx)(Y.Z,{children:"Spend Report"}),(0,l.jsx)(Y.Z,{children:"Team ID"}),(0,l.jsx)(Y.Z,{children:"Metadata"}),(0,l.jsx)(Y.Z,{children:"Models"}),(0,l.jsx)(Y.Z,{children:"TPM / RPM Limits"}),(0,l.jsx)(Y.Z,{children:"Expires"})]})}),(0,l.jsx)($.Z,{children:r.map(e=>(console.log(e),"litellm-dashboard"===e.team_id)?null:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:null!=e.key_alias?(0,l.jsx)(M.Z,{children:e.key_alias}):(0,l.jsx)(M.Z,{children:"Not Set"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.key_name})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.spend})}),(0,l.jsx)(H.Z,{children:null!=e.max_budget?(0,l.jsx)(M.Z,{children:e.max_budget}):(0,l.jsx)(M.Z,{children:"Unlimited Budget"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(et,{token:e.token,accessToken:s,keySpend:e.spend,keyBudget:e.max_budget,keyName:e.key_name})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.team_id})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:JSON.stringify(e.metadata)})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:JSON.stringify(e.models)})}),(0,l.jsx)(H.Z,{children:(0,l.jsxs)(M.Z,{children:["TPM Limit: ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(H.Z,{children:null!=e.expires?(0,l.jsx)(M.Z,{children:e.expires}):(0,l.jsx)(M.Z,{children:"Never expires"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{onClick:()=>p(e.token),icon:V.Z,size:"sm"})})]},e.token))})]}),d&&(0,l.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,l.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,l.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,l.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,l.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,l.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,l.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,l.jsx)("div",{className:"sm:flex sm:items-start",children:(0,l.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,l.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Key"}),(0,l.jsx)("div",{className:"mt-2",children:(0,l.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this key ?"})})]})})}),(0,l.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,l.jsx)(o.Z,{onClick:j,color:"red",className:"ml-2",children:"Delete"}),(0,l.jsx)(o.Z,{onClick:()=>{h(!1),x(null)},children:"Cancel"})]})]})]})})]})},el=e=>{let{userID:t,userSpendData:s,userRole:r,accessToken:a}=e;console.log("User SpendData:",s);let[o,i]=(0,n.useState)(null==s?void 0:s.spend),[c,d]=(0,n.useState)((null==s?void 0:s.max_budget)||null);return(0,n.useEffect)(()=>{(async()=>{if("Admin"===r)try{let e=await _(a,"litellm-proxy-budget");console.log("Result from callSpendUsers:",e);let t=e[0];i(null==t?void 0:t.spend),d((null==t?void 0:t.max_budget)||null)}catch(e){console.error("Failed to get spend for user",e)}})()},[r,a,t]),(0,l.jsx)(l.Fragment,{children:(0,l.jsxs)(F.Z,{className:"mx-auto mb-4",children:[(0,l.jsxs)(ee.Z,{children:["$",o]}),(0,l.jsxs)(R.Z,{children:["/ ",null!==c?"$".concat(c," limit"):"No limit"]})]})})},en=s(36083),er=s(68967),ea=s(27166),eo=e=>{let{teams:t,setSelectedTeam:s}=e,{Title:r,Paragraph:a}=en.default,[o,i]=(0,n.useState)("");return(0,l.jsxs)("div",{className:"mt-10",children:[(0,l.jsx)(r,{level:4,children:"Default Team"}),(0,l.jsx)(a,{children:"If you belong to multiple teams, this setting controls which team is used by default when creating new API Keys."}),t&&t.length>0?(0,l.jsx)(er.Z,{defaultValue:"0",children:t.map((e,t)=>(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>s(e),children:e.team_alias},t))}):(0,l.jsxs)(a,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]})},ei=s(37963);console.log("isLocal:",!1);var ec=e=>{let{userID:t,userRole:s,teams:a,keys:o,setUserRole:i,userEmail:c,setUserEmail:d,setTeams:h,setKeys:m}=e,[x,j]=(0,n.useState)(null),g=(0,r.useSearchParams)();g.get("viewSpend"),(0,r.useRouter)();let Z=g.get("token"),[y,f]=(0,n.useState)(null),[w,k]=(0,n.useState)([]),[_,b]=(0,n.useState)(a?a[0]:null);if(window.addEventListener("beforeunload",function(){sessionStorage.clear()}),(0,n.useEffect)(()=>{if(Z){let e=(0,ei.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),f(e.key),e.user_role){let t=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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",t),i(t)}else console.log("User role not defined");e.user_email?d(e.user_email):console.log("User Email is not set ".concat(e))}}if(t&&y&&s&&!o&&!x){let e=sessionStorage.getItem("userModels"+t);e?k(JSON.parse(e)):(async()=>{try{let e=await u(y,t,s);console.log("received teams in user dashboard: ".concat(Object.keys(e),"; team values: ").concat(Object.entries(e.teams))),j(e.user_info),m(e.keys),h(e.teams),b(e.teams?e.teams[0]:null),sessionStorage.setItem("userData"+t,JSON.stringify(e.keys)),sessionStorage.setItem("userSpendData"+t,JSON.stringify(e.user_info));let l=(await p(y,t,s)).data.map(e=>e.id);console.log("available_model_names:",l),k(l),console.log("userModels:",w),sessionStorage.setItem("userModels"+t,JSON.stringify(l))}catch(e){console.error("There was an error fetching the data",e)}})()}},[t,Z,y,o,s]),null==t||null==Z){let e="/sso/key/generate";return console.log("Full URL:",e),window.location.href=e,null}if(null==y)return null;if(null==s&&i("App Owner"),s&&"Admin Viewer"==s){let{Title:e,Paragraph:t}=en.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(t,{children:"Ask your proxy admin for access to create keys"})]})}return(0,l.jsx)("div",{children:(0,l.jsx)(E.Z,{numItems:1,className:"gap-0 p-10 h-[75vh] w-full",children:(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(el,{userID:t,userSpendData:x,userRole:s,accessToken:y}),(0,l.jsx)(es,{userID:t,accessToken:y,data:o,setData:m}),(0,l.jsx)(K,{userID:t,teamID:_?_.team_id:null,userRole:s,userModels:w,accessToken:y,data:o,setData:m}),(0,l.jsx)(eo,{teams:a,setSelectedTeam:b})]})})})},ed=s(5);let{Option:eh}=O.default;var em=e=>{let{userModels:t,accessToken:s,userID:r}=e,[a]=D.Z.useForm(),[i,d]=(0,n.useState)(!1),h=async e=>{try{c.ZP.info("Requesting access");let{selectedModel:t,accessReason:l}=e;await b(s,t,r,l),d(!0)}catch(e){console.error("Error requesting access:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>d(!0),children:"Request Access"}),(0,l.jsx)(U.Z,{title:"Request Access",visible:i,width:800,footer:null,onOk:()=>{d(!1),a.resetFields()},onCancel:()=>{d(!1),a.resetFields()},children:(0,l.jsxs)(D.Z,{form:a,onFinish:h,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(D.Z.Item,{label:"Select Model",name:"selectedModel",children:(0,l.jsx)(O.default,{placeholder:"Select model",style:{width:"100%"},children:t.map(e=>(0,l.jsx)(eh,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Reason for Access",name:"accessReason",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter reason for access"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(o.Z,{children:"Request Access"})})]})})]})},eu=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,[i,c]=(0,n.useState)({data:[]}),[d,h]=(0,n.useState)([]);if((0,n.useEffect)(()=>{if(!t||!s||!r||!a)return;let e=async()=>{try{let e=await x(t,a,r);if(console.log("Model data response:",e.data),c(e),"Admin"===r&&t){let e=await v(t);console.log("Pending Requests:",d),h(e.requests||[])}}catch(e){console.error("There was an error fetching the model data",e)}};t&&s&&r&&a&&e()},[t,s,r,a]),!i||!t||!s||!r||!a)return(0,l.jsx)("div",{children:"Loading..."});let m=[];for(let e=0;e(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:e.model_name})}),(0,l.jsx)(H.Z,{children:e.provider}),(0,l.jsx)(H.Z,{children:e.user_access?(0,l.jsx)(ed.Z,{color:"green",children:"Yes"}):(0,l.jsx)(em,{userModels:m,accessToken:t,userID:a})}),(0,l.jsx)(H.Z,{children:e.input_cost}),(0,l.jsx)(H.Z,{children:e.output_cost}),(0,l.jsx)(H.Z,{children:e.max_tokens})]},e.model_name))})]})}),"Admin"===r&&d&&d.length>0?(0,l.jsx)(F.Z,{children:(0,l.jsxs)(G.Z,{children:[(0,l.jsxs)(W.Z,{children:[(0,l.jsx)(R.Z,{children:"Pending Requests"}),(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"User ID"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Requested Models"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Justification"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Justification"})})]})]}),(0,l.jsx)($.Z,{children:d.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.models[0]})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.justification})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(o.Z,{children:"Approve"}),(0,l.jsx)(o.Z,{variant:"secondary",className:"ml-2",children:"Deny"})]},e.request_id))})]})}):null]})})},ex=s(92836),ep=s(26734),ej=s(41608),eg=s(32126),eZ=s(23682);let{Option:ey}=O.default;var ef=e=>{let{userID:t,accessToken:s}=e,[r]=D.Z.useForm(),[a,i]=(0,n.useState)(!1),[d,m]=(0,n.useState)(null),[u,x]=(0,n.useState)([]);(0,n.useEffect)(()=>{(async()=>{try{let e=await p(s,t,"any"),l=[];for(let t=0;t{i(!1),r.resetFields()},g=()=>{i(!1),m(null),r.resetFields()},Z=async e=>{try{c.ZP.info("Making API Call"),i(!0),console.log("formValues in create user:",e);let l=await h(s,t,e);console.log("user create Response:",l),m(l.key),c.ZP.success("API user Created"),r.resetFields(),localStorage.removeItem("userData"+t)}catch(e){console.error("Error creating the user:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>i(!0),children:"+ Create New User"}),(0,l.jsx)(U.Z,{title:"Create User",visible:a,width:800,footer:null,onOk:j,onCancel:g,children:(0,l.jsxs)(D.Z,{form:r,onFinish:Z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",children:(0,l.jsx)(L.Z,{placeholder:"Enter User ID"})}),(0,l.jsx)(D.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team"})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:u.map(e=>(0,l.jsx)(ey,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Duration (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create User"})})]})}),d&&(0,l.jsxs)(U.Z,{title:"Save Your User",visible:a,onOk:j,onCancel:g,footer:null,children:[(0,l.jsxs)("p",{children:["Please save this secret user somewhere safe and accessible. For security reasons, ",(0,l.jsx)("b",{children:"you will not be able to view it again"})," ","through your LiteLLM account. If you lose this secret user, you will need to generate a new one."]}),(0,l.jsx)("p",{children:null!=d?"API user: ".concat(d):"User being created, this might take 30s"})]})]})},ew=e=>{let{accessToken:t,token:s,keys:r,userRole:a,userID:o,setKeys:i}=e,[c,d]=(0,n.useState)(null),[h,m]=(0,n.useState)(null),[x,p]=(0,n.useState)(1);if((0,n.useEffect)(()=>{if(!t||!s||!a||!o)return;let e=async()=>{try{let e=await u(t,null,a,!0);console.log("user data response:",e),d(e)}catch(e){console.error("There was an error fetching the model data",e)}};t&&s&&a&&o&&!c&&e();let l=async()=>{try{let e=await f(t,null);console.log("user data response:",e),m(e)}catch(e){console.error("There was an error fetching the model data",e)}};a&&("Admin"==a||"Admin Viewer"==a)&&!h&&l()},[t,s,a,o]),!c||!t||!s||!a||!o)return(0,l.jsx)("div",{children:"Loading..."});let j=async e=>{try{let s=await f(t,e);console.log("user data response:",s),m(s)}catch(e){console.error("There was an error fetching the model data",e)}};return(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(E.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(ef,{userID:o,accessToken:t}),(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{variant:"line",defaultValue:"1",children:[(0,l.jsx)(ex.Z,{value:"1",children:"Key Owners"}),(0,l.jsx)(ex.Z,{value:"2",children:"End-Users"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsx)(eg.Z,{children:(0,l.jsxs)(G.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"User ID"}),(0,l.jsx)(Y.Z,{children:"User Role"}),(0,l.jsx)(Y.Z,{children:"User Models"}),(0,l.jsx)(Y.Z,{children:"User Spend ($ USD)"}),(0,l.jsx)(Y.Z,{children:"User Max Budget ($ USD)"})]})}),(0,l.jsx)($.Z,{children:c.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_id}),(0,l.jsx)(H.Z,{children:e.user_role?e.user_role:"app_owner"}),(0,l.jsx)(H.Z,{children:e.models&&e.models.length>0?e.models:"All Models"}),(0,l.jsx)(H.Z,{children:e.spend?e.spend:0}),(0,l.jsx)(H.Z,{children:e.max_budget?e.max_budget:"Unlimited"})]},e.user_id))})]})}),(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)("div",{className:"flex-1 flex justify-between items-center",children:[(0,l.jsx)(M.Z,{className:"w-1/4 mr-2 text-right",children:"Key"}),(0,l.jsx)(er.Z,{defaultValue:"1",className:"w-3/4",children:null==r?void 0:r.map((e,t)=>{if(e&&null!==e.key_name&&e.key_name.length>0)return(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>j(e.token),children:e.key_name},t)})})]})]}),(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"End User"}),(0,l.jsx)(Y.Z,{children:"Spend"}),(0,l.jsx)(Y.Z,{children:"Total Events"})]})}),(0,l.jsx)($.Z,{children:null==h?void 0:h.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.end_user}),(0,l.jsx)(H.Z,{children:e.total_spend}),(0,l.jsx)(H.Z,{children:e.total_events})]},t))})]})]})]})]})}),function(){if(!c)return null;let e=Math.ceil(c.length/25),t=Math.min(25*x,c.length);return(0,l.jsxs)("div",{className:"flex justify-between items-center",children:[(0,l.jsxs)("div",{children:["Showing ",(x-1)*25+1," – ",t," of ",c.length]}),(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-l focus:outline-none",disabled:1===x,onClick:()=>p(x-1),children:"← Prev"}),(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-r focus:outline-none",disabled:x===e,onClick:()=>p(x+1),children:"Next →"})]})]})}()]})})},ek=s(8510),e_=e=>{let{teams:t,searchParams:s,accessToken:r,setTeams:a}=e,[i]=D.Z.useForm(),[d]=D.Z.useForm(),{Title:h,Paragraph:m}=en.default,[u,x]=(0,n.useState)(""),[p,j]=(0,n.useState)(t?t[0]:null),[g,Z]=(0,n.useState)(!1),[y,f]=(0,n.useState)(!1),w=async e=>{try{if(null!=r){c.ZP.info("Making API Call");let s=await N(r,e);null!==t?a([...t,s]):a([s]),console.log("response for team create call: ".concat(s)),Z(!1)}}catch(e){console.error("Error creating the key:",e)}},k=async e=>{try{if(null!=r&&null!=t){c.ZP.info("Making API Call");let s={role:"user",user_email:e.user_email,user_id:e.user_id},l=await A(r,p.team_id,s);console.log("response for team create call: ".concat(l.data));let n=t.findIndex(e=>(console.log("team.team_id=".concat(e.team_id,"; response.data.team_id=").concat(l.data.team_id)),e.team_id===l.data.team_id));if(console.log("foundIndex: ".concat(n)),-1!==n){let e=[...t];e[n]=l.data,a(e),j(l.data)}f(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("received teams ".concat(t)),(0,l.jsx)("div",{className:"w-full",children:(0,l.jsxs)(E.Z,{numItems:1,className:"gap-2 p-2 h-[75vh] w-full",children:[(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"All Teams"}),(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Team Name"}),(0,l.jsx)(Y.Z,{children:"Spend (USD)"}),(0,l.jsx)(Y.Z,{children:"Budget (USD)"}),(0,l.jsx)(Y.Z,{children:"TPM / RPM Limits"})]})}),(0,l.jsx)($.Z,{children:t&&t.length>0?t.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.team_alias}),(0,l.jsx)(H.Z,{children:e.spend}),(0,l.jsx)(H.Z,{children:e.max_budget?e.max_budget:"No limit"}),(0,l.jsx)(H.Z,{children:(0,l.jsxs)(M.Z,{children:["TPM Limit:"," ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},e.team_id)):null})]})})]}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>Z(!0),children:"+ Create New Team"}),(0,l.jsx)(U.Z,{title:"Create Team",visible:g,width:800,footer:null,onOk:()=>{Z(!1),i.resetFields()},onCancel:()=>{Z(!1),i.resetFields()},children:(0,l.jsxs)(D.Z,{form:i,onFinish:w,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Team Name",name:"team_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"}})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create Team"})})]})})]}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"Team Members"}),(0,l.jsx)(m,{children:"If you belong to multiple teams, this setting controls which teams members you see."}),t&&t.length>0?(0,l.jsx)(er.Z,{defaultValue:"0",children:t.map((e,t)=>(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>{j(e)},children:e.team_alias},t))}):(0,l.jsxs)(m,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Member Name"}),(0,l.jsx)(Y.Z,{children:"Role"}),(0,l.jsx)(Y.Z,{children:"Action"})]})}),(0,l.jsx)($.Z,{children:p?p.members_with_roles.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(H.Z,{children:e.role}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},t)):null})]})})}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>f(!0),children:"+ Add member"}),(0,l.jsx)(U.Z,{title:"Add member",visible:y,width:800,footer:null,onOk:()=>{f(!1),d.resetFields()},onCancel:()=>{f(!1),d.resetFields()},children:(0,l.jsxs)(D.Z,{form:i,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})})},eb=e=>{let{searchParams:t,accessToken:s}=e,[r]=D.Z.useForm(),[a]=D.Z.useForm(),{Title:i,Paragraph:d}=en.default,[h,m]=(0,n.useState)(""),[u,x]=(0,n.useState)(null),[p,j]=(0,n.useState)(!1);(0,n.useEffect)(()=>{(async()=>{if(null!=s){let e=[],t=await S(s,"proxy_admin_viewer");t.forEach(t=>{e.push({user_role:t.user_role,user_id:t.user_id,user_email:t.user_email})}),console.log("proxy viewers: ".concat(t));let l=await S(s,"proxy_admin");l.forEach(t=>{e.push({user_role:t.user_role,user_id:t.user_id,user_email:t.user_email})}),console.log("proxy admins: ".concat(l)),console.log("combinedList: ".concat(e)),x(e)}})()},[s]);let g=async e=>{try{if(null!=s&&null!=u){c.ZP.info("Making API Call"),e.user_email,e.user_id;let t=await C(s,e);console.log("response for team create call: ".concat(t));let l=u.findIndex(e=>(console.log("user.user_id=".concat(e.user_id,"; response.user_id=").concat(t.user_id)),e.user_id===t.user_id));console.log("foundIndex: ".concat(l)),-1==l&&(console.log("updates admin with new user"),u.push(t),x(u)),j(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("admins: ".concat(null==u?void 0:u.length)),(0,l.jsxs)("div",{className:"w-full m-2",children:[(0,l.jsx)(i,{level:4,children:"Restricted Access"}),(0,l.jsxs)(d,{children:["Add other people to just view spend. They cannot create keys, teams or grant users access to new models."," ",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#restrict-ui-access",children:"Requires SSO Setup"})]}),(0,l.jsxs)(E.Z,{numItems:1,className:"gap-2 p-0 w-full",children:[(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Member Name"}),(0,l.jsx)(Y.Z,{children:"Role"}),(0,l.jsx)(Y.Z,{children:"Action"})]})}),(0,l.jsx)($.Z,{children:u?u.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(H.Z,{children:e.user_role}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},t)):null})]})})}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>j(!0),children:"+ Add viewer"}),(0,l.jsx)(U.Z,{title:"Add viewer",visible:p,width:800,footer:null,onOk:()=>{j(!1),a.resetFields()},onCancel:()=>{j(!1),a.resetFields()},children:(0,l.jsxs)(D.Z,{form:r,onFinish:g,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})]})},ev=s(12968),eS=s(67951);async function eN(e,t,s,l){console.log("isLocal:",!1);let n=window.location.origin,r=new ev.ZP.OpenAI({apiKey:l,baseURL:n,dangerouslyAllowBrowser:!0});for await(let l of(await r.chat.completions.create({model:s,stream:!0,messages:[{role:"user",content:e}]})))console.log(l),l.choices[0].delta.content&&t(l.choices[0].delta.content)}var eA=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,[o,i]=(0,n.useState)(""),[c,d]=(0,n.useState)([]),[h,m]=(0,n.useState)(void 0),[u,x]=(0,n.useState)(null);(0,n.useEffect)(()=>{t&&s&&r&&a&&(async()=>{let e=await p(t,a,r);console.log("model_info:",e),(null==e?void 0:e.data.length)>0&&(x(e.data),m(e.data[0].id))})()},[t,a,r]);let j=(e,t)=>{d(s=>{let l=s[s.length-1];return l&&l.role===e?[...s.slice(0,s.length-1),{role:e,content:l.content+t}]:[...s,{role:e,content:t}]})},g=async()=>{if(""!==o.trim()&&t&&s&&r&&a){d(e=>[...e,{role:"user",content:o}]);try{h&&await eN(o,e=>j("assistant",e),h,t)}catch(e){console.error("Error fetching model response",e),j("assistant","Error fetching model response")}i("")}};if(r&&"Admin Viewer"==r){let{Title:e,Paragraph:t}=en.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(t,{children:"Ask your proxy admin for access to test models"})]})}return(0,l.jsx)("div",{style:{width:"100%",position:"relative"},children:(0,l.jsx)(E.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:(0,l.jsx)(F.Z,{children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{className:"mt-4",children:[(0,l.jsx)(ex.Z,{children:"Chat"}),(0,l.jsx)(ex.Z,{children:"API Reference"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{children:"Select Model:"}),(0,l.jsx)("select",{value:h||"",onChange:e=>m(e.target.value),children:null==u?void 0:u.map(e=>(0,l.jsx)("option",{value:e.id,children:e.id},e.id))})]}),(0,l.jsxs)(G.Z,{className:"mt-5",style:{display:"block",maxHeight:"60vh",overflowY:"auto"},children:[(0,l.jsx)(W.Z,{children:(0,l.jsx)(X.Z,{children:(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Chat"})})})}),(0,l.jsx)($.Z,{children:c.map((e,t)=>(0,l.jsx)(X.Z,{children:(0,l.jsx)(H.Z,{children:"".concat(e.role,": ").concat(e.content)})},t))})]}),(0,l.jsx)("div",{className:"mt-3",style:{position:"absolute",bottom:5,width:"95%"},children:(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("input",{type:"text",value:o,onChange:e=>i(e.target.value),className:"flex-1 p-2 border rounded-md mr-2",placeholder:"Type your message..."}),(0,l.jsx)("button",{onClick:g,className:"p-2 bg-blue-500 text-white rounded-md",children:"Send"})]})})]}),(0,l.jsx)(eg.Z,{children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{children:[(0,l.jsx)(ex.Z,{children:"OpenAI Python SDK"}),(0,l.jsx)(ex.Z,{children:"LlamaIndex"}),(0,l.jsx)(ex.Z,{children:"Langchain Py"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.Z,{language:"python",children:'\nimport openai\nclient = openai.OpenAI(\n api_key="your_api_key",\n base_url="http://0.0.0.0:4000" # proxy base url\n)\n\nresponse = client.chat.completions.create(\n model="gpt-3.5-turbo", # model to use from Models Tab\n messages = [\n {\n "role": "user",\n "content": "this is a test request, write a short poem"\n }\n ],\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-openai-client",\n "generation_id": "openai-client-gen-id22",\n "trace_id": "openai-client-trace-id22",\n "trace_user_id": "openai-client-user-id2"\n }\n }\n)\n\nprint(response)\n '})}),(0,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.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="http://0.0.0.0:4000", # 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="http://0.0.0.0:4000",\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,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.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="http://0.0.0.0:8000",\n model = "gpt-3.5-turbo",\n temperature=0.1,\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-langchain-client",\n "generation_id": "langchain-client-gen-id22",\n "trace_id": "langchain-client-trace-id22",\n "trace_user_id": "langchain-client-user-id2"\n }\n }\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 '})})]})]})})]})]})})})})},eC=s(33509),eI=s(30569);let{Sider:eP}=eC.default;var eT=e=>{let{setPage:t,userRole:s,defaultSelectedKey:n}=e;return"Admin Viewer"==s?(0,l.jsx)(eC.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eP,{width:120,children:(0,l.jsxs)(eI.Z,{mode:"inline",defaultSelectedKeys:n||["4"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eI.Z.Item,{onClick:()=>t("api-keys"),children:"API Keys"},"4"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("models"),children:"Models"},"2"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("usage"),children:"Usage"},"1")]})})}):(0,l.jsx)(eC.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eP,{width:120,children:(0,l.jsxs)(eI.Z,{mode:"inline",defaultSelectedKeys:n||["1"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eI.Z.Item,{onClick:()=>t("api-keys"),children:"API Keys"},"1"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("models"),children:"Models"},"2"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("usage"),children:"Usage"},"4"),"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("users"),children:"Users"},"5"):null,"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("teams"),children:"Teams"},"6"):null,"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("admin-panel"),children:"Admin"},"7"):null]})})})},eE=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,o=new Date,[i,c]=(0,n.useState)([]),[d,h]=(0,n.useState)([]),[m,u]=(0,n.useState)([]),[x,p]=(0,n.useState)([]),j=new Date(o.getFullYear(),o.getMonth(),1),f=new Date(o.getFullYear(),o.getMonth()+1,0),_=v(j),b=v(f);function v(e){let t=e.getFullYear(),s=e.getMonth()+1,l=e.getDate();return"".concat(t,"-").concat(s<10?"0"+s:s,"-").concat(l<10?"0"+l:l)}return console.log("Start date is ".concat(_)),console.log("End date is ".concat(b)),(0,n.useEffect)(()=>{t&&s&&r&&a&&(async()=>{try{if(console.log("user role: ".concat(r)),"Admin"==r||"Admin Viewer"==r){let e=await Z(t);c(e);let s=(await y(t)).map(e=>({key:(e.key_name||e.key_alias||e.api_key).substring(0,7),spend:e.total_spend}));h(s);let l=(await w(t)).map(e=>({key:e.model,spend:e.total_spend}));u(l)}else"App Owner"==r&&await g(t,s,r,a,_,b).then(async e=>{if(console.log("result from spend logs call",e),"daily_spend"in e){let t=e.daily_spend;console.log("daily spend",t),c(t);let s=e.top_api_keys;h(s)}else{let s=(await k(t,function(e){let t=[];e.forEach(e=>{Object.entries(e).forEach(e=>{let[s,l]=e;"spend"!==s&&"startTime"!==s&&"models"!==s&&"users"!==s&&t.push({key:s,spend:l})})}),t.sort((e,t)=>Number(t.spend)-Number(e.spend));let s=t.slice(0,5).map(e=>e.key);return console.log("topKeys: ".concat(Object.keys(s[0]))),s}(e))).info.map(e=>({key:(e.key_name||e.key_alias||e.token).substring(0,7),spend:e.spend}));h(s),p(function(e){let t={};e.forEach(e=>{Object.entries(e.users).forEach(e=>{let[s,l]=e;""!==s&&null!=s&&"None"!=s&&(t[s]||(t[s]=0),t[s]+=l)})});let s=Object.entries(t).map(e=>{let[t,s]=e;return{user_id:t,spend:s}});s.sort((e,t)=>t.spend-e.spend);let l=s.slice(0,5);return console.log("topKeys: ".concat(Object.values(l[0]))),l}(e)),c(e)}})}catch(e){console.error("There was an error fetching the data",e)}})()},[t,s,r,a,_,b]),(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(E.Z,{numItems:2,className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(T.Z,{numColSpan:2,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Monthly Spend"}),(0,l.jsx)(Q.Z,{data:i,index:"date",categories:["spend"],colors:["blue"],valueFormatter:e=>"$ ".concat(new Intl.NumberFormat("us").format(e).toString()),yAxisWidth:100,tickGap:5})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top API Keys"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:d,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:80,tickGap:5,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top Users"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:x,index:"user_id",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top Models"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:m,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})})]})})},eF=()=>{let{Title:e,Paragraph:t}=en.default,[s,a]=(0,n.useState)(""),[o,c]=(0,n.useState)(null),[d,h]=(0,n.useState)(null),[m,u]=(0,n.useState)(null),[x,p]=(0,n.useState)(!0),j=(0,r.useSearchParams)(),g=j.get("userID"),Z=j.get("token"),[y,f]=(0,n.useState)("api-keys"),[w,k]=(0,n.useState)(null);return(0,n.useEffect)(()=>{if(Z){let e=(0,ei.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),k(e.key),e.user_role){let t=function(e){if(!e)return"Undefined Role";switch(console.log("Received user role: ".concat(e.toLowerCase())),console.log("Received user role length: ".concat(e.toLowerCase().length)),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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",t),a(t),"Admin Viewer"==t&&f("usage")}else console.log("User role not defined");e.user_email?c(e.user_email):console.log("User Email is not set ".concat(e)),e.login_method?p("username_password"==e.login_method):console.log("User Email is not set ".concat(e))}}},[Z]),(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)("div",{children:"Loading..."}),children:(0,l.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,l.jsx)(i,{userID:g,userRole:s,userEmail:o,showSSOBanner:x}),(0,l.jsxs)("div",{className:"flex flex-1 overflow-auto",children:[(0,l.jsx)(eT,{setPage:f,userRole:s,defaultSelectedKey:null}),"api-keys"==y?(0,l.jsx)(ec,{userID:g,userRole:s,teams:d,keys:m,setUserRole:a,userEmail:o,setUserEmail:c,setTeams:h,setKeys:u}):"models"==y?(0,l.jsx)(eu,{userID:g,userRole:s,token:Z,accessToken:w}):"llm-playground"==y?(0,l.jsx)(eA,{userID:g,userRole:s,token:Z,accessToken:w}):"users"==y?(0,l.jsx)(ew,{userID:g,userRole:s,token:Z,keys:m,accessToken:w,setKeys:u}):"teams"==y?(0,l.jsx)(e_,{teams:d,setTeams:h,searchParams:j,accessToken:w}):"admin-panel"==y?(0,l.jsx)(eb,{setTeams:h,searchParams:j,accessToken:w}):(0,l.jsx)(eE,{userID:g,userRole:s,token:Z,accessToken:w})]})]})})}}},function(e){e.O(0,[730,971,69,744],function(){return e(e.s=20661)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/ui/litellm-dashboard/out/_next/static/chunks/app/page-37bd7c3d0bb898a3.js b/ui/litellm-dashboard/out/_next/static/chunks/app/page-37bd7c3d0bb898a3.js new file mode 100644 index 000000000..8d5377ae4 --- /dev/null +++ b/ui/litellm-dashboard/out/_next/static/chunks/app/page-37bd7c3d0bb898a3.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{20661:function(e,t,s){Promise.resolve().then(s.bind(s,56239))},56239:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return eF}});var l=s(3827),n=s(64090),r=s(47907),a=s(8792),o=s(2179),i=e=>{let{userID:t,userRole:s,userEmail:n,showSSOBanner:r}=e;return console.log("User ID:",t),console.log("userEmail:",n),(0,l.jsxs)("nav",{className:"left-0 right-0 top-0 flex justify-between items-center h-12 mb-4",children:[(0,l.jsx)("div",{className:"text-left my-2 absolute top-0 left-0",children:(0,l.jsx)("div",{className:"flex flex-col items-center",children:(0,l.jsx)(a.default,{href:"/",children:(0,l.jsx)("button",{className:"text-gray-800 text-2xl py-1 rounded text-center",children:(0,l.jsx)("img",{src:"/get_image",width:200,height:200,alt:"LiteLLM Brand",className:"mr-2"})})})})}),(0,l.jsxs)("div",{className:"text-right mx-4 my-2 absolute top-0 right-0 flex items-center justify-end space-x-2",children:[r?(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#setup-ssoauth-for-ui",target:"_blank",className:"mr-2",children:(0,l.jsx)(o.Z,{variant:"primary",size:"lg",children:"Enable SSO"})}):null,(0,l.jsxs)(o.Z,{variant:"secondary",size:"lg",children:[n,(0,l.jsxs)("p",{children:["Role: ",s]}),(0,l.jsxs)("p",{children:["ID: ",t]})]})]})]})},c=s(80588);let d=async(e,t,s)=>{try{if(console.log("Form Values in keyCreateCall:",s),s.description&&(s.metadata||(s.metadata={}),s.metadata.description=s.description,delete s.description,s.metadata=JSON.stringify(s.metadata)),s.metadata){console.log("formValues.metadata:",s.metadata);try{s.metadata=JSON.parse(s.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",s);let l=await fetch("/key/generate",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},h=async(e,t,s)=>{try{if(console.log("Form Values in keyCreateCall:",s),s.description&&(s.metadata||(s.metadata={}),s.metadata.description=s.description,delete s.description,s.metadata=JSON.stringify(s.metadata)),s.metadata){console.log("formValues.metadata:",s.metadata);try{s.metadata=JSON.parse(s.metadata)}catch(e){throw c.ZP.error("Failed to parse metadata: "+e),Error("Failed to parse metadata: "+e)}}console.log("Form Values after check:",s);let l=await fetch("/user/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_id:t,...s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},m=async(e,t)=>{try{console.log("in keyDeleteCall:",t),c.ZP.info("Making key delete request");let s=await fetch("/key/delete",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:[t]})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await s.json();return console.log(l),c.ZP.success("API Key Deleted"),l}catch(e){throw console.error("Failed to create key:",e),e}},u=async function(e,t,s){let l=arguments.length>3&&void 0!==arguments[3]&&arguments[3];try{let n="/user/info";"App Owner"==s&&t&&(n="".concat(n,"/?user_id=").concat(t)),console.log("in userInfoCall viewAll=",l),l&&(n="".concat(n,"/?view_all=true")),c.ZP.info("Requesting user data");let r=await fetch(n,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!r.ok){let e=await r.text();throw c.ZP.error(e),Error("Network response was not ok")}let a=await r.json();return console.log("API Response:",a),c.ZP.info("Received user data"),a}catch(e){throw console.error("Failed to create key:",e),e}},x=async(e,t,s)=>{try{c.ZP.info("Requesting model data");let t=await fetch("/v2/model/info",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return c.ZP.info("Received model data"),s}catch(e){throw console.error("Failed to create key:",e),e}},p=async(e,t,s)=>{try{c.ZP.info("Requesting model data");let t=await fetch("/models",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return c.ZP.info("Received model data"),s}catch(e){throw console.error("Failed to create key:",e),e}},j=async(e,t)=>{try{let s="/global/spend/logs";console.log("in keySpendLogsCall:",s);let l=await fetch("".concat(s,"/?api_key=").concat(t),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to create key:",e),e}},g=async(e,t,s,l,n,r)=>{try{console.log("user role in spend logs call: ".concat(s));let t="/spend/logs";t="App Owner"==s?"".concat(t,"/?user_id=").concat(l,"&start_date=").concat(n,"&end_date=").concat(r):"".concat(t,"/?start_date=").concat(n,"&end_date=").concat(r),c.ZP.info("Making spend logs request");let a=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!a.ok){let e=await a.text();throw c.ZP.error(e),Error("Network response was not ok")}let o=await a.json();return console.log(o),c.ZP.success("Spend Logs received"),o}catch(e){throw console.error("Failed to create key:",e),e}},Z=async e=>{try{c.ZP.info("Making spend logs request");let t=await fetch("/global/spend/logs",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Spend Logs received"),s}catch(e){throw console.error("Failed to create key:",e),e}},y=async e=>{try{c.ZP.info("Making spend keys request");let t=await fetch("/global/spend/keys?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Spend Logs received"),s}catch(e){throw console.error("Failed to create key:",e),e}},f=async(e,t)=>{try{t&&JSON.stringify({api_key:t}),c.ZP.info("Making top end users request");let s={method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}};t&&(s.body=JSON.stringify({api_key:t}));let l=await fetch("/global/spend/end_users",s);if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Top End users received"),n}catch(e){throw console.error("Failed to create key:",e),e}},w=async e=>{try{c.ZP.info("Making top models request");let t=await fetch("/global/spend/models?limit=5",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error(e),Error("Network response was not ok")}let s=await t.json();return console.log(s),c.ZP.success("Top Models received"),s}catch(e){throw console.error("Failed to create key:",e),e}},k=async(e,t)=>{try{let s=await fetch("/v2/key/info",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({keys:t})});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await s.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},_=async(e,t)=>{try{let s="/spend/users";console.log("in spendUsersCall:",s);let l=await fetch("".concat(s,"/?user_id=").concat(t),{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error(e),Error("Network response was not ok")}let n=await l.json();return console.log(n),n}catch(e){throw console.error("Failed to get spend for user",e),e}},b=async(e,t,s,l)=>{try{let n=await fetch("/user/request_model",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({models:[t],user_id:s,justification:l})});if(!n.ok){let e=await n.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let r=await n.json();return console.log(r),c.ZP.success(""),r}catch(e){throw console.error("Failed to create key:",e),e}},v=async e=>{try{let t="/user/get_requests";console.log("in userGetRequesedtModelsCall:",t);let s=await fetch(t,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let l=await s.json();return console.log(l),c.ZP.success(""),l}catch(e){throw console.error("Failed to get requested models:",e),e}},S=async(e,t)=>{try{let s="/user/get_users?role=".concat(t);console.log("in userGetAllUsersCall:",s);let l=await fetch(s,{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to delete key: "+e),Error("Network response was not ok")}let n=await l.json();return console.log(n),c.ZP.success("Got all users"),n}catch(e){throw console.error("Failed to get requested models:",e),e}},N=async(e,t)=>{try{console.log("Form Values in teamCreateCall:",t);let s=await fetch("/team/new",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({...t})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await s.json();return console.log("API Response:",l),l}catch(e){throw console.error("Failed to create key:",e),e}},A=async(e,t,s)=>{try{console.log("Form Values in teamMemberAddCall:",s);let l=await fetch("/team/member_add",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({team_id:t,member:s})});if(!l.ok){let e=await l.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let n=await l.json();return console.log("API Response:",n),n}catch(e){throw console.error("Failed to create key:",e),e}},C=async(e,t)=>{try{console.log("Form Values in userUpdateUserCall:",t);let s=await fetch("/user/update",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({user_role:"proxy_admin_viewer",...t})});if(!s.ok){let e=await s.text();throw c.ZP.error("Failed to create key: "+e),console.error("Error response from the server:",e),Error("Network response was not ok")}let l=await s.json();return console.log("API Response:",l),c.ZP.success("User role updated"),l}catch(e){throw console.error("Failed to create key:",e),e}},I=async(e,t)=>{try{let s=await fetch("/global/predict/spend/logs",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({data:t})});if(!s.ok){let e=await s.text();throw c.ZP.error(e),Error("Network response was not ok")}let l=await s.json();return console.log(l),l}catch(e){throw console.error("Failed to create key:",e),e}},P=async e=>{try{console.log("Checking Slack Budget Alerts service health"),c.ZP.info("Sending Test Slack alert...");let t=await fetch("/health/services?service=slack_budget_alerts",{method:"GET",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"}});if(!t.ok){let e=await t.text();throw c.ZP.error("Failed Slack Alert test: "+e),Error(e)}let s=await t.json();return c.ZP.success("Test Slack Alert worked - check your Slack!"),console.log("Service Health Response:",s),s}catch(e){throw console.error("Failed to perform health check:",e),e}};var T=s(10384),E=s(46453),F=s(13810),M=s(71801),R=s(42440),O=s(17189),D=s(12143),U=s(77171),L=s(42539),z=s(88707),B=s(1861);let{Option:q}=O.default;var K=e=>{let{userID:t,teamID:s,userRole:r,accessToken:a,data:i,userModels:h,setData:m}=e,[u]=D.Z.useForm(),[x,p]=(0,n.useState)(!1),[j,g]=(0,n.useState)(null),[Z,y]=(0,n.useState)(null),f=()=>{p(!1),u.resetFields()},w=()=>{p(!1),g(null),u.resetFields()},k=async e=>{try{c.ZP.info("Making API Call"),p(!0);let s=await d(a,t,e);console.log("key create Response:",s),m(e=>e?[...e,s]:[s]),g(s.key),y(s.soft_budget),c.ZP.success("API Key Created"),u.resetFields(),localStorage.removeItem("userData"+t)}catch(e){console.error("Error creating the key:",e)}},_=async()=>{try{console.log("Sending Slack alert...");let e=await P(a);console.log("slackBudgetAlertsHealthCheck Response:",e),console.log("Testing Slack alert successful")}catch(e){console.error("Error sending Slack alert:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>p(!0),children:"+ Create New Key"}),(0,l.jsx)(U.Z,{title:"Create Key",visible:x,width:800,footer:null,onOk:f,onCancel:w,children:(0,l.jsxs)(D.Z,{form:u,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:["App Owner"===r||"Admin"===r?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team",defaultValue:s||""})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:h.map(e=>(0,l.jsx)(q,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Soft Budget (USD) Monthly",name:"soft_budget",initialValue:50,children:(0,l.jsx)(z.Z,{step:.01,precision:2,defaultValue:50,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Reset Budget",name:"budget_duration",children:(0,l.jsxs)(O.default,{defaultValue:null,placeholder:"n/a",children:[(0,l.jsx)(O.default.Option,{value:"24h",children:"daily"}),(0,l.jsx)(O.default.Option,{value:"30d",children:"monthly"})]})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Expire Key (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Key Name",name:"key_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Team ID (Contact Group)",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team"})}),(0,l.jsx)(D.Z.Item,{label:"Description",name:"description",children:(0,l.jsx)(L.Z.TextArea,{placeholder:"Enter description",rows:4})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create Key"})})]})}),j&&(0,l.jsx)(U.Z,{visible:x,onOk:f,onCancel:w,footer:null,children:(0,l.jsx)(E.Z,{numItems:1,className:"gap-2 w-full",children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Save your Key"}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)("p",{children:["Please save this secret key somewhere safe and accessible. For security reasons, ",(0,l.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,l.jsx)(T.Z,{numColSpan:1,children:null!=j?(0,l.jsxs)("div",{children:[(0,l.jsxs)(M.Z,{children:["API Key: ",j]}),(0,l.jsx)(R.Z,{className:"mt-6",children:"Budgets"}),(0,l.jsxs)(M.Z,{children:["Soft Limit Budget: $",Z]}),(0,l.jsx)(o.Z,{className:"mt-3",onClick:_,children:"Test Slack Alert"}),(0,l.jsxs)(M.Z,{className:"mt-2",children:["(LiteLLM Docs -",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/alerting",target:"_blank",className:"text-blue-500",children:"Set Up Slack Alerting)"})]})]}):(0,l.jsx)(M.Z,{children:"Key being created, this might take 30s"})})]})})})]})},V=s(33393),J=s(61244),G=s(10827),$=s(3851),H=s(2044),W=s(64167),Y=s(74480),X=s(7178),Q=s(9853),ee=s(56863),et=e=>{let{token:t,accessToken:s,keySpend:r,keyBudget:a,keyName:i}=e,[c,d]=(0,n.useState)(!1),[h,m]=(0,n.useState)(null),[u,x]=(0,n.useState)(""),[p,g]=(0,n.useState)(null),Z=async()=>{try{if(null==s||null==t)return;console.log("accessToken: ".concat(s,"; token: ").concat(t));let e=await j(s,t);console.log("Response:",e),m(e);let l=await I(s,e);console.log("Response2:",l);let n=[...e,...l.response];m(n),x(l.predicted_spend),console.log("Combined Data:",n)}catch(e){console.error("There was an error fetching the data",e)}};return t?(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>{console.log("Show Modal triggered"),d(!0),Z()},variant:"secondary",children:"View Spend Report"}),(0,l.jsxs)(U.Z,{visible:c,width:1400,onOk:()=>{d(!1)},onCancel:()=>{d(!1)},footer:null,children:[(0,l.jsxs)(R.Z,{style:{textAlign:"left"},children:["Key Name: ",i]}),(0,l.jsxs)(ee.Z,{children:["Monthly Spend $",r]}),(0,l.jsx)(R.Z,{children:u}),(0,l.jsx)(F.Z,{className:"mt-6 mb-6",children:h&&(0,l.jsx)(Q.Z,{className:"mt-6",data:h,colors:["blue","amber"],index:"date",categories:["spend","predicted_spend"],yAxisWidth:80})})]})]}):null},es=e=>{let{userID:t,accessToken:s,data:r,setData:a}=e,[i,c]=(0,n.useState)(!1),[d,h]=(0,n.useState)(!1),[u,x]=(0,n.useState)(null),p=async e=>{null!=r&&(x(e),localStorage.removeItem("userData"+t),h(!0))},j=async()=>{if(null!=u&&null!=r){try{await m(s,u);let e=r.filter(e=>e.token!==u);a(e)}catch(e){console.error("Error deleting the key:",e)}h(!1),x(null)}};if(null!=r)return console.log("RERENDER TRIGGERED"),(0,l.jsxs)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:[(0,l.jsxs)(G.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Key Alias"}),(0,l.jsx)(Y.Z,{children:"Secret Key"}),(0,l.jsx)(Y.Z,{children:"Spend (USD)"}),(0,l.jsx)(Y.Z,{children:"Key Budget (USD)"}),(0,l.jsx)(Y.Z,{children:"Spend Report"}),(0,l.jsx)(Y.Z,{children:"Team ID"}),(0,l.jsx)(Y.Z,{children:"Metadata"}),(0,l.jsx)(Y.Z,{children:"Models"}),(0,l.jsx)(Y.Z,{children:"TPM / RPM Limits"}),(0,l.jsx)(Y.Z,{children:"Expires"})]})}),(0,l.jsx)($.Z,{children:r.map(e=>(console.log(e),"litellm-dashboard"===e.team_id)?null:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:null!=e.key_alias?(0,l.jsx)(M.Z,{children:e.key_alias}):(0,l.jsx)(M.Z,{children:"Not Set"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.key_name})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.spend})}),(0,l.jsx)(H.Z,{children:null!=e.max_budget?(0,l.jsx)(M.Z,{children:e.max_budget}):(0,l.jsx)(M.Z,{children:"Unlimited Budget"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(et,{token:e.token,accessToken:s,keySpend:e.spend,keyBudget:e.max_budget,keyName:e.key_name})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:e.team_id})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:JSON.stringify(e.metadata)})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(M.Z,{children:JSON.stringify(e.models)})}),(0,l.jsx)(H.Z,{children:(0,l.jsxs)(M.Z,{children:["TPM Limit: ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(H.Z,{children:null!=e.expires?(0,l.jsx)(M.Z,{children:e.expires}):(0,l.jsx)(M.Z,{children:"Never expires"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{onClick:()=>p(e.token),icon:V.Z,size:"sm"})})]},e.token))})]}),d&&(0,l.jsx)("div",{className:"fixed z-10 inset-0 overflow-y-auto",children:(0,l.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,l.jsx)("div",{className:"fixed inset-0 transition-opacity","aria-hidden":"true",children:(0,l.jsx)("div",{className:"absolute inset-0 bg-gray-500 opacity-75"})}),(0,l.jsx)("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),(0,l.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,l.jsx)("div",{className:"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:(0,l.jsx)("div",{className:"sm:flex sm:items-start",children:(0,l.jsxs)("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[(0,l.jsx)("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:"Delete Key"}),(0,l.jsx)("div",{className:"mt-2",children:(0,l.jsx)("p",{className:"text-sm text-gray-500",children:"Are you sure you want to delete this key ?"})})]})})}),(0,l.jsxs)("div",{className:"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse",children:[(0,l.jsx)(o.Z,{onClick:j,color:"red",className:"ml-2",children:"Delete"}),(0,l.jsx)(o.Z,{onClick:()=>{h(!1),x(null)},children:"Cancel"})]})]})]})})]})},el=e=>{let{userID:t,userSpendData:s,userRole:r,accessToken:a}=e;console.log("User SpendData:",s);let[o,i]=(0,n.useState)(null==s?void 0:s.spend),[c,d]=(0,n.useState)((null==s?void 0:s.max_budget)||null);return(0,n.useEffect)(()=>{(async()=>{if("Admin"===r)try{let e=await _(a,"litellm-proxy-budget");console.log("Result from callSpendUsers:",e);let t=e[0];i(null==t?void 0:t.spend),d((null==t?void 0:t.max_budget)||null)}catch(e){console.error("Failed to get spend for user",e)}})()},[r,a,t]),(0,l.jsx)(l.Fragment,{children:(0,l.jsxs)(F.Z,{className:"mx-auto mb-4",children:[(0,l.jsxs)(ee.Z,{children:["$",o]}),(0,l.jsxs)(R.Z,{children:["/ ",null!==c?"$".concat(c," limit"):"No limit"]})]})})},en=s(36083),er=s(68967),ea=s(27166),eo=e=>{let{teams:t,setSelectedTeam:s}=e,{Title:r,Paragraph:a}=en.default,[o,i]=(0,n.useState)("");return(0,l.jsxs)("div",{className:"mt-10",children:[(0,l.jsx)(r,{level:4,children:"Default Team"}),(0,l.jsx)(a,{children:"If you belong to multiple teams, this setting controls which team is used by default when creating new API Keys."}),t&&t.length>0?(0,l.jsx)(er.Z,{defaultValue:"0",children:t.map((e,t)=>(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>s(e),children:e.team_alias},t))}):(0,l.jsxs)(a,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]})},ei=s(37963);console.log("isLocal:",!1);var ec=e=>{let{userID:t,userRole:s,teams:a,keys:o,setUserRole:i,userEmail:c,setUserEmail:d,setTeams:h,setKeys:m}=e,[x,j]=(0,n.useState)(null),g=(0,r.useSearchParams)();g.get("viewSpend"),(0,r.useRouter)();let Z=g.get("token"),[y,f]=(0,n.useState)(null),[w,k]=(0,n.useState)([]),[_,b]=(0,n.useState)(a?a[0]:null);if(window.addEventListener("beforeunload",function(){sessionStorage.clear()}),(0,n.useEffect)(()=>{if(Z){let e=(0,ei.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),f(e.key),e.user_role){let t=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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",t),i(t)}else console.log("User role not defined");e.user_email?d(e.user_email):console.log("User Email is not set ".concat(e))}}if(t&&y&&s&&!o&&!x){let e=sessionStorage.getItem("userModels"+t);e?k(JSON.parse(e)):(async()=>{try{let e=await u(y,t,s);console.log("received teams in user dashboard: ".concat(Object.keys(e),"; team values: ").concat(Object.entries(e.teams))),j(e.user_info),m(e.keys),h(e.teams),b(e.teams?e.teams[0]:null),sessionStorage.setItem("userData"+t,JSON.stringify(e.keys)),sessionStorage.setItem("userSpendData"+t,JSON.stringify(e.user_info));let l=(await p(y,t,s)).data.map(e=>e.id);console.log("available_model_names:",l),k(l),console.log("userModels:",w),sessionStorage.setItem("userModels"+t,JSON.stringify(l))}catch(e){console.error("There was an error fetching the data",e)}})()}},[t,Z,y,o,s]),null==t||null==Z){let e="/sso/key/generate";return console.log("Full URL:",e),window.location.href=e,null}if(null==y)return null;if(null==s&&i("App Owner"),s&&"Admin Viewer"==s){let{Title:e,Paragraph:t}=en.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(t,{children:"Ask your proxy admin for access to create keys"})]})}return(0,l.jsx)("div",{children:(0,l.jsx)(E.Z,{numItems:1,className:"gap-0 p-10 h-[75vh] w-full",children:(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(el,{userID:t,userSpendData:x,userRole:s,accessToken:y}),(0,l.jsx)(es,{userID:t,accessToken:y,data:o,setData:m}),(0,l.jsx)(K,{userID:t,teamID:_?_.team_id:null,userRole:s,userModels:w,accessToken:y,data:o,setData:m}),(0,l.jsx)(eo,{teams:a,setSelectedTeam:b})]})})})},ed=s(5);let{Option:eh}=O.default;var em=e=>{let{userModels:t,accessToken:s,userID:r}=e,[a]=D.Z.useForm(),[i,d]=(0,n.useState)(!1),h=async e=>{try{c.ZP.info("Requesting access");let{selectedModel:t,accessReason:l}=e;await b(s,t,r,l),d(!0)}catch(e){console.error("Error requesting access:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{size:"xs",onClick:()=>d(!0),children:"Request Access"}),(0,l.jsx)(U.Z,{title:"Request Access",visible:i,width:800,footer:null,onOk:()=>{d(!1),a.resetFields()},onCancel:()=>{d(!1),a.resetFields()},children:(0,l.jsxs)(D.Z,{form:a,onFinish:h,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(D.Z.Item,{label:"Select Model",name:"selectedModel",children:(0,l.jsx)(O.default,{placeholder:"Select model",style:{width:"100%"},children:t.map(e=>(0,l.jsx)(eh,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Reason for Access",name:"accessReason",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter reason for access"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(o.Z,{children:"Request Access"})})]})})]})},eu=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,[i,c]=(0,n.useState)({data:[]}),[d,h]=(0,n.useState)([]);if((0,n.useEffect)(()=>{if(!t||!s||!r||!a)return;let e=async()=>{try{let e=await x(t,a,r);if(console.log("Model data response:",e.data),c(e),"Admin"===r&&t){let e=await v(t);console.log("Pending Requests:",d),h(e.requests||[])}}catch(e){console.error("There was an error fetching the model data",e)}};t&&s&&r&&a&&e()},[t,s,r,a]),!i||!t||!s||!r||!a)return(0,l.jsx)("div",{children:"Loading..."});let m=[];for(let e=0;e(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:e.model_name})}),(0,l.jsx)(H.Z,{children:e.provider}),(0,l.jsx)(H.Z,{children:e.user_access?(0,l.jsx)(ed.Z,{color:"green",children:"Yes"}):(0,l.jsx)(em,{userModels:m,accessToken:t,userID:a})}),(0,l.jsx)(H.Z,{children:e.input_cost}),(0,l.jsx)(H.Z,{children:e.output_cost}),(0,l.jsx)(H.Z,{children:e.max_tokens})]},e.model_name))})]})}),"Admin"===r&&d&&d.length>0?(0,l.jsx)(F.Z,{children:(0,l.jsxs)(G.Z,{children:[(0,l.jsxs)(W.Z,{children:[(0,l.jsx)(R.Z,{children:"Pending Requests"}),(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"User ID"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Requested Models"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Justification"})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Justification"})})]})]}),(0,l.jsx)($.Z,{children:d.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.models[0]})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.justification})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)("p",{children:e.user_id})}),(0,l.jsx)(o.Z,{children:"Approve"}),(0,l.jsx)(o.Z,{variant:"secondary",className:"ml-2",children:"Deny"})]},e.request_id))})]})}):null]})})},ex=s(92836),ep=s(26734),ej=s(41608),eg=s(32126),eZ=s(23682);let{Option:ey}=O.default;var ef=e=>{let{userID:t,accessToken:s}=e,[r]=D.Z.useForm(),[a,i]=(0,n.useState)(!1),[d,m]=(0,n.useState)(null),[u,x]=(0,n.useState)([]);(0,n.useEffect)(()=>{(async()=>{try{let e=await p(s,t,"any"),l=[];for(let t=0;t{i(!1),r.resetFields()},g=()=>{i(!1),m(null),r.resetFields()},Z=async e=>{try{c.ZP.info("Making API Call"),i(!0),console.log("formValues in create user:",e);let l=await h(s,t,e);console.log("user create Response:",l),m(l.key),c.ZP.success("API user Created"),r.resetFields(),localStorage.removeItem("userData"+t)}catch(e){console.error("Error creating the user:",e)}};return(0,l.jsxs)("div",{children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>i(!0),children:"+ Create New User"}),(0,l.jsx)(U.Z,{title:"Create User",visible:a,width:800,footer:null,onOk:j,onCancel:g,children:(0,l.jsxs)(D.Z,{form:r,onFinish:Z,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",children:(0,l.jsx)(L.Z,{placeholder:"Enter User ID"})}),(0,l.jsx)(D.Z.Item,{label:"Team ID",name:"team_id",children:(0,l.jsx)(L.Z,{placeholder:"ai_team"})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"},children:u.map(e=>(0,l.jsx)(ey,{value:e,children:e},e))})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Duration (eg: 30s, 30h, 30d)",name:"duration",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Metadata",name:"metadata",children:(0,l.jsx)(L.Z.TextArea,{rows:4,placeholder:"Enter metadata as JSON"})}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create User"})})]})}),d&&(0,l.jsxs)(U.Z,{title:"Save Your User",visible:a,onOk:j,onCancel:g,footer:null,children:[(0,l.jsxs)("p",{children:["Please save this secret user somewhere safe and accessible. For security reasons, ",(0,l.jsx)("b",{children:"you will not be able to view it again"})," ","through your LiteLLM account. If you lose this secret user, you will need to generate a new one."]}),(0,l.jsx)("p",{children:null!=d?"API user: ".concat(d):"User being created, this might take 30s"})]})]})},ew=e=>{let{accessToken:t,token:s,keys:r,userRole:a,userID:o,setKeys:i}=e,[c,d]=(0,n.useState)(null),[h,m]=(0,n.useState)(null),[x,p]=(0,n.useState)(1);if((0,n.useEffect)(()=>{if(!t||!s||!a||!o)return;let e=async()=>{try{let e=await u(t,null,a,!0);console.log("user data response:",e),d(e)}catch(e){console.error("There was an error fetching the model data",e)}};t&&s&&a&&o&&!c&&e();let l=async()=>{try{let e=await f(t,null);console.log("user data response:",e),m(e)}catch(e){console.error("There was an error fetching the model data",e)}};a&&("Admin"==a||"Admin Viewer"==a)&&!h&&l()},[t,s,a,o]),!c||!t||!s||!a||!o)return(0,l.jsx)("div",{children:"Loading..."});let j=async e=>{try{let s=await f(t,e);console.log("user data response:",s),m(s)}catch(e){console.error("There was an error fetching the model data",e)}};return(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(E.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(ef,{userID:o,accessToken:t}),(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh] mb-4",children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{variant:"line",defaultValue:"1",children:[(0,l.jsx)(ex.Z,{value:"1",children:"Key Owners"}),(0,l.jsx)(ex.Z,{value:"2",children:"End-Users"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsx)(eg.Z,{children:(0,l.jsxs)(G.Z,{className:"mt-5",children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"User ID"}),(0,l.jsx)(Y.Z,{children:"User Role"}),(0,l.jsx)(Y.Z,{children:"User Models"}),(0,l.jsx)(Y.Z,{children:"User Spend ($ USD)"}),(0,l.jsx)(Y.Z,{children:"User Max Budget ($ USD)"})]})}),(0,l.jsx)($.Z,{children:c.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_id}),(0,l.jsx)(H.Z,{children:e.user_role?e.user_role:"app_owner"}),(0,l.jsx)(H.Z,{children:e.models&&e.models.length>0?e.models:"All Models"}),(0,l.jsx)(H.Z,{children:e.spend?e.spend:0}),(0,l.jsx)(H.Z,{children:e.max_budget?e.max_budget:"Unlimited"})]},e.user_id))})]})}),(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)("div",{className:"flex-1 flex justify-between items-center",children:[(0,l.jsx)(M.Z,{className:"w-1/4 mr-2 text-right",children:"Key"}),(0,l.jsx)(er.Z,{defaultValue:"1",className:"w-3/4",children:null==r?void 0:r.map((e,t)=>{if(e&&null!==e.key_name&&e.key_name.length>0)return(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>j(e.token),children:e.key_name},t)})})]})]}),(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"End User"}),(0,l.jsx)(Y.Z,{children:"Spend"}),(0,l.jsx)(Y.Z,{children:"Total Events"})]})}),(0,l.jsx)($.Z,{children:null==h?void 0:h.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.end_user}),(0,l.jsx)(H.Z,{children:e.total_spend}),(0,l.jsx)(H.Z,{children:e.total_events})]},t))})]})]})]})]})}),function(){if(!c)return null;let e=Math.ceil(c.length/25),t=Math.min(25*x,c.length);return(0,l.jsxs)("div",{className:"flex justify-between items-center",children:[(0,l.jsxs)("div",{children:["Showing ",(x-1)*25+1," – ",t," of ",c.length]}),(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-l focus:outline-none",disabled:1===x,onClick:()=>p(x-1),children:"← Prev"}),(0,l.jsx)("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-r focus:outline-none",disabled:x===e,onClick:()=>p(x+1),children:"Next →"})]})]})}()]})})},ek=s(8510),e_=e=>{let{teams:t,searchParams:s,accessToken:r,setTeams:a}=e,[i]=D.Z.useForm(),[d]=D.Z.useForm(),{Title:h,Paragraph:m}=en.default,[u,x]=(0,n.useState)(""),[p,j]=(0,n.useState)(t?t[0]:null),[g,Z]=(0,n.useState)(!1),[y,f]=(0,n.useState)(!1),w=async e=>{try{if(null!=r){c.ZP.info("Making API Call");let s=await N(r,e);null!==t?a([...t,s]):a([s]),console.log("response for team create call: ".concat(s)),Z(!1)}}catch(e){console.error("Error creating the key:",e)}},k=async e=>{try{if(null!=r&&null!=t){c.ZP.info("Making API Call");let s={role:"user",user_email:e.user_email,user_id:e.user_id},l=await A(r,p.team_id,s);console.log("response for team create call: ".concat(l.data));let n=t.findIndex(e=>(console.log("team.team_id=".concat(e.team_id,"; response.data.team_id=").concat(l.data.team_id)),e.team_id===l.data.team_id));if(console.log("foundIndex: ".concat(n)),-1!==n){let e=[...t];e[n]=l.data,a(e),j(l.data)}f(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("received teams ".concat(t)),(0,l.jsx)("div",{className:"w-full",children:(0,l.jsxs)(E.Z,{numItems:1,className:"gap-2 p-2 h-[75vh] w-full",children:[(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"All Teams"}),(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Team Name"}),(0,l.jsx)(Y.Z,{children:"Spend (USD)"}),(0,l.jsx)(Y.Z,{children:"Budget (USD)"}),(0,l.jsx)(Y.Z,{children:"TPM / RPM Limits"})]})}),(0,l.jsx)($.Z,{children:t&&t.length>0?t.map(e=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.team_alias}),(0,l.jsx)(H.Z,{children:e.spend}),(0,l.jsx)(H.Z,{children:e.max_budget?e.max_budget:"No limit"}),(0,l.jsx)(H.Z,{children:(0,l.jsxs)(M.Z,{children:["TPM Limit:"," ",e.tpm_limit?e.tpm_limit:"Unlimited"," ",(0,l.jsx)("br",{})," RPM Limit:"," ",e.rpm_limit?e.rpm_limit:"Unlimited"]})}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},e.team_id)):null})]})})]}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto",onClick:()=>Z(!0),children:"+ Create New Team"}),(0,l.jsx)(U.Z,{title:"Create Team",visible:g,width:800,footer:null,onOk:()=>{Z(!1),i.resetFields()},onCancel:()=>{Z(!1),i.resetFields()},children:(0,l.jsxs)(D.Z,{form:i,onFinish:w,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Team Name",name:"team_alias",children:(0,l.jsx)(L.Z,{})}),(0,l.jsx)(D.Z.Item,{label:"Models",name:"models",children:(0,l.jsx)(O.default,{mode:"multiple",placeholder:"Select models",style:{width:"100%"}})}),(0,l.jsx)(D.Z.Item,{label:"Max Budget (USD)",name:"max_budget",children:(0,l.jsx)(z.Z,{step:.01,precision:2,width:200})}),(0,l.jsx)(D.Z.Item,{label:"Tokens per minute Limit (TPM)",name:"tpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})}),(0,l.jsx)(D.Z.Item,{label:"Requests per minute Limit (RPM)",name:"rpm_limit",children:(0,l.jsx)(z.Z,{step:1,width:400})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Create Team"})})]})})]}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(h,{level:4,children:"Team Members"}),(0,l.jsx)(m,{children:"If you belong to multiple teams, this setting controls which teams members you see."}),t&&t.length>0?(0,l.jsx)(er.Z,{defaultValue:"0",children:t.map((e,t)=>(0,l.jsx)(ea.Z,{value:String(t),onClick:()=>{j(e)},children:e.team_alias},t))}):(0,l.jsxs)(m,{children:["No team created. ",(0,l.jsx)("b",{children:"Defaulting to personal account."})]})]}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Member Name"}),(0,l.jsx)(Y.Z,{children:"Role"}),(0,l.jsx)(Y.Z,{children:"Action"})]})}),(0,l.jsx)($.Z,{children:p?p.members_with_roles.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(H.Z,{children:e.role}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},t)):null})]})})}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>f(!0),children:"+ Add member"}),(0,l.jsx)(U.Z,{title:"Add member",visible:y,width:800,footer:null,onOk:()=>{f(!1),d.resetFields()},onCancel:()=>{f(!1),d.resetFields()},children:(0,l.jsxs)(D.Z,{form:i,onFinish:k,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})})},eb=e=>{let{searchParams:t,accessToken:s}=e,[r]=D.Z.useForm(),[a]=D.Z.useForm(),{Title:i,Paragraph:d}=en.default,[h,m]=(0,n.useState)(""),[u,x]=(0,n.useState)(null),[p,j]=(0,n.useState)(!1);(0,n.useEffect)(()=>{(async()=>{if(null!=s){let e=[],t=await S(s,"proxy_admin_viewer");t.forEach(t=>{e.push({user_role:t.user_role,user_id:t.user_id,user_email:t.user_email})}),console.log("proxy viewers: ".concat(t));let l=await S(s,"proxy_admin");l.forEach(t=>{e.push({user_role:t.user_role,user_id:t.user_id,user_email:t.user_email})}),console.log("proxy admins: ".concat(l)),console.log("combinedList: ".concat(e)),x(e)}})()},[s]);let g=async e=>{try{if(null!=s&&null!=u){c.ZP.info("Making API Call"),e.user_email,e.user_id;let t=await C(s,e);console.log("response for team create call: ".concat(t));let l=u.findIndex(e=>(console.log("user.user_id=".concat(e.user_id,"; response.user_id=").concat(t.user_id)),e.user_id===t.user_id));console.log("foundIndex: ".concat(l)),-1==l&&(console.log("updates admin with new user"),u.push(t),x(u)),j(!1)}}catch(e){console.error("Error creating the key:",e)}};return console.log("admins: ".concat(null==u?void 0:u.length)),(0,l.jsxs)("div",{className:"w-full m-2",children:[(0,l.jsx)(i,{level:4,children:"Restricted Access"}),(0,l.jsxs)(d,{children:["Add other people to just view spend. They cannot create keys, teams or grant users access to new models."," ",(0,l.jsx)("a",{href:"https://docs.litellm.ai/docs/proxy/ui#restrict-ui-access",children:"Requires SSO Setup"})]}),(0,l.jsxs)(E.Z,{numItems:1,className:"gap-2 p-0 w-full",children:[(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsx)(F.Z,{className:"w-full mx-auto flex-auto overflow-y-auto max-h-[50vh]",children:(0,l.jsxs)(G.Z,{children:[(0,l.jsx)(W.Z,{children:(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(Y.Z,{children:"Member Name"}),(0,l.jsx)(Y.Z,{children:"Role"}),(0,l.jsx)(Y.Z,{children:"Action"})]})}),(0,l.jsx)($.Z,{children:u?u.map((e,t)=>(0,l.jsxs)(X.Z,{children:[(0,l.jsx)(H.Z,{children:e.user_email?e.user_email:e.user_id?e.user_id:null}),(0,l.jsx)(H.Z,{children:e.user_role}),(0,l.jsx)(H.Z,{children:(0,l.jsx)(J.Z,{icon:ek.Z,size:"sm"})})]},t)):null})]})})}),(0,l.jsxs)(T.Z,{numColSpan:1,children:[(0,l.jsx)(o.Z,{className:"mx-auto mb-5",onClick:()=>j(!0),children:"+ Add viewer"}),(0,l.jsx)(U.Z,{title:"Add viewer",visible:p,width:800,footer:null,onOk:()=>{j(!1),a.resetFields()},onCancel:()=>{j(!1),a.resetFields()},children:(0,l.jsxs)(D.Z,{form:r,onFinish:g,labelCol:{span:8},wrapperCol:{span:16},labelAlign:"left",children:[(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(D.Z.Item,{label:"Email",name:"user_email",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_email",className:"px-3 py-2 border rounded-md w-full"})}),(0,l.jsx)("div",{className:"text-center mb-4",children:"OR"}),(0,l.jsx)(D.Z.Item,{label:"User ID",name:"user_id",className:"mb-4",children:(0,l.jsx)(L.Z,{name:"user_id",className:"px-3 py-2 border rounded-md w-full"})})]}),(0,l.jsx)("div",{style:{textAlign:"right",marginTop:"10px"},children:(0,l.jsx)(B.ZP,{htmlType:"submit",children:"Add member"})})]})})]})]})]})},ev=s(12968),eS=s(67951);async function eN(e,t,s,l){console.log("isLocal:",!1);let n=window.location.origin,r=new ev.ZP.OpenAI({apiKey:l,baseURL:n,dangerouslyAllowBrowser:!0});for await(let l of(await r.chat.completions.create({model:s,stream:!0,messages:[{role:"user",content:e}]})))console.log(l),l.choices[0].delta.content&&t(l.choices[0].delta.content)}var eA=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,[o,i]=(0,n.useState)(""),[c,d]=(0,n.useState)([]),[h,m]=(0,n.useState)(void 0),[u,x]=(0,n.useState)(null);(0,n.useEffect)(()=>{t&&s&&r&&a&&(async()=>{let e=await p(t,a,r);console.log("model_info:",e),(null==e?void 0:e.data.length)>0&&(x(e.data),m(e.data[0].id))})()},[t,a,r]);let j=(e,t)=>{d(s=>{let l=s[s.length-1];return l&&l.role===e?[...s.slice(0,s.length-1),{role:e,content:l.content+t}]:[...s,{role:e,content:t}]})},g=async()=>{if(""!==o.trim()&&t&&s&&r&&a){d(e=>[...e,{role:"user",content:o}]);try{h&&await eN(o,e=>j("assistant",e),h,t)}catch(e){console.error("Error fetching model response",e),j("assistant","Error fetching model response")}i("")}};if(r&&"Admin Viewer"==r){let{Title:e,Paragraph:t}=en.default;return(0,l.jsxs)("div",{children:[(0,l.jsx)(e,{level:1,children:"Access Denied"}),(0,l.jsx)(t,{children:"Ask your proxy admin for access to test models"})]})}return(0,l.jsx)("div",{style:{width:"100%",position:"relative"},children:(0,l.jsx)(E.Z,{className:"gap-2 p-10 h-[75vh] w-full",children:(0,l.jsx)(F.Z,{children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{className:"mt-4",children:[(0,l.jsx)(ex.Z,{children:"Chat"}),(0,l.jsx)(ex.Z,{children:"API Reference"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsxs)(eg.Z,{children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{children:"Select Model:"}),(0,l.jsx)("select",{value:h||"",onChange:e=>m(e.target.value),children:null==u?void 0:u.map(e=>(0,l.jsx)("option",{value:e.id,children:e.id},e.id))})]}),(0,l.jsxs)(G.Z,{className:"mt-5",style:{display:"block",maxHeight:"60vh",overflowY:"auto"},children:[(0,l.jsx)(W.Z,{children:(0,l.jsx)(X.Z,{children:(0,l.jsx)(H.Z,{children:(0,l.jsx)(R.Z,{children:"Chat"})})})}),(0,l.jsx)($.Z,{children:c.map((e,t)=>(0,l.jsx)(X.Z,{children:(0,l.jsx)(H.Z,{children:"".concat(e.role,": ").concat(e.content)})},t))})]}),(0,l.jsx)("div",{className:"mt-3",style:{position:"absolute",bottom:5,width:"95%"},children:(0,l.jsxs)("div",{className:"flex",children:[(0,l.jsx)("input",{type:"text",value:o,onChange:e=>i(e.target.value),className:"flex-1 p-2 border rounded-md mr-2",placeholder:"Type your message..."}),(0,l.jsx)("button",{onClick:g,className:"p-2 bg-blue-500 text-white rounded-md",children:"Send"})]})})]}),(0,l.jsx)(eg.Z,{children:(0,l.jsxs)(ep.Z,{children:[(0,l.jsxs)(ej.Z,{children:[(0,l.jsx)(ex.Z,{children:"OpenAI Python SDK"}),(0,l.jsx)(ex.Z,{children:"LlamaIndex"}),(0,l.jsx)(ex.Z,{children:"Langchain Py"})]}),(0,l.jsxs)(eZ.Z,{children:[(0,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.Z,{language:"python",children:'\nimport openai\nclient = openai.OpenAI(\n api_key="your_api_key",\n base_url="http://0.0.0.0:4000" # proxy base url\n)\n\nresponse = client.chat.completions.create(\n model="gpt-3.5-turbo", # model to use from Models Tab\n messages = [\n {\n "role": "user",\n "content": "this is a test request, write a short poem"\n }\n ],\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-openai-client",\n "generation_id": "openai-client-gen-id22",\n "trace_id": "openai-client-trace-id22",\n "trace_user_id": "openai-client-user-id2"\n }\n }\n)\n\nprint(response)\n '})}),(0,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.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="http://0.0.0.0:4000", # 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="http://0.0.0.0:4000",\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,l.jsx)(eg.Z,{children:(0,l.jsx)(eS.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="http://0.0.0.0:8000",\n model = "gpt-3.5-turbo",\n temperature=0.1,\n extra_body={\n "metadata": {\n "generation_name": "ishaan-generation-langchain-client",\n "generation_id": "langchain-client-gen-id22",\n "trace_id": "langchain-client-trace-id22",\n "trace_user_id": "langchain-client-user-id2"\n }\n }\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 '})})]})]})})]})]})})})})},eC=s(33509),eI=s(30569);let{Sider:eP}=eC.default;var eT=e=>{let{setPage:t,userRole:s,defaultSelectedKey:n}=e;return"Admin Viewer"==s?(0,l.jsx)(eC.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eP,{width:120,children:(0,l.jsxs)(eI.Z,{mode:"inline",defaultSelectedKeys:n||["4"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eI.Z.Item,{onClick:()=>t("api-keys"),children:"API Keys"},"4"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("models"),children:"Models"},"2"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("usage"),children:"Usage"},"1")]})})}):(0,l.jsx)(eC.default,{style:{minHeight:"100vh",maxWidth:"120px"},children:(0,l.jsx)(eP,{width:120,children:(0,l.jsxs)(eI.Z,{mode:"inline",defaultSelectedKeys:n||["1"],style:{height:"100%",borderRight:0},children:[(0,l.jsx)(eI.Z.Item,{onClick:()=>t("api-keys"),children:"API Keys"},"1"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("models"),children:"Models"},"2"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("llm-playground"),children:"Chat UI"},"3"),(0,l.jsx)(eI.Z.Item,{onClick:()=>t("usage"),children:"Usage"},"4"),"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("users"),children:"Users"},"5"):null,"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("teams"),children:"Teams"},"6"):null,"Admin"==s?(0,l.jsx)(eI.Z.Item,{onClick:()=>t("admin-panel"),children:"Admin"},"7"):null]})})})},eE=e=>{let{accessToken:t,token:s,userRole:r,userID:a}=e,o=new Date,[i,c]=(0,n.useState)([]),[d,h]=(0,n.useState)([]),[m,u]=(0,n.useState)([]),[x,p]=(0,n.useState)([]),j=new Date(o.getFullYear(),o.getMonth(),1),f=new Date(o.getFullYear(),o.getMonth()+1,0),_=v(j),b=v(f);function v(e){let t=e.getFullYear(),s=e.getMonth()+1,l=e.getDate();return"".concat(t,"-").concat(s<10?"0"+s:s,"-").concat(l<10?"0"+l:l)}return console.log("Start date is ".concat(_)),console.log("End date is ".concat(b)),(0,n.useEffect)(()=>{t&&s&&r&&a&&(async()=>{try{if(console.log("user role: ".concat(r)),"Admin"==r||"Admin Viewer"==r){let e=await Z(t);c(e);let s=(await y(t)).map(e=>({key:(e.key_name||e.key_alias||e.api_key).substring(0,7),spend:e.total_spend}));h(s);let l=(await w(t)).map(e=>({key:e.model,spend:e.total_spend}));u(l)}else"App Owner"==r&&await g(t,s,r,a,_,b).then(async e=>{if(console.log("result from spend logs call",e),"daily_spend"in e){let t=e.daily_spend;console.log("daily spend",t),c(t);let s=e.top_api_keys;h(s)}else{let s=(await k(t,function(e){let t=[];e.forEach(e=>{Object.entries(e).forEach(e=>{let[s,l]=e;"spend"!==s&&"startTime"!==s&&"models"!==s&&"users"!==s&&t.push({key:s,spend:l})})}),t.sort((e,t)=>Number(t.spend)-Number(e.spend));let s=t.slice(0,5).map(e=>e.key);return console.log("topKeys: ".concat(Object.keys(s[0]))),s}(e))).info.map(e=>({key:(e.key_name||e.key_alias||e.token).substring(0,7),spend:e.spend}));h(s),p(function(e){let t={};e.forEach(e=>{Object.entries(e.users).forEach(e=>{let[s,l]=e;""!==s&&null!=s&&"None"!=s&&(t[s]||(t[s]=0),t[s]+=l)})});let s=Object.entries(t).map(e=>{let[t,s]=e;return{user_id:t,spend:s}});s.sort((e,t)=>t.spend-e.spend);let l=s.slice(0,5);return console.log("topKeys: ".concat(Object.values(l[0]))),l}(e)),c(e)}})}catch(e){console.error("There was an error fetching the data",e)}})()},[t,s,r,a,_,b]),(0,l.jsx)("div",{style:{width:"100%"},children:(0,l.jsxs)(E.Z,{numItems:2,className:"gap-2 p-10 h-[75vh] w-full",children:[(0,l.jsx)(T.Z,{numColSpan:2,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Monthly Spend"}),(0,l.jsx)(Q.Z,{data:i,index:"date",categories:["spend"],colors:["blue"],valueFormatter:e=>"$ ".concat(new Intl.NumberFormat("us").format(e).toString()),yAxisWidth:100,tickGap:5})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top API Keys"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:d,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:80,tickGap:5,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top Users"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:x,index:"user_id",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})}),(0,l.jsx)(T.Z,{numColSpan:1,children:(0,l.jsxs)(F.Z,{children:[(0,l.jsx)(R.Z,{children:"Top Models"}),(0,l.jsx)(Q.Z,{className:"mt-4 h-40",data:m,index:"key",categories:["spend"],colors:["blue"],yAxisWidth:200,layout:"vertical",showXAxis:!1,showLegend:!1})]})})]})})},eF=()=>{let{Title:e,Paragraph:t}=en.default,[s,a]=(0,n.useState)(""),[o,c]=(0,n.useState)(null),[d,h]=(0,n.useState)(null),[m,u]=(0,n.useState)(null),[x,p]=(0,n.useState)(!0),j=(0,r.useSearchParams)(),g=j.get("userID"),Z=j.get("token"),[y,f]=(0,n.useState)("api-keys"),[w,k]=(0,n.useState)(null);return(0,n.useEffect)(()=>{if(Z){let e=(0,ei.o)(Z);if(e){if(console.log("Decoded token:",e),console.log("Decoded key:",e.key),k(e.key),e.user_role){let t=function(e){if(!e)return"Undefined Role";switch(console.log("Received user role: ".concat(e.toLowerCase())),console.log("Received user role length: ".concat(e.toLowerCase().length)),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";default:return"Unknown Role"}}(e.user_role);console.log("Decoded user_role:",t),a(t),"Admin Viewer"==t&&f("usage")}else console.log("User role not defined");e.user_email?c(e.user_email):console.log("User Email is not set ".concat(e)),e.login_method?p("username_password"==e.login_method):console.log("User Email is not set ".concat(e))}}},[Z]),(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)("div",{children:"Loading..."}),children:(0,l.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,l.jsx)(i,{userID:g,userRole:s,userEmail:o,showSSOBanner:x}),(0,l.jsxs)("div",{className:"flex flex-1 overflow-auto",children:[(0,l.jsx)(eT,{setPage:f,userRole:s,defaultSelectedKey:null}),"api-keys"==y?(0,l.jsx)(ec,{userID:g,userRole:s,teams:d,keys:m,setUserRole:a,userEmail:o,setUserEmail:c,setTeams:h,setKeys:u}):"models"==y?(0,l.jsx)(eu,{userID:g,userRole:s,token:Z,accessToken:w}):"llm-playground"==y?(0,l.jsx)(eA,{userID:g,userRole:s,token:Z,accessToken:w}):"users"==y?(0,l.jsx)(ew,{userID:g,userRole:s,token:Z,keys:m,accessToken:w,setKeys:u}):"teams"==y?(0,l.jsx)(e_,{teams:d,setTeams:h,searchParams:j,accessToken:w}):"admin-panel"==y?(0,l.jsx)(eb,{setTeams:h,searchParams:j,accessToken:w}):(0,l.jsx)(eE,{userID:g,userRole:s,token:Z,accessToken:w})]})]})})}}},function(e){e.O(0,[730,971,69,744],function(){return e(e.s=20661)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/ui/litellm-dashboard/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_buildManifest.js b/ui/litellm-dashboard/out/_next/static/p1zjZBLDqxGf-NaFvZkeF/_buildManifest.js similarity index 100% rename from ui/litellm-dashboard/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_buildManifest.js rename to ui/litellm-dashboard/out/_next/static/p1zjZBLDqxGf-NaFvZkeF/_buildManifest.js diff --git a/ui/litellm-dashboard/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_ssgManifest.js b/ui/litellm-dashboard/out/_next/static/p1zjZBLDqxGf-NaFvZkeF/_ssgManifest.js similarity index 100% rename from ui/litellm-dashboard/out/_next/static/8Qf_s48H0nBodS2RVsrIl/_ssgManifest.js rename to ui/litellm-dashboard/out/_next/static/p1zjZBLDqxGf-NaFvZkeF/_ssgManifest.js diff --git a/ui/litellm-dashboard/out/index.html b/ui/litellm-dashboard/out/index.html index 0c7a9b87f..aaaaa698a 100644 --- a/ui/litellm-dashboard/out/index.html +++ b/ui/litellm-dashboard/out/index.html @@ -1 +1 @@ -🚅 LiteLLM \ No newline at end of file +🚅 LiteLLM \ No newline at end of file diff --git a/ui/litellm-dashboard/out/index.txt b/ui/litellm-dashboard/out/index.txt index 5afb31dc0..72b67997a 100644 --- a/ui/litellm-dashboard/out/index.txt +++ b/ui/litellm-dashboard/out/index.txt @@ -1,7 +1,7 @@ 2:I[77831,[],""] -3:I[56239,["730","static/chunks/730-1411b729a1c79695.js","931","static/chunks/app/page-1b778934c9b8fd3d.js"],""] +3:I[56239,["730","static/chunks/730-1411b729a1c79695.js","931","static/chunks/app/page-37bd7c3d0bb898a3.js"],""] 4:I[5613,[],""] 5:I[31778,[],""] -0:["8Qf_s48H0nBodS2RVsrIl",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},["$L1",["$","$L2",null,{"propsForComponent":{"params":{}},"Component":"$3","isStaticGeneration":true}],null]]},[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_c23dc8","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"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":[],"styles":null}]}]}],null]],[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/css/32e93a3d13512de5.css","precedence":"next","crossOrigin":""}]],"$L6"]]]] +0:["p1zjZBLDqxGf-NaFvZkeF",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},["$L1",["$","$L2",null,{"propsForComponent":{"params":{}},"Component":"$3","isStaticGeneration":true}],null]]},[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_c23dc8","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"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":[],"styles":null}]}]}],null]],[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/css/32e93a3d13512de5.css","precedence":"next","crossOrigin":""}]],"$L6"]]]] 6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"🚅 LiteLLM"}],["$","meta","3",{"name":"description","content":"LiteLLM Proxy Admin UI"}],["$","link","4",{"rel":"icon","href":"/ui/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","meta","5",{"name":"next-size-adjust"}]] 1:null diff --git a/ui/litellm-dashboard/src/components/networking.tsx b/ui/litellm-dashboard/src/components/networking.tsx index a8ff29c00..5993df34c 100644 --- a/ui/litellm-dashboard/src/components/networking.tsx +++ b/ui/litellm-dashboard/src/components/networking.tsx @@ -815,7 +815,7 @@ export const slackBudgetAlertsHealthCheck = async (accessToken: String) => { try { let url = proxyBaseUrl ? `${proxyBaseUrl}/health/services?service=slack_budget_alerts` - : `health/services?service=slack_budget_alerts`; + : `/health/services?service=slack_budget_alerts`; console.log("Checking Slack Budget Alerts service health"); message.info("Sending Test Slack alert..."); From 7e94fcc9a8ca68672d7f42e3f6379e8a4eba34b1 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 17:15:27 -0800 Subject: [PATCH 15/23] (fix) prisma test --- litellm/proxy/proxy_server.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 75f3a944d..6a818666e 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -1814,6 +1814,9 @@ async def generate_key_helper_fn( key_soft_budget: Optional[ float ] = None, # key_soft_budget is used to Budget Per key + soft_budget: Optional[ + float + ] = None, # soft_budget is used to set soft Budgets Per user max_budget: Optional[float] = None, # max_budget is used to Budget Per user budget_duration: Optional[str] = None, # max_budget is used to Budget Per user token: Optional[str] = None, From 9fca5c741598436555d66f081d5ae7bfb4baf8bf Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 17:18:48 -0800 Subject: [PATCH 16/23] (docs) litellm --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index a7ce7b5ba..3611bddf9 100644 --- a/README.md +++ b/README.md @@ -251,6 +251,19 @@ Step 4: Submit a PR with your changes! 🚀 - Our numbers 📞 +1 (770) 8783-106 / ‭+1 (412) 618-6238‬ - Our emails ✉️ ishaan@berri.ai / krrish@berri.ai +# Enterprise +For companies that need better security, user management and professional support + +[Talk to founders](https://calendly.com/d/4mp-gd3-k5k/litellm-1-1-onboarding-chat) + +This covers: +- ✅ **Features under the [LiteLLM Commercial License](https://docs.litellm.ai/docs/proxy/enterprise):** +- ✅ **Feature Prioritization** +- ✅ **Custom Integrations** +- ✅ **Professional Support - Dedicated discord + slack** +- ✅ **Custom SLAs** +- ✅ **Secure access with Single Sign-On** + # Why did we build this - **Need for simplicity**: Our code started to get extremely complicated managing & translating calls between Azure, OpenAI and Cohere. From a8fa4e28e9b3caec4ecddbbcd8b8b25bff4a4067 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Sat, 2 Mar 2024 17:19:11 -0800 Subject: [PATCH 17/23] Update docker-compose.yml --- docker-compose.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b2c85b94f..ac9f5adc7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,13 +8,3 @@ services: - "4000:4000" environment: - AZURE_API_KEY=sk-123 - - clickhouse: - image: clickhouse/clickhouse-server - environment: - - CLICKHOUSE_DB=litellm-test - - CLICKHOUSE_USER=admin - - CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 - - CLICKHOUSE_PASSWORD=admin - ports: - - "8123:8123" From c7968aff6260bbe973c6a2c8afd07b08e1fa703b Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 17:20:02 -0800 Subject: [PATCH 18/23] (docs) litellm --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 3611bddf9..bc8c1bae2 100644 --- a/README.md +++ b/README.md @@ -245,12 +245,6 @@ Step 4: Submit a PR with your changes! 🚀 - push your fork to your GitHub repo - submit a PR from there -# Support / talk with founders -- [Schedule Demo 👋](https://calendly.com/d/4mp-gd3-k5k/berriai-1-1-onboarding-litellm-hosted-version) -- [Community Discord 💭](https://discord.gg/wuPM9dRgDw) -- Our numbers 📞 +1 (770) 8783-106 / ‭+1 (412) 618-6238‬ -- Our emails ✉️ ishaan@berri.ai / krrish@berri.ai - # Enterprise For companies that need better security, user management and professional support @@ -264,6 +258,12 @@ This covers: - ✅ **Custom SLAs** - ✅ **Secure access with Single Sign-On** +# Support / talk with founders +- [Schedule Demo 👋](https://calendly.com/d/4mp-gd3-k5k/berriai-1-1-onboarding-litellm-hosted-version) +- [Community Discord 💭](https://discord.gg/wuPM9dRgDw) +- Our numbers 📞 +1 (770) 8783-106 / ‭+1 (412) 618-6238‬ +- Our emails ✉️ ishaan@berri.ai / krrish@berri.ai + # Why did we build this - **Need for simplicity**: Our code started to get extremely complicated managing & translating calls between Azure, OpenAI and Cohere. From b7416fc946ea746c084ecb6f1e9a8a653d55aab2 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 17:33:07 -0800 Subject: [PATCH 19/23] (fix) improve example test slack alert --- docs/my-website/docs/proxy/budget_alerts.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 docs/my-website/docs/proxy/budget_alerts.md diff --git a/docs/my-website/docs/proxy/budget_alerts.md b/docs/my-website/docs/proxy/budget_alerts.md new file mode 100644 index 000000000..92b055510 --- /dev/null +++ b/docs/my-website/docs/proxy/budget_alerts.md @@ -0,0 +1,20 @@ +import Image from '@theme/IdealImage'; + +# 🚨 Budget Alerting + +**Alerts when a project will exceed it’s planned limit** + + + +## Quick Start + +### 1. Setup Slack Alerting on your Proxy Config.yaml + + +### 1. Create API Key on Admin UI +- Set a key name +- Set a Soft Budget on when to get alerted + +### 2. Test Alerting + +### 3. Check Slack \ No newline at end of file From b2389a9b1dc5156f7a4009043af8572bd364aeb9 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 17:33:18 -0800 Subject: [PATCH 20/23] (feat) improve test slack alert --- docs/my-website/img/budget_alert.png | Bin 0 -> 70994 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/my-website/img/budget_alert.png diff --git a/docs/my-website/img/budget_alert.png b/docs/my-website/img/budget_alert.png new file mode 100644 index 0000000000000000000000000000000000000000..467080f41a8d62be40a3133afb001c2f07f2148c GIT binary patch literal 70994 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�%)_kxYa3=nAD2|O$1V(zF-|7LU>^gSm9 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 Pfj@UtG;ikIFbn#BF@Tx7 literal 0 HcmV?d00001 From aa565dc9901c8a902bc7a65fbe5c5a5c2fc16592 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 17:33:31 -0800 Subject: [PATCH 21/23] (feat) improve test slack alert --- litellm/proxy/proxy_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 6a818666e..db5caa9ae 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -6517,7 +6517,7 @@ async def health_services_endpoint( ) if "slack" in general_settings.get("alerting", []): - test_message = f"""\n🚨 `ProjectedLimitExceededError` 💸\n\n`Key Alias:` litellm-ui-test-alert \n`Expected Day of Error`: 28th March \n`Current Spend`: $100.00 \n`Projected Spend at end of month`: $1000.00 \n""" + test_message = f"""\n🚨 `ProjectedLimitExceededError` 💸\n\n`Key Alias:` litellm-ui-test-alert \n`Expected Day of Error`: 28th March \n`Current Spend`: $100.00 \n`Projected Spend at end of month`: $1000.00 \n`Soft Limit`: $700""" await proxy_logging_obj.alerting_handler(message=test_message, level="Low") else: raise HTTPException( From fa2c6fdebb63674fcca57ad238755dd091c079d8 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Sat, 2 Mar 2024 17:55:49 -0800 Subject: [PATCH 22/23] (docs) alerting slack budgets --- docs/my-website/docs/proxy/alerting.md | 10 +++-- docs/my-website/docs/proxy/budget_alerts.md | 45 ++++++++++++++++++-- docs/my-website/img/budget_alert.png | Bin 70994 -> 0 bytes docs/my-website/img/budget_alerts.png | Bin 0 -> 91236 bytes docs/my-website/img/create_key.png | Bin 0 -> 143093 bytes docs/my-website/img/test_alert.png | Bin 0 -> 207731 bytes docs/my-website/sidebars.js | 1 + 7 files changed, 49 insertions(+), 7 deletions(-) delete mode 100644 docs/my-website/img/budget_alert.png create mode 100644 docs/my-website/img/budget_alerts.png create mode 100644 docs/my-website/img/create_key.png create mode 100644 docs/my-website/img/test_alert.png diff --git a/docs/my-website/docs/proxy/alerting.md b/docs/my-website/docs/proxy/alerting.md index e99f43524..feb54babd 100644 --- a/docs/my-website/docs/proxy/alerting.md +++ b/docs/my-website/docs/proxy/alerting.md @@ -33,12 +33,16 @@ general_settings: alerting: ["slack"] alerting_threshold: 300 # sends alerts if requests hang for 5min+ and responses take 5min+ -environment_variables: - SLACK_WEBHOOK_URL: "https://hooks.slack.com/services/<>/<>/<>" +``` + +Set `SLACK_WEBHOOK_URL` in your proxy env + +```shell +SLACK_WEBHOOK_URL: "https://hooks.slack.com/services/<>/<>/<>" ``` ### Step 3: Start proxy ```bash -$ litellm /path/to/config.yaml +$ litellm --config /path/to/config.yaml ``` \ No newline at end of file diff --git a/docs/my-website/docs/proxy/budget_alerts.md b/docs/my-website/docs/proxy/budget_alerts.md index 92b055510..580040d97 100644 --- a/docs/my-website/docs/proxy/budget_alerts.md +++ b/docs/my-website/docs/proxy/budget_alerts.md @@ -4,17 +4,54 @@ import Image from '@theme/IdealImage'; **Alerts when a project will exceed it’s planned limit** - + ## Quick Start ### 1. Setup Slack Alerting on your Proxy Config.yaml +**Update proxy config.yaml with slack alerting** +Add `general_settings:alerting` +```yaml +model_list: + model_name: "azure-model" + litellm_params: + model: "azure/gpt-35-turbo" + +general_settings: + alerting: ["slack"] +``` + +Get a slack webhook url from https://api.slack.com/messaging/webhooks + + +Set `SLACK_WEBHOOK_URL` in your proxy env + +```shell +SLACK_WEBHOOK_URL: "https://hooks.slack.com/services/<>/<>/<>" +``` + +Start proxy +```bash +$ litellm --config /path/to/config.yaml +``` + + +### 2. Create API Key on Proxy Admin UI +The Admin UI is found on `your-litellm-proxy-endpoint/ui`, example `http://localhost:4000/ui/` -### 1. Create API Key on Admin UI - Set a key name - Set a Soft Budget on when to get alerted -### 2. Test Alerting + -### 3. Check Slack \ No newline at end of file + +### 3. Test Slack Alerting on Admin UI +After creating a key on the Admin UI, click on "Test Slack Alert" to send a test alert to your Slack channel + + +### 4. Check Slack + +When the test alert works, you should expect to see this on your alerts slack channel + + \ No newline at end of file diff --git a/docs/my-website/img/budget_alert.png b/docs/my-website/img/budget_alert.png deleted file mode 100644 index 467080f41a8d62be40a3133afb001c2f07f2148c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70994 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�%)_kxYa3=nAD2|O$1V(zF-|7LU>^gSm9 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 Pfj@UtG;ikIFbn#BF@Tx7 diff --git a/docs/my-website/img/budget_alerts.png b/docs/my-website/img/budget_alerts.png new file mode 100644 index 0000000000000000000000000000000000000000..82d80b90ede82b3a7a11c2cb158e51f181dd1ac3 GIT binary patch literal 91236 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
    S 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 DlWc@0 literal 0 HcmV?d00001 diff --git a/docs/my-website/img/create_key.png b/docs/my-website/img/create_key.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b0532982eb5c834efc204d9cacd8d3a7f54edb GIT binary patch literal 143093 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 literal 0 HcmV?d00001 diff --git a/docs/my-website/img/test_alert.png b/docs/my-website/img/test_alert.png new file mode 100644 index 0000000000000000000000000000000000000000..ba253da83a11db86f0946869058740afdc80a43d GIT binary patch literal 207731 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

    H z@uL?&pf=1qi_Dz>gU^<#{$keXIqii+Th|#QF0?(yl?P--JLxkDSu-0WRHHK4 z)7$eViXeHgTNzH#Nesgu?()Rv$N==V=Sa8#l>tvpAIi!XhV$u51N?g&^3LbLUd4j}cmw+GY-74BoRI-#6Ona{+YSyry@vPC zhupS<;O*7A)G%7`VA>P46JLz(!A=H-qtgfn3ee8E~J50QLpe`c6|vpIm>tPdq(Z&?$T7C`1-XNRGSPFuIJR>!W@)lr3+ z{qO_Y5=Mo5YC4Jr+-Vn;ppfb$%li*{c5Kmx9Wv6=VT`tw{`5!*?7b=7+(s(45_jR* zecU`>w{@@h?QE>8I+q^OV3;nXV7+L(j=tTe06X_y47(Vl-kWBi z?#j6+-4|Jy>2G)73iB3C84E+9%2atQfAn-$01lT^&aY(nI*4`wy52Hxi(K$AV#XQI z*VQ5ODpOH8iwQ0Wm z?9SC5d8ivwtRv^b0ZYR8Wm<^lS{@C@LkSAuKXbxP+AD}dU}*nVnwyV}jg5|IUT-o@ z_o%hu1j+Woh&>wsRG+eGYgTDWo`UU4V|kz&deX*B@wIJkZ)Y;21}gHVPDQ=6v#HsN z+5MOZ$!uR~5dG;LtkLiKN;z|-G$$$iDGHwv6HdrJxivk$-151QC)}E9jF9rm>{Jrv zwlNxMAyNC816NyUzrmk2vzZY+TX`FQj%Uw-+y41ygsWRb&L%e)`JdOldkn5V=;iCg z`Qeny-p;N9!LSF=r!Q&jeXyd}Pc8mV$L#ds8+Sj=N`6l zYXAMMW7ThqaNj!xVrLb;s8*S`g?zuDy*Kbj}$HXjWpS{|`q zE4N8R2fpxt`Bb)PNvo`~s1D)FOXiac?~}Y1$GJWGKF~Guh^RufV?EE>?A`lD*OE)N z!*b$NwkY&?!M^9GZY9ha@c!!H%c(G9D^#aN8 zqxjKEdwW}Jgbs0s;cf+|x+xSvg_vT~X}mH*Omw^s)epDMVf!t;6bc&t|ePqixu0hgtOohQ=tdKG4vX- zUMB_dERg{{M}hv;#=d~~lJs}ym|xslX%!N*Z5td+NZ>T&xaoBQD`JDXxVYM_GgSs) zQF%>|2sW>bT{^K_BanTfhr`R#PQQ11o!S_4o5sGofIqofzSgYE#ZT;jLkP^jHXMZ6 zKBt9-^d=BcBYnM#XIhILN4-K!jBv0zdrl{H#?19YwijlLGg6Xi?K5c)L`>?VqGfw_ zk$*Yrzx{?_2N8j*9|T%dnN;{sIdlpQz69lkhPzFXT4VImm6e6b*5V8+f^LoTa%YhXr{3S5-_r@EN+lfqU`~A)xG~HEqFg~7Ysj`g1rt-KUN!ay5FPVKI#gNVn7Ue@kaCk5 zl0FfhIUwGv+{rW-={|KchqV8Sow9BdZmj3F;tiCpw*r94(kO-G#3>^o_9Go%tG!dY z4TX~RFlwcK4?A)?-8Cl=>cb`Mb{r z79MsA?xLS_kfxHj69X`u#Q<~LBL`|prlTFQuhofkJguyc5T4JnHPc;X7p!A51JlV_ zRR-MJ)Td1bsSzw32Fjce%s9W=!6gp65+mh7&KA7$Z^_zM2!{cQtGQDLQ+z88C1d1)A z8emV%!34@R>B`YqSB(}?K2gI8R?^ayOGaJFthkm&+S1@)zu!7-&5`tZ@%DY4v@W@% zB>r1KwR#F!mfoDdnzj=7Uk=F?x}p#=7pDdxg8buCjWZ8kd$nh+BocN`;6O?u4%>-* zGz)5+TmfKdxjIYOo4^f90y61NHk#N^FFj*BqD}0jqk0oCI7FJrLE&_qO|tKlgT*{X z-=W$(8RbxlDlkwN_G(eyzYNN8J}lJ<=6prOL&Skok?6PPpc9c5S8EPWq173bf825# z1`#w&9~!!UJbsK_$k4K56>rM6+M@RcCSrF6hO=J=``!}_ZPigko83^4 zTu4{6ys=U9b$wn_%sD8WUKUFwkFyHRg$Ap3nW0|M3_H^(!Y}qa#t`G*}3JEDHbO#>1QMBUv6m zF9Q@%9~cAb(@U>|^c&&%mv|XHhQ|94Vg=l=rzlsctJjzoO2(O9+9|8b6sJghB-WyI zD^Cf*u;RMfyni*R=ylqsK7?3Cb0RU(ml>n3H{r=C8F%0a0r4r@?nN-wa7y$L@TOf7 zwC$$SoncQS1aLW(&jXYeg<5rLuiW%=cFtjCtCQN94d)7*KHd?G&+%6D&DTHXS^)3o zfh~~B+vRj{e1cykE0%+sZj=Miu^Q5Oj7BnenuVXE&G=P(`YKKnZMr0kK2JHyWZkU` zLdeA@&$4_^?$G!56DE4`TY%ZMg!)(L(~?dxoELh`U7qX}47W{w#orzLO#vg+q0eB& z*uL1En3~;M{&-`>Y_Y1k$9!X~UoJ2O)T2}>055#z$qAde1J)<*zOT32sy%70lj}aw zo?#dL_6m1D&+8f%HIe6YcNCab!%^@2CpPB)!tML6@ZVyBKyNVSXS(AT?tbBTO_q8%8;(HVA zpMR9%qbfHT764pB+vu)+8d6o7;aTHZ1%?Yd2khFgCG;8vB+;I|_OFEhx?wsL=~v|V_ZKog4|cLXsV4~jZ_(Jz$5f60 zB*Zz#gY;DYCi~&fX8?Gqlzz1)qam1SU6{JI|PJ;=hqs><+lRrg+!F z&%O$?5U=>Fnwp^|1y|MOt@cEB?$yHL=qaW6oF3z@_?AsM;P24~E9M~7$e7iaqG$dg zhTeb%4IS^yL}Y#-8nSp36QcthXf&Fyv8DBCfv+ld8jR2e_l8mu>0px{s?p(H`ae8u z-W6bp7WlDnF#gCcc;*_G>2HNP`6IFJ2mz~ASQhgbs-|ek}NJO&+$om z<)QFn)bdvOamw)(L0N`>&w3=zL1?t9(HB-V#i!TUOx9^vUYp0(PZjCp7NTBz+|BwF zVI}a&Q9!Er9h`hK>aO+%=nfOTonEhJs;=?s{O-R5b5kLV4I6^K_r*=uo@t%U2*jUM z!;qNWJlK63dpjk3@?V}-M0Cg;EK*;2LhQX}XD-;H5LssLvoBvp# ze^}i?APwE{=62F%%-g^5F0YmX9oJJZ`tCmo|NS42_J9*PO0?X5gRcDBn@k)B^1^p9 zmW~ttU8Mc(PZ5CN52tDs*f7)7cjF|MBSE z=?U~b|K9aSY3_f%=$m`s#2`~X(l>0+Pl@y|#H8#4tgPVO_+zX6Cq+5vto)c+S@M6f zvM<PBSqXABo61=J^%BhgXUg9Q_fN9^f2RD;J+twTE9Wd7RjB8GZX8Sm8@>7hBrKg= zT$))}SO_VKf;&kdFYONO47$zG*x0ClK*Z`_m{sCjH9>Z_KNPhepsU-!&!o>~Wo2t=z%zh~1i zo%^&RCVB`C{UADsMi3}W#tyGw5ux0&o$Gx5*+UZ(9e6WMP1g7LEO)_E#{bx8ppj90 zUeD0}d(+<&`3Q#{d=A=*9dE;q@6$tNsU`4a1>ixtn$=C=Up;Y7C9sXHOt*Pqe#pxk zjOy$7i%2<#uvQX;ex;+#SZBE9r+<DazADN90aWR+mi+U3`<*VE z33jmw|2Nb_iyH$MG$>(JFb-!7*$wtI8uK;@9Qbdmn*SUZeVSHLd|{g9fwovD?0AxD z#)K2f^;y2Y6f?MbY*7gGAB&?0O!@&*WYVL@F0ET8D_2`l5$beIBX&$iM#lKk8#u=> z$fWlvtbJh}>}*X{>t9`-7i@LPP+@zf>!LL%5hrG+lQCgEQ#2R_qPHz(ZY|13L;dKT zkVH-5{nlSCCWo!Z10CqdTtO- z?^+;79ZLqI(^t$cU%h_A)YG#_cgSEJRWerxU?kduhOm7QP@n(qhGY8nKbG{qy=WR?Z))ejGn`PySrqy`y$sq*1$A6F z-?|IpzE?}@&v)gz&40Do30Tg7kT5C6iS!n|R63ZYJ0pc+hd$-M2|B>o) zv!ENSGfw33{d#Fo9a=s7K;&Y@?Cq1EJo#srYq*@HtV^;1V5lPgdL92VjW`=O<8yrJ zT{LQtX`uL8a+5!DH@(x5$KcAql23EzL@!zGWZ9>uCDD3pv4o_ZBe|1+Ri;7H2+z6+ zxyjt>H^wa2HrF3-lB^gKjLkRNs4LqAKp@j^`Ii$UL934<0RAYZ2dDu;sfymZ#t8&& zpbdhEBs(dPL&9!}J9G1T)tZZPlpBxFEJj!5Io1}rQg=o7Sh~o^!feafiHrs!Q9=QJ zt@}>Ipx-(=;VqW`oV$Pd6i__qUkg36Hm=#gSKvcGa>jh|B;X6sHu~$`YYSdd7N9IqqTX64VhmKAS zG#e(N>J5#a^kff}W9vHHi*%;Tcol**mE}SHF!*qfWPj7d`mH`O1sP{IP7`vqt%ZB& z_@Nf`r7Gp#MS3r~(mE54k0QB)TjC6sNYldBmUW(>WdGz?2*C>FFv(d257r#kFMaJR ziL~fKDC*EO?4k$6lu>jr)qqx0YsVM62k$iHm#_FG*!6Ly)o=@I%2A%KETk#Kt;g+L z!dHN1Z>Gf=mPTE=Q7^wiRi6AMT!3YkdHJ_U3_=OuKHBTsfMOd`LZ&;e3p z#w^I5bBT;hY*N}<8oHhWhZ{g2C_P7?(Mhw=b`Y>lV5SH$Q-}m-e@bm zI$PbZt;&rQJB71)nw9pasJgVHqA5z(pImRTme0D&uK$Ac;ty1eEXWJ{>{eqGg3Bq0 z^5^3GlULzBNXxn!)TqMzJ5hAvNiR9L3#~@7Tzhw==rFzG%hJ-hZX)D55O@jVWDEF^ z-U|CCp;2?KN3GLG#j%O`{i*;+;JaoN4^sgdm*BPdU7FeB&Ld_*&$v4^OEWWU!=r9e z$J0tnTt}(ZSEzs#C1DyeZ|PYMXqOqI3eCI^$m8h_0}ElP;OUIRp=U%YgnNi*gr8+z zm@~M)!aXY+;5X@Mw4~e`xhG%(`jCCLgNConhNPuFK;KjXS@^DG@T1zj!rr2AymjxO|S`1OxVJj zpQCpS*BdCZE8A>_7!w_fcw`3k`evv#Z>O6!9|W4WG2uXn=q_kG0&`2ZjUG~1{lF@p zj=LzO&V^G@fyZjq^wGP~l&?{8Mhnh&+<|^zW72jx&nOB#>j!{{D-xCQ z=`x`rG`6pLx#txt=s21g1MG;i--<~^rkx7>B69aMNHch-MF@SNh{t6>(qX%4AP&8> z)k_5%5FD|b#t;EThDv`vus(S{PPgs20%$`hUwUeaEf>Zh;E#T_N3|HVD_Y?V&1Zo# ztacWaj}&lse7HVE<8@s>17IY++Fci_oP(3~S_ti-SnUq?P6~3iA(o&%tee0#6!!d# z(3oi^+QH=gy@`h++`VJ$#P@sWcwIji$V*= zv;BkDlrf6XdmY&iu$T4y2Yfw;L-J6hLA@tEM6YW((I-rmm(E2e;s}>43Ud)8R2P|U zU4Zs#3d=TmHBkMjc>OXuhRX+;>F0ZNE_BVr4cIr-EUL3o^onFF6aH^z4#)0q)f;68 z|L@fstronydM!61H5hvFquP!<9?VV{U#XVj2{^QZZqYj}9Oci>rtPo9 z@vKfn_mPg#V*${6GPFskZ6V1f&Rt*ruofk!_~V019N4u)k+l}Fm#~P8*c%`3YcOgF z%B1BlvTfH#7%*BwGxXRDnFDQMxd13zCO?Lk2xrXTvCbAK&P3oL*YuxWOTP}XX|mSo zINOQeZYE{d_XY2&|(QjV;4NM$I3SkwDIu@2p7`Vw@=z|jn?Cy@`q zM>}}|h%&Teo!V7FB_|CHgN7v$Gif1o^ApW$UVnJU3HDgNkp}@-fH5{-Q`>&MqYUS* zs(6{AtlT6qMJCTzc)~6mr)Vyvm!loPj%}S_CL!JDcR=|=ogXJVIYz50Alw+?EkR$T>(v{ zZMP!>Dt2KMQ4t)aNhegP>L^N=-it`6AwmQM1O%~+BB0U|NLjP5wbUXzvX$KvetSePFrkIAPX8??leWhTfgkO zo#$!Vz|VE(K-638g#&L&HN~)(wGLi15y{K;GO+coG<#%(^nqqZzq-;D(^S5(LJF@H zy7r>}MfERM;Pl^NUe{KRM~J^qRA3a5e-GLHv+L=)rmPUx^|h51r;HfvE-RpR^Aqvc zLIX;+le5({AsuCCVI5V8K4tHXvJ1M`;K-%mKPLtnGrcc;$9fzQR)>j-sOfZAJ)muN zq1-i&B9{p%LjFA(rLd^#Ro{MA5ugAKdh8jd*T!++xFTl$t znH0shd^@He9?r|rzka~L*B&FbO3^I|p`{`^KG!wAZt|J=uL?7O)n^c~v?NC$S>h@N z1EYqXC?^qWsO{2Uyz4J88tzE|KoV@~Q$NbxX*K9ubtQubY$u7#i$}J1TWfcfTzJUw z7!@4PupJgJnO+h z*XyCsg)W_(d+s=;h z*7-6VC%GD7w3+!sQd7se=yza)Z&|G>7R9T%Iq3@|Epv^~-#@S=cFh@TFSWx=-m*NG zvtsmU=rAgGo``tqUu<=@p^Vx_Wlmc$RfFeD>i7N^P9ibGsVo z)UK;lq(0&0puUro_V0ww1MGam*N|fgXetg|$DXd@;NNlh)JwOnF3+m{4k8C2h65w56vgsld2)gKz!lc)q=ViLo4mp>^eY*+zF%rvpT%sAD}dF| z)_aqVEk>KU9+9Bim?HAsPx-Q;K{Sblz5mP}ptn!5yaEF)XX$wk%JK7AJ`_#gE6P6K zjK7%yNNAAVJq|?-Y!?eLK673Iy*fx8WHT4A+USs3!p*Jd^`FR)-xA1y4P1O*T-8Ko z$@0nx29=1_QVD_gN#{8}UKdBiVm*Uhpg**c0A26h%g^kkP9-<^EYi(OkJu07Yz zXVQTnbO(zXzD_OnCRQ~4BFlW2R6AyP`qN3lpF-JKVrvW=m(Lam{$@ahdz@Hf?0w%kU~+Hxm&QLNTdu$q=$aZ&l~PNUeK1UuvtLHIHCD~~ zU$zR7%c?IS-vaHifCfH=j{}AS+0)LfFi)lDuPe-C>mIrfz}10kxOsGzUeewCFxAvwdpI6iTsrf_JrTo&=uS+3en@J^ zA9+T!ln1oQpx7ODr>t^4Joc(h%Pz}oEXah_b(Hvx>((7ze_nsh%8V4LM8lTOElwL6 z!1A6^pJz)gO_Pe(fsz|5uXI83dHK=R;sT6xQix2{X!O?iimwZ}n2J)@%O-0(L$CBI zRBAn(3Lxcts&dVS4_3$l6sH>i0)^4M3dBsS4g-B)5cL&-Vq*o9)q8!|x64h31Sk2E z=ZtU2oS!QBk(T>gUW=XR={5n2N2*+vk3*411^BP5#k3s?0LbmKg7rk%CVQ@kgyz_TS?T&%SWpp&%R5JFUjLs z&We2DQf6;Ga*D~iAF`e|qWU2G`re~#1&Eg0H-wX( z(Eee(w1p@fE(16y=0cq|{P}=-+3WK0+WSV|&h88pU_09x*biLDFyv^Re|Md*!$K4I zvtcv?uA>K1-ysfyVEGJN`h7)G+n_mLJ6C=k(2>0@{aJl3v5YM{clsHoC=s{mX)z~H z2-ZiZ?6D&GncdA#k6;26UDDUX@r(zIga!&mms7E)GQ1ni1Td19UD2MNSGi&)Na#8H z`0-%i*{ZlMdhT!{cg5Epw0rkUw#UPC)!h1YhlFvj{+ia}wO4$#aqw)r)wKwI2eD;` zPOSUPv6a^{VIQzZ6wR^O92WbG`}1~itOI!O@|K(Aa72>*1SH2h=9Smy`RwC856}2@ zlz==~6GDF+g4nV#_7fgLLK`gp*O6RC= zR2Tg~LPG9OPqRM((ZVgUY~A$m=slB@lk+4^^ZD~WBhO9eRPpm?^@Ro}@-@T8B^*CDIBOs*&N!u6HW26?YNQ!}@Lo?=*qH1u zrd5@C9xzLI+M_ru`z9aPT4IElbr&#*#qcm~(kfuMqQ3lckD{!Bl3-8lV91$(U|fOg zE&%@ai10_Ffw;fs&n9QQtZj|WtsgtC4)j)smXt)TUMDrPqLBSc2Sdo8ao$Be(Cb4u zQ2`gm44Eba#52SB&rI!*ZVC-*pbg~LR%iVBbP^v>5E{Zba65eQ{LTX`{QL1F$308l z_WGxNtX@a$ZdD=k9X4CMb7#KJ^7X9n>Xq{)+L-m#t7oVnIi;4l&HEpfME8RcEoe^D z-U7;`gYDW~+Zt$ExM1}d(bcD)GPmmNlcXp4J;85m5FwY7>eq@}k;@Mf8Mq*nrLE%X z)q3u(x!zY1MA7LK*1cilKJ_9*>CA$+{AS%8f*9o|_fUFmjR=8psRkfEO|10QltevBc$QexGL zU(EZQvob^g1d<^(f6%gyX|C+nkt(@Mt|S&Uu*$~xuhwm_=0t~o?zxrPx-wKgdYEDE z_|8~Kjw{0W*6Od_-=nv$!Tu%f*svXXgRA2e%gMf!Zo_v=^GCB10gB*8j6b2hdpR*Y zIps3!%}hmO_h8aQ$lyoewzXgCZHE1m(oVgbn@{~N(6NsV-F(>~&mkp}5#8!;;mQ-S zeyG>1U_9Q0q!W$H(!zb!d^}oJ_}=x4I=N4`;ezYArUNje0X|DDj}#84@h|Z%=<6Ml zFqvfsF@J+!Fz|_IBY2aoAHHZU6G$uddGZz5V^;RnH%bIir5;Z?rattgh`&4>^YFju zrvo6#hd+73woiX;8jF0{F{1`2Wv{(s%)iBcrF>`X=LB%G{e>K%-zp}cH48}dEt?v9 zopub-{3M3Tr)0LSg}sm1c5?!senCgTxz5Dk<6JQtAd!BGO!2AWZ<9ji zFWavN239eqdaHm$UgQj>Eb*&Oz|h`J>zPd;zdCTJH^Sk^)H!IAx~4yU^7ZP$w75y0 z?Xux$H6t^6L+k10wo?O;O{%}%5hag?G=hJqF_op?$_`5d$Y@Hj^X>47yq*J2plePb zyH2eUCnETnT_^19j5~7lXuFn+WiL9z^Qq&FyFV`f@gzt9RY4K-F5LSLECKy#e=#$? zR!|3|R(E0~FK~^B5ydky2!%nGmPwXtLy^mQql1f-;0$IA_tA* z9%OTA%V?tMbqw|?5f!MS~t56OqNG|>Lom2j8mU%mvEJx3&&{3OtB^P7CXROEto z@oBkpS(%&ur9bbFNxbFcUp^*~^q(Gy{l$pi_wU0Pwi|nh{fFoNcDHHit7KljQ1gVhz`58}#{pFcf>b)$`@B8Q2Zf+uEj{`fy%`Zkg`L7$A0XB5L+uWPYZ}R<8{rkYq zoZYGm`B(dAr2*_8tzS+4U+oOU-n_7d0U}>UUhkUg$iVcYx7?tSscQ#F6OtqHf`|rHX`Qr1-C@~$I4Rv z)iyo`hF#~vjP}33eja#z6CJ~4@RrL z@)E2ffOoR8etO!Q0gyA2EyZChrZB#LX!o(3^9{6T52f?itQeYkQLuSA0GrJDB(x2O zH^&H=$J7DIV^1g)+7M=t6GoBj^WfrRw`n2sfzB5+(1E3Z-DT;3`nzj+9jc&Aj5i04 zVeTIF`Fc;Fl&5F02I%3L%u&G&tC^DKW8@QpD{mgB?}a^jxB_50)&ke+w~&FL0~yy+ z?FvL8EE6=x26fSNGCOUyP&u3g7@-ow&8ee67C@&Qc=NRVu{VB$QF^i`N}Zz{jl!8- zG>{+iWpw9gmIni*key{X&?f2Gm@w2}bi1bQB`O6OZL%7Finw$T_y!A;9w9kgp!_ys z1`7GJPqxBCC={BuN6YR&m)ii#Qv;-E!pwTFbr~p|8-)yX1w6+!1hC~3@{jmbWCjC1 znXN$3*kgKtp=fMm{pts0gM88 zXufWhZcETL(1EQi{dqrir{kBi{vg$sK%DA55u@^K{dNRfd(AeTern4C;Hilp=f3c# z7Jv$TMOMq3f-BIC3nD7^w&yQhjtw^RZ{l||iv^G=suby-bIiF{{hayi#vOLWD5qr* zvgalNP?zt{82FY=&003w&gA%CW#pT3Ab;@o`tta8&+6IADcU|YstZBjdSsu`&5yifH^8!`6*un5 zUjjMo(zXXR*`Zor8urp~SEmK($<6HoQ)(kCh8hxz&hYg^8H1Wkut!Wac0!JThE)Az zpz7c-_tbWK9aUp4_vg=?DdPbZhy#W1Q*MZibzr)CLCqhLjr=_g*`T%3Vw5)rh61rA z044vx_svWO!sq7bk&&0N8`V?|IM)G?U)bb?iTJ$VY9-fuw98WJc&Bv)ryTN9auJRn z$_+1-{$Qe;F4w=7+V9Jq=T|inmqEFqoamr?Q$US0)eIZ2wCD7m+!NR!M0-@ZYV1J?q<`8I{tr7g-FB6~IyHG( zUa-+plZvBkq4wl(JM$b(^Y5`n9OI_?dG*HEZLHQ6IRY>hGkD1%{SlJ#Sftu3anMGQ zq+nkc#v1&{*5dM)r7z*@LZvyGU=!LEk+4Ga>JAg0jsjbJq3)psw--xyugBgTJ27Q_ z+qK7~AFf)&9V}h@bqJczzXSQW0mR zxQ7=!s0W*FZXdQX&d?uPyR6+Y1Z}BBKBnw4MM%5uT9E9vmr~`U-`fEjHD1^L71E>E zPxgHyr^(1QB2x`>C5lun{Zi&|Pr{#zt8UPn4;r+A#pgxW*<+2qRoTAJ$7fVy(-{;w zUms1r#4kQ`viJxGH-yJbc>2$RKY60fWi!V{P#PPe>dUJN$O1Tl5fB@f{>G>-2s21cTg3{Ig3#+eLQ%U9} z&6H97nw!Scoqe*M-2s(aAS3v$i1X1WJ)dnUlp!dE)06<4f#HWN;3#TT_Q^QuGZr;Y z)NpyMQl?4k)AYp`O#hONlhgV^(=LKlPS|mrsG3OM+N6$_&AmL|Ht#0RJftgfU&Ya! zptz_=BpEf2QGH%PFrc$QKRw&V>ZnFvJ&%DzBs%Dr7kn}qrnjAv%7qNOIe%La)A&Vw zW6{4T#9m_$_cYL)x_kOfdu^2o&&%w+HLw=%L4f%zE0q5b)}$r8v8UB45!WMeY~6^) zrlGNN+jsdC#!dlsAG6qVXNS5|5aJ(}{i;*^6-RQ?7oRIfw-b`&3_ONof-IYk`;S$( zEZ;dQ z8Z@s6wWpMjfPlJY7jPd!98+|=lC2>QnD9>U0}QHsik!0x2RZ7FhmmeaBWF<7Rh;J< zZ=}fl^zH*~0d1i~7>sw#b>gZ+*WHEbJ`#3JIZiCo3dIBQN8|DC9DhA?^-oCDYwNgp! zm*Agk)GZ;x;8$e{PvYe9yI8=Da2R=olXRq&2SV+AMkzNfp#56-*9Moab+4`w`D*9y z_!pyoDvS!|e!`2HAfyqU%GEbY)e&XgBXi|Zfi(?788eq&CO+w}F~Cczf!?vUx5=EN z-0y>9(?SnQ5MVwWi_lNI?_vw1nz%^=x=pq1AKS43U9*0gCox3JTxF6%DACKI%YrB^ z)n=u%8W->)jcChMqM#{Id;&P*a~$k&FrTN0+^9V3bRkt|&sXbMtfbMg}~f9ngI9`cv= z0q^;hn8%5T^PD`-#;l*ggpZrRTVO5-i4i}w_ds#5U{1d=>Lm=a6=Eut6(wKOJjohV zdRh`yNjUEgy{)7dbdV~AAADz5J+{hupBpXj1;KN!vn7NGwiStKdU42lF)SZNH<6lH zgv?6jkN1_t|7@sY?elZ$dxCm%SwZ?lDdz)m&{Er7I(=ts5+(hLNmGWk^?)@;&BQ{r zpn@4ulUsG;6M8*&&zw9~ZY%dVJs5yoNyJ1u$?N(W+;R{7`0=nljVOlk9))bkyyoMR(jnv`k1_*zB*qc2g(HD$08FZGk;s3i`Ddmgyet7km+ zu-~zqxkfQ~P@63c=W5}(UUSmDX6%U`tv`RI@qYX}98dAmF+A*O>kJaHa~AhROLLMB zlZeP0`K%iX8@bndx@hzDdlIbQlaCT{VEtY+#t&YTsd7u~H$^kM32v?v7I>B}w`Xu~ z62C9^p(NAb#{TxLQrJ13UlMGSmwFOlt?h4z{b6XM)1O|PextiRSyqg6jW`pQa>km@ zj|`f1uY2MmYDL704=~y>@8ywHP08xeHMqX1CKBx*`Q12f! zWFpY3b{eayI6@jix6W6x!IlFj-{uRz6PRHzMm>-y$f_#Dm!5!ZMm|DX=d)hbGM(Di zjAD|C7Ec^^_UQuf3u;fMn-6cQtr+#DA%$lhy5vd;a!jwHEa`9%`}4A_t3n*&gIm1_ zX@1Pd$UdY26BIMi{y@*@4^Lpp@ydqcjHJ^SF=>xCZu zq2$~X+1fRXW}voHL8#b6U)VLm`H}k-Wq!1x3+Gk)Ja+`eR2}|dI!oo!`oh3mh;|PZStQOn+aH{@@mC`5uY{7e(*w={K@sKi0^J8VIM*fPia!B- z28M5q?8q|LXq0lcfX;j>vZtetJVtfgm*hL)8H6SWg*uf#1%-L0y$Cc8Ll6kwn;PjSTi? z2wF$gJw#UpSzpoL(e7k$v9?M$v`zob25V#kR*=`ONo;+W)4n8`ISjBcHBNPd!OB@d zs~-Hi;Yi>Rl|%zX6kf-{HQ(06wlIZtI8i5!W-EkZfA0Kv)0qDqWz@t zT=UjNn~&K5$R~CwJ!778+8+U2@Qr*o+W1l(5*7r)>~32}fDvLyHVoVIVnD=zMur$( zjZBKt=RRb*aJ0oY8M4q1Z@P-?qSx?HTOl_chwHFQ}~zor8ejG-^+sL+?9n-^r1e80x6vb=!=2_)UcI3T2?zo=C1bRiP zbBBnsHJoUVa~*`6jE*l-3`NJbig4htrXE=?)f`QCo6jCwA!LoMREr~tsW6b*;2ntv zVk88~;jCWH$DhuvG)BEX)l%>Tf>jy^4Ki=Cvp)nPeQq8o9R`Q)xw@-WHGcP2fqSKJ zj_&9{ZcBRe?v>@R%vJ&Yir`hu|!I%ACAFwnN{8GP-){jPdpaLciaYq}f zfBs|Kj2xJj+$aH{}}@KG?om;`FF-;f+;)s6;AYGrH{W zB_fAVx0HmliMCCefRureuTnfd5zguby=2P`k}cCiQt0xb2A5QloK(hvKJ)6}LhzZk z@EA=d=(}B}>`&eM6VE%5?UHz1X_By16}3N0H3u@a%!~f=TWAPPJw*{J&g~Ve^6`G@ zigXQhD-0U#mQAM&FX4ozZZzz4FirukyVk&I0q z!CR{ON-=uZ;;FtOc5Rqe`Fw>;uYm-oz+98a_qb6dG#=HdaK@9Pwmne;XfWr^h0cZ0 zp<*Jxwfd%z_DeMz$tGP>Fyy|^Q@Pt@!Mi(t5rTD2!N&`fY4F#veGK!+wlYyxd&SB5 zYS4IiYE)t4>5>Si-uu2?A5av95x1&EWd{#9_h%kjRw3Arab?pfZv7%Rh&M#yWQ4Z_ zpY4UV6a*qDBki|{a;=iRi&A*bFc9V{;)4j|u%?`u3d9l3HIWGKSM;bQRlI3a zl!YUz7~Vj+jQ70e9@D#oP9c4gYJ2EPA@l|~B+^3&nKuVezA=|MhItkyzNqp!E<8!< z22P|=kigZWrAAF^4MFP~C(DR+j8wf`(b0DYF^R6Ka|e$+OPZ%JP#cFQfCeafR8}x+}?4eRu=QgXX0|qYuXeZ&X?qP?QIrFr>I}IjF4V(ME_Nh(SJ~{ zvOb&MT&$qC@_b~X6t|)5Wt$kvl!Eu*yH`O4ty>Nw`n8_*{1;gl|M-EJ^G;{E7WA$K zU6|DMKaSniR^Vt!I|O5hWat`~TV0Zkzb1oqfIM8{HoEcZO3Jc*l9OzMC-gFo_<$Ir zS1!8cx=&Zi6Spyu_rz#2`vj=XLPX*@3u_>rDUhpEX-O;SGEsb?z>Aah?Y(|_F(rLV z07e~RPcDpl+%Ja}rk4*s0TJr;zAW{p*Dc}qD5)N`skq%B1%_R&_E0li*BA@>gFBZ3 zU0<4g`q_N*m9rbv_&g4s4+WL^*PIJ>-Ge4d5w5K*qUh?j@Dil<48VHlp37yY-Gjlg zrg5!`7d2tg9u(l3{*YqJlU?)iK+&YV`dc(4L_wGooYwtBRvyn`D25ig`9#l$KfNDI zC|DATV4PgGru;S1e>?d1ZE47(1Bd|^2eJW4)eRQ;cn)84$qH#Za112P&4Vmx9A&Q3 zZy;bqo(>t+fqusE{OymS=m%+fUm;5zSYy?TLo_YVxr@ z&6&JNk5q(c1M@{v`(Ot)nXYehXOm3p77lwJAW$UzXeny3deSU+Rx;?;IR`+MS$arV9*^0Z3KPjnjz-*)Mw?$D8&h$g7~^% z_Pk`|t;PEu{M)?z?bh{HJH7i$%b7EC$99-2!v?HC2L{V>b~Ov|_zHX4+sy)pLLCJv zWBfⅆ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 literal 0 HcmV?d00001 diff --git a/docs/my-website/sidebars.js b/docs/my-website/sidebars.js index 764e9e721..d50e31c79 100644 --- a/docs/my-website/sidebars.js +++ b/docs/my-website/sidebars.js @@ -40,6 +40,7 @@ const sidebars = { "proxy/virtual_keys", "proxy/users", "proxy/ui", + "proxy/budget_alerts", "proxy/model_management", "proxy/health", "proxy/debugging", From 679c47d196110268068ccc014001591ab8a42de9 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Sat, 2 Mar 2024 19:11:37 -0800 Subject: [PATCH 23/23] fix(proxy_server.py): fix budget creation --- litellm/proxy/proxy_server.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index ddd702c22..ab8e7b2d6 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -1881,16 +1881,20 @@ async def generate_key_helper_fn( allowed_cache_controls = allowed_cache_controls # TODO: @ishaan-jaff: Migrate all budget tracking to use LiteLLM_BudgetTable - if prisma_client is not None: + if prisma_client is not None and key_soft_budget is not None: # create the Budget Row for the LiteLLM Verification Token budget_row = LiteLLM_BudgetTable( - soft_budget=key_soft_budget or litellm.default_soft_budget, + soft_budget=key_soft_budget, model_max_budget=model_max_budget or {}, - created_by=user_id, - updated_by=user_id, ) new_budget = prisma_client.jsonify_object(budget_row.json(exclude_none=True)) - _budget = await prisma_client.db.litellm_budgettable.create(data={**new_budget}) # type: ignore + _budget = await prisma_client.db.litellm_budgettable.create( + data={ + **new_budget, # type: ignore + "created_by": user_id, + "updated_by": user_id, + } + ) _budget_id = getattr(_budget, "id", None) try: