diff --git a/routstr/core/admin.py b/routstr/core/admin.py index 3e7bb8c7..05e3b687 100644 --- a/routstr/core/admin.py +++ b/routstr/core/admin.py @@ -5,7 +5,7 @@ from datetime import datetime, timezone from pathlib import Path from fastapi import APIRouter, Depends, HTTPException, Request -from fastapi.responses import HTMLResponse +from fastapi.responses import HTMLResponse, RedirectResponse from pydantic import BaseModel from sqlmodel import select @@ -811,10 +811,8 @@ async def dashboard(request: Request) -> str: @admin_router.get("/", response_class=HTMLResponse) -async def admin(request: Request) -> str: - if is_admin_authenticated(request): - return await dashboard(request) - return admin_auth() +async def admin(request: Request) -> RedirectResponse: + return RedirectResponse("/") @admin_router.get("/logs/{request_id}", response_class=HTMLResponse) diff --git a/routstr/core/main.py b/routstr/core/main.py index fa05013e..a0c55acb 100644 --- a/routstr/core/main.py +++ b/routstr/core/main.py @@ -175,14 +175,6 @@ async def info() -> dict: } -@app.get("/admin") -async def admin_redirect() -> RedirectResponse: - ui_dist_path = Path(__file__).parent.parent.parent / "ui_out" - if ui_dist_path.exists(): - return RedirectResponse("/") - return RedirectResponse("/admin/") - - @app.get("/v1/providers") async def providers() -> RedirectResponse: return RedirectResponse("/v1/providers/") @@ -202,6 +194,15 @@ if UI_DIST_PATH.exists() and UI_DIST_PATH.is_dir(): @app.get("/", include_in_schema=False) async def serve_root_ui() -> FileResponse: return FileResponse(UI_DIST_PATH / "index.html") + + # Add explicit route for /index.txt to redirect to / + @app.get("/index.txt", include_in_schema=False) + async def redirect_index_txt() -> RedirectResponse: + return RedirectResponse("/") + + @app.get("/admin") + async def admin_redirect() -> FileResponse: + return FileResponse(UI_DIST_PATH / "index.html") @app.get("/dashboard", include_in_schema=False) async def serve_dashboard_ui() -> FileResponse: @@ -210,26 +211,56 @@ if UI_DIST_PATH.exists() and UI_DIST_PATH.is_dir(): @app.get("/login", include_in_schema=False) async def serve_login_ui() -> FileResponse: return FileResponse(UI_DIST_PATH / "login" / "index.html") + + # Add explicit route for /login/index.txt to redirect to /login + @app.get("/login/index.txt", include_in_schema=False) + async def redirect_login_index_txt() -> RedirectResponse: + return RedirectResponse("/login") @app.get("/model", include_in_schema=False) async def serve_models_ui() -> FileResponse: return FileResponse(UI_DIST_PATH / "model" / "index.html") + + # Add explicit route for /model/index.txt to redirect to /model + @app.get("/model/index.txt", include_in_schema=False) + async def redirect_model_index_txt() -> RedirectResponse: + return RedirectResponse("/model") @app.get("/providers", include_in_schema=False) async def serve_providers_ui() -> FileResponse: return FileResponse(UI_DIST_PATH / "providers" / "index.html") + + # Add explicit route for /providers/index.txt to redirect to /providers + @app.get("/providers/index.txt", include_in_schema=False) + async def redirect_providers_index_txt() -> RedirectResponse: + return RedirectResponse("/providers") @app.get("/settings", include_in_schema=False) async def serve_settings_ui() -> FileResponse: return FileResponse(UI_DIST_PATH / "settings" / "index.html") + + # Add explicit route for /settings/index.txt to redirect to /settings + @app.get("/settings/index.txt", include_in_schema=False) + async def redirect_settings_index_txt() -> RedirectResponse: + return RedirectResponse("/settings") @app.get("/transactions", include_in_schema=False) async def serve_transactions_ui() -> FileResponse: return FileResponse(UI_DIST_PATH / "transactions" / "index.html") + + # Add explicit route for /transactions/index.txt to redirect to /transactions + @app.get("/transactions/index.txt", include_in_schema=False) + async def redirect_transactions_index_txt() -> RedirectResponse: + return RedirectResponse("/transactions") @app.get("/unauthorized", include_in_schema=False) async def serve_unauthorized_ui() -> FileResponse: return FileResponse(UI_DIST_PATH / "unauthorized" / "index.html") + + # Add explicit route for /unauthorized/index.txt to redirect to /unauthorized + @app.get("/unauthorized/index.txt", include_in_schema=False) + async def redirect_unauthorized_index_txt() -> RedirectResponse: + return RedirectResponse("/unauthorized") @app.get("/favicon.ico", include_in_schema=False) async def serve_favicon() -> FileResponse: diff --git a/ui_out/404.html b/ui_out/404.html index 280148a4..b8438748 100644 --- a/ui_out/404.html +++ b/ui_out/404.html @@ -1 +1 @@ -404: This page could not be found.Routstr

404

This page could not be found.

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

404

This page could not be found.

\ No newline at end of file diff --git a/ui_out/404/index.html b/ui_out/404/index.html index 280148a4..b8438748 100644 --- a/ui_out/404/index.html +++ b/ui_out/404/index.html @@ -1 +1 @@ -404: This page could not be found.Routstr

404

This page could not be found.

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

404

This page could not be found.

\ No newline at end of file diff --git a/ui_out/_next/static/vzojcgD75PgXdcu6NGfSb/_buildManifest.js b/ui_out/_next/static/MTOFXU9tRAr2QXrmYwVxq/_buildManifest.js similarity index 100% rename from ui_out/_next/static/vzojcgD75PgXdcu6NGfSb/_buildManifest.js rename to ui_out/_next/static/MTOFXU9tRAr2QXrmYwVxq/_buildManifest.js diff --git a/ui_out/_next/static/vzojcgD75PgXdcu6NGfSb/_ssgManifest.js b/ui_out/_next/static/MTOFXU9tRAr2QXrmYwVxq/_ssgManifest.js similarity index 100% rename from ui_out/_next/static/vzojcgD75PgXdcu6NGfSb/_ssgManifest.js rename to ui_out/_next/static/MTOFXU9tRAr2QXrmYwVxq/_ssgManifest.js diff --git a/ui_out/_next/static/chunks/255-a44a63a7b4273784.js b/ui_out/_next/static/chunks/255-a44a63a7b4273784.js deleted file mode 100644 index 078be24e..00000000 --- a/ui_out/_next/static/chunks/255-a44a63a7b4273784.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[255],{2738:(e,t,r)=>{r.d(t,{BT:()=>d,Wu:()=>l,ZB:()=>s,Zp:()=>a,aR:()=>n,wL:()=>p});var i=r(3422);r(4398);var o=r(9183);function a(e){let{className:t,...r}=e;return(0,i.jsx)("div",{"data-slot":"card",className:(0,o.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",t),...r})}function n(e){let{className:t,...r}=e;return(0,i.jsx)("div",{"data-slot":"card-header",className:(0,o.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...r})}function s(e){let{className:t,...r}=e;return(0,i.jsx)("div",{"data-slot":"card-title",className:(0,o.cn)("leading-none font-semibold",t),...r})}function d(e){let{className:t,...r}=e;return(0,i.jsx)("div",{"data-slot":"card-description",className:(0,o.cn)("text-muted-foreground text-sm",t),...r})}function l(e){let{className:t,...r}=e;return(0,i.jsx)("div",{"data-slot":"card-content",className:(0,o.cn)("px-6",t),...r})}function p(e){let{className:t,...r}=e;return(0,i.jsx)("div",{"data-slot":"card-footer",className:(0,o.cn)("flex items-center px-6 [.border-t]:pt-6",t),...r})}},3130:(e,t,r)=>{r.d(t,{J:()=>n});var i=r(3422);r(4398);var o=r(2996),a=r(9183);function n(e){let{className:t,...r}=e;return(0,i.jsx)(o.b,{"data-slot":"label",className:(0,a.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t),...r})}},6839:(e,t,r)=>{r.d(t,{Xi:()=>d,av:()=>l,j7:()=>s,tU:()=>n});var i=r(3422);r(4398);var o=r(1749),a=r(9183);function n(e){let{className:t,...r}=e;return(0,i.jsx)(o.bL,{"data-slot":"tabs",className:(0,a.cn)("flex flex-col gap-2",t),...r})}function s(e){let{className:t,...r}=e;return(0,i.jsx)(o.B8,{"data-slot":"tabs-list",className:(0,a.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",t),...r})}function d(e){let{className:t,...r}=e;return(0,i.jsx)(o.l9,{"data-slot":"tabs-trigger",className:(0,a.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...r})}function l(e){let{className:t,...r}=e;return(0,i.jsx)(o.UC,{"data-slot":"tabs-content",className:(0,a.cn)("flex-1 outline-none",t),...r})}},8561:(e,t,r)=>{r.d(t,{E:()=>s});var i=r(3422);r(4398);var o=r(4676),a=r(9183);let n=(0,o.F)("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground",success:"border-transparent bg-green-500 text-white hover:bg-green-500/80",warning:"border-transparent bg-yellow-500 text-white hover:bg-yellow-500/80",error:"border-transparent bg-red-500 text-white hover:bg-red-500/80"}},defaultVariants:{variant:"default"}});function s(e){let{className:t,variant:r,...o}=e;return(0,i.jsx)("div",{className:(0,a.cn)(n({variant:r}),t),...o})}},9119:(e,t,r)=>{r.d(t,{zQ:()=>d});var i=r(7916),o=r(9945);o.Ik({id:o.ai(),provider_type:o.Yj(),base_url:o.Yj(),api_key:o.Yj().optional(),api_version:o.Yj().nullable().optional(),enabled:o.zM(),provider_fee:o.ai().optional()}),o.Ik({provider_type:o.Yj(),base_url:o.Yj(),api_key:o.Yj(),api_version:o.Yj().nullable().optional(),enabled:o.zM().default(!0),provider_fee:o.ai().optional()}),o.Ik({provider_type:o.Yj().optional(),base_url:o.Yj().optional(),api_key:o.Yj().optional(),api_version:o.Yj().nullable().optional(),enabled:o.zM().optional(),provider_fee:o.ai().optional()});let a=o.Ik({prompt:o.ai().optional(),completion:o.ai().optional(),request:o.ai().optional(),image:o.ai().optional(),web_search:o.ai().optional(),internal_reasoning:o.ai().optional()}),n=o.Ik({modality:o.Yj().optional(),input_modalities:o.YO(o.Yj()).optional(),output_modalities:o.YO(o.Yj()).optional(),tokenizer:o.Yj().optional(),instruct_type:o.Yj().nullable().optional()}),s=o.Ik({id:o.Yj(),name:o.Yj(),description:o.Yj(),created:o.ai(),context_length:o.ai(),architecture:n.or(o.g1(o.bz())),pricing:a.or(o.g1(o.bz())),per_request_limits:o.g1(o.bz()).nullable().optional(),top_provider:o.g1(o.bz()).nullable().optional(),upstream_provider_id:o.ai().nullable().optional(),enabled:o.zM().default(!0)});o.Ik({provider:o.Ik({id:o.ai(),provider_type:o.Yj(),base_url:o.Yj()}),db_models:o.YO(s),remote_models:o.YO(s)});class d{static convertPricingToPerMillionTokens(e){if(!e)return e;let t={...e};return"number"==typeof t.prompt&&(t.prompt=1e6*t.prompt),"number"==typeof t.completion&&(t.completion=1e6*t.completion),"number"==typeof t.request&&(t.request=1e6*t.request),"number"==typeof t.image&&(t.image=1e6*t.image),t}static convertPricingToPerToken(e){if(!e)return e;let t={...e};return"number"==typeof t.prompt&&(t.prompt=t.prompt/1e6),"number"==typeof t.completion&&(t.completion=t.completion/1e6),"number"==typeof t.request&&(t.request=t.request/1e6),"number"==typeof t.image&&(t.image=t.image/1e6),t}static transformAdminModelToModel(e,t){var r,i;let o=this.convertPricingToPerMillionTokens(e.pricing),a=(null==o?void 0:o.prompt)||0,n=(null==o?void 0:o.completion)||0,s=(null==o?void 0:o.request)||0;return{id:e.id,name:e.name,full_name:e.name,description:e.description,modelType:(null==(r=e.architecture)?void 0:r.modality)||"text",isEnabled:e.enabled,createdAt:new Date(1e3*e.created).toISOString(),updatedAt:new Date(1e3*e.created).toISOString(),provider:t||"Unknown",url:"",api_key:void 0,input_cost:a,output_cost:n,min_cost_per_request:s,min_cash_per_request:0,contextLength:e.context_length,apiKeyRequired:!0,provider_id:null==(i=e.upstream_provider_id)?void 0:i.toString(),is_free:0===a&&0===n,soft_deleted:!e.enabled,has_own_api_key:!1,api_key_type:"group"}}static transformModelToAdminModel(e){let t=this.convertPricingToPerToken({prompt:e.input_cost,completion:e.output_cost,request:e.min_cost_per_request,image:0,web_search:0,internal_reasoning:0});return{id:e.id,name:e.name,description:e.description||"",created:Math.floor(new Date(e.createdAt).getTime()/1e3),context_length:e.contextLength||0,architecture:{modality:e.modelType,input_modalities:[e.modelType],output_modalities:[e.modelType],tokenizer:"",instruct_type:null},pricing:t,per_request_limits:null,top_provider:null,upstream_provider_id:e.provider_id?parseInt(e.provider_id):null,enabled:e.isEnabled}}static async getUpstreamProviders(){return await i.apiClient.get("/admin/api/upstream-providers")}static async getUpstreamProvider(e){return await i.apiClient.get("/admin/api/upstream-providers/".concat(e))}static async createUpstreamProvider(e){return await i.apiClient.post("/admin/api/upstream-providers",e)}static async updateUpstreamProvider(e,t){return await i.apiClient.patch("/admin/api/upstream-providers/".concat(e),t)}static async deleteUpstreamProvider(e){return await i.apiClient.delete("/admin/api/upstream-providers/".concat(e))}static async getProviderModels(e){return await i.apiClient.get("/admin/api/upstream-providers/".concat(e,"/models"))}static async createProviderModel(e,t){let r={...t,pricing:this.convertPricingToPerToken(t.pricing)};console.log("Creating provider model - pricing conversion:",{original:t.pricing,converted:r.pricing});let o=await i.apiClient.post("/admin/api/upstream-providers/".concat(e,"/models"),r);return{...o,pricing:this.convertPricingToPerMillionTokens(o.pricing)}}static async getProviderModel(e,t){let r=await i.apiClient.get("/admin/api/upstream-providers/".concat(e,"/models/").concat(encodeURIComponent(t)));return{...r,pricing:this.convertPricingToPerMillionTokens(r.pricing)}}static async getModel(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=await i.apiClient.post("/admin/api/models/get",{model_id:e,provider_id:t});return{...r,pricing:this.convertPricingToPerMillionTokens(r.pricing)}}static async updateProviderModel(e,t,r){let o={...r,pricing:this.convertPricingToPerToken(r.pricing)};console.log("Updating provider model - pricing conversion:",{original:r.pricing,converted:o.pricing});let a=await i.apiClient.patch("/admin/api/upstream-providers/".concat(e,"/models/").concat(encodeURIComponent(t)),o);return{...a,pricing:this.convertPricingToPerMillionTokens(a.pricing)}}static async deleteProviderModel(e,t){return await i.apiClient.delete("/admin/api/upstream-providers/".concat(e,"/models/").concat(encodeURIComponent(t)))}static async deleteAllProviderModels(e){return await i.apiClient.delete("/admin/api/upstream-providers/".concat(e,"/models"))}static async getModelsWithProviders(){let e=await this.getUpstreamProviders(),t=e.map(e=>({id:e.id.toString(),provider:e.provider_type,group_api_key:e.api_key,group_url:e.base_url,created_at:new Date().toISOString(),updated_at:new Date().toISOString()})),r=[],i=new Set;for(let t of e)try{let e=await this.getProviderModels(t.id);e.db_models.forEach(e=>{i.add(e.id);let o={...e,upstream_provider_id:t.id};r.push({...this.transformAdminModelToModel(o,t.provider_type),has_own_api_key:!1,api_key_type:"group"})}),e.remote_models.forEach(e=>{if(!i.has(e.id)){let i={...e,upstream_provider_id:t.id};r.push({...this.transformAdminModelToModel(i,t.provider_type),has_own_api_key:!1,api_key_type:"remote",soft_deleted:!1})}})}catch(e){console.error("Failed to fetch models for provider ".concat(t.id,":"),e)}return{models:r,groups:t}}static async createModelGroup(e){let t=await this.createUpstreamProvider({provider_type:e.provider,base_url:e.group_url||"",api_key:e.group_api_key||"",enabled:!0});return{id:t.id.toString(),provider:t.provider_type,group_api_key:t.api_key,group_url:t.base_url,created_at:new Date().toISOString(),updated_at:new Date().toISOString()}}static async updateModelGroup(e,t){let r=await this.updateUpstreamProvider(parseInt(e),{provider_type:t.provider,base_url:t.group_url,api_key:t.group_api_key});return{id:r.id.toString(),provider:r.provider_type,group_api_key:r.api_key,group_url:r.base_url,created_at:new Date().toISOString(),updated_at:new Date().toISOString()}}static async createModel(e){let t=e.provider_id?parseInt(e.provider_id):null,r={prompt:e.input_cost/1e6,completion:e.output_cost/1e6,request:e.min_cost_per_request||0,image:0,web_search:0,internal_reasoning:0},o={model_id:e.id||e.full_name,provider_id:t,name:e.name||e.full_name,description:e.description||"",created:Math.floor(Date.now()/1e3),context_length:e.contextLength||0,architecture:{modality:e.modelType||"text",input_modalities:[e.modelType||"text"],output_modalities:[e.modelType||"text"],tokenizer:"",instruct_type:null},pricing:this.convertPricingToPerToken(r),per_request_limits:null,top_provider:null,enabled:!1!==e.isEnabled},a=await i.apiClient.post("/admin/api/models/create",o);return this.transformAdminModelToModel({...a,pricing:this.convertPricingToPerMillionTokens(a.pricing)},e.provider)}static async updateModel(e,t){let r=t.provider_id?parseInt(t.provider_id):null,o=await this.getModel(e,r),a={prompt:t.input_cost/1e6,completion:t.output_cost/1e6,request:t.min_cost_per_request||0,image:0,web_search:0,internal_reasoning:0},n={...o,model_id:e,provider_id:r,pricing:a};t.name&&(n.name=t.name),t.description&&(n.description=t.description),void 0!==t.contextLength&&(n.context_length=t.contextLength),void 0!==t.isEnabled&&(n.enabled=t.isEnabled);let s=await i.apiClient.post("/admin/api/models/update",{...n,pricing:this.convertPricingToPerToken(n.pricing)});return this.transformAdminModelToModel({...s,pricing:this.convertPricingToPerMillionTokens(s.pricing)},t.provider)}static async deleteModel(e,t){let r=t?parseInt(t):null;return await i.apiClient.post("/admin/api/models/delete",{model_id:e,provider_id:r}),{message:"Model deleted successfully"}}static async softDeleteModel(e,t){let r=t?parseInt(t):null,o=await this.getModel(e,r);return await i.apiClient.post("/admin/api/models/update",{model_id:e,provider_id:r,...o,enabled:!1,pricing:this.convertPricingToPerToken(o.pricing)}),{message:"Model soft deleted successfully"}}static async deleteModels(e,t){if(!t)throw Error("provider_id is required to delete models");let r=parseInt(t);for(let t of e)await this.deleteProviderModel(r,t);return{deleted_count:e.length,message:"Models deleted successfully"}}static async softDeleteModels(e,t){if(!t)throw Error("provider_id is required to soft delete models");let r=parseInt(t);for(let t of e){let e=await this.getProviderModel(r,t);await this.updateProviderModel(r,t,{...e,enabled:!1})}return{deleted_count:e.length,message:"Models soft deleted successfully"}}static async bulkUpdateModels(e,t,r){if(!r)throw Error("provider_id is required for bulk updates");let i=[],o=0,a=parseInt(r);for(let r of(console.log("Bulk update not implemented, ignoring updates:",t),e))try{let e=await this.getProviderModel(a,r);await this.updateProviderModel(a,r,e),o++}catch(t){let e=t instanceof Error?t.message:"Unknown error";i.push("Failed to update ".concat(r,": ").concat(e))}return{updated_count:o,total_count:e.length,message:"Bulk update completed",errors:i}}static async deleteAllModels(){let e=await this.getUpstreamProviders(),t=0;for(let r of e)t+=(await this.deleteAllProviderModels(r.id)).deleted;return{deleted_count:t,message:"All models deleted successfully"}}static async deleteModelsByProvider(e){return{deleted_count:(await this.deleteAllProviderModels(parseInt(e))).deleted,message:"Provider models deleted successfully"}}static async restoreModels(e,t){if(!t)throw Error("provider_id is required to restore models");let r=parseInt(t);for(let t of e){let e=await this.getProviderModel(r,t);await this.updateProviderModel(r,t,{...e,enabled:!0})}return{restored_count:e.length,message:"Models restored successfully"}}static async refreshAllModels(){return{message:"Refresh not implemented for admin API"}}static async refreshModels(e){return console.log("Refresh models not implemented for admin API, ignoring data:",e),{message:"Refresh not implemented for admin API"}}static async getOpenRouterPresets(){return(await i.apiClient.get("/admin/api/openrouter-presets")).map(e=>({...e,pricing:this.convertPricingToPerMillionTokens(e.pricing)}))}static async getSettings(){return await i.apiClient.get("/admin/api/settings")}static async updateSettings(e){return await i.apiClient.patch("/admin/api/settings",e)}static async login(e){return await i.apiClient.post("/admin/api/login",{password:e})}static async logout(){return await i.apiClient.post("/admin/api/logout",{})}}},9442:(e,t,r)=>{r.d(t,{Fc:()=>s,TN:()=>d});var i=r(3422);r(4398);var o=r(4676),a=r(9183);let n=(0,o.F)("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function s(e){let{className:t,variant:r,...o}=e;return(0,i.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,a.cn)(n({variant:r}),t),...o})}function d(e){let{className:t,...r}=e;return(0,i.jsx)("div",{"data-slot":"alert-description",className:(0,a.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",t),...r})}}}]); \ No newline at end of file diff --git a/ui_out/_next/static/chunks/601-bd77b408e968f9da.js b/ui_out/_next/static/chunks/601-bd77b408e968f9da.js new file mode 100644 index 00000000..841900af --- /dev/null +++ b/ui_out/_next/static/chunks/601-bd77b408e968f9da.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[601],{2738:(e,t,i)=>{i.d(t,{BT:()=>l,Wu:()=>s,ZB:()=>d,Zp:()=>a,aR:()=>n,wL:()=>p});var r=i(3422);i(4398);var o=i(9183);function a(e){let{className:t,...i}=e;return(0,r.jsx)("div",{"data-slot":"card",className:(0,o.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",t),...i})}function n(e){let{className:t,...i}=e;return(0,r.jsx)("div",{"data-slot":"card-header",className:(0,o.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...i})}function d(e){let{className:t,...i}=e;return(0,r.jsx)("div",{"data-slot":"card-title",className:(0,o.cn)("leading-none font-semibold",t),...i})}function l(e){let{className:t,...i}=e;return(0,r.jsx)("div",{"data-slot":"card-description",className:(0,o.cn)("text-muted-foreground text-sm",t),...i})}function s(e){let{className:t,...i}=e;return(0,r.jsx)("div",{"data-slot":"card-content",className:(0,o.cn)("px-6",t),...i})}function p(e){let{className:t,...i}=e;return(0,r.jsx)("div",{"data-slot":"card-footer",className:(0,o.cn)("flex items-center px-6 [.border-t]:pt-6",t),...i})}},3130:(e,t,i)=>{i.d(t,{J:()=>n});var r=i(3422);i(4398);var o=i(2996),a=i(9183);function n(e){let{className:t,...i}=e;return(0,r.jsx)(o.b,{"data-slot":"label",className:(0,a.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t),...i})}},9119:(e,t,i)=>{i.d(t,{zQ:()=>l});var r=i(7916),o=i(9945);o.Ik({id:o.ai(),provider_type:o.Yj(),base_url:o.Yj(),api_key:o.Yj().optional(),api_version:o.Yj().nullable().optional(),enabled:o.zM(),provider_fee:o.ai().optional()}),o.Ik({provider_type:o.Yj(),base_url:o.Yj(),api_key:o.Yj(),api_version:o.Yj().nullable().optional(),enabled:o.zM().default(!0),provider_fee:o.ai().optional()}),o.Ik({provider_type:o.Yj().optional(),base_url:o.Yj().optional(),api_key:o.Yj().optional(),api_version:o.Yj().nullable().optional(),enabled:o.zM().optional(),provider_fee:o.ai().optional()});let a=o.Ik({prompt:o.ai().optional(),completion:o.ai().optional(),request:o.ai().optional(),image:o.ai().optional(),web_search:o.ai().optional(),internal_reasoning:o.ai().optional()}),n=o.Ik({modality:o.Yj().optional(),input_modalities:o.YO(o.Yj()).optional(),output_modalities:o.YO(o.Yj()).optional(),tokenizer:o.Yj().optional(),instruct_type:o.Yj().nullable().optional()}),d=o.Ik({id:o.Yj(),name:o.Yj(),description:o.Yj(),created:o.ai(),context_length:o.ai(),architecture:n.or(o.g1(o.bz())),pricing:a.or(o.g1(o.bz())),per_request_limits:o.g1(o.bz()).nullable().optional(),top_provider:o.g1(o.bz()).nullable().optional(),upstream_provider_id:o.ai().nullable().optional(),enabled:o.zM().default(!0)});o.Ik({provider:o.Ik({id:o.ai(),provider_type:o.Yj(),base_url:o.Yj()}),db_models:o.YO(d),remote_models:o.YO(d)});class l{static convertPricingToPerMillionTokens(e){if(!e)return e;let t={...e};return"number"==typeof t.prompt&&(t.prompt=1e6*t.prompt),"number"==typeof t.completion&&(t.completion=1e6*t.completion),"number"==typeof t.request&&(t.request=1e6*t.request),"number"==typeof t.image&&(t.image=1e6*t.image),t}static convertPricingToPerToken(e){if(!e)return e;let t={...e};return"number"==typeof t.prompt&&(t.prompt=t.prompt/1e6),"number"==typeof t.completion&&(t.completion=t.completion/1e6),"number"==typeof t.request&&(t.request=t.request/1e6),"number"==typeof t.image&&(t.image=t.image/1e6),t}static transformAdminModelToModel(e,t){var i,r;let o=this.convertPricingToPerMillionTokens(e.pricing),a=(null==o?void 0:o.prompt)||0,n=(null==o?void 0:o.completion)||0,d=(null==o?void 0:o.request)||0;return{id:e.id,name:e.name,full_name:e.name,description:e.description,modelType:(null==(i=e.architecture)?void 0:i.modality)||"text",isEnabled:e.enabled,createdAt:new Date(1e3*e.created).toISOString(),updatedAt:new Date(1e3*e.created).toISOString(),provider:t||"Unknown",url:"",api_key:void 0,input_cost:a,output_cost:n,min_cost_per_request:d,min_cash_per_request:0,contextLength:e.context_length,apiKeyRequired:!0,provider_id:null==(r=e.upstream_provider_id)?void 0:r.toString(),is_free:0===a&&0===n,soft_deleted:!e.enabled,has_own_api_key:!1,api_key_type:"group"}}static transformModelToAdminModel(e){let t=this.convertPricingToPerToken({prompt:e.input_cost,completion:e.output_cost,request:e.min_cost_per_request,image:0,web_search:0,internal_reasoning:0});return{id:e.id,name:e.name,description:e.description||"",created:Math.floor(new Date(e.createdAt).getTime()/1e3),context_length:e.contextLength||0,architecture:{modality:e.modelType,input_modalities:[e.modelType],output_modalities:[e.modelType],tokenizer:"",instruct_type:null},pricing:t,per_request_limits:null,top_provider:null,upstream_provider_id:e.provider_id?parseInt(e.provider_id):null,enabled:e.isEnabled}}static async getUpstreamProviders(){return await r.apiClient.get("/admin/api/upstream-providers")}static async getUpstreamProvider(e){return await r.apiClient.get("/admin/api/upstream-providers/".concat(e))}static async createUpstreamProvider(e){return await r.apiClient.post("/admin/api/upstream-providers",e)}static async updateUpstreamProvider(e,t){return await r.apiClient.patch("/admin/api/upstream-providers/".concat(e),t)}static async deleteUpstreamProvider(e){return await r.apiClient.delete("/admin/api/upstream-providers/".concat(e))}static async getProviderModels(e){return await r.apiClient.get("/admin/api/upstream-providers/".concat(e,"/models"))}static async createProviderModel(e,t){let i={...t,pricing:this.convertPricingToPerToken(t.pricing)};console.log("Creating provider model - pricing conversion:",{original:t.pricing,converted:i.pricing});let o=await r.apiClient.post("/admin/api/upstream-providers/".concat(e,"/models"),i);return{...o,pricing:this.convertPricingToPerMillionTokens(o.pricing)}}static async getProviderModel(e,t){let i=await r.apiClient.get("/admin/api/upstream-providers/".concat(e,"/models/").concat(encodeURIComponent(t)));return{...i,pricing:this.convertPricingToPerMillionTokens(i.pricing)}}static async getModel(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=await r.apiClient.post("/admin/api/models/get",{model_id:e,provider_id:t});return{...i,pricing:this.convertPricingToPerMillionTokens(i.pricing)}}static async updateProviderModel(e,t,i){let o={...i,pricing:this.convertPricingToPerToken(i.pricing)};console.log("Updating provider model - pricing conversion:",{original:i.pricing,converted:o.pricing});let a=await r.apiClient.patch("/admin/api/upstream-providers/".concat(e,"/models/").concat(encodeURIComponent(t)),o);return{...a,pricing:this.convertPricingToPerMillionTokens(a.pricing)}}static async deleteProviderModel(e,t){return await r.apiClient.delete("/admin/api/upstream-providers/".concat(e,"/models/").concat(encodeURIComponent(t)))}static async deleteAllProviderModels(e){return await r.apiClient.delete("/admin/api/upstream-providers/".concat(e,"/models"))}static async getModelsWithProviders(){let e=await this.getUpstreamProviders(),t=e.map(e=>({id:e.id.toString(),provider:e.provider_type,group_api_key:e.api_key,group_url:e.base_url,created_at:new Date().toISOString(),updated_at:new Date().toISOString()})),i=[],r=new Set;for(let t of e)try{let e=await this.getProviderModels(t.id);e.db_models.forEach(e=>{r.add(e.id);let o={...e,upstream_provider_id:t.id};i.push({...this.transformAdminModelToModel(o,t.provider_type),has_own_api_key:!1,api_key_type:"group"})}),e.remote_models.forEach(e=>{if(!r.has(e.id)){let r={...e,upstream_provider_id:t.id};i.push({...this.transformAdminModelToModel(r,t.provider_type),has_own_api_key:!1,api_key_type:"remote",soft_deleted:!1})}})}catch(e){console.error("Failed to fetch models for provider ".concat(t.id,":"),e)}return{models:i,groups:t}}static async createModelGroup(e){let t=await this.createUpstreamProvider({provider_type:e.provider,base_url:e.group_url||"",api_key:e.group_api_key||"",enabled:!0});return{id:t.id.toString(),provider:t.provider_type,group_api_key:t.api_key,group_url:t.base_url,created_at:new Date().toISOString(),updated_at:new Date().toISOString()}}static async updateModelGroup(e,t){let i=await this.updateUpstreamProvider(parseInt(e),{provider_type:t.provider,base_url:t.group_url,api_key:t.group_api_key});return{id:i.id.toString(),provider:i.provider_type,group_api_key:i.api_key,group_url:i.base_url,created_at:new Date().toISOString(),updated_at:new Date().toISOString()}}static async createModel(e){let t=e.provider_id?parseInt(e.provider_id):null,i={prompt:e.input_cost/1e6,completion:e.output_cost/1e6,request:e.min_cost_per_request||0,image:0,web_search:0,internal_reasoning:0},o={model_id:e.id||e.full_name,provider_id:t,name:e.name||e.full_name,description:e.description||"",created:Math.floor(Date.now()/1e3),context_length:e.contextLength||0,architecture:{modality:e.modelType||"text",input_modalities:[e.modelType||"text"],output_modalities:[e.modelType||"text"],tokenizer:"",instruct_type:null},pricing:this.convertPricingToPerToken(i),per_request_limits:null,top_provider:null,enabled:!1!==e.isEnabled},a=await r.apiClient.post("/admin/api/models/create",o);return this.transformAdminModelToModel({...a,pricing:this.convertPricingToPerMillionTokens(a.pricing)},e.provider)}static async updateModel(e,t){let i=t.provider_id?parseInt(t.provider_id):null,o=await this.getModel(e,i),a={prompt:t.input_cost/1e6,completion:t.output_cost/1e6,request:t.min_cost_per_request||0,image:0,web_search:0,internal_reasoning:0},n={...o,model_id:e,provider_id:i,pricing:a};t.name&&(n.name=t.name),t.description&&(n.description=t.description),void 0!==t.contextLength&&(n.context_length=t.contextLength),void 0!==t.isEnabled&&(n.enabled=t.isEnabled);let d=await r.apiClient.post("/admin/api/models/update",{...n,pricing:this.convertPricingToPerToken(n.pricing)});return this.transformAdminModelToModel({...d,pricing:this.convertPricingToPerMillionTokens(d.pricing)},t.provider)}static async deleteModel(e,t){let i=t?parseInt(t):null;return await r.apiClient.post("/admin/api/models/delete",{model_id:e,provider_id:i}),{message:"Model deleted successfully"}}static async softDeleteModel(e,t){let i=t?parseInt(t):null,o=await this.getModel(e,i);return await r.apiClient.post("/admin/api/models/update",{model_id:e,provider_id:i,...o,enabled:!1,pricing:this.convertPricingToPerToken(o.pricing)}),{message:"Model soft deleted successfully"}}static async deleteModels(e,t){if(!t)throw Error("provider_id is required to delete models");let i=parseInt(t);for(let t of e)await this.deleteProviderModel(i,t);return{deleted_count:e.length,message:"Models deleted successfully"}}static async softDeleteModels(e,t){if(!t)throw Error("provider_id is required to soft delete models");let i=parseInt(t);for(let t of e){let e=await this.getProviderModel(i,t);await this.updateProviderModel(i,t,{...e,enabled:!1})}return{deleted_count:e.length,message:"Models soft deleted successfully"}}static async bulkUpdateModels(e,t,i){if(!i)throw Error("provider_id is required for bulk updates");let r=[],o=0,a=parseInt(i);for(let i of(console.log("Bulk update not implemented, ignoring updates:",t),e))try{let e=await this.getProviderModel(a,i);await this.updateProviderModel(a,i,e),o++}catch(t){let e=t instanceof Error?t.message:"Unknown error";r.push("Failed to update ".concat(i,": ").concat(e))}return{updated_count:o,total_count:e.length,message:"Bulk update completed",errors:r}}static async deleteAllModels(){let e=await this.getUpstreamProviders(),t=0;for(let i of e)t+=(await this.deleteAllProviderModels(i.id)).deleted;return{deleted_count:t,message:"All models deleted successfully"}}static async deleteModelsByProvider(e){return{deleted_count:(await this.deleteAllProviderModels(parseInt(e))).deleted,message:"Provider models deleted successfully"}}static async restoreModels(e,t){if(!t)throw Error("provider_id is required to restore models");let i=parseInt(t);for(let t of e){let e=await this.getProviderModel(i,t);await this.updateProviderModel(i,t,{...e,enabled:!0})}return{restored_count:e.length,message:"Models restored successfully"}}static async refreshAllModels(){return{message:"Refresh not implemented for admin API"}}static async refreshModels(e){return console.log("Refresh models not implemented for admin API, ignoring data:",e),{message:"Refresh not implemented for admin API"}}static async getOpenRouterPresets(){return(await r.apiClient.get("/admin/api/openrouter-presets")).map(e=>({...e,pricing:this.convertPricingToPerMillionTokens(e.pricing)}))}static async getSettings(){return await r.apiClient.get("/admin/api/settings")}static async updateSettings(e){return await r.apiClient.patch("/admin/api/settings",e)}static async login(e){return await r.apiClient.post("/admin/api/login",{password:e})}static async logout(){return await r.apiClient.post("/admin/api/logout",{})}static async getTemporaryBalances(){return await r.apiClient.get("/admin/api/temporary-balances")}}o.Ik({hashed_key:o.Yj(),balance:o.ai(),total_spent:o.ai(),total_requests:o.ai(),refund_address:o.Yj().nullable(),key_expiry_time:o.ai().nullable()})}}]); \ No newline at end of file diff --git a/ui_out/_next/static/chunks/826-c15935d1c2416e5d.js b/ui_out/_next/static/chunks/826-c15935d1c2416e5d.js new file mode 100644 index 00000000..c8f329db --- /dev/null +++ b/ui_out/_next/static/chunks/826-c15935d1c2416e5d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[826],{246:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},413:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]])},484:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]])},552:(e,r,t)=>{t.d(r,{u:()=>_});var n=t(1407);let a=(e,r,t)=>{if(e&&"reportValidity"in e){let a=(0,n.Jt)(t,r);e.setCustomValidity(a&&a.message||""),e.reportValidity()}},l=(e,r)=>{for(let t in r.fields){let n=r.fields[t];n&&n.ref&&"reportValidity"in n.ref?a(n.ref,t,e):n&&n.refs&&n.refs.forEach(r=>a(r,t,e))}},o=(e,r)=>{r.shouldUseNativeValidation&&l(e,r);let t={};for(let a in e){let l=(0,n.Jt)(r.fields,a),o=Object.assign(e[a]||{},{ref:l&&l.ref});if(i(r.names||Object.keys(e),a)){let e=Object.assign({},(0,n.Jt)(t,a));(0,n.hZ)(e,"root",o),(0,n.hZ)(t,a,e)}else(0,n.hZ)(t,a,o)}return t},i=(e,r)=>{let t=s(r);return e.some(e=>s(e).match(`^${t}\\.\\d+`))};function s(e){return e.replace(/\]|\[/g,"")}function u(e,r,t){function n(t,n){var a;for(let l in Object.defineProperty(t,"_zod",{value:t._zod??{},enumerable:!1}),(a=t._zod).traits??(a.traits=new Set),t._zod.traits.add(e),r(t,n),o.prototype)l in t||Object.defineProperty(t,l,{value:o.prototype[l].bind(t)});t._zod.constr=o,t._zod.def=n}let a=t?.Parent??Object;class l extends a{}function o(e){var r;let a=t?.Parent?new l:this;for(let t of(n(a,e),(r=a._zod).deferred??(r.deferred=[]),a._zod.deferred))t();return a}return Object.defineProperty(l,"name",{value:e}),Object.defineProperty(o,"init",{value:n}),Object.defineProperty(o,Symbol.hasInstance,{value:r=>!!t?.Parent&&r instanceof t.Parent||r?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}Object.freeze({status:"aborted"}),Symbol("zod_brand");class d extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}let c={};function f(e){return e&&Object.assign(c,e),c}function p(e,r){return"bigint"==typeof r?r.toString():r}let h=Error.captureStackTrace?Error.captureStackTrace:(...e)=>{};function y(e){return"string"==typeof e?e:e?.message}function m(e,r,t){let n={...e,path:e.path??[]};return e.message||(n.message=y(e.inst?._zod.def?.error?.(e))??y(r?.error?.(e))??y(t.customError?.(e))??y(t.localeError?.(e))??"Invalid input"),delete n.inst,delete n.continue,r?.reportInput||delete n.input,n}Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MAX_VALUE,Number.MAX_VALUE;let v=(e,r)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:r,enumerable:!1}),Object.defineProperty(e,"message",{get:()=>JSON.stringify(r,p,2),enumerable:!0}),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},g=u("$ZodError",v),b=u("$ZodError",v,{Parent:Error}),w=(e,r,t,n)=>{let a=t?Object.assign(t,{async:!1}):{async:!1},l=e._zod.run({value:r,issues:[]},a);if(l instanceof Promise)throw new d;if(l.issues.length){let e=new(n?.Err??b)(l.issues.map(e=>m(e,a,f())));throw h(e,n?.callee),e}return l.value},x=async(e,r,t,n)=>{let a=t?Object.assign(t,{async:!0}):{async:!0},l=e._zod.run({value:r,issues:[]},a);if(l instanceof Promise&&(l=await l),l.issues.length){let e=new(n?.Err??b)(l.issues.map(e=>m(e,a,f())));throw h(e,n?.callee),e}return l.value};function k(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}function _(e,r,t){if(void 0===t&&(t={}),"_def"in e&&"object"==typeof e._def&&"typeName"in e._def)return function(a,i,s){try{return Promise.resolve(k(function(){return Promise.resolve(e["sync"===t.mode?"parse":"parseAsync"](a,r)).then(function(e){return s.shouldUseNativeValidation&&l({},s),{errors:{},values:t.raw?Object.assign({},a):e}})},function(e){if(Array.isArray(null==e?void 0:e.issues))return{values:{},errors:o(function(e,r){for(var t={};e.length;){var a=e[0],l=a.code,o=a.message,i=a.path.join(".");if(!t[i])if("unionErrors"in a){var s=a.unionErrors[0].errors[0];t[i]={message:s.message,type:s.code}}else t[i]={message:o,type:l};if("unionErrors"in a&&a.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),r){var u=t[i].types,d=u&&u[a.code];t[i]=(0,n.Gb)(i,r,t,l,d?[].concat(d,a.message):a.message)}e.shift()}return t}(e.errors,!s.shouldUseNativeValidation&&"all"===s.criteriaMode),s)};throw e}))}catch(e){return Promise.reject(e)}};if("_zod"in e&&"object"==typeof e._zod)return function(a,i,s){try{return Promise.resolve(k(function(){return Promise.resolve(("sync"===t.mode?w:x)(e,a,r)).then(function(e){return s.shouldUseNativeValidation&&l({},s),{errors:{},values:t.raw?Object.assign({},a):e}})},function(e){if(e instanceof g)return{values:{},errors:o(function(e,r){for(var t={};e.length;){var a=e[0],l=a.code,o=a.message,i=a.path.join(".");if(!t[i])if("invalid_union"===a.code&&a.errors.length>0){var s=a.errors[0][0];t[i]={message:s.message,type:s.code}}else t[i]={message:o,type:l};if("invalid_union"===a.code&&a.errors.forEach(function(r){return r.forEach(function(r){return e.push(r)})}),r){var u=t[i].types,d=u&&u[a.code];t[i]=(0,n.Gb)(i,r,t,l,d?[].concat(d,a.message):a.message)}e.shift()}return t}(e.issues,!s.shouldUseNativeValidation&&"all"===s.criteriaMode),s)};throw e}))}catch(e){return Promise.reject(e)}};throw Error("Invalid input: not a Zod schema")}},1220:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},1407:(e,r,t)=>{t.d(r,{Gb:()=>L,Jt:()=>b,Op:()=>j,hZ:()=>x,lN:()=>M,mN:()=>eA,xI:()=>O,xW:()=>C});var n=t(4398),a=e=>"checkbox"===e.type,l=e=>e instanceof Date,o=e=>null==e;let i=e=>"object"==typeof e;var s=e=>!o(e)&&!Array.isArray(e)&&i(e)&&!l(e),u=e=>s(e)&&e.target?a(e.target)?e.target.checked:e.target.value:e,d=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,c=(e,r)=>e.has(d(r)),f=e=>{let r=e.constructor&&e.constructor.prototype;return s(r)&&r.hasOwnProperty("isPrototypeOf")},p="undefined"!=typeof window&&void 0!==window.HTMLElement&&"undefined"!=typeof document;function h(e){let r,t=Array.isArray(e),n="undefined"!=typeof FileList&&e instanceof FileList;if(e instanceof Date)r=new Date(e);else if(!(!(p&&(e instanceof Blob||n))&&(t||s(e))))return e;else if(r=t?[]:Object.create(Object.getPrototypeOf(e)),t||f(e))for(let t in e)e.hasOwnProperty(t)&&(r[t]=h(e[t]));else r=e;return r}var y=e=>/^\w*$/.test(e),m=e=>void 0===e,v=e=>Array.isArray(e)?e.filter(Boolean):[],g=e=>v(e.replace(/["|']|\]/g,"").split(/\.|\[/)),b=(e,r,t)=>{if(!r||!s(e))return t;let n=(y(r)?[r]:g(r)).reduce((e,r)=>o(e)?e:e[r],e);return m(n)||n===e?m(e[r])?t:e[r]:n},w=e=>"boolean"==typeof e,x=(e,r,t)=>{let n=-1,a=y(r)?[r]:g(r),l=a.length,o=l-1;for(;++nn.useContext(S),j=e=>{let{children:r,...t}=e;return n.createElement(S.Provider,{value:t},r)};var E=(e,r,t,n=!0)=>{let a={defaultValues:r._defaultValues};for(let l in e)Object.defineProperty(a,l,{get:()=>(r._proxyFormState[l]!==_.all&&(r._proxyFormState[l]=!n||_.all),t&&(t[l]=!0),e[l])});return a};let D="undefined"!=typeof window?n.useLayoutEffect:n.useEffect;function M(e){let r=C(),{control:t=r.control,disabled:a,name:l,exact:o}=e||{},[i,s]=n.useState(t._formState),u=n.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1});return D(()=>t._subscribe({name:l,formState:u.current,exact:o,callback:e=>{a||s({...t._formState,...e})}}),[l,a,o]),n.useEffect(()=>{u.current.isValid&&t._setValid(!0)},[t]),n.useMemo(()=>E(i,t,u.current,!1),[i,t])}var R=e=>"string"==typeof e,V=(e,r,t,n,a)=>R(e)?(n&&r.watch.add(e),b(t,e,a)):Array.isArray(e)?e.map(e=>(n&&r.watch.add(e),b(t,e))):(n&&(r.watchAll=!0),t),F=e=>o(e)||!i(e);function P(e,r,t=new WeakSet){if(F(e)||F(r))return e===r;if(l(e)&&l(r))return e.getTime()===r.getTime();let n=Object.keys(e),a=Object.keys(r);if(n.length!==a.length)return!1;if(t.has(e)||t.has(r))return!0;for(let o of(t.add(e),t.add(r),n)){let n=e[o];if(!a.includes(o))return!1;if("ref"!==o){let e=r[o];if(l(n)&&l(e)||s(n)&&s(e)||Array.isArray(n)&&Array.isArray(e)?!P(n,e,t):n!==e)return!1}}return!0}let O=e=>e.render(function(e){let r=C(),{name:t,disabled:a,control:l=r.control,shouldUnregister:o,defaultValue:i}=e,s=c(l._names.array,t),d=n.useMemo(()=>b(l._formValues,t,b(l._defaultValues,t,i)),[l,t,i]),f=function(e){let r=C(),{control:t=r.control,name:a,defaultValue:l,disabled:o,exact:i,compute:s}=e||{},u=n.useRef(l),d=n.useRef(s),c=n.useRef(void 0);d.current=s;let f=n.useMemo(()=>t._getWatch(a,u.current),[t,a]),[p,h]=n.useState(d.current?d.current(f):f);return D(()=>t._subscribe({name:a,formState:{values:!0},exact:i,callback:e=>{if(!o){let r=V(a,t._names,e.values||t._formValues,!1,u.current);if(d.current){let e=d.current(r);P(e,c.current)||(h(e),c.current=e)}else h(r)}}}),[t,o,a,i]),n.useEffect(()=>t._removeUnmounted()),p}({control:l,name:t,defaultValue:d,exact:!0}),p=M({control:l,name:t,exact:!0}),y=n.useRef(e),v=n.useRef(void 0),g=n.useRef(l.register(t,{...e.rules,value:f,...w(e.disabled)?{disabled:e.disabled}:{}}));y.current=e;let _=n.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!b(p.errors,t)},isDirty:{enumerable:!0,get:()=>!!b(p.dirtyFields,t)},isTouched:{enumerable:!0,get:()=>!!b(p.touchedFields,t)},isValidating:{enumerable:!0,get:()=>!!b(p.validatingFields,t)},error:{enumerable:!0,get:()=>b(p.errors,t)}}),[p,t]),A=n.useCallback(e=>g.current.onChange({target:{value:u(e),name:t},type:k.CHANGE}),[t]),S=n.useCallback(()=>g.current.onBlur({target:{value:b(l._formValues,t),name:t},type:k.BLUR}),[t,l._formValues]),j=n.useCallback(e=>{let r=b(l._fields,t);r&&e&&(r._f.ref={focus:()=>e.focus&&e.focus(),select:()=>e.select&&e.select(),setCustomValidity:r=>e.setCustomValidity(r),reportValidity:()=>e.reportValidity()})},[l._fields,t]),E=n.useMemo(()=>({name:t,value:f,...w(a)||p.disabled?{disabled:p.disabled||a}:{},onChange:A,onBlur:S,ref:j}),[t,a,p.disabled,A,S,j,f]);return n.useEffect(()=>{let e=l._options.shouldUnregister||o,r=v.current;r&&r!==t&&!s&&l.unregister(r),l.register(t,{...y.current.rules,...w(y.current.disabled)?{disabled:y.current.disabled}:{}});let n=(e,r)=>{let t=b(l._fields,e);t&&t._f&&(t._f.mount=r)};if(n(t,!0),e){let e=h(b(l._options.defaultValues,t,y.current.defaultValue));x(l._defaultValues,t,e),m(b(l._formValues,t))&&x(l._formValues,t,e)}return s||l.register(t),v.current=t,()=>{(s?e&&!l._state.action:e)?l.unregister(t):n(t,!1)}},[t,l,s,o]),n.useEffect(()=>{l._setDisabledField({disabled:a,name:t})},[a,t,l]),n.useMemo(()=>({field:E,formState:p,fieldState:_}),[E,p,_])}(e));var L=(e,r,t,n,a)=>r?{...t[e],types:{...t[e]&&t[e].types?t[e].types:{},[n]:a||!0}}:{},T=e=>Array.isArray(e)?e:[e],N=()=>{let e=[];return{get observers(){return e},next:r=>{for(let t of e)t.next&&t.next(r)},subscribe:r=>(e.push(r),{unsubscribe:()=>{e=e.filter(e=>e!==r)}}),unsubscribe:()=>{e=[]}}},I=e=>s(e)&&!Object.keys(e).length,z=e=>"file"===e.type,K=e=>"function"==typeof e,U=e=>{if(!p)return!1;let r=e?e.ownerDocument:0;return e instanceof(r&&r.defaultView?r.defaultView.HTMLElement:HTMLElement)},H=e=>"select-multiple"===e.type,q=e=>"radio"===e.type,B=e=>q(e)||a(e),G=e=>U(e)&&e.isConnected;function W(e,r){let t=Array.isArray(r)?r:y(r)?[r]:g(r),n=1===t.length?e:function(e,r){let t=r.slice(0,-1).length,n=0;for(;n{for(let r in e)if(K(e[r]))return!0;return!1};function Z(e){return Array.isArray(e)||s(e)&&!X(e)}function Y(e,r={}){for(let t in e)Z(e[t])?(r[t]=Array.isArray(e[t])?[]:{},Y(e[t],r[t])):m(e[t])||(r[t]=!0);return r}function $(e,r,t){for(let n in t||(t=Y(r)),e)Z(e[n])?m(r)||F(t[n])?t[n]=Y(e[n],Array.isArray(e[n])?[]:{}):$(e[n],o(r)?{}:r[n],t[n]):t[n]=!P(e[n],r[n]);return t}let J={value:!1,isValid:!1},Q={value:!0,isValid:!0};var ee=e=>{if(Array.isArray(e)){if(e.length>1){let r=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:r,isValid:!!r.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!m(e[0].attributes.value)?m(e[0].value)||""===e[0].value?Q:{value:e[0].value,isValid:!0}:Q:J}return J},er=(e,{valueAsNumber:r,valueAsDate:t,setValueAs:n})=>m(e)?e:r?""===e?NaN:e?+e:e:t&&R(e)?new Date(e):n?n(e):e;let et={isValid:!1,value:null};var en=e=>Array.isArray(e)?e.reduce((e,r)=>r&&r.checked&&!r.disabled?{isValid:!0,value:r.value}:e,et):et;function ea(e){let r=e.ref;return z(r)?r.files:q(r)?en(e.refs).value:H(r)?[...r.selectedOptions].map(({value:e})=>e):a(r)?ee(e.refs).value:er(m(r.value)?e.ref.value:r.value,e)}var el=(e,r,t,n)=>{let a={};for(let t of e){let e=b(r,t);e&&x(a,t,e._f)}return{criteriaMode:t,names:[...e],fields:a,shouldUseNativeValidation:n}},eo=e=>e instanceof RegExp,ei=e=>m(e)?e:eo(e)?e.source:s(e)?eo(e.value)?e.value.source:e.value:e,es=e=>({isOnSubmit:!e||e===_.onSubmit,isOnBlur:e===_.onBlur,isOnChange:e===_.onChange,isOnAll:e===_.all,isOnTouch:e===_.onTouched});let eu="AsyncFunction";var ed=e=>!!e&&!!e.validate&&!!(K(e.validate)&&e.validate.constructor.name===eu||s(e.validate)&&Object.values(e.validate).find(e=>e.constructor.name===eu)),ec=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),ef=(e,r,t)=>!t&&(r.watchAll||r.watch.has(e)||[...r.watch].some(r=>e.startsWith(r)&&/^\.\w+/.test(e.slice(r.length))));let ep=(e,r,t,n)=>{for(let a of t||Object.keys(e)){let t=b(e,a);if(t){let{_f:e,...l}=t;if(e){if(e.refs&&e.refs[0]&&r(e.refs[0],a)&&!n)return!0;else if(e.ref&&r(e.ref,e.name)&&!n)return!0;else if(ep(l,r))break}else if(s(l)&&ep(l,r))break}}};function eh(e,r,t){let n=b(e,t);if(n||y(t))return{error:n,name:t};let a=t.split(".");for(;a.length;){let n=a.join("."),l=b(r,n),o=b(e,n);if(l&&!Array.isArray(l)&&t!==n)break;if(o&&o.type)return{name:n,error:o};if(o&&o.root&&o.root.type)return{name:`${n}.root`,error:o.root};a.pop()}return{name:t}}var ey=(e,r,t,n)=>{t(e);let{name:a,...l}=e;return I(l)||Object.keys(l).length>=Object.keys(r).length||Object.keys(l).find(e=>r[e]===(!n||_.all))},em=(e,r,t)=>!e||!r||e===r||T(e).some(e=>e&&(t?e===r:e.startsWith(r)||r.startsWith(e))),ev=(e,r,t,n,a)=>!a.isOnAll&&(!t&&a.isOnTouch?!(r||e):(t?n.isOnBlur:a.isOnBlur)?!e:(t?!n.isOnChange:!a.isOnChange)||e),eg=(e,r)=>!v(b(e,r)).length&&W(e,r),eb=(e,r,t)=>{let n=T(b(e,t));return x(n,"root",r[t]),x(e,t,n),e};function ew(e,r,t="validate"){if(R(e)||Array.isArray(e)&&e.every(R)||w(e)&&!e)return{type:t,message:R(e)?e:"",ref:r}}var ex=e=>s(e)&&!eo(e)?e:{value:e,message:""},ek=async(e,r,t,n,l,i)=>{let{ref:u,refs:d,required:c,maxLength:f,minLength:p,min:h,max:y,pattern:v,validate:g,name:x,valueAsNumber:k,mount:_}=e._f,S=b(t,x);if(!_||r.has(x))return{};let C=d?d[0]:u,j=e=>{l&&C.reportValidity&&(C.setCustomValidity(w(e)?"":e||""),C.reportValidity())},E={},D=q(u),M=a(u),V=(k||z(u))&&m(u.value)&&m(S)||U(u)&&""===u.value||""===S||Array.isArray(S)&&!S.length,F=L.bind(null,x,n,E),P=(e,r,t,n=A.maxLength,a=A.minLength)=>{let l=e?r:t;E[x]={type:e?n:a,message:l,ref:u,...F(e?n:a,l)}};if(i?!Array.isArray(S)||!S.length:c&&(!(D||M)&&(V||o(S))||w(S)&&!S||M&&!ee(d).isValid||D&&!en(d).isValid)){let{value:e,message:r}=R(c)?{value:!!c,message:c}:ex(c);if(e&&(E[x]={type:A.required,message:r,ref:C,...F(A.required,r)},!n))return j(r),E}if(!V&&(!o(h)||!o(y))){let e,r,t=ex(y),a=ex(h);if(o(S)||isNaN(S)){let n=u.valueAsDate||new Date(S),l=e=>new Date(new Date().toDateString()+" "+e),o="time"==u.type,i="week"==u.type;R(t.value)&&S&&(e=o?l(S)>l(t.value):i?S>t.value:n>new Date(t.value)),R(a.value)&&S&&(r=o?l(S)t.value),o(a.value)||(r=n+e.value,a=!o(r.value)&&S.length<+r.value;if((t||a)&&(P(t,e.message,r.message),!n))return j(E[x].message),E}if(v&&!V&&R(S)){let{value:e,message:r}=ex(v);if(eo(e)&&!S.match(e)&&(E[x]={type:A.pattern,message:r,ref:u,...F(A.pattern,r)},!n))return j(r),E}if(g){if(K(g)){let e=ew(await g(S,t),C);if(e&&(E[x]={...e,...F(A.validate,e.message)},!n))return j(e.message),E}else if(s(g)){let e={};for(let r in g){if(!I(e)&&!n)break;let a=ew(await g[r](S,t),C,r);a&&(e={...a,...F(r,a.message)},j(a.message),n&&(E[x]=e))}if(!I(e)&&(E[x]={ref:C,...e},!n))return E}}return j(!0),E};let e_={mode:_.onSubmit,reValidateMode:_.onChange,shouldFocusError:!0};function eA(e={}){let r=n.useRef(void 0),t=n.useRef(void 0),[i,d]=n.useState({isDirty:!1,isValidating:!1,isLoading:K(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,isReady:!1,defaultValues:K(e.defaultValues)?void 0:e.defaultValues});if(!r.current)if(e.formControl)r.current={...e.formControl,formState:i},e.defaultValues&&!K(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:t,...n}=function(e={}){let r,t={...e_,...e},n={submitCount:0,isDirty:!1,isReady:!1,isLoading:K(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},i={},d=(s(t.defaultValues)||s(t.values))&&h(t.defaultValues||t.values)||{},f=t.shouldUnregister?{}:h(d),y={action:!1,mount:!1,watch:!1},g={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set},A=0,S={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},C={...S},j={array:N(),state:N()},E=t.criteriaMode===_.all,D=e=>r=>{clearTimeout(A),A=setTimeout(e,r)},M=async e=>{if(!t.disabled&&(S.isValid||C.isValid||e)){let e=t.resolver?I((await Z()).errors):await J(i,!0);e!==n.isValid&&j.state.next({isValid:e})}},F=(e,r)=>{!t.disabled&&(S.isValidating||S.validatingFields||C.isValidating||C.validatingFields)&&((e||Array.from(g.mount)).forEach(e=>{e&&(r?x(n.validatingFields,e,r):W(n.validatingFields,e))}),j.state.next({validatingFields:n.validatingFields,isValidating:!I(n.validatingFields)}))},O=(e,r)=>{x(n.errors,e,r),j.state.next({errors:n.errors})},L=(e,r,t,n)=>{let a=b(i,e);if(a){let l=b(f,e,m(t)?b(d,e):t);m(l)||n&&n.defaultChecked||r?x(f,e,r?l:ea(a._f)):et(e,l),y.mount&&M()}},q=(e,r,a,l,o)=>{let i=!1,s=!1,u={name:e};if(!t.disabled){if(!a||l){(S.isDirty||C.isDirty)&&(s=n.isDirty,n.isDirty=u.isDirty=Q(),i=s!==u.isDirty);let t=P(b(d,e),r);s=!!b(n.dirtyFields,e),t?W(n.dirtyFields,e):x(n.dirtyFields,e,!0),u.dirtyFields=n.dirtyFields,i=i||(S.dirtyFields||C.dirtyFields)&&!t!==s}if(a){let r=b(n.touchedFields,e);r||(x(n.touchedFields,e,a),u.touchedFields=n.touchedFields,i=i||(S.touchedFields||C.touchedFields)&&r!==a)}i&&o&&j.state.next(u)}return i?u:{}},X=(e,a,l,o)=>{let i=b(n.errors,e),s=(S.isValid||C.isValid)&&w(a)&&n.isValid!==a;if(t.delayError&&l?(r=D(()=>O(e,l)))(t.delayError):(clearTimeout(A),r=null,l?x(n.errors,e,l):W(n.errors,e)),(l?!P(i,l):i)||!I(o)||s){let r={...o,...s&&w(a)?{isValid:a}:{},errors:n.errors,name:e};n={...n,...r},j.state.next(r)}},Z=async e=>{F(e,!0);let r=await t.resolver(f,t.context,el(e||g.mount,i,t.criteriaMode,t.shouldUseNativeValidation));return F(e),r},Y=async e=>{let{errors:r}=await Z(e);if(e)for(let t of e){let e=b(r,t);e?x(n.errors,t,e):W(n.errors,t)}else n.errors=r;return r},J=async(e,r,a={valid:!0})=>{for(let l in e){let o=e[l];if(o){let{_f:e,...l}=o;if(e){let l=g.array.has(e.name),i=o._f&&ed(o._f);i&&S.validatingFields&&F([e.name],!0);let s=await ek(o,g.disabled,f,E,t.shouldUseNativeValidation&&!r,l);if(i&&S.validatingFields&&F([e.name]),s[e.name]&&(a.valid=!1,r))break;r||(b(s,e.name)?l?eb(n.errors,s,e.name):x(n.errors,e.name,s[e.name]):W(n.errors,e.name))}I(l)||await J(l,r,a)}}return a.valid},Q=(e,r)=>!t.disabled&&(e&&r&&x(f,e,r),!P(eA(),d)),ee=(e,r,t)=>V(e,g,{...y.mount?f:m(r)?d:R(e)?{[e]:r}:r},t,r),et=(e,r,t={})=>{let n=b(i,e),l=r;if(n){let t=n._f;t&&(t.disabled||x(f,e,er(r,t)),l=U(t.ref)&&o(r)?"":r,H(t.ref)?[...t.ref.options].forEach(e=>e.selected=l.includes(e.value)):t.refs?a(t.ref)?t.refs.forEach(e=>{e.defaultChecked&&e.disabled||(Array.isArray(l)?e.checked=!!l.find(r=>r===e.value):e.checked=l===e.value||!!l)}):t.refs.forEach(e=>e.checked=e.value===l):z(t.ref)?t.ref.value="":(t.ref.value=l,t.ref.type||j.state.next({name:e,values:h(f)})))}(t.shouldDirty||t.shouldTouch)&&q(e,l,t.shouldTouch,t.shouldDirty,!0),t.shouldValidate&&ex(e)},en=(e,r,t)=>{for(let n in r){if(!r.hasOwnProperty(n))return;let a=r[n],o=e+"."+n,u=b(i,o);(g.array.has(e)||s(a)||u&&!u._f)&&!l(a)?en(o,a,t):et(o,a,t)}},eo=(e,r,t={})=>{let a=b(i,e),l=g.array.has(e),s=h(r);x(f,e,s),l?(j.array.next({name:e,values:h(f)}),(S.isDirty||S.dirtyFields||C.isDirty||C.dirtyFields)&&t.shouldDirty&&j.state.next({name:e,dirtyFields:$(d,f),isDirty:Q(e,s)})):!a||a._f||o(s)?et(e,s,t):en(e,s,t),ef(e,g)&&j.state.next({...n,name:e}),j.state.next({name:y.mount?e:void 0,values:h(f)})},eu=async e=>{y.mount=!0;let a=e.target,o=a.name,s=!0,d=b(i,o),c=e=>{s=Number.isNaN(e)||l(e)&&isNaN(e.getTime())||P(e,b(f,o,e))},p=es(t.mode),m=es(t.reValidateMode);if(d){let l,y,v=a.type?ea(d._f):u(e),w=e.type===k.BLUR||e.type===k.FOCUS_OUT,_=!ec(d._f)&&!t.resolver&&!b(n.errors,o)&&!d._f.deps||ev(w,b(n.touchedFields,o),n.isSubmitted,m,p),A=ef(o,g,w);x(f,o,v),w?a&&a.readOnly||(d._f.onBlur&&d._f.onBlur(e),r&&r(0)):d._f.onChange&&d._f.onChange(e);let D=q(o,v,w),R=!I(D)||A;if(w||j.state.next({name:o,type:e.type,values:h(f)}),_)return(S.isValid||C.isValid)&&("onBlur"===t.mode?w&&M():w||M()),R&&j.state.next({name:o,...A?{}:D});if(!w&&A&&j.state.next({...n}),t.resolver){let{errors:e}=await Z([o]);if(c(v),s){let r=eh(n.errors,i,o),t=eh(e,i,r.name||o);l=t.error,o=t.name,y=I(e)}}else F([o],!0),l=(await ek(d,g.disabled,f,E,t.shouldUseNativeValidation))[o],F([o]),c(v),s&&(l?y=!1:(S.isValid||C.isValid)&&(y=await J(i,!0)));s&&(d._f.deps&&(!Array.isArray(d._f.deps)||d._f.deps.length>0)&&ex(d._f.deps),X(o,y,l,D))}},ew=(e,r)=>{if(b(n.errors,r)&&e.focus)return e.focus(),1},ex=async(e,r={})=>{let a,l,o=T(e);if(t.resolver){let r=await Y(m(e)?e:o);a=I(r),l=e?!o.some(e=>b(r,e)):a}else e?((l=(await Promise.all(o.map(async e=>{let r=b(i,e);return await J(r&&r._f?{[e]:r}:r)}))).every(Boolean))||n.isValid)&&M():l=a=await J(i);return j.state.next({...!R(e)||(S.isValid||C.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},errors:n.errors}),r.shouldFocus&&!l&&ep(i,ew,e?o:g.mount),l},eA=(e,r)=>{let t={...y.mount?f:d};return r&&(t=function e(r,t){let n={};for(let a in r)if(r.hasOwnProperty(a)){let l=r[a],o=t[a];if(l&&s(l)&&o){let r=e(l,o);s(r)&&(n[a]=r)}else r[a]&&(n[a]=o)}return n}(r.dirtyFields?n.dirtyFields:n.touchedFields,t)),m(e)?t:R(e)?b(t,e):e.map(e=>b(t,e))},eS=(e,r)=>({invalid:!!b((r||n).errors,e),isDirty:!!b((r||n).dirtyFields,e),error:b((r||n).errors,e),isValidating:!!b(n.validatingFields,e),isTouched:!!b((r||n).touchedFields,e)}),eC=(e,r,t)=>{let a=(b(i,e,{_f:{}})._f||{}).ref,{ref:l,message:o,type:s,...u}=b(n.errors,e)||{};x(n.errors,e,{...u,...r,ref:a}),j.state.next({name:e,errors:n.errors,isValid:!1}),t&&t.shouldFocus&&a&&a.focus&&a.focus()},ej=e=>j.state.subscribe({next:r=>{em(e.name,r.name,e.exact)&&ey(r,e.formState||S,eO,e.reRenderRoot)&&e.callback({values:{...f},...n,...r,defaultValues:d})}}).unsubscribe,eE=(e,r={})=>{for(let a of e?T(e):g.mount)g.mount.delete(a),g.array.delete(a),r.keepValue||(W(i,a),W(f,a)),r.keepError||W(n.errors,a),r.keepDirty||W(n.dirtyFields,a),r.keepTouched||W(n.touchedFields,a),r.keepIsValidating||W(n.validatingFields,a),t.shouldUnregister||r.keepDefaultValue||W(d,a);j.state.next({values:h(f)}),j.state.next({...n,...!r.keepDirty?{}:{isDirty:Q()}}),r.keepIsValid||M()},eD=({disabled:e,name:r})=>{(w(e)&&y.mount||e||g.disabled.has(r))&&(e?g.disabled.add(r):g.disabled.delete(r))},eM=(e,r={})=>{let n=b(i,e),a=w(r.disabled)||w(t.disabled);return x(i,e,{...n||{},_f:{...n&&n._f?n._f:{ref:{name:e}},name:e,mount:!0,...r}}),g.mount.add(e),n?eD({disabled:w(r.disabled)?r.disabled:t.disabled,name:e}):L(e,!0,r.value),{...a?{disabled:r.disabled||t.disabled}:{},...t.progressive?{required:!!r.required,min:ei(r.min),max:ei(r.max),minLength:ei(r.minLength),maxLength:ei(r.maxLength),pattern:ei(r.pattern)}:{},name:e,onChange:eu,onBlur:eu,ref:a=>{if(a){eM(e,r),n=b(i,e);let t=m(a.value)&&a.querySelectorAll&&a.querySelectorAll("input,select,textarea")[0]||a,l=B(t),o=n._f.refs||[];(l?o.find(e=>e===t):t===n._f.ref)||(x(i,e,{_f:{...n._f,...l?{refs:[...o.filter(G),t,...Array.isArray(b(d,e))?[{}]:[]],ref:{type:t.type,name:e}}:{ref:t}}}),L(e,!1,void 0,t))}else(n=b(i,e,{}))._f&&(n._f.mount=!1),(t.shouldUnregister||r.shouldUnregister)&&!(c(g.array,e)&&y.action)&&g.unMount.add(e)}}},eR=()=>t.shouldFocusError&&ep(i,ew,g.mount),eV=(e,r)=>async a=>{let l;a&&(a.preventDefault&&a.preventDefault(),a.persist&&a.persist());let o=h(f);if(j.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:r}=await Z();n.errors=e,o=h(r)}else await J(i);if(g.disabled.size)for(let e of g.disabled)W(o,e);if(W(n.errors,"root"),I(n.errors)){j.state.next({errors:{}});try{await e(o,a)}catch(e){l=e}}else r&&await r({...n.errors},a),eR(),setTimeout(eR);if(j.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:I(n.errors)&&!l,submitCount:n.submitCount+1,errors:n.errors}),l)throw l},eF=(e,r={})=>{let a=e?h(e):d,l=h(a),o=I(e),s=o?d:l;if(r.keepDefaultValues||(d=a),!r.keepValues){if(r.keepDirtyValues)for(let e of Array.from(new Set([...g.mount,...Object.keys($(d,f))])))b(n.dirtyFields,e)?x(s,e,b(f,e)):eo(e,b(s,e));else{if(p&&m(e))for(let e of g.mount){let r=b(i,e);if(r&&r._f){let e=Array.isArray(r._f.refs)?r._f.refs[0]:r._f.ref;if(U(e)){let r=e.closest("form");if(r){r.reset();break}}}}if(r.keepFieldsRef)for(let e of g.mount)eo(e,b(s,e));else i={}}f=t.shouldUnregister?r.keepDefaultValues?h(d):{}:h(s),j.array.next({values:{...s}}),j.state.next({values:{...s}})}g={mount:r.keepDirtyValues?g.mount:new Set,unMount:new Set,array:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:""},y.mount=!S.isValid||!!r.keepIsValid||!!r.keepDirtyValues,y.watch=!!t.shouldUnregister,j.state.next({submitCount:r.keepSubmitCount?n.submitCount:0,isDirty:!o&&(r.keepDirty?n.isDirty:!!(r.keepDefaultValues&&!P(e,d))),isSubmitted:!!r.keepIsSubmitted&&n.isSubmitted,dirtyFields:o?{}:r.keepDirtyValues?r.keepDefaultValues&&f?$(d,f):n.dirtyFields:r.keepDefaultValues&&e?$(d,e):r.keepDirty?n.dirtyFields:{},touchedFields:r.keepTouched?n.touchedFields:{},errors:r.keepErrors?n.errors:{},isSubmitSuccessful:!!r.keepIsSubmitSuccessful&&n.isSubmitSuccessful,isSubmitting:!1,defaultValues:d})},eP=(e,r)=>eF(K(e)?e(f):e,r),eO=e=>{n={...n,...e}},eL={control:{register:eM,unregister:eE,getFieldState:eS,handleSubmit:eV,setError:eC,_subscribe:ej,_runSchema:Z,_focusError:eR,_getWatch:ee,_getDirty:Q,_setValid:M,_setFieldArray:(e,r=[],a,l,o=!0,s=!0)=>{if(l&&a&&!t.disabled){if(y.action=!0,s&&Array.isArray(b(i,e))){let r=a(b(i,e),l.argA,l.argB);o&&x(i,e,r)}if(s&&Array.isArray(b(n.errors,e))){let r=a(b(n.errors,e),l.argA,l.argB);o&&x(n.errors,e,r),eg(n.errors,e)}if((S.touchedFields||C.touchedFields)&&s&&Array.isArray(b(n.touchedFields,e))){let r=a(b(n.touchedFields,e),l.argA,l.argB);o&&x(n.touchedFields,e,r)}(S.dirtyFields||C.dirtyFields)&&(n.dirtyFields=$(d,f)),j.state.next({name:e,isDirty:Q(e,r),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else x(f,e,r)},_setDisabledField:eD,_setErrors:e=>{n.errors=e,j.state.next({errors:n.errors,isValid:!1})},_getFieldArray:e=>v(b(y.mount?f:d,e,t.shouldUnregister?b(d,e,[]):[])),_reset:eF,_resetDefaultValues:()=>K(t.defaultValues)&&t.defaultValues().then(e=>{eP(e,t.resetOptions),j.state.next({isLoading:!1})}),_removeUnmounted:()=>{for(let e of g.unMount){let r=b(i,e);r&&(r._f.refs?r._f.refs.every(e=>!G(e)):!G(r._f.ref))&&eE(e)}g.unMount=new Set},_disableForm:e=>{w(e)&&(j.state.next({disabled:e}),ep(i,(r,t)=>{let n=b(i,t);n&&(r.disabled=n._f.disabled||e,Array.isArray(n._f.refs)&&n._f.refs.forEach(r=>{r.disabled=n._f.disabled||e}))},0,!1))},_subjects:j,_proxyFormState:S,get _fields(){return i},get _formValues(){return f},get _state(){return y},set _state(value){y=value},get _defaultValues(){return d},get _names(){return g},set _names(value){g=value},get _formState(){return n},get _options(){return t},set _options(value){t={...t,...value}}},subscribe:e=>(y.mount=!0,C={...C,...e.formState},ej({...e,formState:C})),trigger:ex,register:eM,handleSubmit:eV,watch:(e,r)=>K(e)?j.state.subscribe({next:t=>"values"in t&&e(ee(void 0,r),t)}):ee(e,r,!0),setValue:eo,getValues:eA,reset:eP,resetField:(e,r={})=>{b(i,e)&&(m(r.defaultValue)?eo(e,h(b(d,e))):(eo(e,r.defaultValue),x(d,e,h(r.defaultValue))),r.keepTouched||W(n.touchedFields,e),r.keepDirty||(W(n.dirtyFields,e),n.isDirty=r.defaultValue?Q(e,h(b(d,e))):Q()),!r.keepError&&(W(n.errors,e),S.isValid&&M()),j.state.next({...n}))},clearErrors:e=>{e&&T(e).forEach(e=>W(n.errors,e)),j.state.next({errors:e?n.errors:{}})},unregister:eE,setError:eC,setFocus:(e,r={})=>{let t=b(i,e),n=t&&t._f;if(n){let e=n.refs?n.refs[0]:n.ref;e.focus&&(e.focus(),r.shouldSelect&&K(e.select)&&e.select())}},getFieldState:eS};return{...eL,formControl:eL}}(e);r.current={...n,formState:i}}let f=r.current.control;return f._options=e,D(()=>{let e=f._subscribe({formState:f._proxyFormState,callback:()=>d({...f._formState}),reRenderRoot:!0});return d(e=>({...e,isReady:!0})),f._formState.isReady=!0,e},[f]),n.useEffect(()=>f._disableForm(e.disabled),[f,e.disabled]),n.useEffect(()=>{e.mode&&(f._options.mode=e.mode),e.reValidateMode&&(f._options.reValidateMode=e.reValidateMode)},[f,e.mode,e.reValidateMode]),n.useEffect(()=>{e.errors&&(f._setErrors(e.errors),f._focusError())},[f,e.errors]),n.useEffect(()=>{e.shouldUnregister&&f._subjects.state.next({values:f._getWatch()})},[f,e.shouldUnregister]),n.useEffect(()=>{if(f._proxyFormState.isDirty){let e=f._getDirty();e!==i.isDirty&&f._subjects.state.next({isDirty:e})}},[f,i.isDirty]),n.useEffect(()=>{e.values&&!P(e.values,t.current)?(f._reset(e.values,{keepFieldsRef:!0,...f._options.resetOptions}),t.current=e.values,d(e=>({...e}))):f._resetDefaultValues()},[f,e.values]),n.useEffect(()=>{f._state.mount||(f._setValid(),f._state.mount=!0),f._state.watch&&(f._state.watch=!1,f._subjects.state.next({...f._formState})),f._removeUnmounted()}),r.current.formState=E(i,f),r.current}},1853:(e,r,t)=>{t.d(r,{C1:()=>_,bL:()=>x});var n=t(4398),a=t(2050),l=t(940),o=t(6687),i=t(6657),s=t(6017),u=t(4753),d=t(6175),c=t(3780),f=t(3422),p="Checkbox",[h,y]=(0,l.A)(p),[m,v]=h(p);function g(e){let{__scopeCheckbox:r,checked:t,children:a,defaultChecked:l,disabled:o,form:s,name:u,onCheckedChange:d,required:c,value:h="on",internal_do_not_use_render:y}=e,[v,g]=(0,i.i)({prop:t,defaultProp:null!=l&&l,onChange:d,caller:p}),[b,w]=n.useState(null),[x,k]=n.useState(null),_=n.useRef(!1),A=!b||!!s||!!b.closest("form"),S={checked:v,disabled:o,setChecked:g,control:b,setControl:w,name:u,form:s,value:h,hasConsumerStoppedPropagationRef:_,required:c,defaultChecked:!C(l)&&l,isFormControl:A,bubbleInput:x,setBubbleInput:k};return(0,f.jsx)(m,{scope:r,...S,children:"function"==typeof y?y(S):a})}var b="CheckboxTrigger",w=n.forwardRef((e,r)=>{let{__scopeCheckbox:t,onKeyDown:l,onClick:i,...s}=e,{control:u,value:d,disabled:p,checked:h,required:y,setControl:m,setChecked:g,hasConsumerStoppedPropagationRef:w,isFormControl:x,bubbleInput:k}=v(b,t),_=(0,a.s)(r,m),A=n.useRef(h);return n.useEffect(()=>{let e=null==u?void 0:u.form;if(e){let r=()=>g(A.current);return e.addEventListener("reset",r),()=>e.removeEventListener("reset",r)}},[u,g]),(0,f.jsx)(c.sG.button,{type:"button",role:"checkbox","aria-checked":C(h)?"mixed":h,"aria-required":y,"data-state":j(h),"data-disabled":p?"":void 0,disabled:p,value:d,...s,ref:_,onKeyDown:(0,o.mK)(l,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,o.mK)(i,e=>{g(e=>!!C(e)||!e),k&&x&&(w.current=e.isPropagationStopped(),w.current||e.stopPropagation())})})});w.displayName=b;var x=n.forwardRef((e,r)=>{let{__scopeCheckbox:t,name:n,checked:a,defaultChecked:l,required:o,disabled:i,value:s,onCheckedChange:u,form:d,...c}=e;return(0,f.jsx)(g,{__scopeCheckbox:t,checked:a,defaultChecked:l,disabled:i,required:o,onCheckedChange:u,name:n,form:d,value:s,internal_do_not_use_render:e=>{let{isFormControl:n}=e;return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(w,{...c,ref:r,__scopeCheckbox:t}),n&&(0,f.jsx)(S,{__scopeCheckbox:t})]})}})});x.displayName=p;var k="CheckboxIndicator",_=n.forwardRef((e,r)=>{let{__scopeCheckbox:t,forceMount:n,...a}=e,l=v(k,t);return(0,f.jsx)(d.C,{present:n||C(l.checked)||!0===l.checked,children:(0,f.jsx)(c.sG.span,{"data-state":j(l.checked),"data-disabled":l.disabled?"":void 0,...a,ref:r,style:{pointerEvents:"none",...e.style}})})});_.displayName=k;var A="CheckboxBubbleInput",S=n.forwardRef((e,r)=>{let{__scopeCheckbox:t,...l}=e,{control:o,hasConsumerStoppedPropagationRef:i,checked:d,defaultChecked:p,required:h,disabled:y,name:m,value:g,form:b,bubbleInput:w,setBubbleInput:x}=v(A,t),k=(0,a.s)(r,x),_=(0,s.Z)(d),S=(0,u.X)(o);n.useEffect(()=>{if(!w)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,r=!i.current;if(_!==d&&e){let t=new Event("click",{bubbles:r});w.indeterminate=C(d),e.call(w,!C(d)&&d),w.dispatchEvent(t)}},[w,_,d,i]);let j=n.useRef(!C(d)&&d);return(0,f.jsx)(c.sG.input,{type:"checkbox","aria-hidden":!0,defaultChecked:null!=p?p:j.current,required:h,disabled:y,name:m,value:g,form:b,...l,tabIndex:-1,ref:k,style:{...l.style,...S,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function C(e){return"indeterminate"===e}function j(e){return C(e)?"indeterminate":e?"checked":"unchecked"}S.displayName=A},1935:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]])},2034:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]])},2267:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},2390:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]])},2434:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},2612:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]])},3545:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("square-check-big",[["path",{d:"M21 10.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.5",key:"1uzm8b"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},3728:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},3732:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("ellipsis-vertical",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]])},4713:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("volume-2",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]])},4717:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]])},4938:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("file-text",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]])},4963:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]])},5195:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]])},6049:(e,r,t)=>{t.d(r,{UC:()=>eW,q7:()=>eX,ZL:()=>eG,bL:()=>eq,wv:()=>eZ,l9:()=>eB});var n=t(4398),a=t(6687),l=t(2050),o=t(940),i=t(6657),s=t(3780),u=t(6383),d=t(7689),c=t(3213),f=t(7),p=t(3138),h=t(6565),y=t(6387),m=t(1732),v=t(6175),g=t(718),b=t(6950),w=t(7589),x=t(3871),k=t(3338),_=t(3422),A=["Enter"," "],S=["ArrowUp","PageDown","End"],C=["ArrowDown","PageUp","Home",...S],j={ltr:[...A,"ArrowRight"],rtl:[...A,"ArrowLeft"]},E={ltr:["ArrowLeft"],rtl:["ArrowRight"]},D="Menu",[M,R,V]=(0,u.N)(D),[F,P]=(0,o.A)(D,[V,y.Bk,g.RG]),O=(0,y.Bk)(),L=(0,g.RG)(),[T,N]=F(D),[I,z]=F(D),K=e=>{let{__scopeMenu:r,open:t=!1,children:a,dir:l,onOpenChange:o,modal:i=!0}=e,s=O(r),[u,c]=n.useState(null),f=n.useRef(!1),p=(0,w.c)(o),h=(0,d.jH)(l);return n.useEffect(()=>{let e=()=>{f.current=!0,document.addEventListener("pointerdown",r,{capture:!0,once:!0}),document.addEventListener("pointermove",r,{capture:!0,once:!0})},r=()=>f.current=!1;return document.addEventListener("keydown",e,{capture:!0}),()=>{document.removeEventListener("keydown",e,{capture:!0}),document.removeEventListener("pointerdown",r,{capture:!0}),document.removeEventListener("pointermove",r,{capture:!0})}},[]),(0,_.jsx)(y.bL,{...s,children:(0,_.jsx)(T,{scope:r,open:t,onOpenChange:p,content:u,onContentChange:c,children:(0,_.jsx)(I,{scope:r,onClose:n.useCallback(()=>p(!1),[p]),isUsingKeyboardRef:f,dir:h,modal:i,children:a})})})};K.displayName=D;var U=n.forwardRef((e,r)=>{let{__scopeMenu:t,...n}=e,a=O(t);return(0,_.jsx)(y.Mz,{...a,...n,ref:r})});U.displayName="MenuAnchor";var H="MenuPortal",[q,B]=F(H,{forceMount:void 0}),G=e=>{let{__scopeMenu:r,forceMount:t,children:n,container:a}=e,l=N(H,r);return(0,_.jsx)(q,{scope:r,forceMount:t,children:(0,_.jsx)(v.C,{present:t||l.open,children:(0,_.jsx)(m.Z,{asChild:!0,container:a,children:n})})})};G.displayName=H;var W="MenuContent",[X,Z]=F(W),Y=n.forwardRef((e,r)=>{let t=B(W,e.__scopeMenu),{forceMount:n=t.forceMount,...a}=e,l=N(W,e.__scopeMenu),o=z(W,e.__scopeMenu);return(0,_.jsx)(M.Provider,{scope:e.__scopeMenu,children:(0,_.jsx)(v.C,{present:n||l.open,children:(0,_.jsx)(M.Slot,{scope:e.__scopeMenu,children:o.modal?(0,_.jsx)($,{...a,ref:r}):(0,_.jsx)(J,{...a,ref:r})})})})}),$=n.forwardRef((e,r)=>{let t=N(W,e.__scopeMenu),o=n.useRef(null),i=(0,l.s)(r,o);return n.useEffect(()=>{let e=o.current;if(e)return(0,x.Eq)(e)},[]),(0,_.jsx)(ee,{...e,ref:i,trapFocus:t.open,disableOutsidePointerEvents:t.open,disableOutsideScroll:!0,onFocusOutside:(0,a.mK)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>t.onOpenChange(!1)})}),J=n.forwardRef((e,r)=>{let t=N(W,e.__scopeMenu);return(0,_.jsx)(ee,{...e,ref:r,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>t.onOpenChange(!1)})}),Q=(0,b.TL)("MenuContent.ScrollLock"),ee=n.forwardRef((e,r)=>{let{__scopeMenu:t,loop:o=!1,trapFocus:i,onOpenAutoFocus:s,onCloseAutoFocus:u,disableOutsidePointerEvents:d,onEntryFocus:h,onEscapeKeyDown:m,onPointerDownOutside:v,onFocusOutside:b,onInteractOutside:w,onDismiss:x,disableOutsideScroll:A,...j}=e,E=N(W,t),D=z(W,t),M=O(t),V=L(t),F=R(t),[P,T]=n.useState(null),I=n.useRef(null),K=(0,l.s)(r,I,E.onContentChange),U=n.useRef(0),H=n.useRef(""),q=n.useRef(0),B=n.useRef(null),G=n.useRef("right"),Z=n.useRef(0),Y=A?k.A:n.Fragment,$=e=>{var r,t;let n=H.current+e,a=F().filter(e=>!e.disabled),l=document.activeElement,o=null==(r=a.find(e=>e.ref.current===l))?void 0:r.textValue,i=function(e,r,t){var n;let a=r.length>1&&Array.from(r).every(e=>e===r[0])?r[0]:r,l=t?e.indexOf(t):-1,o=(n=Math.max(l,0),e.map((r,t)=>e[(n+t)%e.length]));1===a.length&&(o=o.filter(e=>e!==t));let i=o.find(e=>e.toLowerCase().startsWith(a.toLowerCase()));return i!==t?i:void 0}(a.map(e=>e.textValue),n,o),s=null==(t=a.find(e=>e.textValue===i))?void 0:t.ref.current;!function e(r){H.current=r,window.clearTimeout(U.current),""!==r&&(U.current=window.setTimeout(()=>e(""),1e3))}(n),s&&setTimeout(()=>s.focus())};n.useEffect(()=>()=>window.clearTimeout(U.current),[]),(0,f.Oh)();let J=n.useCallback(e=>{var r,t;return G.current===(null==(r=B.current)?void 0:r.side)&&function(e,r){return!!r&&function(e,r){let{x:t,y:n}=e,a=!1;for(let e=0,l=r.length-1;en!=c>n&&t<(d-s)*(n-u)/(c-u)+s&&(a=!a)}return a}({x:e.clientX,y:e.clientY},r)}(e,null==(t=B.current)?void 0:t.area)},[]);return(0,_.jsx)(X,{scope:t,searchRef:H,onItemEnter:n.useCallback(e=>{J(e)&&e.preventDefault()},[J]),onItemLeave:n.useCallback(e=>{var r;J(e)||(null==(r=I.current)||r.focus(),T(null))},[J]),onTriggerLeave:n.useCallback(e=>{J(e)&&e.preventDefault()},[J]),pointerGraceTimerRef:q,onPointerGraceIntentChange:n.useCallback(e=>{B.current=e},[]),children:(0,_.jsx)(Y,{...A?{as:Q,allowPinchZoom:!0}:void 0,children:(0,_.jsx)(p.n,{asChild:!0,trapped:i,onMountAutoFocus:(0,a.mK)(s,e=>{var r;e.preventDefault(),null==(r=I.current)||r.focus({preventScroll:!0})}),onUnmountAutoFocus:u,children:(0,_.jsx)(c.qW,{asChild:!0,disableOutsidePointerEvents:d,onEscapeKeyDown:m,onPointerDownOutside:v,onFocusOutside:b,onInteractOutside:w,onDismiss:x,children:(0,_.jsx)(g.bL,{asChild:!0,...V,dir:D.dir,orientation:"vertical",loop:o,currentTabStopId:P,onCurrentTabStopIdChange:T,onEntryFocus:(0,a.mK)(h,e=>{D.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,_.jsx)(y.UC,{role:"menu","aria-orientation":"vertical","data-state":eC(E.open),"data-radix-menu-content":"",dir:D.dir,...M,...j,ref:K,style:{outline:"none",...j.style},onKeyDown:(0,a.mK)(j.onKeyDown,e=>{let r=e.target.closest("[data-radix-menu-content]")===e.currentTarget,t=e.ctrlKey||e.altKey||e.metaKey,n=1===e.key.length;r&&("Tab"===e.key&&e.preventDefault(),!t&&n&&$(e.key));let a=I.current;if(e.target!==a||!C.includes(e.key))return;e.preventDefault();let l=F().filter(e=>!e.disabled).map(e=>e.ref.current);S.includes(e.key)&&l.reverse(),function(e){let r=document.activeElement;for(let t of e)if(t===r||(t.focus(),document.activeElement!==r))return}(l)}),onBlur:(0,a.mK)(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(U.current),H.current="")}),onPointerMove:(0,a.mK)(e.onPointerMove,eD(e=>{let r=e.target,t=Z.current!==e.clientX;e.currentTarget.contains(r)&&t&&(G.current=e.clientX>Z.current?"right":"left",Z.current=e.clientX)}))})})})})})})});Y.displayName=W;var er=n.forwardRef((e,r)=>{let{__scopeMenu:t,...n}=e;return(0,_.jsx)(s.sG.div,{role:"group",...n,ref:r})});er.displayName="MenuGroup";var et=n.forwardRef((e,r)=>{let{__scopeMenu:t,...n}=e;return(0,_.jsx)(s.sG.div,{...n,ref:r})});et.displayName="MenuLabel";var en="MenuItem",ea="menu.itemSelect",el=n.forwardRef((e,r)=>{let{disabled:t=!1,onSelect:o,...i}=e,u=n.useRef(null),d=z(en,e.__scopeMenu),c=Z(en,e.__scopeMenu),f=(0,l.s)(r,u),p=n.useRef(!1);return(0,_.jsx)(eo,{...i,ref:f,disabled:t,onClick:(0,a.mK)(e.onClick,()=>{let e=u.current;if(!t&&e){let r=new CustomEvent(ea,{bubbles:!0,cancelable:!0});e.addEventListener(ea,e=>null==o?void 0:o(e),{once:!0}),(0,s.hO)(e,r),r.defaultPrevented?p.current=!1:d.onClose()}}),onPointerDown:r=>{var t;null==(t=e.onPointerDown)||t.call(e,r),p.current=!0},onPointerUp:(0,a.mK)(e.onPointerUp,e=>{var r;p.current||null==(r=e.currentTarget)||r.click()}),onKeyDown:(0,a.mK)(e.onKeyDown,e=>{let r=""!==c.searchRef.current;t||r&&" "===e.key||A.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});el.displayName=en;var eo=n.forwardRef((e,r)=>{let{__scopeMenu:t,disabled:o=!1,textValue:i,...u}=e,d=Z(en,t),c=L(t),f=n.useRef(null),p=(0,l.s)(r,f),[h,y]=n.useState(!1),[m,v]=n.useState("");return n.useEffect(()=>{let e=f.current;if(e){var r;v((null!=(r=e.textContent)?r:"").trim())}},[u.children]),(0,_.jsx)(M.ItemSlot,{scope:t,disabled:o,textValue:null!=i?i:m,children:(0,_.jsx)(g.q7,{asChild:!0,...c,focusable:!o,children:(0,_.jsx)(s.sG.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":o||void 0,"data-disabled":o?"":void 0,...u,ref:p,onPointerMove:(0,a.mK)(e.onPointerMove,eD(e=>{o?d.onItemLeave(e):(d.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:(0,a.mK)(e.onPointerLeave,eD(e=>d.onItemLeave(e))),onFocus:(0,a.mK)(e.onFocus,()=>y(!0)),onBlur:(0,a.mK)(e.onBlur,()=>y(!1))})})})}),ei=n.forwardRef((e,r)=>{let{checked:t=!1,onCheckedChange:n,...l}=e;return(0,_.jsx)(ey,{scope:e.__scopeMenu,checked:t,children:(0,_.jsx)(el,{role:"menuitemcheckbox","aria-checked":ej(t)?"mixed":t,...l,ref:r,"data-state":eE(t),onSelect:(0,a.mK)(l.onSelect,()=>null==n?void 0:n(!!ej(t)||!t),{checkForDefaultPrevented:!1})})})});ei.displayName="MenuCheckboxItem";var es="MenuRadioGroup",[eu,ed]=F(es,{value:void 0,onValueChange:()=>{}}),ec=n.forwardRef((e,r)=>{let{value:t,onValueChange:n,...a}=e,l=(0,w.c)(n);return(0,_.jsx)(eu,{scope:e.__scopeMenu,value:t,onValueChange:l,children:(0,_.jsx)(er,{...a,ref:r})})});ec.displayName=es;var ef="MenuRadioItem",ep=n.forwardRef((e,r)=>{let{value:t,...n}=e,l=ed(ef,e.__scopeMenu),o=t===l.value;return(0,_.jsx)(ey,{scope:e.__scopeMenu,checked:o,children:(0,_.jsx)(el,{role:"menuitemradio","aria-checked":o,...n,ref:r,"data-state":eE(o),onSelect:(0,a.mK)(n.onSelect,()=>{var e;return null==(e=l.onValueChange)?void 0:e.call(l,t)},{checkForDefaultPrevented:!1})})})});ep.displayName=ef;var eh="MenuItemIndicator",[ey,em]=F(eh,{checked:!1}),ev=n.forwardRef((e,r)=>{let{__scopeMenu:t,forceMount:n,...a}=e,l=em(eh,t);return(0,_.jsx)(v.C,{present:n||ej(l.checked)||!0===l.checked,children:(0,_.jsx)(s.sG.span,{...a,ref:r,"data-state":eE(l.checked)})})});ev.displayName=eh;var eg=n.forwardRef((e,r)=>{let{__scopeMenu:t,...n}=e;return(0,_.jsx)(s.sG.div,{role:"separator","aria-orientation":"horizontal",...n,ref:r})});eg.displayName="MenuSeparator";var eb=n.forwardRef((e,r)=>{let{__scopeMenu:t,...n}=e,a=O(t);return(0,_.jsx)(y.i3,{...a,...n,ref:r})});eb.displayName="MenuArrow";var[ew,ex]=F("MenuSub"),ek="MenuSubTrigger",e_=n.forwardRef((e,r)=>{let t=N(ek,e.__scopeMenu),o=z(ek,e.__scopeMenu),i=ex(ek,e.__scopeMenu),s=Z(ek,e.__scopeMenu),u=n.useRef(null),{pointerGraceTimerRef:d,onPointerGraceIntentChange:c}=s,f={__scopeMenu:e.__scopeMenu},p=n.useCallback(()=>{u.current&&window.clearTimeout(u.current),u.current=null},[]);return n.useEffect(()=>p,[p]),n.useEffect(()=>{let e=d.current;return()=>{window.clearTimeout(e),c(null)}},[d,c]),(0,_.jsx)(U,{asChild:!0,...f,children:(0,_.jsx)(eo,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":t.open,"aria-controls":i.contentId,"data-state":eC(t.open),...e,ref:(0,l.t)(r,i.onTriggerChange),onClick:r=>{var n;null==(n=e.onClick)||n.call(e,r),e.disabled||r.defaultPrevented||(r.currentTarget.focus(),t.open||t.onOpenChange(!0))},onPointerMove:(0,a.mK)(e.onPointerMove,eD(r=>{s.onItemEnter(r),!r.defaultPrevented&&(e.disabled||t.open||u.current||(s.onPointerGraceIntentChange(null),u.current=window.setTimeout(()=>{t.onOpenChange(!0),p()},100)))})),onPointerLeave:(0,a.mK)(e.onPointerLeave,eD(e=>{var r,n;p();let a=null==(r=t.content)?void 0:r.getBoundingClientRect();if(a){let r=null==(n=t.content)?void 0:n.dataset.side,l="right"===r,o=a[l?"left":"right"],i=a[l?"right":"left"];s.onPointerGraceIntentChange({area:[{x:e.clientX+(l?-5:5),y:e.clientY},{x:o,y:a.top},{x:i,y:a.top},{x:i,y:a.bottom},{x:o,y:a.bottom}],side:r}),window.clearTimeout(d.current),d.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(e),e.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:(0,a.mK)(e.onKeyDown,r=>{let n=""!==s.searchRef.current;if(!e.disabled&&(!n||" "!==r.key)&&j[o.dir].includes(r.key)){var a;t.onOpenChange(!0),null==(a=t.content)||a.focus(),r.preventDefault()}})})})});e_.displayName=ek;var eA="MenuSubContent",eS=n.forwardRef((e,r)=>{let t=B(W,e.__scopeMenu),{forceMount:o=t.forceMount,...i}=e,s=N(W,e.__scopeMenu),u=z(W,e.__scopeMenu),d=ex(eA,e.__scopeMenu),c=n.useRef(null),f=(0,l.s)(r,c);return(0,_.jsx)(M.Provider,{scope:e.__scopeMenu,children:(0,_.jsx)(v.C,{present:o||s.open,children:(0,_.jsx)(M.Slot,{scope:e.__scopeMenu,children:(0,_.jsx)(ee,{id:d.contentId,"aria-labelledby":d.triggerId,...i,ref:f,align:"start",side:"rtl"===u.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{var r;u.isUsingKeyboardRef.current&&(null==(r=c.current)||r.focus()),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:(0,a.mK)(e.onFocusOutside,e=>{e.target!==d.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:(0,a.mK)(e.onEscapeKeyDown,e=>{u.onClose(),e.preventDefault()}),onKeyDown:(0,a.mK)(e.onKeyDown,e=>{let r=e.currentTarget.contains(e.target),t=E[u.dir].includes(e.key);if(r&&t){var n;s.onOpenChange(!1),null==(n=d.trigger)||n.focus(),e.preventDefault()}})})})})})});function eC(e){return e?"open":"closed"}function ej(e){return"indeterminate"===e}function eE(e){return ej(e)?"indeterminate":e?"checked":"unchecked"}function eD(e){return r=>"mouse"===r.pointerType?e(r):void 0}eS.displayName=eA;var eM="DropdownMenu",[eR,eV]=(0,o.A)(eM,[P]),eF=P(),[eP,eO]=eR(eM),eL=e=>{let{__scopeDropdownMenu:r,children:t,dir:a,open:l,defaultOpen:o,onOpenChange:s,modal:u=!0}=e,d=eF(r),c=n.useRef(null),[f,p]=(0,i.i)({prop:l,defaultProp:null!=o&&o,onChange:s,caller:eM});return(0,_.jsx)(eP,{scope:r,triggerId:(0,h.B)(),triggerRef:c,contentId:(0,h.B)(),open:f,onOpenChange:p,onOpenToggle:n.useCallback(()=>p(e=>!e),[p]),modal:u,children:(0,_.jsx)(K,{...d,open:f,onOpenChange:p,dir:a,modal:u,children:t})})};eL.displayName=eM;var eT="DropdownMenuTrigger",eN=n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,disabled:n=!1,...o}=e,i=eO(eT,t),u=eF(t);return(0,_.jsx)(U,{asChild:!0,...u,children:(0,_.jsx)(s.sG.button,{type:"button",id:i.triggerId,"aria-haspopup":"menu","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":i.open?"open":"closed","data-disabled":n?"":void 0,disabled:n,...o,ref:(0,l.t)(r,i.triggerRef),onPointerDown:(0,a.mK)(e.onPointerDown,e=>{!n&&0===e.button&&!1===e.ctrlKey&&(i.onOpenToggle(),i.open||e.preventDefault())}),onKeyDown:(0,a.mK)(e.onKeyDown,e=>{!n&&(["Enter"," "].includes(e.key)&&i.onOpenToggle(),"ArrowDown"===e.key&&i.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(e.key)&&e.preventDefault())})})})});eN.displayName=eT;var eI=e=>{let{__scopeDropdownMenu:r,...t}=e,n=eF(r);return(0,_.jsx)(G,{...n,...t})};eI.displayName="DropdownMenuPortal";var ez="DropdownMenuContent",eK=n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...l}=e,o=eO(ez,t),i=eF(t),s=n.useRef(!1);return(0,_.jsx)(Y,{id:o.contentId,"aria-labelledby":o.triggerId,...i,...l,ref:r,onCloseAutoFocus:(0,a.mK)(e.onCloseAutoFocus,e=>{var r;s.current||null==(r=o.triggerRef.current)||r.focus(),s.current=!1,e.preventDefault()}),onInteractOutside:(0,a.mK)(e.onInteractOutside,e=>{let r=e.detail.originalEvent,t=0===r.button&&!0===r.ctrlKey,n=2===r.button||t;(!o.modal||n)&&(s.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});eK.displayName=ez,n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(er,{...a,...n,ref:r})}).displayName="DropdownMenuGroup",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(et,{...a,...n,ref:r})}).displayName="DropdownMenuLabel";var eU=n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(el,{...a,...n,ref:r})});eU.displayName="DropdownMenuItem",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(ei,{...a,...n,ref:r})}).displayName="DropdownMenuCheckboxItem",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(ec,{...a,...n,ref:r})}).displayName="DropdownMenuRadioGroup",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(ep,{...a,...n,ref:r})}).displayName="DropdownMenuRadioItem",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(ev,{...a,...n,ref:r})}).displayName="DropdownMenuItemIndicator";var eH=n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(eg,{...a,...n,ref:r})});eH.displayName="DropdownMenuSeparator",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(eb,{...a,...n,ref:r})}).displayName="DropdownMenuArrow",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(e_,{...a,...n,ref:r})}).displayName="DropdownMenuSubTrigger",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(eS,{...a,...n,ref:r,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})}).displayName="DropdownMenuSubContent";var eq=eL,eB=eN,eG=eI,eW=eK,eX=eU,eZ=eH},7228:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]])},7996:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("pen-line",[["path",{d:"M12 20h9",key:"t2du7b"}],["path",{d:"M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z",key:"1ykcvy"}]])},8815:(e,r,t)=>{t.d(r,{UC:()=>F,VY:()=>T,ZD:()=>O,ZL:()=>R,bL:()=>M,hE:()=>L,hJ:()=>V,rc:()=>P});var n=t(4398),a=t(940),l=t(2050),o=t(4316),i=t(6687),s=t(6950),u=t(3422),d="AlertDialog",[c,f]=(0,a.A)(d,[o.Hs]),p=(0,o.Hs)(),h=e=>{let{__scopeAlertDialog:r,...t}=e,n=p(r);return(0,u.jsx)(o.bL,{...n,...t,modal:!0})};h.displayName=d,n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,...n}=e,a=p(t);return(0,u.jsx)(o.l9,{...a,...n,ref:r})}).displayName="AlertDialogTrigger";var y=e=>{let{__scopeAlertDialog:r,...t}=e,n=p(r);return(0,u.jsx)(o.ZL,{...n,...t})};y.displayName="AlertDialogPortal";var m=n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,...n}=e,a=p(t);return(0,u.jsx)(o.hJ,{...a,...n,ref:r})});m.displayName="AlertDialogOverlay";var v="AlertDialogContent",[g,b]=c(v),w=(0,s.Dc)("AlertDialogContent"),x=n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,children:a,...s}=e,d=p(t),c=n.useRef(null),f=(0,l.s)(r,c),h=n.useRef(null);return(0,u.jsx)(o.G$,{contentName:v,titleName:k,docsSlug:"alert-dialog",children:(0,u.jsx)(g,{scope:t,cancelRef:h,children:(0,u.jsxs)(o.UC,{role:"alertdialog",...d,...s,ref:f,onOpenAutoFocus:(0,i.mK)(s.onOpenAutoFocus,e=>{var r;e.preventDefault(),null==(r=h.current)||r.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,u.jsx)(w,{children:a}),(0,u.jsx)(D,{contentRef:c})]})})})});x.displayName=v;var k="AlertDialogTitle",_=n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,...n}=e,a=p(t);return(0,u.jsx)(o.hE,{...a,...n,ref:r})});_.displayName=k;var A="AlertDialogDescription",S=n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,...n}=e,a=p(t);return(0,u.jsx)(o.VY,{...a,...n,ref:r})});S.displayName=A;var C=n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,...n}=e,a=p(t);return(0,u.jsx)(o.bm,{...a,...n,ref:r})});C.displayName="AlertDialogAction";var j="AlertDialogCancel",E=n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,...n}=e,{cancelRef:a}=b(j,t),i=p(t),s=(0,l.s)(r,a);return(0,u.jsx)(o.bm,{...i,...n,ref:s})});E.displayName=j;var D=e=>{let{contentRef:r}=e,t="`".concat(v,"` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the `").concat(v,"` by passing a `").concat(A,"` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an `id` and passing the same value to the `aria-describedby` prop in `").concat(v,"`. If the description is confusing or duplicative for sighted users, you can use the `@radix-ui/react-visually-hidden` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog");return n.useEffect(()=>{var e;document.getElementById(null==(e=r.current)?void 0:e.getAttribute("aria-describedby"))||console.warn(t)},[t,r]),null},M=h,R=y,V=m,F=x,P=C,O=E,L=_,T=S},9197:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("ban",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]])},9472:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("list",[["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 18h.01",key:"1tta3j"}],["path",{d:"M3 6h.01",key:"1rqtza"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 18h13",key:"1lx6n3"}],["path",{d:"M8 6h13",key:"ik3vkj"}]])},9625:(e,r,t)=>{t.d(r,{LM:()=>X,OK:()=>Z,VM:()=>_,bL:()=>W,lr:()=>P});var n=t(4398),a=t(3780),l=t(6175),o=t(940),i=t(2050),s=t(7589),u=t(7689),d=t(3177),c=t(1537),f=t(6687),p=t(3422),h="ScrollArea",[y,m]=(0,o.A)(h),[v,g]=y(h),b=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,type:l="hover",dir:o,scrollHideDelay:s=600,...d}=e,[c,f]=n.useState(null),[h,y]=n.useState(null),[m,g]=n.useState(null),[b,w]=n.useState(null),[x,k]=n.useState(null),[_,A]=n.useState(0),[S,C]=n.useState(0),[j,E]=n.useState(!1),[D,M]=n.useState(!1),R=(0,i.s)(r,e=>f(e)),V=(0,u.jH)(o);return(0,p.jsx)(v,{scope:t,type:l,dir:V,scrollHideDelay:s,scrollArea:c,viewport:h,onViewportChange:y,content:m,onContentChange:g,scrollbarX:b,onScrollbarXChange:w,scrollbarXEnabled:j,onScrollbarXEnabledChange:E,scrollbarY:x,onScrollbarYChange:k,scrollbarYEnabled:D,onScrollbarYEnabledChange:M,onCornerWidthChange:A,onCornerHeightChange:C,children:(0,p.jsx)(a.sG.div,{dir:V,...d,ref:R,style:{position:"relative","--radix-scroll-area-corner-width":_+"px","--radix-scroll-area-corner-height":S+"px",...e.style}})})});b.displayName=h;var w="ScrollAreaViewport",x=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,children:l,nonce:o,...s}=e,u=g(w,t),d=n.useRef(null),c=(0,i.s)(r,d,u.onViewportChange);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),(0,p.jsx)(a.sG.div,{"data-radix-scroll-area-viewport":"",...s,ref:c,style:{overflowX:u.scrollbarXEnabled?"scroll":"hidden",overflowY:u.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,p.jsx)("div",{ref:u.onContentChange,style:{minWidth:"100%",display:"table"},children:l})})]})});x.displayName=w;var k="ScrollAreaScrollbar",_=n.forwardRef((e,r)=>{let{forceMount:t,...a}=e,l=g(k,e.__scopeScrollArea),{onScrollbarXEnabledChange:o,onScrollbarYEnabledChange:i}=l,s="horizontal"===e.orientation;return n.useEffect(()=>(s?o(!0):i(!0),()=>{s?o(!1):i(!1)}),[s,o,i]),"hover"===l.type?(0,p.jsx)(A,{...a,ref:r,forceMount:t}):"scroll"===l.type?(0,p.jsx)(S,{...a,ref:r,forceMount:t}):"auto"===l.type?(0,p.jsx)(C,{...a,ref:r,forceMount:t}):"always"===l.type?(0,p.jsx)(j,{...a,ref:r}):null});_.displayName=k;var A=n.forwardRef((e,r)=>{let{forceMount:t,...a}=e,o=g(k,e.__scopeScrollArea),[i,s]=n.useState(!1);return n.useEffect(()=>{let e=o.scrollArea,r=0;if(e){let t=()=>{window.clearTimeout(r),s(!0)},n=()=>{r=window.setTimeout(()=>s(!1),o.scrollHideDelay)};return e.addEventListener("pointerenter",t),e.addEventListener("pointerleave",n),()=>{window.clearTimeout(r),e.removeEventListener("pointerenter",t),e.removeEventListener("pointerleave",n)}}},[o.scrollArea,o.scrollHideDelay]),(0,p.jsx)(l.C,{present:t||i,children:(0,p.jsx)(C,{"data-state":i?"visible":"hidden",...a,ref:r})})}),S=n.forwardRef((e,r)=>{var t,a;let{forceMount:o,...i}=e,s=g(k,e.__scopeScrollArea),u="horizontal"===e.orientation,d=B(()=>h("SCROLL_END"),100),[c,h]=(t="hidden",a={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},n.useReducer((e,r)=>{let t=a[e][r];return null!=t?t:e},t));return n.useEffect(()=>{if("idle"===c){let e=window.setTimeout(()=>h("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(e)}},[c,s.scrollHideDelay,h]),n.useEffect(()=>{let e=s.viewport,r=u?"scrollLeft":"scrollTop";if(e){let t=e[r],n=()=>{let n=e[r];t!==n&&(h("SCROLL"),d()),t=n};return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)}},[s.viewport,u,h,d]),(0,p.jsx)(l.C,{present:o||"hidden"!==c,children:(0,p.jsx)(j,{"data-state":"hidden"===c?"hidden":"visible",...i,ref:r,onPointerEnter:(0,f.mK)(e.onPointerEnter,()=>h("POINTER_ENTER")),onPointerLeave:(0,f.mK)(e.onPointerLeave,()=>h("POINTER_LEAVE"))})})}),C=n.forwardRef((e,r)=>{let t=g(k,e.__scopeScrollArea),{forceMount:a,...o}=e,[i,s]=n.useState(!1),u="horizontal"===e.orientation,d=B(()=>{if(t.viewport){let e=t.viewport.offsetWidth{let{orientation:t="vertical",...a}=e,l=g(k,e.__scopeScrollArea),o=n.useRef(null),i=n.useRef(0),[s,u]=n.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=z(s.viewport,s.content),c={...a,sizes:s,onSizesChange:u,hasThumb:!!(d>0&&d<1),onThumbChange:e=>o.current=e,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:e=>i.current=e};function f(e,r){return function(e,r,t){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"ltr",a=K(t),l=r||a/2,o=t.scrollbar.paddingStart+l,i=t.scrollbar.size-t.scrollbar.paddingEnd-(a-l),s=t.content-t.viewport;return H([o,i],"ltr"===n?[0,s]:[-1*s,0])(e)}(e,i.current,s,r)}return"horizontal"===t?(0,p.jsx)(E,{...c,ref:r,onThumbPositionChange:()=>{if(l.viewport&&o.current){let e=U(l.viewport.scrollLeft,s,l.dir);o.current.style.transform="translate3d(".concat(e,"px, 0, 0)")}},onWheelScroll:e=>{l.viewport&&(l.viewport.scrollLeft=e)},onDragScroll:e=>{l.viewport&&(l.viewport.scrollLeft=f(e,l.dir))}}):"vertical"===t?(0,p.jsx)(D,{...c,ref:r,onThumbPositionChange:()=>{if(l.viewport&&o.current){let e=U(l.viewport.scrollTop,s);o.current.style.transform="translate3d(0, ".concat(e,"px, 0)")}},onWheelScroll:e=>{l.viewport&&(l.viewport.scrollTop=e)},onDragScroll:e=>{l.viewport&&(l.viewport.scrollTop=f(e))}}):null}),E=n.forwardRef((e,r)=>{let{sizes:t,onSizesChange:a,...l}=e,o=g(k,e.__scopeScrollArea),[s,u]=n.useState(),d=n.useRef(null),c=(0,i.s)(r,d,o.onScrollbarXChange);return n.useEffect(()=>{d.current&&u(getComputedStyle(d.current))},[d]),(0,p.jsx)(V,{"data-orientation":"horizontal",...l,ref:c,sizes:t,style:{bottom:0,left:"rtl"===o.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===o.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":K(t)+"px",...e.style},onThumbPointerDown:r=>e.onThumbPointerDown(r.x),onDragScroll:r=>e.onDragScroll(r.x),onWheelScroll:(r,t)=>{if(o.viewport){let n=o.viewport.scrollLeft+r.deltaX;e.onWheelScroll(n),function(e,r){return e>0&&e{d.current&&o.viewport&&s&&a({content:o.viewport.scrollWidth,viewport:o.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:I(s.paddingLeft),paddingEnd:I(s.paddingRight)}})}})}),D=n.forwardRef((e,r)=>{let{sizes:t,onSizesChange:a,...l}=e,o=g(k,e.__scopeScrollArea),[s,u]=n.useState(),d=n.useRef(null),c=(0,i.s)(r,d,o.onScrollbarYChange);return n.useEffect(()=>{d.current&&u(getComputedStyle(d.current))},[d]),(0,p.jsx)(V,{"data-orientation":"vertical",...l,ref:c,sizes:t,style:{top:0,right:"ltr"===o.dir?0:void 0,left:"rtl"===o.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":K(t)+"px",...e.style},onThumbPointerDown:r=>e.onThumbPointerDown(r.y),onDragScroll:r=>e.onDragScroll(r.y),onWheelScroll:(r,t)=>{if(o.viewport){let n=o.viewport.scrollTop+r.deltaY;e.onWheelScroll(n),function(e,r){return e>0&&e{d.current&&o.viewport&&s&&a({content:o.viewport.scrollHeight,viewport:o.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:I(s.paddingTop),paddingEnd:I(s.paddingBottom)}})}})}),[M,R]=y(k),V=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,sizes:l,hasThumb:o,onThumbChange:u,onThumbPointerUp:d,onThumbPointerDown:c,onThumbPositionChange:h,onDragScroll:y,onWheelScroll:m,onResize:v,...b}=e,w=g(k,t),[x,_]=n.useState(null),A=(0,i.s)(r,e=>_(e)),S=n.useRef(null),C=n.useRef(""),j=w.viewport,E=l.content-l.viewport,D=(0,s.c)(m),R=(0,s.c)(h),V=B(v,10);function F(e){S.current&&y({x:e.clientX-S.current.left,y:e.clientY-S.current.top})}return n.useEffect(()=>{let e=e=>{let r=e.target;(null==x?void 0:x.contains(r))&&D(e,E)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[j,x,E,D]),n.useEffect(R,[l,R]),G(x,V),G(w.content,V),(0,p.jsx)(M,{scope:t,scrollbar:x,hasThumb:o,onThumbChange:(0,s.c)(u),onThumbPointerUp:(0,s.c)(d),onThumbPositionChange:R,onThumbPointerDown:(0,s.c)(c),children:(0,p.jsx)(a.sG.div,{...b,ref:A,style:{position:"absolute",...b.style},onPointerDown:(0,f.mK)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),S.current=x.getBoundingClientRect(),C.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",w.viewport&&(w.viewport.style.scrollBehavior="auto"),F(e))}),onPointerMove:(0,f.mK)(e.onPointerMove,F),onPointerUp:(0,f.mK)(e.onPointerUp,e=>{let r=e.target;r.hasPointerCapture(e.pointerId)&&r.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=C.current,w.viewport&&(w.viewport.style.scrollBehavior=""),S.current=null})})})}),F="ScrollAreaThumb",P=n.forwardRef((e,r)=>{let{forceMount:t,...n}=e,a=R(F,e.__scopeScrollArea);return(0,p.jsx)(l.C,{present:t||a.hasThumb,children:(0,p.jsx)(O,{ref:r,...n})})}),O=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,style:l,...o}=e,s=g(F,t),u=R(F,t),{onThumbPositionChange:d}=u,c=(0,i.s)(r,e=>u.onThumbChange(e)),h=n.useRef(void 0),y=B(()=>{h.current&&(h.current(),h.current=void 0)},100);return n.useEffect(()=>{let e=s.viewport;if(e){let r=()=>{y(),h.current||(h.current=q(e,d),d())};return d(),e.addEventListener("scroll",r),()=>e.removeEventListener("scroll",r)}},[s.viewport,y,d]),(0,p.jsx)(a.sG.div,{"data-state":u.hasThumb?"visible":"hidden",...o,ref:c,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...l},onPointerDownCapture:(0,f.mK)(e.onPointerDownCapture,e=>{let r=e.target.getBoundingClientRect(),t=e.clientX-r.left,n=e.clientY-r.top;u.onThumbPointerDown({x:t,y:n})}),onPointerUp:(0,f.mK)(e.onPointerUp,u.onThumbPointerUp)})});P.displayName=F;var L="ScrollAreaCorner",T=n.forwardRef((e,r)=>{let t=g(L,e.__scopeScrollArea),n=!!(t.scrollbarX&&t.scrollbarY);return"scroll"!==t.type&&n?(0,p.jsx)(N,{...e,ref:r}):null});T.displayName=L;var N=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,...l}=e,o=g(L,t),[i,s]=n.useState(0),[u,d]=n.useState(0),c=!!(i&&u);return G(o.scrollbarX,()=>{var e;let r=(null==(e=o.scrollbarX)?void 0:e.offsetHeight)||0;o.onCornerHeightChange(r),d(r)}),G(o.scrollbarY,()=>{var e;let r=(null==(e=o.scrollbarY)?void 0:e.offsetWidth)||0;o.onCornerWidthChange(r),s(r)}),c?(0,p.jsx)(a.sG.div,{...l,ref:r,style:{width:i,height:u,position:"absolute",right:"ltr"===o.dir?0:void 0,left:"rtl"===o.dir?0:void 0,bottom:0,...e.style}}):null});function I(e){return e?parseInt(e,10):0}function z(e,r){let t=e/r;return isNaN(t)?0:t}function K(e){let r=z(e.viewport,e.content),t=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-t)*r,18)}function U(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"ltr",n=K(r),a=r.scrollbar.paddingStart+r.scrollbar.paddingEnd,l=r.scrollbar.size-a,o=r.content-r.viewport,i=(0,c.q)(e,"ltr"===t?[0,o]:[-1*o,0]);return H([0,o],[0,l-n])(i)}function H(e,r){return t=>{if(e[0]===e[1]||r[0]===r[1])return r[0];let n=(r[1]-r[0])/(e[1]-e[0]);return r[0]+n*(t-e[0])}}var q=function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{},t={left:e.scrollLeft,top:e.scrollTop},n=0;return!function a(){let l={left:e.scrollLeft,top:e.scrollTop},o=t.left!==l.left,i=t.top!==l.top;(o||i)&&r(),t=l,n=window.requestAnimationFrame(a)}(),()=>window.cancelAnimationFrame(n)};function B(e,r){let t=(0,s.c)(e),a=n.useRef(0);return n.useEffect(()=>()=>window.clearTimeout(a.current),[]),n.useCallback(()=>{window.clearTimeout(a.current),a.current=window.setTimeout(t,r)},[t,r])}function G(e,r){let t=(0,s.c)(r);(0,d.N)(()=>{let r=0;if(e){let n=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(t)});return n.observe(e),()=>{window.cancelAnimationFrame(r),n.unobserve(e)}}},[e,t])}var W=b,X=x,Z=T},9906:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]])},9911:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("mic",[["path",{d:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z",key:"131961"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]])},9935:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("mic-off",[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M18.89 13.23A7.12 7.12 0 0 0 19 12v-2",key:"80xlxr"}],["path",{d:"M5 10v2a7 7 0 0 0 12 5",key:"p2k8kg"}],["path",{d:"M15 9.34V5a3 3 0 0 0-5.68-1.33",key:"1gzdoj"}],["path",{d:"M9 9v3a3 3 0 0 0 5.12 2.12",key:"r2i35w"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]])},9987:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])}}]); \ No newline at end of file diff --git a/ui_out/_next/static/chunks/938-08cea0300e0df70a.js b/ui_out/_next/static/chunks/938-08cea0300e0df70a.js deleted file mode 100644 index aa57aee2..00000000 --- a/ui_out/_next/static/chunks/938-08cea0300e0df70a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[938],{246:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},413:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]])},552:(e,r,t)=>{t.d(r,{u:()=>_});var n=t(1407);let a=(e,r,t)=>{if(e&&"reportValidity"in e){let a=(0,n.Jt)(t,r);e.setCustomValidity(a&&a.message||""),e.reportValidity()}},l=(e,r)=>{for(let t in r.fields){let n=r.fields[t];n&&n.ref&&"reportValidity"in n.ref?a(n.ref,t,e):n&&n.refs&&n.refs.forEach(r=>a(r,t,e))}},o=(e,r)=>{r.shouldUseNativeValidation&&l(e,r);let t={};for(let a in e){let l=(0,n.Jt)(r.fields,a),o=Object.assign(e[a]||{},{ref:l&&l.ref});if(i(r.names||Object.keys(e),a)){let e=Object.assign({},(0,n.Jt)(t,a));(0,n.hZ)(e,"root",o),(0,n.hZ)(t,a,e)}else(0,n.hZ)(t,a,o)}return t},i=(e,r)=>{let t=s(r);return e.some(e=>s(e).match(`^${t}\\.\\d+`))};function s(e){return e.replace(/\]|\[/g,"")}function u(e,r,t){function n(t,n){var a;for(let l in Object.defineProperty(t,"_zod",{value:t._zod??{},enumerable:!1}),(a=t._zod).traits??(a.traits=new Set),t._zod.traits.add(e),r(t,n),o.prototype)l in t||Object.defineProperty(t,l,{value:o.prototype[l].bind(t)});t._zod.constr=o,t._zod.def=n}let a=t?.Parent??Object;class l extends a{}function o(e){var r;let a=t?.Parent?new l:this;for(let t of(n(a,e),(r=a._zod).deferred??(r.deferred=[]),a._zod.deferred))t();return a}return Object.defineProperty(l,"name",{value:e}),Object.defineProperty(o,"init",{value:n}),Object.defineProperty(o,Symbol.hasInstance,{value:r=>!!t?.Parent&&r instanceof t.Parent||r?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}Object.freeze({status:"aborted"}),Symbol("zod_brand");class d extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}let c={};function f(e){return e&&Object.assign(c,e),c}function p(e,r){return"bigint"==typeof r?r.toString():r}let h=Error.captureStackTrace?Error.captureStackTrace:(...e)=>{};function y(e){return"string"==typeof e?e:e?.message}function m(e,r,t){let n={...e,path:e.path??[]};return e.message||(n.message=y(e.inst?._zod.def?.error?.(e))??y(r?.error?.(e))??y(t.customError?.(e))??y(t.localeError?.(e))??"Invalid input"),delete n.inst,delete n.continue,r?.reportInput||delete n.input,n}Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MAX_VALUE,Number.MAX_VALUE;let v=(e,r)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:r,enumerable:!1}),Object.defineProperty(e,"message",{get:()=>JSON.stringify(r,p,2),enumerable:!0}),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},g=u("$ZodError",v),b=u("$ZodError",v,{Parent:Error}),w=(e,r,t,n)=>{let a=t?Object.assign(t,{async:!1}):{async:!1},l=e._zod.run({value:r,issues:[]},a);if(l instanceof Promise)throw new d;if(l.issues.length){let e=new(n?.Err??b)(l.issues.map(e=>m(e,a,f())));throw h(e,n?.callee),e}return l.value},x=async(e,r,t,n)=>{let a=t?Object.assign(t,{async:!0}):{async:!0},l=e._zod.run({value:r,issues:[]},a);if(l instanceof Promise&&(l=await l),l.issues.length){let e=new(n?.Err??b)(l.issues.map(e=>m(e,a,f())));throw h(e,n?.callee),e}return l.value};function k(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}function _(e,r,t){if(void 0===t&&(t={}),"_def"in e&&"object"==typeof e._def&&"typeName"in e._def)return function(a,i,s){try{return Promise.resolve(k(function(){return Promise.resolve(e["sync"===t.mode?"parse":"parseAsync"](a,r)).then(function(e){return s.shouldUseNativeValidation&&l({},s),{errors:{},values:t.raw?Object.assign({},a):e}})},function(e){if(Array.isArray(null==e?void 0:e.issues))return{values:{},errors:o(function(e,r){for(var t={};e.length;){var a=e[0],l=a.code,o=a.message,i=a.path.join(".");if(!t[i])if("unionErrors"in a){var s=a.unionErrors[0].errors[0];t[i]={message:s.message,type:s.code}}else t[i]={message:o,type:l};if("unionErrors"in a&&a.unionErrors.forEach(function(r){return r.errors.forEach(function(r){return e.push(r)})}),r){var u=t[i].types,d=u&&u[a.code];t[i]=(0,n.Gb)(i,r,t,l,d?[].concat(d,a.message):a.message)}e.shift()}return t}(e.errors,!s.shouldUseNativeValidation&&"all"===s.criteriaMode),s)};throw e}))}catch(e){return Promise.reject(e)}};if("_zod"in e&&"object"==typeof e._zod)return function(a,i,s){try{return Promise.resolve(k(function(){return Promise.resolve(("sync"===t.mode?w:x)(e,a,r)).then(function(e){return s.shouldUseNativeValidation&&l({},s),{errors:{},values:t.raw?Object.assign({},a):e}})},function(e){if(e instanceof g)return{values:{},errors:o(function(e,r){for(var t={};e.length;){var a=e[0],l=a.code,o=a.message,i=a.path.join(".");if(!t[i])if("invalid_union"===a.code&&a.errors.length>0){var s=a.errors[0][0];t[i]={message:s.message,type:s.code}}else t[i]={message:o,type:l};if("invalid_union"===a.code&&a.errors.forEach(function(r){return r.forEach(function(r){return e.push(r)})}),r){var u=t[i].types,d=u&&u[a.code];t[i]=(0,n.Gb)(i,r,t,l,d?[].concat(d,a.message):a.message)}e.shift()}return t}(e.issues,!s.shouldUseNativeValidation&&"all"===s.criteriaMode),s)};throw e}))}catch(e){return Promise.reject(e)}};throw Error("Invalid input: not a Zod schema")}},1220:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},1407:(e,r,t)=>{t.d(r,{Gb:()=>T,Jt:()=>b,Op:()=>j,hZ:()=>x,lN:()=>M,mN:()=>eA,xI:()=>O,xW:()=>C});var n=t(4398),a=e=>"checkbox"===e.type,l=e=>e instanceof Date,o=e=>null==e;let i=e=>"object"==typeof e;var s=e=>!o(e)&&!Array.isArray(e)&&i(e)&&!l(e),u=e=>s(e)&&e.target?a(e.target)?e.target.checked:e.target.value:e,d=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,c=(e,r)=>e.has(d(r)),f=e=>{let r=e.constructor&&e.constructor.prototype;return s(r)&&r.hasOwnProperty("isPrototypeOf")},p="undefined"!=typeof window&&void 0!==window.HTMLElement&&"undefined"!=typeof document;function h(e){let r,t=Array.isArray(e),n="undefined"!=typeof FileList&&e instanceof FileList;if(e instanceof Date)r=new Date(e);else if(!(!(p&&(e instanceof Blob||n))&&(t||s(e))))return e;else if(r=t?[]:Object.create(Object.getPrototypeOf(e)),t||f(e))for(let t in e)e.hasOwnProperty(t)&&(r[t]=h(e[t]));else r=e;return r}var y=e=>/^\w*$/.test(e),m=e=>void 0===e,v=e=>Array.isArray(e)?e.filter(Boolean):[],g=e=>v(e.replace(/["|']|\]/g,"").split(/\.|\[/)),b=(e,r,t)=>{if(!r||!s(e))return t;let n=(y(r)?[r]:g(r)).reduce((e,r)=>o(e)?e:e[r],e);return m(n)||n===e?m(e[r])?t:e[r]:n},w=e=>"boolean"==typeof e,x=(e,r,t)=>{let n=-1,a=y(r)?[r]:g(r),l=a.length,o=l-1;for(;++nn.useContext(S),j=e=>{let{children:r,...t}=e;return n.createElement(S.Provider,{value:t},r)};var E=(e,r,t,n=!0)=>{let a={defaultValues:r._defaultValues};for(let l in e)Object.defineProperty(a,l,{get:()=>(r._proxyFormState[l]!==_.all&&(r._proxyFormState[l]=!n||_.all),t&&(t[l]=!0),e[l])});return a};let D="undefined"!=typeof window?n.useLayoutEffect:n.useEffect;function M(e){let r=C(),{control:t=r.control,disabled:a,name:l,exact:o}=e||{},[i,s]=n.useState(t._formState),u=n.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1});return D(()=>t._subscribe({name:l,formState:u.current,exact:o,callback:e=>{a||s({...t._formState,...e})}}),[l,a,o]),n.useEffect(()=>{u.current.isValid&&t._setValid(!0)},[t]),n.useMemo(()=>E(i,t,u.current,!1),[i,t])}var R=e=>"string"==typeof e,V=(e,r,t,n,a)=>R(e)?(n&&r.watch.add(e),b(t,e,a)):Array.isArray(e)?e.map(e=>(n&&r.watch.add(e),b(t,e))):(n&&(r.watchAll=!0),t),F=e=>o(e)||!i(e);function P(e,r,t=new WeakSet){if(F(e)||F(r))return e===r;if(l(e)&&l(r))return e.getTime()===r.getTime();let n=Object.keys(e),a=Object.keys(r);if(n.length!==a.length)return!1;if(t.has(e)||t.has(r))return!0;for(let o of(t.add(e),t.add(r),n)){let n=e[o];if(!a.includes(o))return!1;if("ref"!==o){let e=r[o];if(l(n)&&l(e)||s(n)&&s(e)||Array.isArray(n)&&Array.isArray(e)?!P(n,e,t):n!==e)return!1}}return!0}let O=e=>e.render(function(e){let r=C(),{name:t,disabled:a,control:l=r.control,shouldUnregister:o,defaultValue:i}=e,s=c(l._names.array,t),d=n.useMemo(()=>b(l._formValues,t,b(l._defaultValues,t,i)),[l,t,i]),f=function(e){let r=C(),{control:t=r.control,name:a,defaultValue:l,disabled:o,exact:i,compute:s}=e||{},u=n.useRef(l),d=n.useRef(s),c=n.useRef(void 0);d.current=s;let f=n.useMemo(()=>t._getWatch(a,u.current),[t,a]),[p,h]=n.useState(d.current?d.current(f):f);return D(()=>t._subscribe({name:a,formState:{values:!0},exact:i,callback:e=>{if(!o){let r=V(a,t._names,e.values||t._formValues,!1,u.current);if(d.current){let e=d.current(r);P(e,c.current)||(h(e),c.current=e)}else h(r)}}}),[t,o,a,i]),n.useEffect(()=>t._removeUnmounted()),p}({control:l,name:t,defaultValue:d,exact:!0}),p=M({control:l,name:t,exact:!0}),y=n.useRef(e),v=n.useRef(void 0),g=n.useRef(l.register(t,{...e.rules,value:f,...w(e.disabled)?{disabled:e.disabled}:{}}));y.current=e;let _=n.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!b(p.errors,t)},isDirty:{enumerable:!0,get:()=>!!b(p.dirtyFields,t)},isTouched:{enumerable:!0,get:()=>!!b(p.touchedFields,t)},isValidating:{enumerable:!0,get:()=>!!b(p.validatingFields,t)},error:{enumerable:!0,get:()=>b(p.errors,t)}}),[p,t]),A=n.useCallback(e=>g.current.onChange({target:{value:u(e),name:t},type:k.CHANGE}),[t]),S=n.useCallback(()=>g.current.onBlur({target:{value:b(l._formValues,t),name:t},type:k.BLUR}),[t,l._formValues]),j=n.useCallback(e=>{let r=b(l._fields,t);r&&e&&(r._f.ref={focus:()=>e.focus&&e.focus(),select:()=>e.select&&e.select(),setCustomValidity:r=>e.setCustomValidity(r),reportValidity:()=>e.reportValidity()})},[l._fields,t]),E=n.useMemo(()=>({name:t,value:f,...w(a)||p.disabled?{disabled:p.disabled||a}:{},onChange:A,onBlur:S,ref:j}),[t,a,p.disabled,A,S,j,f]);return n.useEffect(()=>{let e=l._options.shouldUnregister||o,r=v.current;r&&r!==t&&!s&&l.unregister(r),l.register(t,{...y.current.rules,...w(y.current.disabled)?{disabled:y.current.disabled}:{}});let n=(e,r)=>{let t=b(l._fields,e);t&&t._f&&(t._f.mount=r)};if(n(t,!0),e){let e=h(b(l._options.defaultValues,t,y.current.defaultValue));x(l._defaultValues,t,e),m(b(l._formValues,t))&&x(l._formValues,t,e)}return s||l.register(t),v.current=t,()=>{(s?e&&!l._state.action:e)?l.unregister(t):n(t,!1)}},[t,l,s,o]),n.useEffect(()=>{l._setDisabledField({disabled:a,name:t})},[a,t,l]),n.useMemo(()=>({field:E,formState:p,fieldState:_}),[E,p,_])}(e));var T=(e,r,t,n,a)=>r?{...t[e],types:{...t[e]&&t[e].types?t[e].types:{},[n]:a||!0}}:{},L=e=>Array.isArray(e)?e:[e],N=()=>{let e=[];return{get observers(){return e},next:r=>{for(let t of e)t.next&&t.next(r)},subscribe:r=>(e.push(r),{unsubscribe:()=>{e=e.filter(e=>e!==r)}}),unsubscribe:()=>{e=[]}}},I=e=>s(e)&&!Object.keys(e).length,z=e=>"file"===e.type,K=e=>"function"==typeof e,U=e=>{if(!p)return!1;let r=e?e.ownerDocument:0;return e instanceof(r&&r.defaultView?r.defaultView.HTMLElement:HTMLElement)},B=e=>"select-multiple"===e.type,H=e=>"radio"===e.type,q=e=>H(e)||a(e),G=e=>U(e)&&e.isConnected;function W(e,r){let t=Array.isArray(r)?r:y(r)?[r]:g(r),n=1===t.length?e:function(e,r){let t=r.slice(0,-1).length,n=0;for(;n{for(let r in e)if(K(e[r]))return!0;return!1};function Z(e){return Array.isArray(e)||s(e)&&!X(e)}function Y(e,r={}){for(let t in e)Z(e[t])?(r[t]=Array.isArray(e[t])?[]:{},Y(e[t],r[t])):m(e[t])||(r[t]=!0);return r}function $(e,r,t){for(let n in t||(t=Y(r)),e)Z(e[n])?m(r)||F(t[n])?t[n]=Y(e[n],Array.isArray(e[n])?[]:{}):$(e[n],o(r)?{}:r[n],t[n]):t[n]=!P(e[n],r[n]);return t}let J={value:!1,isValid:!1},Q={value:!0,isValid:!0};var ee=e=>{if(Array.isArray(e)){if(e.length>1){let r=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:r,isValid:!!r.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!m(e[0].attributes.value)?m(e[0].value)||""===e[0].value?Q:{value:e[0].value,isValid:!0}:Q:J}return J},er=(e,{valueAsNumber:r,valueAsDate:t,setValueAs:n})=>m(e)?e:r?""===e?NaN:e?+e:e:t&&R(e)?new Date(e):n?n(e):e;let et={isValid:!1,value:null};var en=e=>Array.isArray(e)?e.reduce((e,r)=>r&&r.checked&&!r.disabled?{isValid:!0,value:r.value}:e,et):et;function ea(e){let r=e.ref;return z(r)?r.files:H(r)?en(e.refs).value:B(r)?[...r.selectedOptions].map(({value:e})=>e):a(r)?ee(e.refs).value:er(m(r.value)?e.ref.value:r.value,e)}var el=(e,r,t,n)=>{let a={};for(let t of e){let e=b(r,t);e&&x(a,t,e._f)}return{criteriaMode:t,names:[...e],fields:a,shouldUseNativeValidation:n}},eo=e=>e instanceof RegExp,ei=e=>m(e)?e:eo(e)?e.source:s(e)?eo(e.value)?e.value.source:e.value:e,es=e=>({isOnSubmit:!e||e===_.onSubmit,isOnBlur:e===_.onBlur,isOnChange:e===_.onChange,isOnAll:e===_.all,isOnTouch:e===_.onTouched});let eu="AsyncFunction";var ed=e=>!!e&&!!e.validate&&!!(K(e.validate)&&e.validate.constructor.name===eu||s(e.validate)&&Object.values(e.validate).find(e=>e.constructor.name===eu)),ec=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),ef=(e,r,t)=>!t&&(r.watchAll||r.watch.has(e)||[...r.watch].some(r=>e.startsWith(r)&&/^\.\w+/.test(e.slice(r.length))));let ep=(e,r,t,n)=>{for(let a of t||Object.keys(e)){let t=b(e,a);if(t){let{_f:e,...l}=t;if(e){if(e.refs&&e.refs[0]&&r(e.refs[0],a)&&!n)return!0;else if(e.ref&&r(e.ref,e.name)&&!n)return!0;else if(ep(l,r))break}else if(s(l)&&ep(l,r))break}}};function eh(e,r,t){let n=b(e,t);if(n||y(t))return{error:n,name:t};let a=t.split(".");for(;a.length;){let n=a.join("."),l=b(r,n),o=b(e,n);if(l&&!Array.isArray(l)&&t!==n)break;if(o&&o.type)return{name:n,error:o};if(o&&o.root&&o.root.type)return{name:`${n}.root`,error:o.root};a.pop()}return{name:t}}var ey=(e,r,t,n)=>{t(e);let{name:a,...l}=e;return I(l)||Object.keys(l).length>=Object.keys(r).length||Object.keys(l).find(e=>r[e]===(!n||_.all))},em=(e,r,t)=>!e||!r||e===r||L(e).some(e=>e&&(t?e===r:e.startsWith(r)||r.startsWith(e))),ev=(e,r,t,n,a)=>!a.isOnAll&&(!t&&a.isOnTouch?!(r||e):(t?n.isOnBlur:a.isOnBlur)?!e:(t?!n.isOnChange:!a.isOnChange)||e),eg=(e,r)=>!v(b(e,r)).length&&W(e,r),eb=(e,r,t)=>{let n=L(b(e,t));return x(n,"root",r[t]),x(e,t,n),e};function ew(e,r,t="validate"){if(R(e)||Array.isArray(e)&&e.every(R)||w(e)&&!e)return{type:t,message:R(e)?e:"",ref:r}}var ex=e=>s(e)&&!eo(e)?e:{value:e,message:""},ek=async(e,r,t,n,l,i)=>{let{ref:u,refs:d,required:c,maxLength:f,minLength:p,min:h,max:y,pattern:v,validate:g,name:x,valueAsNumber:k,mount:_}=e._f,S=b(t,x);if(!_||r.has(x))return{};let C=d?d[0]:u,j=e=>{l&&C.reportValidity&&(C.setCustomValidity(w(e)?"":e||""),C.reportValidity())},E={},D=H(u),M=a(u),V=(k||z(u))&&m(u.value)&&m(S)||U(u)&&""===u.value||""===S||Array.isArray(S)&&!S.length,F=T.bind(null,x,n,E),P=(e,r,t,n=A.maxLength,a=A.minLength)=>{let l=e?r:t;E[x]={type:e?n:a,message:l,ref:u,...F(e?n:a,l)}};if(i?!Array.isArray(S)||!S.length:c&&(!(D||M)&&(V||o(S))||w(S)&&!S||M&&!ee(d).isValid||D&&!en(d).isValid)){let{value:e,message:r}=R(c)?{value:!!c,message:c}:ex(c);if(e&&(E[x]={type:A.required,message:r,ref:C,...F(A.required,r)},!n))return j(r),E}if(!V&&(!o(h)||!o(y))){let e,r,t=ex(y),a=ex(h);if(o(S)||isNaN(S)){let n=u.valueAsDate||new Date(S),l=e=>new Date(new Date().toDateString()+" "+e),o="time"==u.type,i="week"==u.type;R(t.value)&&S&&(e=o?l(S)>l(t.value):i?S>t.value:n>new Date(t.value)),R(a.value)&&S&&(r=o?l(S)t.value),o(a.value)||(r=n+e.value,a=!o(r.value)&&S.length<+r.value;if((t||a)&&(P(t,e.message,r.message),!n))return j(E[x].message),E}if(v&&!V&&R(S)){let{value:e,message:r}=ex(v);if(eo(e)&&!S.match(e)&&(E[x]={type:A.pattern,message:r,ref:u,...F(A.pattern,r)},!n))return j(r),E}if(g){if(K(g)){let e=ew(await g(S,t),C);if(e&&(E[x]={...e,...F(A.validate,e.message)},!n))return j(e.message),E}else if(s(g)){let e={};for(let r in g){if(!I(e)&&!n)break;let a=ew(await g[r](S,t),C,r);a&&(e={...a,...F(r,a.message)},j(a.message),n&&(E[x]=e))}if(!I(e)&&(E[x]={ref:C,...e},!n))return E}}return j(!0),E};let e_={mode:_.onSubmit,reValidateMode:_.onChange,shouldFocusError:!0};function eA(e={}){let r=n.useRef(void 0),t=n.useRef(void 0),[i,d]=n.useState({isDirty:!1,isValidating:!1,isLoading:K(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,isReady:!1,defaultValues:K(e.defaultValues)?void 0:e.defaultValues});if(!r.current)if(e.formControl)r.current={...e.formControl,formState:i},e.defaultValues&&!K(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:t,...n}=function(e={}){let r,t={...e_,...e},n={submitCount:0,isDirty:!1,isReady:!1,isLoading:K(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},i={},d=(s(t.defaultValues)||s(t.values))&&h(t.defaultValues||t.values)||{},f=t.shouldUnregister?{}:h(d),y={action:!1,mount:!1,watch:!1},g={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set},A=0,S={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},C={...S},j={array:N(),state:N()},E=t.criteriaMode===_.all,D=e=>r=>{clearTimeout(A),A=setTimeout(e,r)},M=async e=>{if(!t.disabled&&(S.isValid||C.isValid||e)){let e=t.resolver?I((await Z()).errors):await J(i,!0);e!==n.isValid&&j.state.next({isValid:e})}},F=(e,r)=>{!t.disabled&&(S.isValidating||S.validatingFields||C.isValidating||C.validatingFields)&&((e||Array.from(g.mount)).forEach(e=>{e&&(r?x(n.validatingFields,e,r):W(n.validatingFields,e))}),j.state.next({validatingFields:n.validatingFields,isValidating:!I(n.validatingFields)}))},O=(e,r)=>{x(n.errors,e,r),j.state.next({errors:n.errors})},T=(e,r,t,n)=>{let a=b(i,e);if(a){let l=b(f,e,m(t)?b(d,e):t);m(l)||n&&n.defaultChecked||r?x(f,e,r?l:ea(a._f)):et(e,l),y.mount&&M()}},H=(e,r,a,l,o)=>{let i=!1,s=!1,u={name:e};if(!t.disabled){if(!a||l){(S.isDirty||C.isDirty)&&(s=n.isDirty,n.isDirty=u.isDirty=Q(),i=s!==u.isDirty);let t=P(b(d,e),r);s=!!b(n.dirtyFields,e),t?W(n.dirtyFields,e):x(n.dirtyFields,e,!0),u.dirtyFields=n.dirtyFields,i=i||(S.dirtyFields||C.dirtyFields)&&!t!==s}if(a){let r=b(n.touchedFields,e);r||(x(n.touchedFields,e,a),u.touchedFields=n.touchedFields,i=i||(S.touchedFields||C.touchedFields)&&r!==a)}i&&o&&j.state.next(u)}return i?u:{}},X=(e,a,l,o)=>{let i=b(n.errors,e),s=(S.isValid||C.isValid)&&w(a)&&n.isValid!==a;if(t.delayError&&l?(r=D(()=>O(e,l)))(t.delayError):(clearTimeout(A),r=null,l?x(n.errors,e,l):W(n.errors,e)),(l?!P(i,l):i)||!I(o)||s){let r={...o,...s&&w(a)?{isValid:a}:{},errors:n.errors,name:e};n={...n,...r},j.state.next(r)}},Z=async e=>{F(e,!0);let r=await t.resolver(f,t.context,el(e||g.mount,i,t.criteriaMode,t.shouldUseNativeValidation));return F(e),r},Y=async e=>{let{errors:r}=await Z(e);if(e)for(let t of e){let e=b(r,t);e?x(n.errors,t,e):W(n.errors,t)}else n.errors=r;return r},J=async(e,r,a={valid:!0})=>{for(let l in e){let o=e[l];if(o){let{_f:e,...l}=o;if(e){let l=g.array.has(e.name),i=o._f&&ed(o._f);i&&S.validatingFields&&F([e.name],!0);let s=await ek(o,g.disabled,f,E,t.shouldUseNativeValidation&&!r,l);if(i&&S.validatingFields&&F([e.name]),s[e.name]&&(a.valid=!1,r))break;r||(b(s,e.name)?l?eb(n.errors,s,e.name):x(n.errors,e.name,s[e.name]):W(n.errors,e.name))}I(l)||await J(l,r,a)}}return a.valid},Q=(e,r)=>!t.disabled&&(e&&r&&x(f,e,r),!P(eA(),d)),ee=(e,r,t)=>V(e,g,{...y.mount?f:m(r)?d:R(e)?{[e]:r}:r},t,r),et=(e,r,t={})=>{let n=b(i,e),l=r;if(n){let t=n._f;t&&(t.disabled||x(f,e,er(r,t)),l=U(t.ref)&&o(r)?"":r,B(t.ref)?[...t.ref.options].forEach(e=>e.selected=l.includes(e.value)):t.refs?a(t.ref)?t.refs.forEach(e=>{e.defaultChecked&&e.disabled||(Array.isArray(l)?e.checked=!!l.find(r=>r===e.value):e.checked=l===e.value||!!l)}):t.refs.forEach(e=>e.checked=e.value===l):z(t.ref)?t.ref.value="":(t.ref.value=l,t.ref.type||j.state.next({name:e,values:h(f)})))}(t.shouldDirty||t.shouldTouch)&&H(e,l,t.shouldTouch,t.shouldDirty,!0),t.shouldValidate&&ex(e)},en=(e,r,t)=>{for(let n in r){if(!r.hasOwnProperty(n))return;let a=r[n],o=e+"."+n,u=b(i,o);(g.array.has(e)||s(a)||u&&!u._f)&&!l(a)?en(o,a,t):et(o,a,t)}},eo=(e,r,t={})=>{let a=b(i,e),l=g.array.has(e),s=h(r);x(f,e,s),l?(j.array.next({name:e,values:h(f)}),(S.isDirty||S.dirtyFields||C.isDirty||C.dirtyFields)&&t.shouldDirty&&j.state.next({name:e,dirtyFields:$(d,f),isDirty:Q(e,s)})):!a||a._f||o(s)?et(e,s,t):en(e,s,t),ef(e,g)&&j.state.next({...n,name:e}),j.state.next({name:y.mount?e:void 0,values:h(f)})},eu=async e=>{y.mount=!0;let a=e.target,o=a.name,s=!0,d=b(i,o),c=e=>{s=Number.isNaN(e)||l(e)&&isNaN(e.getTime())||P(e,b(f,o,e))},p=es(t.mode),m=es(t.reValidateMode);if(d){let l,y,v=a.type?ea(d._f):u(e),w=e.type===k.BLUR||e.type===k.FOCUS_OUT,_=!ec(d._f)&&!t.resolver&&!b(n.errors,o)&&!d._f.deps||ev(w,b(n.touchedFields,o),n.isSubmitted,m,p),A=ef(o,g,w);x(f,o,v),w?a&&a.readOnly||(d._f.onBlur&&d._f.onBlur(e),r&&r(0)):d._f.onChange&&d._f.onChange(e);let D=H(o,v,w),R=!I(D)||A;if(w||j.state.next({name:o,type:e.type,values:h(f)}),_)return(S.isValid||C.isValid)&&("onBlur"===t.mode?w&&M():w||M()),R&&j.state.next({name:o,...A?{}:D});if(!w&&A&&j.state.next({...n}),t.resolver){let{errors:e}=await Z([o]);if(c(v),s){let r=eh(n.errors,i,o),t=eh(e,i,r.name||o);l=t.error,o=t.name,y=I(e)}}else F([o],!0),l=(await ek(d,g.disabled,f,E,t.shouldUseNativeValidation))[o],F([o]),c(v),s&&(l?y=!1:(S.isValid||C.isValid)&&(y=await J(i,!0)));s&&(d._f.deps&&(!Array.isArray(d._f.deps)||d._f.deps.length>0)&&ex(d._f.deps),X(o,y,l,D))}},ew=(e,r)=>{if(b(n.errors,r)&&e.focus)return e.focus(),1},ex=async(e,r={})=>{let a,l,o=L(e);if(t.resolver){let r=await Y(m(e)?e:o);a=I(r),l=e?!o.some(e=>b(r,e)):a}else e?((l=(await Promise.all(o.map(async e=>{let r=b(i,e);return await J(r&&r._f?{[e]:r}:r)}))).every(Boolean))||n.isValid)&&M():l=a=await J(i);return j.state.next({...!R(e)||(S.isValid||C.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},errors:n.errors}),r.shouldFocus&&!l&&ep(i,ew,e?o:g.mount),l},eA=(e,r)=>{let t={...y.mount?f:d};return r&&(t=function e(r,t){let n={};for(let a in r)if(r.hasOwnProperty(a)){let l=r[a],o=t[a];if(l&&s(l)&&o){let r=e(l,o);s(r)&&(n[a]=r)}else r[a]&&(n[a]=o)}return n}(r.dirtyFields?n.dirtyFields:n.touchedFields,t)),m(e)?t:R(e)?b(t,e):e.map(e=>b(t,e))},eS=(e,r)=>({invalid:!!b((r||n).errors,e),isDirty:!!b((r||n).dirtyFields,e),error:b((r||n).errors,e),isValidating:!!b(n.validatingFields,e),isTouched:!!b((r||n).touchedFields,e)}),eC=(e,r,t)=>{let a=(b(i,e,{_f:{}})._f||{}).ref,{ref:l,message:o,type:s,...u}=b(n.errors,e)||{};x(n.errors,e,{...u,...r,ref:a}),j.state.next({name:e,errors:n.errors,isValid:!1}),t&&t.shouldFocus&&a&&a.focus&&a.focus()},ej=e=>j.state.subscribe({next:r=>{em(e.name,r.name,e.exact)&&ey(r,e.formState||S,eO,e.reRenderRoot)&&e.callback({values:{...f},...n,...r,defaultValues:d})}}).unsubscribe,eE=(e,r={})=>{for(let a of e?L(e):g.mount)g.mount.delete(a),g.array.delete(a),r.keepValue||(W(i,a),W(f,a)),r.keepError||W(n.errors,a),r.keepDirty||W(n.dirtyFields,a),r.keepTouched||W(n.touchedFields,a),r.keepIsValidating||W(n.validatingFields,a),t.shouldUnregister||r.keepDefaultValue||W(d,a);j.state.next({values:h(f)}),j.state.next({...n,...!r.keepDirty?{}:{isDirty:Q()}}),r.keepIsValid||M()},eD=({disabled:e,name:r})=>{(w(e)&&y.mount||e||g.disabled.has(r))&&(e?g.disabled.add(r):g.disabled.delete(r))},eM=(e,r={})=>{let n=b(i,e),a=w(r.disabled)||w(t.disabled);return x(i,e,{...n||{},_f:{...n&&n._f?n._f:{ref:{name:e}},name:e,mount:!0,...r}}),g.mount.add(e),n?eD({disabled:w(r.disabled)?r.disabled:t.disabled,name:e}):T(e,!0,r.value),{...a?{disabled:r.disabled||t.disabled}:{},...t.progressive?{required:!!r.required,min:ei(r.min),max:ei(r.max),minLength:ei(r.minLength),maxLength:ei(r.maxLength),pattern:ei(r.pattern)}:{},name:e,onChange:eu,onBlur:eu,ref:a=>{if(a){eM(e,r),n=b(i,e);let t=m(a.value)&&a.querySelectorAll&&a.querySelectorAll("input,select,textarea")[0]||a,l=q(t),o=n._f.refs||[];(l?o.find(e=>e===t):t===n._f.ref)||(x(i,e,{_f:{...n._f,...l?{refs:[...o.filter(G),t,...Array.isArray(b(d,e))?[{}]:[]],ref:{type:t.type,name:e}}:{ref:t}}}),T(e,!1,void 0,t))}else(n=b(i,e,{}))._f&&(n._f.mount=!1),(t.shouldUnregister||r.shouldUnregister)&&!(c(g.array,e)&&y.action)&&g.unMount.add(e)}}},eR=()=>t.shouldFocusError&&ep(i,ew,g.mount),eV=(e,r)=>async a=>{let l;a&&(a.preventDefault&&a.preventDefault(),a.persist&&a.persist());let o=h(f);if(j.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:r}=await Z();n.errors=e,o=h(r)}else await J(i);if(g.disabled.size)for(let e of g.disabled)W(o,e);if(W(n.errors,"root"),I(n.errors)){j.state.next({errors:{}});try{await e(o,a)}catch(e){l=e}}else r&&await r({...n.errors},a),eR(),setTimeout(eR);if(j.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:I(n.errors)&&!l,submitCount:n.submitCount+1,errors:n.errors}),l)throw l},eF=(e,r={})=>{let a=e?h(e):d,l=h(a),o=I(e),s=o?d:l;if(r.keepDefaultValues||(d=a),!r.keepValues){if(r.keepDirtyValues)for(let e of Array.from(new Set([...g.mount,...Object.keys($(d,f))])))b(n.dirtyFields,e)?x(s,e,b(f,e)):eo(e,b(s,e));else{if(p&&m(e))for(let e of g.mount){let r=b(i,e);if(r&&r._f){let e=Array.isArray(r._f.refs)?r._f.refs[0]:r._f.ref;if(U(e)){let r=e.closest("form");if(r){r.reset();break}}}}if(r.keepFieldsRef)for(let e of g.mount)eo(e,b(s,e));else i={}}f=t.shouldUnregister?r.keepDefaultValues?h(d):{}:h(s),j.array.next({values:{...s}}),j.state.next({values:{...s}})}g={mount:r.keepDirtyValues?g.mount:new Set,unMount:new Set,array:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:""},y.mount=!S.isValid||!!r.keepIsValid||!!r.keepDirtyValues,y.watch=!!t.shouldUnregister,j.state.next({submitCount:r.keepSubmitCount?n.submitCount:0,isDirty:!o&&(r.keepDirty?n.isDirty:!!(r.keepDefaultValues&&!P(e,d))),isSubmitted:!!r.keepIsSubmitted&&n.isSubmitted,dirtyFields:o?{}:r.keepDirtyValues?r.keepDefaultValues&&f?$(d,f):n.dirtyFields:r.keepDefaultValues&&e?$(d,e):r.keepDirty?n.dirtyFields:{},touchedFields:r.keepTouched?n.touchedFields:{},errors:r.keepErrors?n.errors:{},isSubmitSuccessful:!!r.keepIsSubmitSuccessful&&n.isSubmitSuccessful,isSubmitting:!1,defaultValues:d})},eP=(e,r)=>eF(K(e)?e(f):e,r),eO=e=>{n={...n,...e}},eT={control:{register:eM,unregister:eE,getFieldState:eS,handleSubmit:eV,setError:eC,_subscribe:ej,_runSchema:Z,_focusError:eR,_getWatch:ee,_getDirty:Q,_setValid:M,_setFieldArray:(e,r=[],a,l,o=!0,s=!0)=>{if(l&&a&&!t.disabled){if(y.action=!0,s&&Array.isArray(b(i,e))){let r=a(b(i,e),l.argA,l.argB);o&&x(i,e,r)}if(s&&Array.isArray(b(n.errors,e))){let r=a(b(n.errors,e),l.argA,l.argB);o&&x(n.errors,e,r),eg(n.errors,e)}if((S.touchedFields||C.touchedFields)&&s&&Array.isArray(b(n.touchedFields,e))){let r=a(b(n.touchedFields,e),l.argA,l.argB);o&&x(n.touchedFields,e,r)}(S.dirtyFields||C.dirtyFields)&&(n.dirtyFields=$(d,f)),j.state.next({name:e,isDirty:Q(e,r),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else x(f,e,r)},_setDisabledField:eD,_setErrors:e=>{n.errors=e,j.state.next({errors:n.errors,isValid:!1})},_getFieldArray:e=>v(b(y.mount?f:d,e,t.shouldUnregister?b(d,e,[]):[])),_reset:eF,_resetDefaultValues:()=>K(t.defaultValues)&&t.defaultValues().then(e=>{eP(e,t.resetOptions),j.state.next({isLoading:!1})}),_removeUnmounted:()=>{for(let e of g.unMount){let r=b(i,e);r&&(r._f.refs?r._f.refs.every(e=>!G(e)):!G(r._f.ref))&&eE(e)}g.unMount=new Set},_disableForm:e=>{w(e)&&(j.state.next({disabled:e}),ep(i,(r,t)=>{let n=b(i,t);n&&(r.disabled=n._f.disabled||e,Array.isArray(n._f.refs)&&n._f.refs.forEach(r=>{r.disabled=n._f.disabled||e}))},0,!1))},_subjects:j,_proxyFormState:S,get _fields(){return i},get _formValues(){return f},get _state(){return y},set _state(value){y=value},get _defaultValues(){return d},get _names(){return g},set _names(value){g=value},get _formState(){return n},get _options(){return t},set _options(value){t={...t,...value}}},subscribe:e=>(y.mount=!0,C={...C,...e.formState},ej({...e,formState:C})),trigger:ex,register:eM,handleSubmit:eV,watch:(e,r)=>K(e)?j.state.subscribe({next:t=>"values"in t&&e(ee(void 0,r),t)}):ee(e,r,!0),setValue:eo,getValues:eA,reset:eP,resetField:(e,r={})=>{b(i,e)&&(m(r.defaultValue)?eo(e,h(b(d,e))):(eo(e,r.defaultValue),x(d,e,h(r.defaultValue))),r.keepTouched||W(n.touchedFields,e),r.keepDirty||(W(n.dirtyFields,e),n.isDirty=r.defaultValue?Q(e,h(b(d,e))):Q()),!r.keepError&&(W(n.errors,e),S.isValid&&M()),j.state.next({...n}))},clearErrors:e=>{e&&L(e).forEach(e=>W(n.errors,e)),j.state.next({errors:e?n.errors:{}})},unregister:eE,setError:eC,setFocus:(e,r={})=>{let t=b(i,e),n=t&&t._f;if(n){let e=n.refs?n.refs[0]:n.ref;e.focus&&(e.focus(),r.shouldSelect&&K(e.select)&&e.select())}},getFieldState:eS};return{...eT,formControl:eT}}(e);r.current={...n,formState:i}}let f=r.current.control;return f._options=e,D(()=>{let e=f._subscribe({formState:f._proxyFormState,callback:()=>d({...f._formState}),reRenderRoot:!0});return d(e=>({...e,isReady:!0})),f._formState.isReady=!0,e},[f]),n.useEffect(()=>f._disableForm(e.disabled),[f,e.disabled]),n.useEffect(()=>{e.mode&&(f._options.mode=e.mode),e.reValidateMode&&(f._options.reValidateMode=e.reValidateMode)},[f,e.mode,e.reValidateMode]),n.useEffect(()=>{e.errors&&(f._setErrors(e.errors),f._focusError())},[f,e.errors]),n.useEffect(()=>{e.shouldUnregister&&f._subjects.state.next({values:f._getWatch()})},[f,e.shouldUnregister]),n.useEffect(()=>{if(f._proxyFormState.isDirty){let e=f._getDirty();e!==i.isDirty&&f._subjects.state.next({isDirty:e})}},[f,i.isDirty]),n.useEffect(()=>{e.values&&!P(e.values,t.current)?(f._reset(e.values,{keepFieldsRef:!0,...f._options.resetOptions}),t.current=e.values,d(e=>({...e}))):f._resetDefaultValues()},[f,e.values]),n.useEffect(()=>{f._state.mount||(f._setValid(),f._state.mount=!0),f._state.watch&&(f._state.watch=!1,f._subjects.state.next({...f._formState})),f._removeUnmounted()}),r.current.formState=E(i,f),r.current}},1853:(e,r,t)=>{t.d(r,{C1:()=>_,bL:()=>x});var n=t(4398),a=t(2050),l=t(940),o=t(6687),i=t(6657),s=t(6017),u=t(4753),d=t(6175),c=t(3780),f=t(3422),p="Checkbox",[h,y]=(0,l.A)(p),[m,v]=h(p);function g(e){let{__scopeCheckbox:r,checked:t,children:a,defaultChecked:l,disabled:o,form:s,name:u,onCheckedChange:d,required:c,value:h="on",internal_do_not_use_render:y}=e,[v,g]=(0,i.i)({prop:t,defaultProp:null!=l&&l,onChange:d,caller:p}),[b,w]=n.useState(null),[x,k]=n.useState(null),_=n.useRef(!1),A=!b||!!s||!!b.closest("form"),S={checked:v,disabled:o,setChecked:g,control:b,setControl:w,name:u,form:s,value:h,hasConsumerStoppedPropagationRef:_,required:c,defaultChecked:!C(l)&&l,isFormControl:A,bubbleInput:x,setBubbleInput:k};return(0,f.jsx)(m,{scope:r,...S,children:"function"==typeof y?y(S):a})}var b="CheckboxTrigger",w=n.forwardRef((e,r)=>{let{__scopeCheckbox:t,onKeyDown:l,onClick:i,...s}=e,{control:u,value:d,disabled:p,checked:h,required:y,setControl:m,setChecked:g,hasConsumerStoppedPropagationRef:w,isFormControl:x,bubbleInput:k}=v(b,t),_=(0,a.s)(r,m),A=n.useRef(h);return n.useEffect(()=>{let e=null==u?void 0:u.form;if(e){let r=()=>g(A.current);return e.addEventListener("reset",r),()=>e.removeEventListener("reset",r)}},[u,g]),(0,f.jsx)(c.sG.button,{type:"button",role:"checkbox","aria-checked":C(h)?"mixed":h,"aria-required":y,"data-state":j(h),"data-disabled":p?"":void 0,disabled:p,value:d,...s,ref:_,onKeyDown:(0,o.mK)(l,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,o.mK)(i,e=>{g(e=>!!C(e)||!e),k&&x&&(w.current=e.isPropagationStopped(),w.current||e.stopPropagation())})})});w.displayName=b;var x=n.forwardRef((e,r)=>{let{__scopeCheckbox:t,name:n,checked:a,defaultChecked:l,required:o,disabled:i,value:s,onCheckedChange:u,form:d,...c}=e;return(0,f.jsx)(g,{__scopeCheckbox:t,checked:a,defaultChecked:l,disabled:i,required:o,onCheckedChange:u,name:n,form:d,value:s,internal_do_not_use_render:e=>{let{isFormControl:n}=e;return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(w,{...c,ref:r,__scopeCheckbox:t}),n&&(0,f.jsx)(S,{__scopeCheckbox:t})]})}})});x.displayName=p;var k="CheckboxIndicator",_=n.forwardRef((e,r)=>{let{__scopeCheckbox:t,forceMount:n,...a}=e,l=v(k,t);return(0,f.jsx)(d.C,{present:n||C(l.checked)||!0===l.checked,children:(0,f.jsx)(c.sG.span,{"data-state":j(l.checked),"data-disabled":l.disabled?"":void 0,...a,ref:r,style:{pointerEvents:"none",...e.style}})})});_.displayName=k;var A="CheckboxBubbleInput",S=n.forwardRef((e,r)=>{let{__scopeCheckbox:t,...l}=e,{control:o,hasConsumerStoppedPropagationRef:i,checked:d,defaultChecked:p,required:h,disabled:y,name:m,value:g,form:b,bubbleInput:w,setBubbleInput:x}=v(A,t),k=(0,a.s)(r,x),_=(0,s.Z)(d),S=(0,u.X)(o);n.useEffect(()=>{if(!w)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,r=!i.current;if(_!==d&&e){let t=new Event("click",{bubbles:r});w.indeterminate=C(d),e.call(w,!C(d)&&d),w.dispatchEvent(t)}},[w,_,d,i]);let j=n.useRef(!C(d)&&d);return(0,f.jsx)(c.sG.input,{type:"checkbox","aria-hidden":!0,defaultChecked:null!=p?p:j.current,required:h,disabled:y,name:m,value:g,form:b,...l,tabIndex:-1,ref:k,style:{...l.style,...S,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function C(e){return"indeterminate"===e}function j(e){return C(e)?"indeterminate":e?"checked":"unchecked"}S.displayName=A},1935:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]])},2034:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]])},2267:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},2390:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]])},2434:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},3545:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("square-check-big",[["path",{d:"M21 10.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.5",key:"1uzm8b"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},3728:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},3732:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("ellipsis-vertical",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]])},4713:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("volume-2",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]])},4717:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]])},4938:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("file-text",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]])},4963:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]])},5195:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]])},6049:(e,r,t)=>{t.d(r,{UC:()=>eW,q7:()=>eX,ZL:()=>eG,bL:()=>eH,wv:()=>eZ,l9:()=>eq});var n=t(4398),a=t(6687),l=t(2050),o=t(940),i=t(6657),s=t(3780),u=t(6383),d=t(7689),c=t(3213),f=t(7),p=t(3138),h=t(6565),y=t(6387),m=t(1732),v=t(6175),g=t(718),b=t(6950),w=t(7589),x=t(3871),k=t(3338),_=t(3422),A=["Enter"," "],S=["ArrowUp","PageDown","End"],C=["ArrowDown","PageUp","Home",...S],j={ltr:[...A,"ArrowRight"],rtl:[...A,"ArrowLeft"]},E={ltr:["ArrowLeft"],rtl:["ArrowRight"]},D="Menu",[M,R,V]=(0,u.N)(D),[F,P]=(0,o.A)(D,[V,y.Bk,g.RG]),O=(0,y.Bk)(),T=(0,g.RG)(),[L,N]=F(D),[I,z]=F(D),K=e=>{let{__scopeMenu:r,open:t=!1,children:a,dir:l,onOpenChange:o,modal:i=!0}=e,s=O(r),[u,c]=n.useState(null),f=n.useRef(!1),p=(0,w.c)(o),h=(0,d.jH)(l);return n.useEffect(()=>{let e=()=>{f.current=!0,document.addEventListener("pointerdown",r,{capture:!0,once:!0}),document.addEventListener("pointermove",r,{capture:!0,once:!0})},r=()=>f.current=!1;return document.addEventListener("keydown",e,{capture:!0}),()=>{document.removeEventListener("keydown",e,{capture:!0}),document.removeEventListener("pointerdown",r,{capture:!0}),document.removeEventListener("pointermove",r,{capture:!0})}},[]),(0,_.jsx)(y.bL,{...s,children:(0,_.jsx)(L,{scope:r,open:t,onOpenChange:p,content:u,onContentChange:c,children:(0,_.jsx)(I,{scope:r,onClose:n.useCallback(()=>p(!1),[p]),isUsingKeyboardRef:f,dir:h,modal:i,children:a})})})};K.displayName=D;var U=n.forwardRef((e,r)=>{let{__scopeMenu:t,...n}=e,a=O(t);return(0,_.jsx)(y.Mz,{...a,...n,ref:r})});U.displayName="MenuAnchor";var B="MenuPortal",[H,q]=F(B,{forceMount:void 0}),G=e=>{let{__scopeMenu:r,forceMount:t,children:n,container:a}=e,l=N(B,r);return(0,_.jsx)(H,{scope:r,forceMount:t,children:(0,_.jsx)(v.C,{present:t||l.open,children:(0,_.jsx)(m.Z,{asChild:!0,container:a,children:n})})})};G.displayName=B;var W="MenuContent",[X,Z]=F(W),Y=n.forwardRef((e,r)=>{let t=q(W,e.__scopeMenu),{forceMount:n=t.forceMount,...a}=e,l=N(W,e.__scopeMenu),o=z(W,e.__scopeMenu);return(0,_.jsx)(M.Provider,{scope:e.__scopeMenu,children:(0,_.jsx)(v.C,{present:n||l.open,children:(0,_.jsx)(M.Slot,{scope:e.__scopeMenu,children:o.modal?(0,_.jsx)($,{...a,ref:r}):(0,_.jsx)(J,{...a,ref:r})})})})}),$=n.forwardRef((e,r)=>{let t=N(W,e.__scopeMenu),o=n.useRef(null),i=(0,l.s)(r,o);return n.useEffect(()=>{let e=o.current;if(e)return(0,x.Eq)(e)},[]),(0,_.jsx)(ee,{...e,ref:i,trapFocus:t.open,disableOutsidePointerEvents:t.open,disableOutsideScroll:!0,onFocusOutside:(0,a.mK)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>t.onOpenChange(!1)})}),J=n.forwardRef((e,r)=>{let t=N(W,e.__scopeMenu);return(0,_.jsx)(ee,{...e,ref:r,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>t.onOpenChange(!1)})}),Q=(0,b.TL)("MenuContent.ScrollLock"),ee=n.forwardRef((e,r)=>{let{__scopeMenu:t,loop:o=!1,trapFocus:i,onOpenAutoFocus:s,onCloseAutoFocus:u,disableOutsidePointerEvents:d,onEntryFocus:h,onEscapeKeyDown:m,onPointerDownOutside:v,onFocusOutside:b,onInteractOutside:w,onDismiss:x,disableOutsideScroll:A,...j}=e,E=N(W,t),D=z(W,t),M=O(t),V=T(t),F=R(t),[P,L]=n.useState(null),I=n.useRef(null),K=(0,l.s)(r,I,E.onContentChange),U=n.useRef(0),B=n.useRef(""),H=n.useRef(0),q=n.useRef(null),G=n.useRef("right"),Z=n.useRef(0),Y=A?k.A:n.Fragment,$=e=>{var r,t;let n=B.current+e,a=F().filter(e=>!e.disabled),l=document.activeElement,o=null==(r=a.find(e=>e.ref.current===l))?void 0:r.textValue,i=function(e,r,t){var n;let a=r.length>1&&Array.from(r).every(e=>e===r[0])?r[0]:r,l=t?e.indexOf(t):-1,o=(n=Math.max(l,0),e.map((r,t)=>e[(n+t)%e.length]));1===a.length&&(o=o.filter(e=>e!==t));let i=o.find(e=>e.toLowerCase().startsWith(a.toLowerCase()));return i!==t?i:void 0}(a.map(e=>e.textValue),n,o),s=null==(t=a.find(e=>e.textValue===i))?void 0:t.ref.current;!function e(r){B.current=r,window.clearTimeout(U.current),""!==r&&(U.current=window.setTimeout(()=>e(""),1e3))}(n),s&&setTimeout(()=>s.focus())};n.useEffect(()=>()=>window.clearTimeout(U.current),[]),(0,f.Oh)();let J=n.useCallback(e=>{var r,t;return G.current===(null==(r=q.current)?void 0:r.side)&&function(e,r){return!!r&&function(e,r){let{x:t,y:n}=e,a=!1;for(let e=0,l=r.length-1;en!=c>n&&t<(d-s)*(n-u)/(c-u)+s&&(a=!a)}return a}({x:e.clientX,y:e.clientY},r)}(e,null==(t=q.current)?void 0:t.area)},[]);return(0,_.jsx)(X,{scope:t,searchRef:B,onItemEnter:n.useCallback(e=>{J(e)&&e.preventDefault()},[J]),onItemLeave:n.useCallback(e=>{var r;J(e)||(null==(r=I.current)||r.focus(),L(null))},[J]),onTriggerLeave:n.useCallback(e=>{J(e)&&e.preventDefault()},[J]),pointerGraceTimerRef:H,onPointerGraceIntentChange:n.useCallback(e=>{q.current=e},[]),children:(0,_.jsx)(Y,{...A?{as:Q,allowPinchZoom:!0}:void 0,children:(0,_.jsx)(p.n,{asChild:!0,trapped:i,onMountAutoFocus:(0,a.mK)(s,e=>{var r;e.preventDefault(),null==(r=I.current)||r.focus({preventScroll:!0})}),onUnmountAutoFocus:u,children:(0,_.jsx)(c.qW,{asChild:!0,disableOutsidePointerEvents:d,onEscapeKeyDown:m,onPointerDownOutside:v,onFocusOutside:b,onInteractOutside:w,onDismiss:x,children:(0,_.jsx)(g.bL,{asChild:!0,...V,dir:D.dir,orientation:"vertical",loop:o,currentTabStopId:P,onCurrentTabStopIdChange:L,onEntryFocus:(0,a.mK)(h,e=>{D.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,_.jsx)(y.UC,{role:"menu","aria-orientation":"vertical","data-state":eC(E.open),"data-radix-menu-content":"",dir:D.dir,...M,...j,ref:K,style:{outline:"none",...j.style},onKeyDown:(0,a.mK)(j.onKeyDown,e=>{let r=e.target.closest("[data-radix-menu-content]")===e.currentTarget,t=e.ctrlKey||e.altKey||e.metaKey,n=1===e.key.length;r&&("Tab"===e.key&&e.preventDefault(),!t&&n&&$(e.key));let a=I.current;if(e.target!==a||!C.includes(e.key))return;e.preventDefault();let l=F().filter(e=>!e.disabled).map(e=>e.ref.current);S.includes(e.key)&&l.reverse(),function(e){let r=document.activeElement;for(let t of e)if(t===r||(t.focus(),document.activeElement!==r))return}(l)}),onBlur:(0,a.mK)(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(U.current),B.current="")}),onPointerMove:(0,a.mK)(e.onPointerMove,eD(e=>{let r=e.target,t=Z.current!==e.clientX;e.currentTarget.contains(r)&&t&&(G.current=e.clientX>Z.current?"right":"left",Z.current=e.clientX)}))})})})})})})});Y.displayName=W;var er=n.forwardRef((e,r)=>{let{__scopeMenu:t,...n}=e;return(0,_.jsx)(s.sG.div,{role:"group",...n,ref:r})});er.displayName="MenuGroup";var et=n.forwardRef((e,r)=>{let{__scopeMenu:t,...n}=e;return(0,_.jsx)(s.sG.div,{...n,ref:r})});et.displayName="MenuLabel";var en="MenuItem",ea="menu.itemSelect",el=n.forwardRef((e,r)=>{let{disabled:t=!1,onSelect:o,...i}=e,u=n.useRef(null),d=z(en,e.__scopeMenu),c=Z(en,e.__scopeMenu),f=(0,l.s)(r,u),p=n.useRef(!1);return(0,_.jsx)(eo,{...i,ref:f,disabled:t,onClick:(0,a.mK)(e.onClick,()=>{let e=u.current;if(!t&&e){let r=new CustomEvent(ea,{bubbles:!0,cancelable:!0});e.addEventListener(ea,e=>null==o?void 0:o(e),{once:!0}),(0,s.hO)(e,r),r.defaultPrevented?p.current=!1:d.onClose()}}),onPointerDown:r=>{var t;null==(t=e.onPointerDown)||t.call(e,r),p.current=!0},onPointerUp:(0,a.mK)(e.onPointerUp,e=>{var r;p.current||null==(r=e.currentTarget)||r.click()}),onKeyDown:(0,a.mK)(e.onKeyDown,e=>{let r=""!==c.searchRef.current;t||r&&" "===e.key||A.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});el.displayName=en;var eo=n.forwardRef((e,r)=>{let{__scopeMenu:t,disabled:o=!1,textValue:i,...u}=e,d=Z(en,t),c=T(t),f=n.useRef(null),p=(0,l.s)(r,f),[h,y]=n.useState(!1),[m,v]=n.useState("");return n.useEffect(()=>{let e=f.current;if(e){var r;v((null!=(r=e.textContent)?r:"").trim())}},[u.children]),(0,_.jsx)(M.ItemSlot,{scope:t,disabled:o,textValue:null!=i?i:m,children:(0,_.jsx)(g.q7,{asChild:!0,...c,focusable:!o,children:(0,_.jsx)(s.sG.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":o||void 0,"data-disabled":o?"":void 0,...u,ref:p,onPointerMove:(0,a.mK)(e.onPointerMove,eD(e=>{o?d.onItemLeave(e):(d.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:(0,a.mK)(e.onPointerLeave,eD(e=>d.onItemLeave(e))),onFocus:(0,a.mK)(e.onFocus,()=>y(!0)),onBlur:(0,a.mK)(e.onBlur,()=>y(!1))})})})}),ei=n.forwardRef((e,r)=>{let{checked:t=!1,onCheckedChange:n,...l}=e;return(0,_.jsx)(ey,{scope:e.__scopeMenu,checked:t,children:(0,_.jsx)(el,{role:"menuitemcheckbox","aria-checked":ej(t)?"mixed":t,...l,ref:r,"data-state":eE(t),onSelect:(0,a.mK)(l.onSelect,()=>null==n?void 0:n(!!ej(t)||!t),{checkForDefaultPrevented:!1})})})});ei.displayName="MenuCheckboxItem";var es="MenuRadioGroup",[eu,ed]=F(es,{value:void 0,onValueChange:()=>{}}),ec=n.forwardRef((e,r)=>{let{value:t,onValueChange:n,...a}=e,l=(0,w.c)(n);return(0,_.jsx)(eu,{scope:e.__scopeMenu,value:t,onValueChange:l,children:(0,_.jsx)(er,{...a,ref:r})})});ec.displayName=es;var ef="MenuRadioItem",ep=n.forwardRef((e,r)=>{let{value:t,...n}=e,l=ed(ef,e.__scopeMenu),o=t===l.value;return(0,_.jsx)(ey,{scope:e.__scopeMenu,checked:o,children:(0,_.jsx)(el,{role:"menuitemradio","aria-checked":o,...n,ref:r,"data-state":eE(o),onSelect:(0,a.mK)(n.onSelect,()=>{var e;return null==(e=l.onValueChange)?void 0:e.call(l,t)},{checkForDefaultPrevented:!1})})})});ep.displayName=ef;var eh="MenuItemIndicator",[ey,em]=F(eh,{checked:!1}),ev=n.forwardRef((e,r)=>{let{__scopeMenu:t,forceMount:n,...a}=e,l=em(eh,t);return(0,_.jsx)(v.C,{present:n||ej(l.checked)||!0===l.checked,children:(0,_.jsx)(s.sG.span,{...a,ref:r,"data-state":eE(l.checked)})})});ev.displayName=eh;var eg=n.forwardRef((e,r)=>{let{__scopeMenu:t,...n}=e;return(0,_.jsx)(s.sG.div,{role:"separator","aria-orientation":"horizontal",...n,ref:r})});eg.displayName="MenuSeparator";var eb=n.forwardRef((e,r)=>{let{__scopeMenu:t,...n}=e,a=O(t);return(0,_.jsx)(y.i3,{...a,...n,ref:r})});eb.displayName="MenuArrow";var[ew,ex]=F("MenuSub"),ek="MenuSubTrigger",e_=n.forwardRef((e,r)=>{let t=N(ek,e.__scopeMenu),o=z(ek,e.__scopeMenu),i=ex(ek,e.__scopeMenu),s=Z(ek,e.__scopeMenu),u=n.useRef(null),{pointerGraceTimerRef:d,onPointerGraceIntentChange:c}=s,f={__scopeMenu:e.__scopeMenu},p=n.useCallback(()=>{u.current&&window.clearTimeout(u.current),u.current=null},[]);return n.useEffect(()=>p,[p]),n.useEffect(()=>{let e=d.current;return()=>{window.clearTimeout(e),c(null)}},[d,c]),(0,_.jsx)(U,{asChild:!0,...f,children:(0,_.jsx)(eo,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":t.open,"aria-controls":i.contentId,"data-state":eC(t.open),...e,ref:(0,l.t)(r,i.onTriggerChange),onClick:r=>{var n;null==(n=e.onClick)||n.call(e,r),e.disabled||r.defaultPrevented||(r.currentTarget.focus(),t.open||t.onOpenChange(!0))},onPointerMove:(0,a.mK)(e.onPointerMove,eD(r=>{s.onItemEnter(r),!r.defaultPrevented&&(e.disabled||t.open||u.current||(s.onPointerGraceIntentChange(null),u.current=window.setTimeout(()=>{t.onOpenChange(!0),p()},100)))})),onPointerLeave:(0,a.mK)(e.onPointerLeave,eD(e=>{var r,n;p();let a=null==(r=t.content)?void 0:r.getBoundingClientRect();if(a){let r=null==(n=t.content)?void 0:n.dataset.side,l="right"===r,o=a[l?"left":"right"],i=a[l?"right":"left"];s.onPointerGraceIntentChange({area:[{x:e.clientX+(l?-5:5),y:e.clientY},{x:o,y:a.top},{x:i,y:a.top},{x:i,y:a.bottom},{x:o,y:a.bottom}],side:r}),window.clearTimeout(d.current),d.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(e),e.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:(0,a.mK)(e.onKeyDown,r=>{let n=""!==s.searchRef.current;if(!e.disabled&&(!n||" "!==r.key)&&j[o.dir].includes(r.key)){var a;t.onOpenChange(!0),null==(a=t.content)||a.focus(),r.preventDefault()}})})})});e_.displayName=ek;var eA="MenuSubContent",eS=n.forwardRef((e,r)=>{let t=q(W,e.__scopeMenu),{forceMount:o=t.forceMount,...i}=e,s=N(W,e.__scopeMenu),u=z(W,e.__scopeMenu),d=ex(eA,e.__scopeMenu),c=n.useRef(null),f=(0,l.s)(r,c);return(0,_.jsx)(M.Provider,{scope:e.__scopeMenu,children:(0,_.jsx)(v.C,{present:o||s.open,children:(0,_.jsx)(M.Slot,{scope:e.__scopeMenu,children:(0,_.jsx)(ee,{id:d.contentId,"aria-labelledby":d.triggerId,...i,ref:f,align:"start",side:"rtl"===u.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{var r;u.isUsingKeyboardRef.current&&(null==(r=c.current)||r.focus()),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:(0,a.mK)(e.onFocusOutside,e=>{e.target!==d.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:(0,a.mK)(e.onEscapeKeyDown,e=>{u.onClose(),e.preventDefault()}),onKeyDown:(0,a.mK)(e.onKeyDown,e=>{let r=e.currentTarget.contains(e.target),t=E[u.dir].includes(e.key);if(r&&t){var n;s.onOpenChange(!1),null==(n=d.trigger)||n.focus(),e.preventDefault()}})})})})})});function eC(e){return e?"open":"closed"}function ej(e){return"indeterminate"===e}function eE(e){return ej(e)?"indeterminate":e?"checked":"unchecked"}function eD(e){return r=>"mouse"===r.pointerType?e(r):void 0}eS.displayName=eA;var eM="DropdownMenu",[eR,eV]=(0,o.A)(eM,[P]),eF=P(),[eP,eO]=eR(eM),eT=e=>{let{__scopeDropdownMenu:r,children:t,dir:a,open:l,defaultOpen:o,onOpenChange:s,modal:u=!0}=e,d=eF(r),c=n.useRef(null),[f,p]=(0,i.i)({prop:l,defaultProp:null!=o&&o,onChange:s,caller:eM});return(0,_.jsx)(eP,{scope:r,triggerId:(0,h.B)(),triggerRef:c,contentId:(0,h.B)(),open:f,onOpenChange:p,onOpenToggle:n.useCallback(()=>p(e=>!e),[p]),modal:u,children:(0,_.jsx)(K,{...d,open:f,onOpenChange:p,dir:a,modal:u,children:t})})};eT.displayName=eM;var eL="DropdownMenuTrigger",eN=n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,disabled:n=!1,...o}=e,i=eO(eL,t),u=eF(t);return(0,_.jsx)(U,{asChild:!0,...u,children:(0,_.jsx)(s.sG.button,{type:"button",id:i.triggerId,"aria-haspopup":"menu","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":i.open?"open":"closed","data-disabled":n?"":void 0,disabled:n,...o,ref:(0,l.t)(r,i.triggerRef),onPointerDown:(0,a.mK)(e.onPointerDown,e=>{!n&&0===e.button&&!1===e.ctrlKey&&(i.onOpenToggle(),i.open||e.preventDefault())}),onKeyDown:(0,a.mK)(e.onKeyDown,e=>{!n&&(["Enter"," "].includes(e.key)&&i.onOpenToggle(),"ArrowDown"===e.key&&i.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(e.key)&&e.preventDefault())})})})});eN.displayName=eL;var eI=e=>{let{__scopeDropdownMenu:r,...t}=e,n=eF(r);return(0,_.jsx)(G,{...n,...t})};eI.displayName="DropdownMenuPortal";var ez="DropdownMenuContent",eK=n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...l}=e,o=eO(ez,t),i=eF(t),s=n.useRef(!1);return(0,_.jsx)(Y,{id:o.contentId,"aria-labelledby":o.triggerId,...i,...l,ref:r,onCloseAutoFocus:(0,a.mK)(e.onCloseAutoFocus,e=>{var r;s.current||null==(r=o.triggerRef.current)||r.focus(),s.current=!1,e.preventDefault()}),onInteractOutside:(0,a.mK)(e.onInteractOutside,e=>{let r=e.detail.originalEvent,t=0===r.button&&!0===r.ctrlKey,n=2===r.button||t;(!o.modal||n)&&(s.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});eK.displayName=ez,n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(er,{...a,...n,ref:r})}).displayName="DropdownMenuGroup",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(et,{...a,...n,ref:r})}).displayName="DropdownMenuLabel";var eU=n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(el,{...a,...n,ref:r})});eU.displayName="DropdownMenuItem",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(ei,{...a,...n,ref:r})}).displayName="DropdownMenuCheckboxItem",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(ec,{...a,...n,ref:r})}).displayName="DropdownMenuRadioGroup",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(ep,{...a,...n,ref:r})}).displayName="DropdownMenuRadioItem",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(ev,{...a,...n,ref:r})}).displayName="DropdownMenuItemIndicator";var eB=n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(eg,{...a,...n,ref:r})});eB.displayName="DropdownMenuSeparator",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(eb,{...a,...n,ref:r})}).displayName="DropdownMenuArrow",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(e_,{...a,...n,ref:r})}).displayName="DropdownMenuSubTrigger",n.forwardRef((e,r)=>{let{__scopeDropdownMenu:t,...n}=e,a=eF(t);return(0,_.jsx)(eS,{...a,...n,ref:r,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})}).displayName="DropdownMenuSubContent";var eH=eT,eq=eN,eG=eI,eW=eK,eX=eU,eZ=eB},7228:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]])},7996:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("pen-line",[["path",{d:"M12 20h9",key:"t2du7b"}],["path",{d:"M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z",key:"1ykcvy"}]])},8815:(e,r,t)=>{t.d(r,{UC:()=>F,VY:()=>L,ZD:()=>O,ZL:()=>R,bL:()=>M,hE:()=>T,hJ:()=>V,rc:()=>P});var n=t(4398),a=t(940),l=t(2050),o=t(4316),i=t(6687),s=t(6950),u=t(3422),d="AlertDialog",[c,f]=(0,a.A)(d,[o.Hs]),p=(0,o.Hs)(),h=e=>{let{__scopeAlertDialog:r,...t}=e,n=p(r);return(0,u.jsx)(o.bL,{...n,...t,modal:!0})};h.displayName=d,n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,...n}=e,a=p(t);return(0,u.jsx)(o.l9,{...a,...n,ref:r})}).displayName="AlertDialogTrigger";var y=e=>{let{__scopeAlertDialog:r,...t}=e,n=p(r);return(0,u.jsx)(o.ZL,{...n,...t})};y.displayName="AlertDialogPortal";var m=n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,...n}=e,a=p(t);return(0,u.jsx)(o.hJ,{...a,...n,ref:r})});m.displayName="AlertDialogOverlay";var v="AlertDialogContent",[g,b]=c(v),w=(0,s.Dc)("AlertDialogContent"),x=n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,children:a,...s}=e,d=p(t),c=n.useRef(null),f=(0,l.s)(r,c),h=n.useRef(null);return(0,u.jsx)(o.G$,{contentName:v,titleName:k,docsSlug:"alert-dialog",children:(0,u.jsx)(g,{scope:t,cancelRef:h,children:(0,u.jsxs)(o.UC,{role:"alertdialog",...d,...s,ref:f,onOpenAutoFocus:(0,i.mK)(s.onOpenAutoFocus,e=>{var r;e.preventDefault(),null==(r=h.current)||r.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,u.jsx)(w,{children:a}),(0,u.jsx)(D,{contentRef:c})]})})})});x.displayName=v;var k="AlertDialogTitle",_=n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,...n}=e,a=p(t);return(0,u.jsx)(o.hE,{...a,...n,ref:r})});_.displayName=k;var A="AlertDialogDescription",S=n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,...n}=e,a=p(t);return(0,u.jsx)(o.VY,{...a,...n,ref:r})});S.displayName=A;var C=n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,...n}=e,a=p(t);return(0,u.jsx)(o.bm,{...a,...n,ref:r})});C.displayName="AlertDialogAction";var j="AlertDialogCancel",E=n.forwardRef((e,r)=>{let{__scopeAlertDialog:t,...n}=e,{cancelRef:a}=b(j,t),i=p(t),s=(0,l.s)(r,a);return(0,u.jsx)(o.bm,{...i,...n,ref:s})});E.displayName=j;var D=e=>{let{contentRef:r}=e,t="`".concat(v,"` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the `").concat(v,"` by passing a `").concat(A,"` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an `id` and passing the same value to the `aria-describedby` prop in `").concat(v,"`. If the description is confusing or duplicative for sighted users, you can use the `@radix-ui/react-visually-hidden` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog");return n.useEffect(()=>{var e;document.getElementById(null==(e=r.current)?void 0:e.getAttribute("aria-describedby"))||console.warn(t)},[t,r]),null},M=h,R=y,V=m,F=x,P=C,O=E,T=_,L=S},9197:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("ban",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]])},9472:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("list",[["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 18h.01",key:"1tta3j"}],["path",{d:"M3 6h.01",key:"1rqtza"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 18h13",key:"1lx6n3"}],["path",{d:"M8 6h13",key:"ik3vkj"}]])},9625:(e,r,t)=>{t.d(r,{LM:()=>X,OK:()=>Z,VM:()=>_,bL:()=>W,lr:()=>P});var n=t(4398),a=t(3780),l=t(6175),o=t(940),i=t(2050),s=t(7589),u=t(7689),d=t(3177),c=t(1537),f=t(6687),p=t(3422),h="ScrollArea",[y,m]=(0,o.A)(h),[v,g]=y(h),b=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,type:l="hover",dir:o,scrollHideDelay:s=600,...d}=e,[c,f]=n.useState(null),[h,y]=n.useState(null),[m,g]=n.useState(null),[b,w]=n.useState(null),[x,k]=n.useState(null),[_,A]=n.useState(0),[S,C]=n.useState(0),[j,E]=n.useState(!1),[D,M]=n.useState(!1),R=(0,i.s)(r,e=>f(e)),V=(0,u.jH)(o);return(0,p.jsx)(v,{scope:t,type:l,dir:V,scrollHideDelay:s,scrollArea:c,viewport:h,onViewportChange:y,content:m,onContentChange:g,scrollbarX:b,onScrollbarXChange:w,scrollbarXEnabled:j,onScrollbarXEnabledChange:E,scrollbarY:x,onScrollbarYChange:k,scrollbarYEnabled:D,onScrollbarYEnabledChange:M,onCornerWidthChange:A,onCornerHeightChange:C,children:(0,p.jsx)(a.sG.div,{dir:V,...d,ref:R,style:{position:"relative","--radix-scroll-area-corner-width":_+"px","--radix-scroll-area-corner-height":S+"px",...e.style}})})});b.displayName=h;var w="ScrollAreaViewport",x=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,children:l,nonce:o,...s}=e,u=g(w,t),d=n.useRef(null),c=(0,i.s)(r,d,u.onViewportChange);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),(0,p.jsx)(a.sG.div,{"data-radix-scroll-area-viewport":"",...s,ref:c,style:{overflowX:u.scrollbarXEnabled?"scroll":"hidden",overflowY:u.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,p.jsx)("div",{ref:u.onContentChange,style:{minWidth:"100%",display:"table"},children:l})})]})});x.displayName=w;var k="ScrollAreaScrollbar",_=n.forwardRef((e,r)=>{let{forceMount:t,...a}=e,l=g(k,e.__scopeScrollArea),{onScrollbarXEnabledChange:o,onScrollbarYEnabledChange:i}=l,s="horizontal"===e.orientation;return n.useEffect(()=>(s?o(!0):i(!0),()=>{s?o(!1):i(!1)}),[s,o,i]),"hover"===l.type?(0,p.jsx)(A,{...a,ref:r,forceMount:t}):"scroll"===l.type?(0,p.jsx)(S,{...a,ref:r,forceMount:t}):"auto"===l.type?(0,p.jsx)(C,{...a,ref:r,forceMount:t}):"always"===l.type?(0,p.jsx)(j,{...a,ref:r}):null});_.displayName=k;var A=n.forwardRef((e,r)=>{let{forceMount:t,...a}=e,o=g(k,e.__scopeScrollArea),[i,s]=n.useState(!1);return n.useEffect(()=>{let e=o.scrollArea,r=0;if(e){let t=()=>{window.clearTimeout(r),s(!0)},n=()=>{r=window.setTimeout(()=>s(!1),o.scrollHideDelay)};return e.addEventListener("pointerenter",t),e.addEventListener("pointerleave",n),()=>{window.clearTimeout(r),e.removeEventListener("pointerenter",t),e.removeEventListener("pointerleave",n)}}},[o.scrollArea,o.scrollHideDelay]),(0,p.jsx)(l.C,{present:t||i,children:(0,p.jsx)(C,{"data-state":i?"visible":"hidden",...a,ref:r})})}),S=n.forwardRef((e,r)=>{var t,a;let{forceMount:o,...i}=e,s=g(k,e.__scopeScrollArea),u="horizontal"===e.orientation,d=q(()=>h("SCROLL_END"),100),[c,h]=(t="hidden",a={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},n.useReducer((e,r)=>{let t=a[e][r];return null!=t?t:e},t));return n.useEffect(()=>{if("idle"===c){let e=window.setTimeout(()=>h("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(e)}},[c,s.scrollHideDelay,h]),n.useEffect(()=>{let e=s.viewport,r=u?"scrollLeft":"scrollTop";if(e){let t=e[r],n=()=>{let n=e[r];t!==n&&(h("SCROLL"),d()),t=n};return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)}},[s.viewport,u,h,d]),(0,p.jsx)(l.C,{present:o||"hidden"!==c,children:(0,p.jsx)(j,{"data-state":"hidden"===c?"hidden":"visible",...i,ref:r,onPointerEnter:(0,f.mK)(e.onPointerEnter,()=>h("POINTER_ENTER")),onPointerLeave:(0,f.mK)(e.onPointerLeave,()=>h("POINTER_LEAVE"))})})}),C=n.forwardRef((e,r)=>{let t=g(k,e.__scopeScrollArea),{forceMount:a,...o}=e,[i,s]=n.useState(!1),u="horizontal"===e.orientation,d=q(()=>{if(t.viewport){let e=t.viewport.offsetWidth{let{orientation:t="vertical",...a}=e,l=g(k,e.__scopeScrollArea),o=n.useRef(null),i=n.useRef(0),[s,u]=n.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=z(s.viewport,s.content),c={...a,sizes:s,onSizesChange:u,hasThumb:!!(d>0&&d<1),onThumbChange:e=>o.current=e,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:e=>i.current=e};function f(e,r){return function(e,r,t){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"ltr",a=K(t),l=r||a/2,o=t.scrollbar.paddingStart+l,i=t.scrollbar.size-t.scrollbar.paddingEnd-(a-l),s=t.content-t.viewport;return B([o,i],"ltr"===n?[0,s]:[-1*s,0])(e)}(e,i.current,s,r)}return"horizontal"===t?(0,p.jsx)(E,{...c,ref:r,onThumbPositionChange:()=>{if(l.viewport&&o.current){let e=U(l.viewport.scrollLeft,s,l.dir);o.current.style.transform="translate3d(".concat(e,"px, 0, 0)")}},onWheelScroll:e=>{l.viewport&&(l.viewport.scrollLeft=e)},onDragScroll:e=>{l.viewport&&(l.viewport.scrollLeft=f(e,l.dir))}}):"vertical"===t?(0,p.jsx)(D,{...c,ref:r,onThumbPositionChange:()=>{if(l.viewport&&o.current){let e=U(l.viewport.scrollTop,s);o.current.style.transform="translate3d(0, ".concat(e,"px, 0)")}},onWheelScroll:e=>{l.viewport&&(l.viewport.scrollTop=e)},onDragScroll:e=>{l.viewport&&(l.viewport.scrollTop=f(e))}}):null}),E=n.forwardRef((e,r)=>{let{sizes:t,onSizesChange:a,...l}=e,o=g(k,e.__scopeScrollArea),[s,u]=n.useState(),d=n.useRef(null),c=(0,i.s)(r,d,o.onScrollbarXChange);return n.useEffect(()=>{d.current&&u(getComputedStyle(d.current))},[d]),(0,p.jsx)(V,{"data-orientation":"horizontal",...l,ref:c,sizes:t,style:{bottom:0,left:"rtl"===o.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===o.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":K(t)+"px",...e.style},onThumbPointerDown:r=>e.onThumbPointerDown(r.x),onDragScroll:r=>e.onDragScroll(r.x),onWheelScroll:(r,t)=>{if(o.viewport){let n=o.viewport.scrollLeft+r.deltaX;e.onWheelScroll(n),function(e,r){return e>0&&e{d.current&&o.viewport&&s&&a({content:o.viewport.scrollWidth,viewport:o.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:I(s.paddingLeft),paddingEnd:I(s.paddingRight)}})}})}),D=n.forwardRef((e,r)=>{let{sizes:t,onSizesChange:a,...l}=e,o=g(k,e.__scopeScrollArea),[s,u]=n.useState(),d=n.useRef(null),c=(0,i.s)(r,d,o.onScrollbarYChange);return n.useEffect(()=>{d.current&&u(getComputedStyle(d.current))},[d]),(0,p.jsx)(V,{"data-orientation":"vertical",...l,ref:c,sizes:t,style:{top:0,right:"ltr"===o.dir?0:void 0,left:"rtl"===o.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":K(t)+"px",...e.style},onThumbPointerDown:r=>e.onThumbPointerDown(r.y),onDragScroll:r=>e.onDragScroll(r.y),onWheelScroll:(r,t)=>{if(o.viewport){let n=o.viewport.scrollTop+r.deltaY;e.onWheelScroll(n),function(e,r){return e>0&&e{d.current&&o.viewport&&s&&a({content:o.viewport.scrollHeight,viewport:o.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:I(s.paddingTop),paddingEnd:I(s.paddingBottom)}})}})}),[M,R]=y(k),V=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,sizes:l,hasThumb:o,onThumbChange:u,onThumbPointerUp:d,onThumbPointerDown:c,onThumbPositionChange:h,onDragScroll:y,onWheelScroll:m,onResize:v,...b}=e,w=g(k,t),[x,_]=n.useState(null),A=(0,i.s)(r,e=>_(e)),S=n.useRef(null),C=n.useRef(""),j=w.viewport,E=l.content-l.viewport,D=(0,s.c)(m),R=(0,s.c)(h),V=q(v,10);function F(e){S.current&&y({x:e.clientX-S.current.left,y:e.clientY-S.current.top})}return n.useEffect(()=>{let e=e=>{let r=e.target;(null==x?void 0:x.contains(r))&&D(e,E)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[j,x,E,D]),n.useEffect(R,[l,R]),G(x,V),G(w.content,V),(0,p.jsx)(M,{scope:t,scrollbar:x,hasThumb:o,onThumbChange:(0,s.c)(u),onThumbPointerUp:(0,s.c)(d),onThumbPositionChange:R,onThumbPointerDown:(0,s.c)(c),children:(0,p.jsx)(a.sG.div,{...b,ref:A,style:{position:"absolute",...b.style},onPointerDown:(0,f.mK)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),S.current=x.getBoundingClientRect(),C.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",w.viewport&&(w.viewport.style.scrollBehavior="auto"),F(e))}),onPointerMove:(0,f.mK)(e.onPointerMove,F),onPointerUp:(0,f.mK)(e.onPointerUp,e=>{let r=e.target;r.hasPointerCapture(e.pointerId)&&r.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=C.current,w.viewport&&(w.viewport.style.scrollBehavior=""),S.current=null})})})}),F="ScrollAreaThumb",P=n.forwardRef((e,r)=>{let{forceMount:t,...n}=e,a=R(F,e.__scopeScrollArea);return(0,p.jsx)(l.C,{present:t||a.hasThumb,children:(0,p.jsx)(O,{ref:r,...n})})}),O=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,style:l,...o}=e,s=g(F,t),u=R(F,t),{onThumbPositionChange:d}=u,c=(0,i.s)(r,e=>u.onThumbChange(e)),h=n.useRef(void 0),y=q(()=>{h.current&&(h.current(),h.current=void 0)},100);return n.useEffect(()=>{let e=s.viewport;if(e){let r=()=>{y(),h.current||(h.current=H(e,d),d())};return d(),e.addEventListener("scroll",r),()=>e.removeEventListener("scroll",r)}},[s.viewport,y,d]),(0,p.jsx)(a.sG.div,{"data-state":u.hasThumb?"visible":"hidden",...o,ref:c,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...l},onPointerDownCapture:(0,f.mK)(e.onPointerDownCapture,e=>{let r=e.target.getBoundingClientRect(),t=e.clientX-r.left,n=e.clientY-r.top;u.onThumbPointerDown({x:t,y:n})}),onPointerUp:(0,f.mK)(e.onPointerUp,u.onThumbPointerUp)})});P.displayName=F;var T="ScrollAreaCorner",L=n.forwardRef((e,r)=>{let t=g(T,e.__scopeScrollArea),n=!!(t.scrollbarX&&t.scrollbarY);return"scroll"!==t.type&&n?(0,p.jsx)(N,{...e,ref:r}):null});L.displayName=T;var N=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,...l}=e,o=g(T,t),[i,s]=n.useState(0),[u,d]=n.useState(0),c=!!(i&&u);return G(o.scrollbarX,()=>{var e;let r=(null==(e=o.scrollbarX)?void 0:e.offsetHeight)||0;o.onCornerHeightChange(r),d(r)}),G(o.scrollbarY,()=>{var e;let r=(null==(e=o.scrollbarY)?void 0:e.offsetWidth)||0;o.onCornerWidthChange(r),s(r)}),c?(0,p.jsx)(a.sG.div,{...l,ref:r,style:{width:i,height:u,position:"absolute",right:"ltr"===o.dir?0:void 0,left:"rtl"===o.dir?0:void 0,bottom:0,...e.style}}):null});function I(e){return e?parseInt(e,10):0}function z(e,r){let t=e/r;return isNaN(t)?0:t}function K(e){let r=z(e.viewport,e.content),t=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-t)*r,18)}function U(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"ltr",n=K(r),a=r.scrollbar.paddingStart+r.scrollbar.paddingEnd,l=r.scrollbar.size-a,o=r.content-r.viewport,i=(0,c.q)(e,"ltr"===t?[0,o]:[-1*o,0]);return B([0,o],[0,l-n])(i)}function B(e,r){return t=>{if(e[0]===e[1]||r[0]===r[1])return r[0];let n=(r[1]-r[0])/(e[1]-e[0]);return r[0]+n*(t-e[0])}}var H=function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{},t={left:e.scrollLeft,top:e.scrollTop},n=0;return!function a(){let l={left:e.scrollLeft,top:e.scrollTop},o=t.left!==l.left,i=t.top!==l.top;(o||i)&&r(),t=l,n=window.requestAnimationFrame(a)}(),()=>window.cancelAnimationFrame(n)};function q(e,r){let t=(0,s.c)(e),a=n.useRef(0);return n.useEffect(()=>()=>window.clearTimeout(a.current),[]),n.useCallback(()=>{window.clearTimeout(a.current),a.current=window.setTimeout(t,r)},[t,r])}function G(e,r){let t=(0,s.c)(r);(0,d.N)(()=>{let r=0;if(e){let n=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(t)});return n.observe(e),()=>{window.cancelAnimationFrame(r),n.unobserve(e)}}},[e,t])}var W=b,X=x,Z=L},9906:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]])},9911:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("mic",[["path",{d:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z",key:"131961"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]])},9935:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("mic-off",[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M18.89 13.23A7.12 7.12 0 0 0 19 12v-2",key:"80xlxr"}],["path",{d:"M5 10v2a7 7 0 0 0 12 5",key:"p2k8kg"}],["path",{d:"M15 9.34V5a3 3 0 0 0-5.68-1.33",key:"1gzdoj"}],["path",{d:"M9 9v3a3 3 0 0 0 5.12 2.12",key:"r2i35w"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]])},9987:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3929).A)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])}}]); \ No newline at end of file diff --git a/ui_out/_next/static/chunks/app/model/page-54703515a5590901.js b/ui_out/_next/static/chunks/app/model/page-54703515a5590901.js deleted file mode 100644 index 509e664f..00000000 --- a/ui_out/_next/static/chunks/app/model/page-54703515a5590901.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552],{834:(e,s,t)=>{"use strict";t.d(s,{T:()=>l});var a=t(3422);t(4398);var r=t(9183);function l(e){let{className:s,...t}=e;return(0,a.jsx)("textarea",{"data-slot":"textarea",className:(0,r.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",s),...t})}},2264:(e,s,t)=>{"use strict";t.d(s,{bq:()=>u,eb:()=>p,gC:()=>m,l6:()=>d,yv:()=>c});var a=t(3422);t(4398);var r=t(3439),l=t(9994),i=t(8940),n=t(4967),o=t(9183);function d(e){let{...s}=e;return(0,a.jsx)(r.bL,{"data-slot":"select",...s})}function c(e){let{...s}=e;return(0,a.jsx)(r.WT,{"data-slot":"select-value",...s})}function u(e){let{className:s,size:t="default",children:i,...n}=e;return(0,a.jsxs)(r.l9,{"data-slot":"select-trigger","data-size":t,className:(0,o.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s),...n,children:[i,(0,a.jsx)(r.In,{asChild:!0,children:(0,a.jsx)(l.A,{className:"size-4 opacity-50"})})]})}function m(e){let{className:s,children:t,position:l="popper",...i}=e;return(0,a.jsx)(r.ZL,{children:(0,a.jsxs)(r.UC,{"data-slot":"select-content",className:(0,o.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===l&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",s),position:l,...i,children:[(0,a.jsx)(h,{}),(0,a.jsx)(r.LM,{className:(0,o.cn)("p-1","popper"===l&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),(0,a.jsx)(x,{})]})})}function p(e){let{className:s,children:t,...l}=e;return(0,a.jsxs)(r.q7,{"data-slot":"select-item",className:(0,o.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",s),...l,children:[(0,a.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,a.jsx)(r.VF,{children:(0,a.jsx)(i.A,{className:"size-4"})})}),(0,a.jsx)(r.p4,{children:t})]})}function h(e){let{className:s,...t}=e;return(0,a.jsx)(r.PP,{"data-slot":"select-scroll-up-button",className:(0,o.cn)("flex cursor-default items-center justify-center py-1",s),...t,children:(0,a.jsx)(n.A,{className:"size-4"})})}function x(e){let{className:s,...t}=e;return(0,a.jsx)(r.wn,{"data-slot":"select-scroll-down-button",className:(0,o.cn)("flex cursor-default items-center justify-center py-1",s),...t,children:(0,a.jsx)(l.A,{className:"size-4"})})}},6320:(e,s,t)=>{"use strict";t.d(s,{Cf:()=>u,Es:()=>p,L3:()=>h,c7:()=>m,lG:()=>n,rr:()=>x,zM:()=>o});var a=t(3422);t(4398);var r=t(4316),l=t(9680),i=t(9183);function n(e){let{...s}=e;return(0,a.jsx)(r.bL,{"data-slot":"dialog",...s})}function o(e){let{...s}=e;return(0,a.jsx)(r.l9,{"data-slot":"dialog-trigger",...s})}function d(e){let{...s}=e;return(0,a.jsx)(r.ZL,{"data-slot":"dialog-portal",...s})}function c(e){let{className:s,...t}=e;return(0,a.jsx)(r.hJ,{"data-slot":"dialog-overlay",className:(0,i.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",s),...t})}function u(e){let{className:s,children:t,...n}=e;return(0,a.jsxs)(d,{"data-slot":"dialog-portal",children:[(0,a.jsx)(c,{}),(0,a.jsxs)(r.UC,{"data-slot":"dialog-content",className:(0,i.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",s),...n,children:[t,(0,a.jsxs)(r.bm,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,a.jsx)(l.A,{}),(0,a.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function m(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"dialog-header",className:(0,i.cn)("flex flex-col gap-2 text-center sm:text-left",s),...t})}function p(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"dialog-footer",className:(0,i.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",s),...t})}function h(e){let{className:s,...t}=e;return(0,a.jsx)(r.hE,{"data-slot":"dialog-title",className:(0,i.cn)("text-lg leading-none font-semibold",s),...t})}function x(e){let{className:s,...t}=e;return(0,a.jsx)(r.VY,{"data-slot":"dialog-description",className:(0,i.cn)("text-muted-foreground text-sm",s),...t})}},6568:(e,s,t)=>{"use strict";t.d(s,{d:()=>i});var a=t(3422);t(4398);var r=t(2495),l=t(9183);function i(e){let{className:s,...t}=e;return(0,a.jsx)(r.bL,{"data-slot":"switch",className:(0,l.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",s),...t,children:(0,a.jsx)(r.zi,{"data-slot":"switch-thumb",className:(0,l.cn)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}},6715:(e,s,t)=>{Promise.resolve().then(t.bind(t,7557))},7557:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>e1});var a=t(3422),r=t(4398),l=t(100),i=t(2349),n=t(6013),o=t(9119),d=t(1407),c=t(552),u=t(9945);let m=u.Ik({id:u.Yj(),name:u.Yj(),full_name:u.Yj(),description:u.Yj().optional(),modelType:u.Yj(),isEnabled:u.zM(),createdAt:u.Yj().datetime(),updatedAt:u.Yj().datetime(),provider:u.Yj(),url:u.Yj().url(),api_key:u.Yj().optional(),input_cost:u.ai().min(0),output_cost:u.ai().min(0),min_cost_per_request:u.ai().min(0,"Minimum cost per request must be non-negative").default(0),min_cash_per_request:u.ai().min(0,"Minimum cash per request must be non-negative").default(0),contextLength:u.ai().int().optional(),apiKeyRequired:u.zM().default(!0),provider_id:u.Yj().optional(),is_free:u.zM().default(!1),soft_deleted:u.zM().optional(),has_own_api_key:u.zM(),api_key_type:u.Yj()});m.extend({settings:u.g1(u.L5()).optional(),pricing:u.Ik({inputCostPer1kTokens:u.ai().optional(),outputCostPer1kTokens:u.ai().optional(),unitCost:u.ai().optional()}).optional()}),m.omit({id:!0,createdAt:!0,updatedAt:!0,has_own_api_key:!0,api_key_type:!0}).extend({settings:u.g1(u.L5()).optional()}),m.partial().omit({id:!0,createdAt:!0,updatedAt:!0,has_own_api_key:!0,api_key_type:!0});let p=u.Ik({name:u.Yj().min(1,"Name is required"),full_name:u.Yj().optional(),input_cost:u.ai().min(0,"Input cost must be non-negative"),output_cost:u.ai().min(0,"Output cost must be non-negative"),provider:u.Yj().min(1,"Provider is required"),modelType:u.k5(["text","embedding","image","audio","multimodal"]),description:u.Yj().optional().transform(e=>""===e?void 0:e),contextLength:u.ai().int().min(0).optional().transform(e=>0===e?void 0:e)}).transform(e=>({...e})),h=u.Ik({provider:u.Yj().min(1,"Provider is required"),group_api_key:u.Yj().transform(e=>""===e?void 0:e).optional(),group_url:u.Yj().transform(e=>""===e?void 0:e).pipe(u.Yj().url("Please enter a valid URL").optional()).optional()});u.Ik({data:u.YO(m),pagination:u.Ik({total:u.ai(),page:u.ai(),pageSize:u.ai(),totalPages:u.ai()})}),u.Ik({modelId:u.Yj(),input:u.Yj(),parameters:u.g1(u.L5()).optional()}),u.Ik({output:u.Yj(),usage:u.Ik({promptTokens:u.ai().optional(),completionTokens:u.ai().optional(),totalTokens:u.ai().optional()}).optional(),timings:u.Ik({totalMs:u.ai()}).optional()});var x=t(3648),g=t(268),j=t(834),v=t(6320),f=t(2264),y=t(6950),b=t(9183),N=t(3130);let w=d.Op,_=r.createContext({}),k=e=>{let{...s}=e;return(0,a.jsx)(_.Provider,{value:{name:s.name},children:(0,a.jsx)(d.xI,{...s})})},C=()=>{let e=r.useContext(_),s=r.useContext(M),{getFieldState:t}=(0,d.xW)(),a=(0,d.lN)({name:e.name}),l=t(e.name,a);if(!e)throw Error("useFormField should be used within ");let{id:i}=s;return{id:i,name:e.name,formItemId:"".concat(i,"-form-item"),formDescriptionId:"".concat(i,"-form-item-description"),formMessageId:"".concat(i,"-form-item-message"),...l}},M=r.createContext({});function A(e){let{className:s,...t}=e,l=r.useId();return(0,a.jsx)(M.Provider,{value:{id:l},children:(0,a.jsx)("div",{"data-slot":"form-item",className:(0,b.cn)("grid gap-2",s),...t})})}function S(e){let{className:s,...t}=e,{error:r,formItemId:l}=C();return(0,a.jsx)(N.J,{"data-slot":"form-label","data-error":!!r,className:(0,b.cn)("data-[error=true]:text-destructive",s),htmlFor:l,...t})}function F(e){let{...s}=e,{error:t,formItemId:r,formDescriptionId:l,formMessageId:i}=C();return(0,a.jsx)(y.DX,{"data-slot":"form-control",id:r,"aria-describedby":t?"".concat(l," ").concat(i):"".concat(l),"aria-invalid":!!t,...s})}function P(e){let{className:s,...t}=e,{formDescriptionId:r}=C();return(0,a.jsx)("p",{"data-slot":"form-description",id:r,className:(0,b.cn)("text-muted-foreground text-sm",s),...t})}function R(e){var s;let{className:t,...r}=e,{error:l,formMessageId:i}=C(),n=l?String(null!=(s=null==l?void 0:l.message)?s:""):r.children;return n?(0,a.jsx)("p",{"data-slot":"form-message",id:i,className:(0,b.cn)("text-destructive text-sm",t),...r,children:n}):null}var T=t(856),z=t(2434),E=t(3831);function I(e){let{onModelAdd:s,onCancel:t,isOpen:l}=e,[i,n]=(0,r.useState)(!1),o=(0,d.mN)({resolver:(0,c.u)(p),defaultValues:{name:"",full_name:"",input_cost:0,output_cost:0,provider:"",modelType:"text",description:"",contextLength:void 0}}),u=async e=>{n(!0);try{await s(e),E.oR.success("Model added successfully!"),o.reset(),null==t||t()}catch(e){E.oR.error("Failed to add model. Please try again."),console.error("Error adding model:",e)}finally{n(!1)}},m=()=>{i||(o.reset(),null==t||t())};return(0,a.jsx)(v.lG,{open:l,onOpenChange:m,children:(0,a.jsxs)(v.Cf,{className:"max-h-[90vh] overflow-y-auto sm:max-w-[600px]",children:[(0,a.jsxs)(v.c7,{children:[(0,a.jsxs)(v.L3,{className:"flex items-center gap-2",children:[(0,a.jsx)(T.A,{className:"h-5 w-5"}),"Add New Model"]}),(0,a.jsx)(v.rr,{children:"Manually add a new AI model to your collection"})]}),(0,a.jsx)(w,{...o,children:(0,a.jsxs)("form",{onSubmit:o.handleSubmit(u),className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,a.jsx)(k,{control:o.control,name:"name",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Model Name *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{placeholder:"e.g., GPT-4o",...s,className:"w-full"})}),(0,a.jsx)(P,{children:"Display name for the model"}),(0,a.jsx)(R,{})]})}}),(0,a.jsx)(k,{control:o.control,name:"provider",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Provider *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{placeholder:"e.g., OpenAI, Anthropic",...s,className:"w-full"})}),(0,a.jsx)(P,{children:"AI model provider or company"}),(0,a.jsx)(R,{})]})}})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,a.jsx)(k,{control:o.control,name:"input_cost",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Input Cost (per 1M tokens) *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:"number",step:"0.001",min:"0",placeholder:"5.00",...s,value:s.value?parseFloat(s.value.toFixed(3)):"",onChange:e=>{let t=Math.round(1e3*(parseFloat(e.target.value)||0))/1e3;s.onChange(t)},className:"w-full"})}),(0,a.jsx)(P,{children:"Cost in USD per 1,000,000 input tokens (max 3 decimals)"}),(0,a.jsx)(R,{})]})}}),(0,a.jsx)(k,{control:o.control,name:"output_cost",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Output Cost (per 1M tokens) *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:"number",step:"0.001",min:"0",placeholder:"15.00",...s,value:s.value?parseFloat(s.value.toFixed(3)):"",onChange:e=>{let t=Math.round(1e3*(parseFloat(e.target.value)||0))/1e3;s.onChange(t)},className:"w-full"})}),(0,a.jsx)(P,{children:"Cost in USD per 1,000,000 output tokens (max 3 decimals)"}),(0,a.jsx)(R,{})]})}})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,a.jsx)(k,{control:o.control,name:"modelType",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Model Type"}),(0,a.jsxs)(f.l6,{onValueChange:s.onChange,defaultValue:s.value,children:[(0,a.jsx)(F,{children:(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{placeholder:"Select model type"})})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"text",children:"Text/Chat"}),(0,a.jsx)(f.eb,{value:"embedding",children:"Embedding"}),(0,a.jsx)(f.eb,{value:"image",children:"Image Generation"}),(0,a.jsx)(f.eb,{value:"audio",children:"Audio"}),(0,a.jsx)(f.eb,{value:"multimodal",children:"Multimodal"})]})]}),(0,a.jsx)(P,{children:"Type of AI model functionality"}),(0,a.jsx)(R,{})]})}}),(0,a.jsx)(k,{control:o.control,name:"contextLength",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Context Length"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:"number",min:"0",placeholder:"8192",value:s.value||"",onChange:e=>{let t=parseInt(e.target.value);s.onChange(isNaN(t)||0===t?void 0:t)},className:"w-full"})}),(0,a.jsx)(P,{children:"Maximum context length in tokens (optional, leave empty for default)"}),(0,a.jsx)(R,{})]})}})]}),(0,a.jsx)(k,{control:o.control,name:"description",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Description"}),(0,a.jsx)(F,{children:(0,a.jsx)(j.T,{placeholder:"Brief description of the model...",...s,rows:3,className:"w-full"})}),(0,a.jsx)(P,{children:"Optional description or notes about the model"}),(0,a.jsx)(R,{})]})}}),(0,a.jsxs)("div",{className:"flex justify-end gap-2 pt-4",children:[(0,a.jsx)(x.$,{type:"button",variant:"outline",onClick:m,disabled:i,children:"Cancel"}),(0,a.jsx)(x.$,{type:"submit",disabled:i,children:i?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Adding..."]}):"Add Model"})]})]})})]})})}var q=t(7996),L=t(6568);let Y=u.Ik({name:u.Yj().min(1,"Name is required"),description:u.Yj().optional(),context_length:u.au.number().min(0),prompt:u.au.number().min(0),completion:u.au.number().min(0),enabled:u.zM()}),O=e=>null==e||isNaN(e)?0:Math.round(1e5*e)/1e5;function U(e){let{model:s,providerId:t,onModelUpdate:l,onCancel:i,isOpen:n}=e,[u,m]=(0,r.useState)(!1),[p,h]=(0,r.useState)(null),[f,y]=(0,r.useState)(!1),b=(0,d.mN)({resolver:(0,c.u)(Y),defaultValues:{name:s.name,description:s.description||"",context_length:s.contextLength||4096,prompt:O(s.input_cost),completion:O(s.output_cost),enabled:!1!==s.isEnabled}}),N=(0,r.useCallback)(async()=>{if(!t)return void console.error("loadAdminModel called without providerId");try{console.log("Loading admin model:",{providerId:t,modelId:s.full_name});let e=await o.zQ.getProviderModel(t,s.full_name);h(e),y(!1),b.reset({name:e.name,description:e.description||"",context_length:e.context_length,prompt:O(e.pricing.prompt),completion:O(e.pricing.completion),enabled:!1!==e.enabled})}catch(e){console.log("Model not in database, will create new override:",e),y(!0),h({id:s.full_name,name:s.name,description:s.description||"",created:Math.floor(Date.now()/1e3),context_length:s.contextLength||4096,architecture:{modality:s.modelType||"text",input_modalities:[s.modelType||"text"],output_modalities:[s.modelType||"text"],tokenizer:"",instruct_type:null},pricing:{prompt:O(s.input_cost),completion:O(s.output_cost),request:0,image:0,web_search:0,internal_reasoning:0},per_request_limits:null,top_provider:null,upstream_provider_id:t,enabled:!1!==s.isEnabled}),b.reset({name:s.name,description:s.description||"",context_length:s.contextLength||4096,prompt:O(s.input_cost),completion:O(s.output_cost),enabled:!1!==s.isEnabled})}},[t,s,b]);(0,r.useEffect)(()=>{n&&t?N():n&&!t&&(console.error("EditModelForm opened without providerId",{model:s,providerId:t}),E.oR.error("Missing provider information for this model"))},[n,t,s,N]);let _=async e=>{if(!t){console.error("onSubmit called without providerId",{model:s,providerId:t}),E.oR.error("Missing provider ID - cannot update model");return}if(!p){console.error("onSubmit called without adminModelData",{model:s,providerId:t,adminModelData:p}),E.oR.error("Model data not loaded - please try reopening the form");return}m(!0);try{let s={id:p.id,name:e.name,description:e.description||"",created:p.created||Math.floor(Date.now()/1e3),context_length:e.context_length,architecture:p.architecture||{modality:"text",input_modalities:["text"],output_modalities:["text"],tokenizer:"",instruct_type:null},pricing:{prompt:O(e.prompt),completion:O(e.completion),request:0,image:0,web_search:0,internal_reasoning:0},per_request_limits:p.per_request_limits,top_provider:p.top_provider,upstream_provider_id:t,enabled:e.enabled};f?(console.log("Creating new model override"),await o.zQ.createProviderModel(t,s),E.oR.success("Model override created successfully!")):(console.log("Updating existing model override"),await o.zQ.updateProviderModel(t,p.id,s),E.oR.success("Model updated successfully!")),null==l||l(),null==i||i()}catch(s){let e=f?"create":"update";E.oR.error("Failed to ".concat(e," model. Please try again.")),console.error("Error ".concat(e,"ing model:"),s)}finally{m(!1)}},C=()=>{u||null==i||i()};return(0,a.jsx)(v.lG,{open:n,onOpenChange:C,children:(0,a.jsxs)(v.Cf,{className:"max-h-[90vh] overflow-y-auto sm:max-w-[600px]",children:[(0,a.jsxs)(v.c7,{children:[(0,a.jsxs)(v.L3,{className:"flex items-center gap-2",children:[(0,a.jsx)(q.A,{className:"h-5 w-5"}),f?"Create Model Override":"Edit Model Override"]}),(0,a.jsx)(v.rr,{children:f?"Create an override for "".concat(s.name,"""):"Update the model override for "".concat(s.name,""")})]}),(0,a.jsx)(w,{...b,children:(0,a.jsxs)("form",{onSubmit:b.handleSubmit(_),className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,a.jsx)(k,{control:b.control,name:"name",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Display Name *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{placeholder:"e.g., GPT-4",...s,className:"w-full"})}),(0,a.jsx)(P,{children:"Custom display name for the model"}),(0,a.jsx)(R,{})]})}}),(0,a.jsx)(k,{control:b.control,name:"context_length",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Context Length *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:"number",min:"0",placeholder:"4096",...s,className:"w-full"})}),(0,a.jsx)(P,{children:"Maximum context window size"}),(0,a.jsx)(R,{})]})}})]}),(0,a.jsx)(k,{control:b.control,name:"description",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Description"}),(0,a.jsx)(F,{children:(0,a.jsx)(j.T,{placeholder:"Brief description of the model...",...s,rows:3,className:"w-full"})}),(0,a.jsx)(P,{children:"Optional description or notes about the model"}),(0,a.jsx)(R,{})]})}}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,a.jsx)(k,{control:b.control,name:"prompt",render:e=>{var s;let{field:t}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Input Cost (per 1M tokens) *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:"number",step:"0.00001",min:"0",placeholder:"5.00000",value:null!=(s=t.value)?s:"",onChange:e=>{let s=e.target.value;t.onChange(""===s?0:parseFloat(s))},onBlur:e=>{let s=parseFloat(e.target.value);t.onChange(O(s))},className:"w-full"})}),(0,a.jsx)(P,{children:"Cost in USD per 1,000,000 input tokens (max 5 decimals)"}),(0,a.jsx)(R,{})]})}}),(0,a.jsx)(k,{control:b.control,name:"completion",render:e=>{var s;let{field:t}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Output Cost (per 1M tokens) *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:"number",step:"0.00001",min:"0",placeholder:"15.00000",value:null!=(s=t.value)?s:"",onChange:e=>{let s=e.target.value;t.onChange(""===s?0:parseFloat(s))},onBlur:e=>{let s=parseFloat(e.target.value);t.onChange(O(s))},className:"w-full"})}),(0,a.jsx)(P,{children:"Cost in USD per 1,000,000 output tokens (max 5 decimals)"}),(0,a.jsx)(R,{})]})}})]}),(0,a.jsx)(k,{control:b.control,name:"enabled",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{className:"flex flex-row items-center justify-between rounded-lg border p-4",children:[(0,a.jsxs)("div",{className:"space-y-0.5",children:[(0,a.jsx)(S,{className:"text-base",children:"Model Enabled"}),(0,a.jsx)(P,{children:"Enable or disable this model override"})]}),(0,a.jsx)(F,{children:(0,a.jsx)(L.d,{checked:s.value,onCheckedChange:s.onChange})})]})}}),(0,a.jsxs)("div",{className:"flex justify-end gap-2 pt-4",children:[(0,a.jsx)(x.$,{type:"button",variant:"outline",onClick:C,disabled:u,children:"Cancel"}),(0,a.jsx)(x.$,{type:"submit",disabled:u,children:u?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 animate-spin"}),f?"Creating...":"Updating..."]}):f?"Create Override":"Update Model"})]})]})})]})})}var J=t(1935),Q=t(5195),K=t(9906),D=t(2267),G=t(1220),$=t(9442);function V(e){let{provider:s,models:t,groupSettings:l,onGroupUpdate:i,onCancel:n,isOpen:o}=e,[u,m]=(0,r.useState)(!1),[p,j]=(0,r.useState)(!1),[f,y]=(0,r.useState)(!!(null==l?void 0:l.group_url)),b=(0,d.mN)({resolver:(0,c.u)(h),defaultValues:{provider:s,group_api_key:(null==l?void 0:l.group_api_key)||"",group_url:(null==l?void 0:l.group_url)||""}}),N=async e=>{m(!0);try{var t,a;let r={...e,group_api_key:(null==(t=e.group_api_key)?void 0:t.trim())||void 0,group_url:f&&(null==(a=e.group_url)?void 0:a.trim())||void 0};await i(s,r),E.oR.success('Group "'.concat(s,'" updated successfully!')),null==n||n()}catch(e){E.oR.error("Failed to update group. Please try again."),console.error("Error updating group:",e)}finally{m(!1)}},_=t.filter(e=>!e.api_key).length,C=t.filter(e=>!e.api_key&&(!e.url||e.url.startsWith("/"))).length,M=()=>{u||null==n||n()};return(0,a.jsx)(v.lG,{open:o,onOpenChange:M,children:(0,a.jsxs)(v.Cf,{className:"max-h-[90vh] overflow-y-auto sm:max-w-[700px]",children:[(0,a.jsxs)(v.c7,{children:[(0,a.jsxs)(v.L3,{className:"flex items-center gap-2",children:[(0,a.jsx)(J.A,{className:"h-5 w-5"}),"Edit Provider Group: ",s]}),(0,a.jsxs)(v.rr,{children:["Update settings for all ",t.length," models in this group. Group settings provide defaults for models without individual configurations."]})]}),(0,a.jsxs)("div",{className:"mb-6 space-y-4",children:[(0,a.jsxs)("div",{className:"rounded-md border p-4",children:[(0,a.jsxs)("h4",{className:"mb-2 flex items-center gap-2 text-sm font-medium",children:[(0,a.jsx)(Q.A,{className:"h-4 w-4"}),"API Key Configuration"]}),(0,a.jsx)("div",{className:"space-y-2 text-sm",children:(0,a.jsxs)("div",{className:"flex justify-between",children:[(0,a.jsx)("span",{children:"Models using group API key:"}),(0,a.jsx)("span",{className:"font-medium text-blue-600",children:_})]})})]}),(0,a.jsxs)("div",{className:"rounded-md border p-4",children:[(0,a.jsxs)("h4",{className:"mb-2 flex items-center gap-2 text-sm font-medium",children:[(0,a.jsx)(K.A,{className:"h-4 w-4"}),"URL Configuration"]}),(0,a.jsxs)("div",{className:"space-y-2 text-sm",children:[(0,a.jsxs)("div",{className:"flex justify-between",children:[(0,a.jsx)("span",{children:"Models using group URL:"}),(0,a.jsx)("span",{className:"font-medium text-blue-600",children:C})]}),(0,a.jsxs)("div",{className:"flex justify-between",children:[(0,a.jsx)("span",{children:"Models with individual URLs:"}),(0,a.jsx)("span",{className:"font-medium text-green-600",children:t.length-C})]}),(null==l?void 0:l.group_url)&&(0,a.jsxs)("div",{className:"mt-2 rounded bg-blue-50 p-2 text-xs",children:[(0,a.jsx)("span",{className:"font-medium",children:"Current group URL:"})," ",l.group_url]})]})]}),(0,a.jsxs)("div",{className:"rounded-md border p-4",children:[(0,a.jsx)("h4",{className:"mb-2 text-sm font-medium",children:"Models in this group:"}),(0,a.jsx)("div",{className:"max-h-32 overflow-y-auto",children:(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:t.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ".concat(e.api_key?"bg-green-100 text-green-800":"bg-blue-100 text-blue-800"),title:e.api_key?"Has individual API key and URL":"Uses group API key and URL",children:[e.name,e.api_key&&" \uD83D\uDD11",e.url&&!e.url.startsWith("/")&&e.api_key&&" \uD83C\uDF10"]},e.id))})})]})]}),(0,a.jsx)(w,{...b,children:(0,a.jsxs)("form",{onSubmit:b.handleSubmit(N),className:"space-y-6",children:[(0,a.jsx)(k,{control:b.control,name:"provider",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Provider Name *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{placeholder:"e.g., OpenAI, Anthropic",...s,className:"w-full"})}),(0,a.jsx)(P,{children:"This will update the provider name for all models in this group"}),(0,a.jsx)(R,{})]})}}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"space-y-0.5",children:[(0,a.jsx)(S,{className:"text-base",children:"Group Base URL"}),(0,a.jsx)(P,{children:"Provide a custom base URL for this provider group"})]}),(0,a.jsx)(L.d,{checked:f,onCheckedChange:y})]}),f&&(0,a.jsx)(k,{control:b.control,name:"group_url",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Base URL"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{placeholder:"https://api.openai.com/v1 or https://your-proxy.com/v1",...s,className:"w-full"})}),(0,a.jsx)(P,{children:"This base URL will be used for models without individual URLs. Models will append their endpoint path (e.g., /chat/completions) to this base."}),(0,a.jsx)(R,{})]})}}),!f&&(null==l?void 0:l.group_url)&&(0,a.jsxs)($.Fc,{children:[(0,a.jsx)(D.A,{className:"h-4 w-4"}),(0,a.jsx)($.TN,{children:"Removing the group URL will make models in this group fall back to the default system endpoint. Models with individual URLs will be unaffected."})]}),f&&!(null==l?void 0:l.group_url)&&(0,a.jsxs)($.Fc,{children:[(0,a.jsx)(G.A,{className:"h-4 w-4"}),(0,a.jsx)($.TN,{children:"Adding a group URL will allow models in this group to use a custom endpoint instead of the default system endpoint."})]})]}),(0,a.jsx)(k,{control:b.control,name:"group_api_key",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Group API Key"}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:p?"text":"password",placeholder:"sk-... (leave empty to remove)",...s,className:"w-full pr-24"})}),(0,a.jsx)(x.$,{type:"button",variant:"ghost",size:"sm",className:"absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent",onClick:()=>j(!p),children:p?"Hide":"Show"})]}),(0,a.jsxs)(P,{children:["This API key will be used for models that don't have individual API keys (",_," models). Leave empty to remove the group API key."]}),(0,a.jsx)(R,{})]})}}),(0,a.jsxs)("div",{className:"rounded-md border border-amber-200 bg-amber-50 p-4",children:[(0,a.jsx)("p",{className:"text-sm text-amber-800",children:(0,a.jsx)("strong",{children:"How group settings work:"})}),(0,a.jsxs)("ul",{className:"mt-2 list-inside list-disc space-y-1 text-sm text-amber-800",children:[(0,a.jsx)("li",{children:"Models with individual API keys and URLs will keep their specific settings"}),(0,a.jsx)("li",{children:"Models without individual settings will use the group defaults"}),(0,a.jsx)("li",{children:"Removing the group URL makes models fall back to the system default endpoint"}),(0,a.jsx)("li",{children:'You can use "Apply Group Settings" to force models to use group configurations'})]})]}),(0,a.jsxs)("div",{className:"flex justify-end gap-2 pt-4",children:[(0,a.jsx)(x.$,{type:"button",variant:"outline",onClick:M,disabled:u,children:"Cancel"}),(0,a.jsx)(x.$,{type:"submit",disabled:u,children:u?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Updating..."]}):"Update Group"})]})]})})]})})}var B=t(7228),W=t(9675),Z=t(246),H=t(1853),X=t(8940);function ee(e){let{className:s,...t}=e;return(0,a.jsx)(H.bL,{"data-slot":"checkbox",className:(0,b.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",s),...t,children:(0,a.jsx)(H.C1,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:(0,a.jsx)(X.A,{className:"size-3.5"})})})}var es=t(9625);function et(e){let{className:s,children:t,...r}=e;return(0,a.jsxs)(es.bL,{"data-slot":"scroll-area",className:(0,b.cn)("relative",s),...r,children:[(0,a.jsx)(es.LM,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:t}),(0,a.jsx)(ea,{}),(0,a.jsx)(es.OK,{})]})}function ea(e){let{className:s,orientation:t="vertical",...r}=e;return(0,a.jsx)(es.VM,{"data-slot":"scroll-area-scrollbar",orientation:t,className:(0,b.cn)("flex touch-none p-px transition-colors select-none","vertical"===t&&"h-full w-2.5 border-l border-l-transparent","horizontal"===t&&"h-2.5 flex-col border-t border-t-transparent",s),...r,children:(0,a.jsx)(es.lr,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}var er=t(8561);function el(e){let{isOpen:s,onClose:t,onSuccess:l}=e,[i,n]=(0,r.useState)(null),[d,c]=(0,r.useState)([]),[u,m]=(0,r.useState)([]),[p,h]=(0,r.useState)(new Set),[g,j]=(0,r.useState)(!1),[y,b]=(0,r.useState)(!1),[N,w]=(0,r.useState)(!1),[_,k]=(0,r.useState)(null),C=(0,r.useCallback)(async()=>{if(i){b(!0),m([]),h(new Set);try{let e=await o.zQ.getProviderModels(i),s=new Set(e.db_models.map(e=>e.id)),t=e.remote_models.filter(e=>!s.has(e.id));m(t)}catch(e){E.oR.error("Failed to fetch models from provider")}finally{b(!1)}}},[i]);(0,r.useEffect)(()=>{s&&M()},[s]),(0,r.useEffect)(()=>{i&&C()},[i,C]);let M=async()=>{j(!0);try{let e=await o.zQ.getUpstreamProviders();c(e)}catch(e){E.oR.error("Failed to load providers")}finally{j(!1)}},A=e=>{let s=new Set(p);s.has(e)?s.delete(e):s.add(e),h(s)},S=async()=>{if(0===p.size)return void E.oR.error("Please select at least one model");w(!0);let e=0,s=0,t=[];try{for(let a of Array.from(p)){let r=u.find(e=>e.id===a);if(r)try{await o.zQ.createModel({...r,upstream_provider_id:i,enabled:!0,created:Math.floor(Date.now()/1e3)}),e++}catch(r){let e=r instanceof Error?r.message:"Unknown error";e.includes("already exists")?s++:t.push("".concat(a,": ").concat(e))}}k({added:e,skipped:s,errors:t}),e>0&&(E.oR.success("Successfully added ".concat(e," models")),null==l||l()),t.length>0&&E.oR.warning("Completed with ".concat(t.length," errors"))}catch(e){E.oR.error("Failed to collect models")}finally{w(!1)}},F=()=>{N||(n(null),m([]),h(new Set),k(null),t())};return(0,a.jsx)(v.lG,{open:s,onOpenChange:F,children:(0,a.jsxs)(v.Cf,{className:"max-h-[80vh] sm:max-w-[700px]",children:[(0,a.jsxs)(v.c7,{children:[(0,a.jsxs)(v.L3,{className:"flex items-center gap-2",children:[(0,a.jsx)(B.A,{className:"h-5 w-5"}),"Collect Models from Provider"]}),(0,a.jsx)(v.rr,{children:"Fetch models from an upstream provider and add them to your database"})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Select Provider"}),(0,a.jsxs)(f.l6,{value:null==i?void 0:i.toString(),onValueChange:e=>n(parseInt(e)),disabled:g,children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{placeholder:"Choose an upstream provider"})}),(0,a.jsx)(f.gC,{children:d.map(e=>(0,a.jsxs)(f.eb,{value:e.id.toString(),children:[e.provider_type," - ",e.base_url]},e.id))})]})]}),y&&(0,a.jsxs)("div",{className:"flex items-center justify-center py-8",children:[(0,a.jsx)(z.A,{className:"h-8 w-8 animate-spin"}),(0,a.jsx)("span",{className:"ml-2",children:"Loading models from provider..."})]}),!y&&i&&u.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"text-sm font-medium",children:[u.length," models available"]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(x.$,{variant:"outline",size:"sm",onClick:()=>{h(new Set(u.map(e=>e.id)))},disabled:N,children:"Select All"}),(0,a.jsx)(x.$,{variant:"outline",size:"sm",onClick:()=>{h(new Set)},disabled:N,children:"Deselect All"})]})]}),(0,a.jsx)(et,{className:"h-[300px] rounded-md border p-4",children:(0,a.jsx)("div",{className:"space-y-2",children:u.map(e=>(0,a.jsxs)("div",{className:"hover:bg-accent flex items-start space-x-3 rounded-lg border p-3",children:[(0,a.jsx)(ee,{checked:p.has(e.id),onCheckedChange:()=>A(e.id),disabled:N}),(0,a.jsxs)("div",{className:"flex-1 space-y-1",children:[(0,a.jsx)("div",{className:"font-mono text-sm font-medium",children:e.id}),(0,a.jsx)("div",{className:"text-muted-foreground text-xs",children:e.description||e.name}),e.context_length&&(0,a.jsxs)(er.E,{variant:"secondary",className:"text-xs",children:[e.context_length.toLocaleString()," tokens"]})]})]},e.id))})})]}),!y&&i&&0===u.length&&(0,a.jsxs)($.Fc,{children:[(0,a.jsx)(W.A,{className:"h-4 w-4"}),(0,a.jsx)($.TN,{children:"No new models available from this provider. All models may already be in your database."})]}),_&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)($.Fc,{children:[(0,a.jsx)(Z.A,{className:"h-4 w-4"}),(0,a.jsxs)($.TN,{children:[(0,a.jsx)("strong",{children:"Collection Results:"}),(0,a.jsx)("br",{}),"• ",_.added," models added",(0,a.jsx)("br",{}),"• ",_.skipped," models skipped",_.errors.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("br",{}),"• ",_.errors.length," errors occurred"]})]})]}),_.errors.length>0&&(0,a.jsxs)($.Fc,{variant:"destructive",children:[(0,a.jsx)(W.A,{className:"h-4 w-4"}),(0,a.jsxs)($.TN,{children:[(0,a.jsx)("strong",{children:"Errors:"}),(0,a.jsxs)("ul",{className:"mt-1 list-inside list-disc text-sm",children:[_.errors.slice(0,3).map((e,s)=>(0,a.jsx)("li",{children:e},s)),_.errors.length>3&&(0,a.jsxs)("li",{children:["... and ",_.errors.length-3," more errors"]})]})]})]})]}),(0,a.jsxs)("div",{className:"flex justify-end gap-2 pt-4",children:[(0,a.jsx)(x.$,{variant:"outline",onClick:F,disabled:N,children:_?"Close":"Cancel"}),(0,a.jsx)(x.$,{onClick:S,disabled:N||!i||0===p.size||y,children:N?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Adding Models..."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(B.A,{className:"mr-2 h-4 w-4"}),"Add ",p.size," Models"]})})]})]})]})})}function ei(e){return 0===e?"Free":e<1e-6?"$".concat(e.toFixed(8)):e<.001?"$".concat(e.toFixed(6)):e<.01?"$".concat(e.toFixed(4)):"$".concat(e.toFixed(3))}var en=t(2738),eo=t(2745),ed=t(8815);function ec(e){let{...s}=e;return(0,a.jsx)(ed.bL,{"data-slot":"alert-dialog",...s})}function eu(e){let{...s}=e;return(0,a.jsx)(ed.ZL,{"data-slot":"alert-dialog-portal",...s})}function em(e){let{className:s,...t}=e;return(0,a.jsx)(ed.hJ,{"data-slot":"alert-dialog-overlay",className:(0,b.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",s),...t})}function ep(e){let{className:s,...t}=e;return(0,a.jsxs)(eu,{children:[(0,a.jsx)(em,{}),(0,a.jsx)(ed.UC,{"data-slot":"alert-dialog-content",className:(0,b.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",s),...t})]})}function eh(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,b.cn)("flex flex-col gap-2 text-center sm:text-left",s),...t})}function ex(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,b.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",s),...t})}function eg(e){let{className:s,...t}=e;return(0,a.jsx)(ed.hE,{"data-slot":"alert-dialog-title",className:(0,b.cn)("text-lg font-semibold",s),...t})}function ej(e){let{className:s,...t}=e;return(0,a.jsx)(ed.VY,{"data-slot":"alert-dialog-description",className:(0,b.cn)("text-muted-foreground text-sm",s),...t})}function ev(e){let{className:s,...t}=e;return(0,a.jsx)(ed.rc,{className:(0,b.cn)((0,x.r)(),s),...t})}function ef(e){let{className:s,...t}=e;return(0,a.jsx)(ed.ZD,{className:(0,b.cn)((0,x.r)({variant:"outline"}),s),...t})}var ey=t(6049);function eb(e){let{...s}=e;return(0,a.jsx)(ey.bL,{"data-slot":"dropdown-menu",...s})}function eN(e){let{...s}=e;return(0,a.jsx)(ey.l9,{"data-slot":"dropdown-menu-trigger",...s})}function ew(e){let{className:s,sideOffset:t=4,...r}=e;return(0,a.jsx)(ey.ZL,{children:(0,a.jsx)(ey.UC,{"data-slot":"dropdown-menu-content",sideOffset:t,className:(0,b.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",s),...r})})}function e_(e){let{className:s,inset:t,variant:r="default",...l}=e;return(0,a.jsx)(ey.q7,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":r,className:(0,b.cn)("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s),...l})}function ek(e){let{className:s,...t}=e;return(0,a.jsx)(ey.wv,{"data-slot":"dropdown-menu-separator",className:(0,b.cn)("bg-border -mx-1 my-1 h-px",s),...t})}var eC=t(2034),eM=t(9987),eA=t(3545),eS=t(4963),eF=t(6541),eP=t(9197),eR=t(3732),eT=t(3728);function ez(e){let{filterProvider:s,groupData:t,showProviderActions:d=!1}=e,[c,u]=(0,r.useState)(""),[,m]=(0,r.useState)(null),[p,h]=(0,r.useState)(!1),[g,j]=(0,r.useState)(null),[v,f]=(0,r.useState)(null),[y,N]=(0,r.useState)(!1),[w,_]=(0,r.useState)(new Set),[k,C]=(0,r.useState)(!1),[M,A]=(0,r.useState)(!1),[S,F]=(0,r.useState)(!1),P=(0,l.jE)(),{data:R,isLoading:T,error:z,refetch:L}=(0,i.I)({queryKey:["models-with-providers"],queryFn:()=>o.zQ.getModelsWithProviders(),refetchOnWindowFocus:!1}),{models:Y=[],groups:O=[]}=R||{},G=(0,r.useMemo)(()=>s?Y.filter(e=>e.provider===s):Y,[Y,s]),$=(0,n.n)({mutationFn:async e=>{let s=Y.filter(s=>e.includes(s.id)).reduce((e,s)=>{let t=s.provider_id||"unknown";return e[t]||(e[t]=[]),e[t].push(s),e},{}),t=0;for(let[e,a]of Object.entries(s)){if("unknown"===e)continue;let s=a.map(e=>e.full_name);t+=(await o.zQ.deleteModels(s,e)).deleted_count}return{deleted_count:t,message:"Models deleted"}},onSuccess:e=>{E.oR.success("Successfully deleted ".concat(e.deleted_count," model overrides")),_(new Set),P.invalidateQueries({queryKey:["models-with-providers"]}),P.invalidateQueries({queryKey:["all-provider-models"]}),P.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to delete model overrides: ".concat(e.message))}}),B=(0,n.n)({mutationFn:async e=>{let s=Y.filter(s=>e.includes(s.id)).reduce((e,s)=>{let t=s.provider_id||"unknown";return e[t]||(e[t]=[]),e[t].push(s),e},{}),t=0;for(let[e,r]of Object.entries(s))if("unknown"!==e)for(let s of r){let r=parseInt(e);try{let e=await o.zQ.getProviderModel(r,s.full_name);await o.zQ.updateProviderModel(r,s.full_name,{...e,enabled:!1}),t++}catch(e){var a;if((null==(a=e.message)?void 0:a.includes("404"))||404===e.status){let e={id:s.full_name,name:s.name,description:s.description||"",created:Math.floor(Date.now()/1e3),context_length:s.contextLength||4096,architecture:{modality:s.modelType||"text",input_modalities:[s.modelType||"text"],output_modalities:[s.modelType||"text"],tokenizer:"",instruct_type:null},pricing:{prompt:s.input_cost,completion:s.output_cost,request:0,image:0,web_search:0,internal_reasoning:0},per_request_limits:null,top_provider:null,upstream_provider_id:r,enabled:!1};await o.zQ.createProviderModel(r,e),t++}}}return{deleted_count:t,message:"Models disabled"}},onSuccess:e=>{E.oR.success("Successfully disabled ".concat(e.deleted_count," models")),_(new Set),P.invalidateQueries({queryKey:["models-with-providers"]}),P.invalidateQueries({queryKey:["all-provider-models"]}),P.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to disable models: ".concat(e.message))}}),W=(0,n.n)({mutationFn:async e=>{if(!t)throw Error("No group data available");let s={};return s.api_key="",t.group_url&&(s.url=t.group_url),o.zQ.bulkUpdateModels(e,s)},onSuccess:e=>{E.oR.success("Successfully applied group settings to ".concat(e.updated_count," models")),e.errors.length>0&&(E.oR.warning("".concat(e.errors.length," models had errors during update")),console.warn("Bulk update errors:",e.errors)),_(new Set),P.invalidateQueries({queryKey:["models-with-providers"]}),P.invalidateQueries({queryKey:["all-provider-models"]}),P.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to apply group settings: ".concat(e.message))}}),H=(0,n.n)({mutationFn:()=>o.zQ.deleteAllModels(),onSuccess:e=>{E.oR.success("Successfully permanently deleted ".concat(e.deleted_count," models")),_(new Set),P.invalidateQueries({queryKey:["models-with-providers"]}),P.invalidateQueries({queryKey:["all-provider-models"]}),P.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to permanently delete all models: ".concat(e.message))}}),es=(0,n.n)({mutationFn:e=>o.zQ.deleteModelsByProvider(e),onSuccess:e=>{E.oR.success("Successfully permanently deleted ".concat(e.deleted_count," models from provider")),_(new Set),P.invalidateQueries({queryKey:["models-with-providers"]}),P.invalidateQueries({queryKey:["all-provider-models"]}),P.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to permanently delete provider models: ".concat(e.message))}}),et=(0,n.n)({mutationFn:async e=>{let s=Y.find(s=>s.id===e);if(!s)throw Error("Model not found");if(!s.provider_id)throw Error("Provider ID not available for this model");let t=parseInt(s.provider_id),a=await o.zQ.getProviderModel(t,s.full_name);return await o.zQ.updateProviderModel(t,s.full_name,{...a,enabled:!0}),{restored_count:1}},onSuccess:()=>{E.oR.success("Model enabled successfully"),P.invalidateQueries({queryKey:["models-with-providers"]}),P.invalidateQueries({queryKey:["all-provider-models"]}),P.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to enable model: ".concat(e.message))}}),ea=(0,n.n)({mutationFn:async e=>{let s=Y.filter(s=>e.includes(s.id)).reduce((e,s)=>{let t=s.provider_id||"unknown";return e[t]||(e[t]=[]),e[t].push(s),e},{}),t=0;for(let[e,a]of Object.entries(s))if("unknown"!==e)for(let s of a){let a=parseInt(e);try{let e=await o.zQ.getProviderModel(a,s.full_name);await o.zQ.updateProviderModel(a,s.full_name,{...e,enabled:!0}),t++}catch(e){console.error("Failed to enable model ".concat(s.full_name,":"),e)}}return{restored_count:t,message:"Models enabled"}},onSuccess:e=>{E.oR.success("Successfully enabled ".concat(e.restored_count," models")),_(new Set),P.invalidateQueries({queryKey:["models-with-providers"]}),P.invalidateQueries({queryKey:["all-provider-models"]}),P.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to enable models: ".concat(e.message))}}),er=(0,r.useMemo)(()=>s?{[s]:G}:Y?Y.reduce((e,s)=>{let t=s.provider;return e[t]||(e[t]=[]),e[t].push(s),e},{}):{},[Y,G,s]),ed=(0,r.useMemo)(()=>new Map(O.map(e=>[e.provider,e])),[O]),eu=(0,r.useMemo)(()=>{let e={};return O.forEach(s=>{e[s.provider]={group_api_key:s.group_api_key,group_url:s.group_url}}),e},[O]),em=e=>{var s;return e.api_key?e.api_key:null==(s=eu[e.provider])?void 0:s.group_api_key},ey=e=>{let s=ed.get(e.provider),t=!!(e.api_key&&"string"==typeof e.api_key&&e.api_key!==(null==s?void 0:s.group_api_key)),a=!!(e.url&&"string"==typeof e.url&&!e.url.startsWith("/")&&e.url!==(null==s?void 0:s.group_url));return t||a},ez=async e=>{try{let s=O.find(s=>s.provider===e.provider);s||(s=await o.zQ.createModelGroup({provider:e.provider,group_api_key:void 0}));let t={name:e.name,full_name:e.name,input_cost:e.input_cost,output_cost:e.output_cost,provider:e.provider,modelType:e.modelType,description:e.description||void 0,contextLength:e.contextLength};await o.zQ.createModel(t),await L(),E.oR.success('Model "'.concat(e.name,'" added successfully!'))}catch(e){throw console.error("Error adding model:",e),E.oR.error("Failed to add model. Please try again."),e}},eE=async()=>{await L(),j(null)},eI=async(e,s)=>{try{let t=ed.get(e);t&&(await o.zQ.updateModelGroup(t.id,{provider:s.provider,group_api_key:s.group_api_key||void 0,group_url:s.group_url||void 0}),await L(),f(null),E.oR.success("Group updated successfully!"))}catch(e){console.error("Error updating group:",e),E.oR.error("Failed to update group. Please try again.")}},eq=async()=>{await L(),N(!1)},eL=async e=>{let s=ed.get(e);if(!(null==s?void 0:s.id))return void E.oR.error("No group configuration found for this provider");try{let e=await o.zQ.refreshModels({provider_id:s.id});E.oR.info(e.message),await L(),P.invalidateQueries({queryKey:["models-with-providers"]}),P.invalidateQueries({queryKey:["all-provider-models"]}),P.invalidateQueries({queryKey:["upstream-providers"]})}catch(t){console.error("Error refreshing provider models:",t);let s=t instanceof Error?t.message:"Unknown error";E.oR.error("Failed to refresh ".concat(e," models: ").concat(s))}},eY=e=>{switch(e.toLowerCase()){case"text":default:return(0,a.jsx)(eC.A,{className:"h-4 w-4"});case"embedding":return(0,a.jsx)(eM.A,{className:"h-4 w-4"});case"image":return(0,a.jsx)(K.A,{className:"h-4 w-4"})}},eO=e=>{switch(e.toLowerCase()){case"text":return"bg-blue-100 text-blue-800";case"embedding":return"bg-purple-100 text-purple-800";case"image":return"bg-green-100 text-green-800";case"audio":return"bg-orange-100 text-orange-800";case"multimodal":return"bg-pink-100 text-pink-800";default:return"bg-gray-100 text-gray-800"}},eU=e=>{let s=new Set(w);s.has(e)?s.delete(e):s.add(e),_(s)},eJ=e=>{let s=G.filter(s=>s.provider===e).map(e=>e.id),t=new Set(w);s.forEach(e=>t.add(e)),_(t)},eQ=e=>{let s=ed.get(e);(null==s?void 0:s.id)&&es.mutate(s.id)},eK=async e=>{let s=Y.find(s=>s.id===e);if(!s)return void E.oR.error("Model not found");if(!s.provider_id)return void E.oR.error("Provider ID not available for this model");try{let e=parseInt(s.provider_id);await o.zQ.deleteProviderModel(e,s.full_name),E.oR.success("Model override deleted successfully"),P.invalidateQueries({queryKey:["models-with-providers"]}),P.invalidateQueries({queryKey:["all-provider-models"]}),P.invalidateQueries({queryKey:["upstream-providers"]})}catch(s){let e=s instanceof Error?s.message:"Unknown error";E.oR.error("Failed to delete model override: ".concat(e))}},eD=async e=>{let s=Y.find(s=>s.id===e);if(!s)return void E.oR.error("Model not found");if(!s.provider_id)return void E.oR.error("Provider ID not available for this model");try{let e=parseInt(s.provider_id);try{let t=await o.zQ.getProviderModel(e,s.full_name);await o.zQ.updateProviderModel(e,s.full_name,{...t,enabled:!1}),E.oR.success("Model disabled successfully")}catch(a){var t;if((null==(t=a.message)?void 0:t.includes("404"))||404===a.status){let t={id:s.full_name,name:s.name,description:s.description||"",created:Math.floor(Date.now()/1e3),context_length:s.contextLength||4096,architecture:{modality:s.modelType||"text",input_modalities:[s.modelType||"text"],output_modalities:[s.modelType||"text"],tokenizer:"",instruct_type:null},pricing:{prompt:s.input_cost,completion:s.output_cost,request:0,image:0,web_search:0,internal_reasoning:0},per_request_limits:null,top_provider:null,upstream_provider_id:e,enabled:!1};await o.zQ.createProviderModel(e,t),E.oR.success("Model disabled successfully")}else throw a}P.invalidateQueries({queryKey:["models-with-providers"]}),P.invalidateQueries({queryKey:["all-provider-models"]}),P.invalidateQueries({queryKey:["upstream-providers"]})}catch(s){let e=s instanceof Error?s.message:"Unknown error";E.oR.error("Failed to disable model: ".concat(e))}};return T?(0,a.jsxs)("div",{className:"grid gap-4",children:[(0,a.jsx)(eo.E,{className:"h-[200px]"}),(0,a.jsx)(eo.E,{className:"h-[200px]"})]}):z?(0,a.jsx)("div",{className:"rounded-lg border border-red-200 bg-red-50 p-4",children:(0,a.jsx)("p",{className:"text-sm text-red-800",children:"Error loading models. Please try again later."})}):(0,a.jsxs)("div",{className:"grid gap-6",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[d&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"bg-border h-6 w-px"}),(0,a.jsxs)(x.$,{onClick:()=>{let e=G.map(e=>e.id),s=new Set(w);e.forEach(e=>s.add(e)),_(s)},variant:"outline",size:"sm",className:"gap-2",children:[(0,a.jsx)(eA.A,{className:"h-4 w-4"}),"Select All (",G.length,")"]}),w.size>0&&(0,a.jsxs)(x.$,{onClick:()=>{if(s){let e=G.map(e=>e.id),s=new Set(w);e.forEach(e=>s.delete(e)),_(s)}else _(new Set)},variant:"outline",size:"sm",className:"gap-2",children:[(0,a.jsx)(eS.A,{className:"h-4 w-4"}),"Deselect All"]})]}),w.size>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"bg-border h-6 w-px"}),(0,a.jsxs)("span",{className:"text-muted-foreground text-sm",children:[w.size," selected"]}),(()=>{let e=G.filter(e=>w.has(e.id)&&e.soft_deleted);return e.length>0&&(0,a.jsxs)(x.$,{onClick:()=>ea.mutate(e.map(e=>e.id)),variant:"outline",size:"sm",className:"gap-2 border-green-300 text-green-600 hover:border-green-400 hover:text-green-700",disabled:ea.isPending,children:[(0,a.jsx)(Z.A,{className:"h-4 w-4"}),"Enable Selected (",e.length,")"]})})(),(0,a.jsxs)(x.$,{onClick:()=>{C(!0)},variant:"destructive",size:"sm",className:"gap-2",disabled:$.isPending,children:[(0,a.jsx)(eF.A,{className:"h-4 w-4"}),"Delete Selected Overrides"]}),(0,a.jsxs)(x.$,{onClick:()=>{B.mutate(Array.from(w))},variant:"outline",size:"sm",className:"gap-2 border-orange-300 text-orange-600 hover:border-orange-400 hover:text-orange-700",disabled:B.isPending,children:[(0,a.jsx)(eP.A,{className:"h-4 w-4"}),"Disable Selected"]})]}),!d&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"bg-border h-6 w-px"}),(0,a.jsxs)(eb,{children:[(0,a.jsx)(eN,{asChild:!0,children:(0,a.jsxs)(x.$,{variant:"outline",size:"sm",className:"gap-2",children:[(0,a.jsx)(eR.A,{className:"h-4 w-4"}),"More Actions"]})}),(0,a.jsxs)(ew,{align:"end",children:[(0,a.jsxs)(e_,{onClick:()=>{_(new Set(G.map(e=>e.id)))},children:[(0,a.jsx)(eA.A,{className:"mr-2 h-4 w-4"}),"Select All Models"]}),(0,a.jsxs)(e_,{onClick:()=>{_(new Set)},children:[(0,a.jsx)(eS.A,{className:"mr-2 h-4 w-4"}),"Deselect All"]}),(0,a.jsx)(ek,{}),(0,a.jsxs)(e_,{onClick:()=>{A(!0)},className:"text-destructive focus:text-destructive",children:[(0,a.jsx)(D.A,{className:"mr-2 h-4 w-4"}),"Delete All Models Permanently"]})]})]})]})]}),Object.entries(er).map(e=>{let[t,r]=e;if(s&&t!==s)return null;let l=ed.get(t),i=r.every(e=>w.has(e.id)),n=r.some(e=>w.has(e.id));return(0,a.jsxs)(en.Zp,{className:"overflow-hidden",children:[!s&&(0,a.jsx)(en.aR,{className:"pb-3",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)(ee,{checked:i,ref:e=>{e&&"indeterminate"in e&&(e.indeterminate=n&&!i)},onCheckedChange:e=>{if(e)eJ(t);else{let e=r.map(e=>e.id),s=new Set(w);e.forEach(e=>s.delete(e)),_(s)}}}),(0,a.jsxs)("div",{children:[(0,a.jsxs)(en.ZB,{className:"flex items-center gap-2 text-lg",children:[(0,a.jsx)(J.A,{className:"h-5 w-5"}),t,(0,a.jsxs)("span",{className:"text-muted-foreground text-sm font-normal",children:["(",r.length," models)"]})]}),(0,a.jsxs)(en.BT,{children:[(null==l?void 0:l.group_url)?(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)(K.A,{className:"h-3 w-3"}),l.group_url]}):"Using default endpoint",(null==l?void 0:l.group_api_key)&&(0,a.jsxs)("span",{className:"ml-2 flex items-center gap-1",children:[(0,a.jsx)(Q.A,{className:"h-3 w-3"}),"Group API Key"]})]})]})]}),(0,a.jsx)("div",{className:"flex items-center gap-2",children:(0,a.jsxs)(eb,{children:[(0,a.jsx)(eN,{asChild:!0,children:(0,a.jsx)(x.$,{variant:"ghost",size:"sm",children:(0,a.jsx)(eR.A,{className:"h-4 w-4"})})}),(0,a.jsxs)(ew,{align:"end",children:[(0,a.jsxs)(e_,{onClick:()=>{l&&f({provider:t,models:r,groupData:l})},children:[(0,a.jsx)(q.A,{className:"mr-2 h-4 w-4"}),"Edit Group"]}),(0,a.jsxs)(e_,{onClick:()=>eJ(t),children:[(0,a.jsx)(eA.A,{className:"mr-2 h-4 w-4"}),"Select All"]}),(0,a.jsxs)(e_,{onClick:()=>eL(t),children:[(0,a.jsx)(eT.A,{className:"mr-2 h-4 w-4"}),"Refresh Models"]}),(0,a.jsx)(ek,{}),(0,a.jsxs)(e_,{onClick:()=>eQ(t),className:"text-destructive focus:text-destructive",children:[(0,a.jsx)(eF.A,{className:"mr-2 h-4 w-4"}),"Delete All Models Permanently"]})]})]})})]})}),(0,a.jsx)(en.Wu,{className:s?"pt-6":"pt-0",children:(0,a.jsx)("div",{className:"grid gap-3 md:grid-cols-2 lg:grid-cols-3",children:r.map(e=>(0,a.jsxs)(en.Zp,{className:(0,b.cn)("relative cursor-pointer overflow-hidden transition-all duration-200 hover:shadow-md",w.has(e.id)&&"ring-primary ring-2",c===e.id&&"ring-2 ring-blue-500",e.soft_deleted&&"border-red-200 bg-red-50 opacity-75"),onMouseEnter:()=>m(e.id),onMouseLeave:()=>m(null),children:[(0,a.jsx)(en.aR,{className:"pb-2",children:(0,a.jsxs)("div",{className:"flex items-start gap-2 pr-10",children:[(0,a.jsx)(ee,{checked:w.has(e.id),onCheckedChange:()=>eU(e.id),onClick:e=>e.stopPropagation(),className:"mt-1 flex-shrink-0"}),(0,a.jsxs)("div",{className:"flex w-[calc(100%-3rem)] items-start gap-2 overflow-hidden",children:[(0,a.jsx)("div",{className:"mt-1 flex-shrink-0",children:eY(e.modelType)}),(0,a.jsxs)("div",{className:"w-full overflow-hidden",children:[(0,a.jsx)("h3",{className:(0,b.cn)("overflow-hidden text-sm font-medium text-ellipsis whitespace-nowrap",e.soft_deleted&&"text-red-600 line-through"),children:e.name}),e.full_name!==e.name&&(0,a.jsx)("p",{className:"text-muted-foreground overflow-hidden text-xs text-ellipsis whitespace-nowrap",children:e.full_name})]})]}),(0,a.jsx)("div",{className:"absolute top-3 right-2",children:(0,a.jsxs)(eb,{children:[(0,a.jsx)(eN,{asChild:!0,children:(0,a.jsx)(x.$,{variant:"ghost",size:"sm",onClick:e=>e.stopPropagation(),className:"h-8 w-8 p-0",children:(0,a.jsx)(eR.A,{className:"h-4 w-4"})})}),(0,a.jsxs)(ew,{align:"end",children:[(0,a.jsxs)(e_,{onClick:s=>{s.stopPropagation(),u(e.id)},children:[(0,a.jsx)(X.A,{className:"mr-2 h-4 w-4"}),"Select for Test"]}),(0,a.jsxs)(e_,{onClick:s=>{s.stopPropagation(),j(e)},children:[(0,a.jsx)(q.A,{className:"mr-2 h-4 w-4"}),"Edit Model"]}),(0,a.jsx)(ek,{}),e.soft_deleted?(0,a.jsxs)(e_,{onClick:s=>{s.stopPropagation(),et.mutate(e.id)},className:"text-green-600 focus:text-green-700",children:[(0,a.jsx)(Z.A,{className:"mr-2 h-4 w-4"}),"Enable Model"]}):(0,a.jsxs)(e_,{onClick:s=>{s.stopPropagation(),eD(e.id)},className:"text-orange-600 focus:text-orange-700",children:[(0,a.jsx)(eP.A,{className:"mr-2 h-4 w-4"}),"Disable Model"]}),(0,a.jsxs)(e_,{onClick:s=>{s.stopPropagation(),eK(e.id)},className:"text-destructive focus:text-destructive",children:[(0,a.jsx)(eF.A,{className:"mr-2 h-4 w-4"}),"Delete"]})]})]})})]})}),(0,a.jsxs)(en.Wu,{className:"space-y-2 pt-0",onClick:()=>u(e.id),children:[(0,a.jsxs)("div",{className:"flex flex-wrap gap-1",children:[(0,a.jsx)("span",{className:(0,b.cn)("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium",eO(e.modelType)),children:e.modelType}),"remote"===e.api_key_type&&(0,a.jsx)("span",{className:"inline-flex items-center rounded-full border border-blue-200 bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-800",children:"Remote"}),"remote"!==e.api_key_type&&(0,a.jsx)("span",{className:"inline-flex items-center rounded-full border border-emerald-200 bg-emerald-100 px-2.5 py-0.5 text-xs font-medium text-emerald-800",children:"Database"}),e.is_free&&(0,a.jsx)("span",{className:"inline-flex items-center rounded-full bg-yellow-100 px-2.5 py-0.5 text-xs font-medium text-yellow-800",children:"Free"}),!em(e)&&(0,a.jsxs)("span",{className:"inline-flex items-center rounded-full bg-red-100 px-2.5 py-0.5 text-xs font-medium text-red-800",children:[(0,a.jsx)(Q.A,{className:"mr-1 h-3 w-3"}),"No API Key"]}),em(e)&&!ey(e)&&(0,a.jsxs)("span",{className:"inline-flex items-center rounded-full bg-green-100 px-2.5 py-0.5 text-xs font-medium text-green-800",children:[(0,a.jsx)(J.A,{className:"mr-1 h-3 w-3"}),"Group Key"]}),ey(e)&&(0,a.jsxs)("span",{className:"inline-flex items-center rounded-full bg-purple-100 px-2.5 py-0.5 text-xs font-medium text-purple-800",children:[(0,a.jsx)(Q.A,{className:"mr-1 h-3 w-3"}),"Individual Key"]}),e.soft_deleted&&(0,a.jsxs)("span",{className:"inline-flex items-center rounded-full border border-red-300 bg-red-100 px-2.5 py-0.5 text-xs font-medium text-red-800",children:[(0,a.jsx)(eF.A,{className:"mr-1 h-3 w-3"}),"Deleted"]})]}),!e.is_free&&(0,a.jsxs)("div",{className:"text-muted-foreground space-y-1 text-xs",children:[(0,a.jsxs)("div",{className:"flex justify-between",children:[(0,a.jsx)("span",{className:"truncate",children:"Input:"}),(0,a.jsxs)("span",{className:"ml-2 truncate",children:[ei(e.input_cost),"/1M tokens"]})]}),(0,a.jsxs)("div",{className:"flex justify-between",children:[(0,a.jsx)("span",{className:"truncate",children:"Output:"}),(0,a.jsxs)("span",{className:"ml-2 truncate",children:[ei(e.output_cost),"/1M tokens"]})]})]}),e.description&&(0,a.jsx)("p",{className:"text-muted-foreground line-clamp-2 overflow-hidden text-xs break-words text-ellipsis",children:e.description})]})]},e.id))})})]},t)}),(0,a.jsx)(I,{isOpen:p,onModelAdd:ez,onCancel:()=>h(!1)}),g&&(0,a.jsx)(U,{model:g,providerId:g.provider_id?parseInt(g.provider_id):void 0,onModelUpdate:eE,onCancel:()=>j(null),isOpen:!!g}),v&&(0,a.jsx)(V,{provider:v.provider,models:v.models,groupSettings:{group_api_key:v.groupData.group_api_key,group_url:v.groupData.group_url},onGroupUpdate:eI,onCancel:()=>f(null),isOpen:!!v}),(0,a.jsx)(el,{isOpen:y,onClose:()=>N(!1),onSuccess:eq}),(0,a.jsx)(ec,{open:k,onOpenChange:C,children:(0,a.jsxs)(ep,{children:[(0,a.jsxs)(eh,{children:[(0,a.jsx)(eg,{children:"Permanently Delete Selected Models"}),(0,a.jsxs)(ej,{children:["Are you sure you want to permanently delete ",w.size," ","selected models? This will completely remove them from the database and cannot be undone."]})]}),(0,a.jsxs)(ex,{children:[(0,a.jsx)(ef,{children:"Cancel"}),(0,a.jsx)(ev,{onClick:()=>{$.mutate(Array.from(w)),C(!1)},className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Delete Models"})]})]})}),(0,a.jsx)(ec,{open:S,onOpenChange:F,children:(0,a.jsxs)(ep,{children:[(0,a.jsxs)(eh,{children:[(0,a.jsxs)(eg,{children:["Apply Group Settings to"," ",w.size===G.length&&s?"All Models in ".concat(s):"Selected Models"]}),(0,a.jsxs)(ej,{children:[w.size===G.length&&s?(0,a.jsxs)("div",{children:[(0,a.jsxs)("p",{children:["Are you sure you want to force ALL ",w.size," ","models in the ",(0,a.jsx)("strong",{children:s})," group to use group settings?"]}),(0,a.jsx)("p",{className:"mt-2 text-sm text-amber-600",children:(0,a.jsx)("strong",{children:"⚠️ This will override individual model configurations:"})})]}):(0,a.jsxs)("p",{children:["Are you sure you want to apply the group settings to"," ",w.size," selected models?"]}),(0,a.jsxs)("ul",{className:"mt-2 list-inside list-disc space-y-1 text-sm",children:[(0,a.jsx)("li",{children:"Remove individual API keys (models will use the group API key)"}),(null==t?void 0:t.group_url)&&(0,a.jsxs)("li",{children:["Set the URL to:"," ",(0,a.jsx)("code",{className:"rounded bg-gray-100 px-1",children:t.group_url})]}),(0,a.jsx)("li",{children:"Force models to use group configurations"}),w.size===G.length&&s&&(0,a.jsx)("li",{className:"font-medium text-amber-600",children:"This will affect ALL models in this provider group"})]})]})]}),(0,a.jsxs)(ex,{children:[(0,a.jsx)(ef,{children:"Cancel"}),(0,a.jsx)(ev,{onClick:()=>{W.mutate(Array.from(w)),F(!1)},className:"bg-blue-600 text-white hover:bg-blue-700",children:w.size===G.length&&s?"Force All ".concat(w.size," Models"):"Apply Group Settings"})]})]})}),(0,a.jsx)(ec,{open:M,onOpenChange:A,children:(0,a.jsxs)(ep,{children:[(0,a.jsxs)(eh,{children:[(0,a.jsx)(eg,{children:"Permanently Delete All Models"}),(0,a.jsxs)(ej,{children:["Are you sure you want to permanently delete ALL models? This will completely remove all ",Y.length," models from the database. This action cannot be undone."]})]}),(0,a.jsxs)(ex,{children:[(0,a.jsx)(ef,{children:"Cancel"}),(0,a.jsx)(ev,{onClick:()=>{H.mutate(),A(!1)},className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Delete All Models"})]})]})})]})}var eE=t(7916);u.Ik({id:u.Yj(),created_at:u.Yj(),updated_at:u.Yj(),provider:u.Yj(),group_api_key:u.Yj().optional(),group_url:u.Yj().optional()}),u.Ik({provider:u.Yj(),group_api_key:u.Yj().optional(),group_url:u.Yj().optional()}),u.Ik({provider:u.Yj().optional(),group_api_key:u.Yj().optional(),group_url:u.Yj().optional()}),u.Ik({base_endpoint:u.Yj(),api_key:u.Yj().optional(),provider_name:u.Yj(),default_input_cost:u.ai(),default_output_cost:u.ai(),default_min_cost:u.ai()}),u.Ik({collected_count:u.ai(),skipped_count:u.ai(),models:u.YO(u.bz()),errors:u.YO(u.Yj())}),u.Ik({provider_id:u.Yj()}),u.Ik({refreshed_count:u.ai(),created_count:u.ai(),restored_count:u.ai(),deleted_count:u.ai(),errors:u.YO(u.Yj())}),u.Ik({total_refreshed_count:u.ai(),total_created_count:u.ai(),total_restored_count:u.ai(),total_deleted_count:u.ai(),provider_results:u.YO(u.Ik({provider_name:u.Yj(),refreshed_count:u.ai(),created_count:u.ai(),restored_count:u.ai(),deleted_count:u.ai(),errors:u.YO(u.Yj())})),errors:u.YO(u.Yj())});let eI=u.Ik({id:u.Yj(),canonical_slug:u.Yj().optional(),hugging_face_id:u.Yj().optional(),name:u.Yj().optional(),created:u.ai(),description:u.Yj().optional(),context_length:u.ai().optional(),architecture:u.bz().optional(),pricing:u.bz().optional(),top_provider:u.bz().optional(),per_request_limits:u.bz().optional(),supported_parameters:u.YO(u.Yj()).optional(),provider_url:u.Yj(),provider_name:u.Yj().optional(),group_id:u.Yj().optional()});function eq(e,s){var t,a;return{id:e.id,name:e.name,full_name:e.full_name,description:e.description,modelType:e.model_type||"text",isEnabled:!e.soft_deleted,createdAt:e.created_at,updatedAt:e.updated_at,provider:e.provider||s||"",url:e.url,api_key:e.api_key,input_cost:Number(e.input_cost),output_cost:Number(e.output_cost),min_cost_per_request:Number(e.min_cost_per_request||"0"),min_cash_per_request:Number(e.min_cash_per_request||"0"),contextLength:e.context_length,apiKeyRequired:!0,provider_id:e.provider_id,is_free:null!=(t=e.is_free)&&t,soft_deleted:null!=(a=e.soft_deleted)&&a,has_own_api_key:e.has_own_api_key,api_key_type:e.api_key_type}}u.Ik({object:u.Yj(),data:u.YO(eI)}),u.Ik({id:u.Yj(),created_at:u.Yj(),updated_at:u.Yj(),full_name:u.Yj(),name:u.Yj(),url:u.Yj(),input_cost:u.Yj(),output_cost:u.Yj(),api_key:u.Yj().optional(),min_cash_per_request:u.Yj(),min_cost_per_request:u.Yj().optional(),provider_id:u.Yj().optional(),provider:u.Yj().optional(),soft_deleted:u.zM().optional(),architecture:u.bz().optional(),model_type:u.Yj().optional(),description:u.Yj().optional(),context_length:u.ai().optional(),is_free:u.zM().optional(),has_own_api_key:u.zM(),api_key_type:u.Yj()});class eL{static async createModelGroup(e){return await eE.apiClient.post("/api/model-groups",{provider:e.provider,group_api_key:e.group_api_key,group_url:e.group_url})}static async getModelGroups(){return await eE.apiClient.get("/api/model-groups")}static async getModelGroup(e){return await eE.apiClient.get("/api/model-groups/".concat(e))}static async updateModelGroup(e,s){return await eE.apiClient.put("/api/model-groups/".concat(e),{provider:s.provider,group_api_key:s.group_api_key,group_url:s.group_url})}static async deleteModelGroup(e){return await eE.apiClient.delete("/api/model-groups/".concat(e))}static async createModel(e){let s={full_name:e.name,name:e.name,url:e.url,api_key:e.api_key,input_cost:e.input_cost,output_cost:e.output_cost,min_cost_per_request:e.min_cost_per_request,min_cash_per_request:e.min_cash_per_request,provider:e.provider,model_type:e.modelType,description:e.description,context_length:e.contextLength,is_free:e.is_free};return eq(await eE.apiClient.post("/api/models",s))}static async getModels(){return(await eE.apiClient.get("/api/models")).map(e=>eq(e))}static async getModel(e){return eq(await eE.apiClient.get("/api/models/".concat(e)))}static async getModelsByProvider(e){return(await eE.apiClient.get("/api/models/provider/".concat(e))).map(e=>eq(e))}static async updateModel(e,s){let t={name:s.name,url:s.url,api_key:s.api_key,input_cost:s.input_cost,output_cost:s.output_cost,min_cost_per_request:s.min_cost_per_request,min_cash_per_request:s.min_cash_per_request,provider:s.provider,model_type:s.modelType,description:s.description,context_length:s.contextLength,is_free:s.is_free};return eq(await eE.apiClient.put("/api/models/".concat(e),t))}static async deleteModel(e){return await eE.apiClient.delete("/api/models/".concat(e))}static async softDeleteModel(e){return await eE.apiClient.put("/api/models/".concat(e,"/soft-delete"),{})}static async deleteModels(e){return await eE.apiClient.post("/api/models/bulk/delete",{model_ids:e})}static async softDeleteModels(e){return await eE.apiClient.post("/api/models/bulk/soft-delete",{model_ids:e})}static async bulkUpdateModels(e,s){return await eE.apiClient.post("/api/models/bulk/update",{model_ids:e,api_key:s.api_key,url:s.url})}static async deleteAllModels(){return await eE.apiClient.post("/api/models/all/delete",{})}static async deleteModelsByProvider(e){return await eE.apiClient.post("/api/models/provider/".concat(e,"/delete"),{})}static async restoreModels(e){return await eE.apiClient.post("/api/models/bulk/restore",{model_ids:e})}static async getSoftDeletedModels(){return(await eE.apiClient.get("/api/models/deleted")).map(e=>eq(e))}static async collectModels(e){return await eE.apiClient.post("/api/models/collect",e)}static async getModelsWithProviders(){let[e,s]=await Promise.all([eE.apiClient.get("/api/models"),this.getModelGroups()]),t=new Map(s.map(e=>[e.id,e.provider]));return{models:e.map(e=>eq(e,t.get(e.provider_id||"")||"Unknown")),groups:s}}static async listModels(e){let{models:s}=await this.getModelsWithProviders();return(null==e?void 0:e.enabled)!==!1?s.filter(e=>e.isEnabled):s}static async getModelInfo(e){return await this.getModel(e)}static async refreshModels(e){return await eE.apiClient.post("/api/models/refresh",e)}static async refreshAllModels(){return await eE.apiClient.post("/api/models/refresh-all",{})}static async getEnhancedModels(){return await eE.apiClient.get("/api/enhanced-models")}static async getEnhancedModelsByProvider(e){return await eE.apiClient.get("/api/enhanced-models/".concat(encodeURIComponent(e)))}static downloadModelsAsJson(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"models.json",t=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),a=URL.createObjectURL(t),r=document.createElement("a");r.href=a,r.download=s,r.click(),URL.revokeObjectURL(a)}static async downloadAllEnhancedModels(){try{let e=await this.getEnhancedModels();this.downloadModelsAsJson(e,"enhanced-models-all.json")}catch(e){throw console.error("Error downloading all enhanced models:",e),e}}static async downloadEnhancedModelsByProvider(e){try{let s=await this.getEnhancedModelsByProvider(e);this.downloadModelsAsJson(s,"enhanced-models-".concat(e.toLowerCase(),".json"))}catch(s){throw console.error("Error downloading enhanced models for provider ".concat(e,":"),s),s}}static async testModel(e,s,t){return await eE.apiClient.post("/api/models/test",{model_id:e,endpoint_type:s,request_data:t})}}var eY=t(2390),eO=t(4717);function eU(e){var s,t;let{models:l}=e,[o,d]=(0,r.useState)(""),[c,u]=(0,r.useState)("You are a helpful assistant. Please respond concisely."),[m,p]=(0,r.useState)("Hello! Can you tell me what model you are and confirm that you are working correctly?"),[h,g]=(0,r.useState)(150),[v,y]=(0,r.useState)(.7),[b,w]=(0,r.useState)(null),[_,k]=(0,r.useState)(null),{data:C=[]}=(0,i.I)({queryKey:["model-groups"],queryFn:()=>eL.getModelGroups(),refetchOnWindowFocus:!1}),M=l.find(e=>e.id===o),A=(0,n.n)({mutationFn:async e=>{if(!M)throw Error("No model selected");k(null),w(null);try{console.log("Testing model via proxy: ".concat(M.name)),console.log("Request payload:",e);let s=await eL.testModel(M.id,"chat-completions",e);if(!s.success)throw Error(s.error||"Test failed");return s.data}catch(e){throw console.error("Model test error via proxy:",e),Error(e instanceof Error?e.message:"Failed to test model via proxy")}},onSuccess:e=>{w(e),E.oR.success("Model test completed successfully!")},onError:e=>{let s=(null==e?void 0:e.message)||"Unknown error occurred";k(s),E.oR.error("Model test failed: ".concat(s))}}),S=async()=>{if(!M)return void E.oR.error("Please select a model to test");if(!m.trim())return void E.oR.error("Please enter a test message");let e=[];c.trim()&&e.push({role:"system",content:c.trim()}),e.push({role:"user",content:m.trim()});let s={model:M.name,messages:e,max_tokens:h,temperature:v};A.mutate(s)},F=l.filter(e=>e.isEnabled),P=M?(e=>{let s=C.find(s=>s.provider===e.provider),t=e.api_key||(null==s?void 0:s.group_api_key),a=e.url;return e.url.startsWith("/")&&(null==s?void 0:s.group_url)&&(a="".concat(s.group_url.replace(/\/$/,"")).concat(e.url)),"text"!==e.modelType||a.includes("/chat/completions")||(a=a.replace(/\/$/,"")+"/chat/completions"),{apiKey:t,endpointUrl:a,group:s}})(M):null;return(0,a.jsxs)(en.Zp,{className:"w-full",children:[(0,a.jsxs)(en.aR,{children:[(0,a.jsxs)(en.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(eY.A,{className:"h-5 w-5"}),"Model Credential Tester"]}),(0,a.jsx)(en.BT,{children:"Test model functionality by sending chat completion requests through the secure proxy (resolves CORS and network issues)"})]}),(0,a.jsxs)(en.Wu,{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"model-select",children:"Select Model"}),(0,a.jsxs)(f.l6,{value:o,onValueChange:d,children:[(0,a.jsx)(f.bq,{id:"model-select",children:(0,a.jsx)(f.yv,{placeholder:"Choose a model to test..."})}),(0,a.jsx)(f.gC,{children:F.map(e=>(0,a.jsx)(f.eb,{value:e.id,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{children:e.name}),(0,a.jsx)(er.E,{variant:"outline",className:"text-xs",children:e.provider}),e.is_free&&(0,a.jsx)(er.E,{variant:"secondary",className:"text-xs",children:"Free"})]})},e.id))})]}),M&&P&&(0,a.jsxs)("div",{className:"text-muted-foreground bg-muted space-y-2 rounded-md p-3 text-sm",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(K.A,{className:"h-4 w-4"}),(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Endpoint:"})," ",P.endpointUrl]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(Q.A,{className:"h-4 w-4"}),(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"API Key:"})," ",P.apiKey?"".concat(P.apiKey.substring(0,8),"..."):"Not configured"]}),(0,a.jsx)(er.E,{variant:P.apiKey?"default":"destructive",className:"text-xs",children:M.api_key_type||"Unknown"})]}),(0,a.jsx)("div",{children:(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Provider:"})," ",M.provider]})}),(0,a.jsx)("div",{children:(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Type:"})," ",M.modelType]})}),M.contextLength&&(0,a.jsx)("div",{children:(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Context Length:"})," ",M.contextLength.toLocaleString()]})}),!P.apiKey&&(0,a.jsxs)($.Fc,{variant:"default",className:"mt-2",children:[(0,a.jsx)(G.A,{className:"h-4 w-4"}),(0,a.jsx)($.TN,{children:"No API key configured for this model. Testing may still work if the model is free or if authentication is handled elsewhere. For models requiring authentication, please add an API key to the model or its provider group."})]})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"max-tokens",children:"Max Tokens"}),(0,a.jsx)("input",{id:"max-tokens",type:"number",min:1,max:4e3,value:h,onChange:e=>g(parseInt(e.target.value)||150),className:"border-input bg-background w-full rounded-md border px-3 py-2 text-sm"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"temperature",children:"Temperature"}),(0,a.jsx)("input",{id:"temperature",type:"number",min:0,max:2,step:.1,value:v,onChange:e=>y(parseFloat(e.target.value)||.7),className:"border-input bg-background w-full rounded-md border px-3 py-2 text-sm"})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"system-message",children:"System Message (Optional)"}),(0,a.jsx)(j.T,{id:"system-message",placeholder:"Enter system message...",value:c,onChange:e=>u(e.target.value),rows:2})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"user-message",children:"Test Message"}),(0,a.jsx)(j.T,{id:"user-message",placeholder:"Enter your test message...",value:m,onChange:e=>p(e.target.value),rows:3})]}),(0,a.jsx)(x.$,{onClick:S,disabled:!o||A.isPending,className:"w-full",children:A.isPending?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Testing Model..."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eY.A,{className:"mr-2 h-4 w-4"}),"Test Model (via Proxy)"]})}),_&&(0,a.jsxs)($.Fc,{variant:"destructive",children:[(0,a.jsx)(eO.A,{className:"h-4 w-4"}),(0,a.jsxs)($.TN,{children:[(0,a.jsx)("strong",{children:"Test Failed:"})," ",_]})]}),b&&(0,a.jsxs)($.Fc,{children:[(0,a.jsx)(Z.A,{className:"h-4 w-4"}),(0,a.jsxs)($.TN,{children:[(0,a.jsx)("strong",{children:"Test Successful!"})," Model responded correctly via secure proxy."]})]}),b&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Model Response"}),(0,a.jsx)("div",{className:"bg-muted rounded-md p-4",children:(0,a.jsx)("p",{className:"text-sm whitespace-pre-wrap",children:(null==(t=b.choices[0])||null==(s=t.message)?void 0:s.content)||"No content in response"})})]}),b.usage&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Usage Statistics"}),(0,a.jsxs)("div",{className:"grid grid-cols-3 gap-4 text-sm",children:[(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center",children:[(0,a.jsx)("div",{className:"font-semibold",children:b.usage.prompt_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Prompt Tokens"})]}),(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center",children:[(0,a.jsx)("div",{className:"font-semibold",children:b.usage.completion_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Completion Tokens"})]}),(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center",children:[(0,a.jsx)("div",{className:"font-semibold",children:b.usage.total_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Total Tokens"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Raw Response"}),(0,a.jsxs)("details",{className:"group",children:[(0,a.jsxs)("summary",{className:"text-muted-foreground hover:text-foreground cursor-pointer text-sm",children:[(0,a.jsx)(G.A,{className:"mr-1 inline h-4 w-4"}),"Show detailed response data"]}),(0,a.jsx)("pre",{className:"bg-muted mt-2 max-h-60 overflow-auto rounded-md p-4 text-xs",children:JSON.stringify(b,null,2)})]})]})]})]})]})}var eJ=t(4938),eQ=t(7137),eK=t(9472),eD=t(413),eG=t(9911),e$=t(4713),eV=t(9935),eB=t(8019);let eW={"chat-completions":{name:"Chat Completions",path:"/chat/completions",icon:eJ.A,description:"Test conversational AI with chat completion requests"},"vision-chat":{name:"Vision Chat (Image + Text)",path:"/chat/completions",icon:eQ.A,description:"Analyze images with text prompts using vision models"},embeddings:{name:"Embeddings",path:"/embeddings",icon:eK.A,description:"Generate embeddings for text input"},images:{name:"Image Generation",path:"/images/generations",icon:eD.A,description:"Generate images from text prompts"},"audio-speech":{name:"Text-to-Speech",path:"/audio/speech",icon:eG.A,description:"Convert text to speech audio"},"audio-transcription":{name:"Audio Transcription",path:"/audio/transcriptions",icon:e$.A,description:"Transcribe audio files to text"},models:{name:"List Models",path:"/model",icon:eK.A,description:"List all available models from the provider"}},eZ={"chat-completions":{systemMessage:"You are a helpful assistant. Please respond concisely.",userMessage:"Hello! Can you tell me what model you are and confirm that you are working correctly?",maxTokens:150,temperature:.7},"vision-chat":{systemMessage:"You are a helpful assistant that can analyze images. Please describe what you see.",userMessage:"What do you see in this image? Please provide a detailed description.",maxTokens:300,temperature:.7,imageDetail:"auto"},embeddings:{input:"The quick brown fox jumps over the lazy dog.",encoding_format:"float"},images:{prompt:"A beautiful sunset over a mountain landscape",n:1,size:"1024x1024",quality:"standard",style:"vivid"},"audio-speech":{input:"Hello, this is a test of the text-to-speech functionality.",voice:"alloy",response_format:"mp3",speed:1},"audio-transcription":{prompt:"This is a test transcription.",response_format:"json",temperature:0,language:""}};function eH(e){var s,t,l,o,d,c,u,m,p,h,v;let y,b,w,_,k,C,{models:M}=e,[A,S]=(0,r.useState)(""),[F,P]=(0,r.useState)("chat-completions"),[R,T]=(0,r.useState)(null),[I,q]=(0,r.useState)(null),[L,Y]=(0,r.useState)(eZ["chat-completions"].systemMessage),[O,U]=(0,r.useState)(eZ["chat-completions"].userMessage),[J,D]=(0,r.useState)(eZ["chat-completions"].maxTokens),[V,B]=(0,r.useState)(eZ["chat-completions"].temperature),[W,H]=(0,r.useState)(eZ["vision-chat"].systemMessage),[X,ee]=(0,r.useState)(eZ["vision-chat"].userMessage),[es,et]=(0,r.useState)(eZ["vision-chat"].maxTokens),[ea,el]=(0,r.useState)(eZ["vision-chat"].temperature),[ei,eo]=(0,r.useState)(eZ["vision-chat"].imageDetail),[ed,ec]=(0,r.useState)(null),[eu,em]=(0,r.useState)(null),[ep,eh]=(0,r.useState)(!1),[ex,eg]=(0,r.useState)(null),[ej,ev]=(0,r.useState)(null),[ef,ey]=(0,r.useState)(null),[eb,eN]=(0,r.useState)(eZ["audio-transcription"].prompt),[ew,e_]=(0,r.useState)(eZ["audio-transcription"].response_format),[ek,eC]=(0,r.useState)(eZ["audio-transcription"].temperature),[eM,eA]=(0,r.useState)(eZ["audio-transcription"].language),eS=(0,r.useRef)(null),eF=(0,r.useRef)(null),[eP,eR]=(0,r.useState)(eZ.embeddings.input),[eT,ez]=(0,r.useState)(eZ.embeddings.encoding_format),[eE,eI]=(0,r.useState)(eZ.images.prompt),[eq,eU]=(0,r.useState)(eZ.images.n),[eJ,eQ]=(0,r.useState)(eZ.images.size),[eH,eX]=(0,r.useState)(eZ.images.quality),[e0,e2]=(0,r.useState)(eZ.images.style),[e4,e1]=(0,r.useState)(eZ["audio-speech"].input),[e5,e3]=(0,r.useState)(eZ["audio-speech"].voice),[e6,e9]=(0,r.useState)(eZ["audio-speech"].response_format),[e8,e7]=(0,r.useState)(eZ["audio-speech"].speed),{data:se=[]}=(0,i.I)({queryKey:["model-groups"],queryFn:()=>eL.getModelGroups(),refetchOnWindowFocus:!1}),ss=M.find(e=>e.id===A),st=e=>{var s;let t=null==(s=e.target.files)?void 0:s[0];t&&(t.type.startsWith("image/")?(ec(t),em(URL.createObjectURL(t))):E.oR.error("Please select a valid image file"))},sa=e=>{var s;let t=null==(s=e.target.files)?void 0:s[0];t&&(t.type.startsWith("audio/")?(eg(t),ev(URL.createObjectURL(t))):E.oR.error("Please select a valid audio file"))},sr=async()=>{try{let e=await navigator.mediaDevices.getUserMedia({audio:!0}),s=new MediaRecorder(e),t=[];s.ondataavailable=e=>{e.data.size>0&&t.push(e.data)},s.onstop=()=>{let s=new Blob(t,{type:"audio/webm"}),a=new File([s],"recording.webm",{type:"audio/webm"});eg(a);let r=URL.createObjectURL(s);ev(r),e.getTracks().forEach(e=>e.stop())},s.start(),ey(s),eh(!0),E.oR.success("Recording started")}catch(e){console.error("Error starting recording:",e),E.oR.error("Failed to start recording. Please check microphone permissions.")}},sl=()=>{ef&&(ef.stop(),ey(null),eh(!1),E.oR.success("Recording stopped"))},si=e=>new Promise((s,t)=>{let a=new FileReader;a.readAsDataURL(e),a.onload=()=>s(a.result),a.onerror=e=>t(e)}),sn=async()=>{if(!ss)return null;switch(F){case"chat-completions":let e=[];return L.trim()&&e.push({role:"system",content:L.trim()}),e.push({role:"user",content:O.trim()}),{model:ss.name,messages:e,max_tokens:J,temperature:V};case"vision-chat":if(!ed)throw Error("Please select an image for vision analysis");let s=await si(ed),t=[];return W.trim()&&t.push({role:"system",content:W.trim()}),t.push({role:"user",content:[{type:"text",text:X.trim()},{type:"image_url",image_url:{url:s,detail:ei}}]}),{model:ss.name,messages:t,max_tokens:es,temperature:ea};case"embeddings":return{model:ss.name,input:eP,encoding_format:eT};case"images":return{model:ss.name,prompt:eE,n:eq,size:eJ,quality:eH,style:e0};case"audio-speech":return{model:ss.name,input:e4,voice:e5,response_format:e6,speed:e8};case"audio-transcription":if(!ex)throw Error("Please record or upload an audio file for transcription");return{model:ss.name,file:ex,prompt:eb.trim()||void 0,response_format:ew,temperature:ek,language:eM.trim()||void 0};default:return null}},so=(0,n.n)({mutationFn:async e=>{if(!ss)throw Error("No model selected");q(null),T(null);try{console.log("Testing endpoint via proxy: ".concat(F)),console.log("Request payload:",e);let s=await eL.testModel(ss.id,F,e);if(!s.success)throw Error(s.error||"Test failed");return s.data}catch(e){throw console.error("API endpoint test error via proxy:",e),Error(e instanceof Error?e.message:"Failed to test endpoint via proxy")}},onSuccess:e=>{T(e),E.oR.success("".concat(eW[F].name," test completed successfully!"))},onError:e=>{let s=(null==e?void 0:e.message)||"Unknown error occurred";q(s),E.oR.error("".concat(eW[F].name," test failed: ").concat(s))}}),sd=async()=>{if(!ss)return void E.oR.error("Please select a model to test");if("chat-completions"===F&&!O.trim())return void E.oR.error("Please enter a test message");if("vision-chat"===F){if(!X.trim())return void E.oR.error("Please enter a test message");if(!ed)return void E.oR.error("Please select an image for vision analysis")}if("embeddings"===F&&!eP.trim())return void E.oR.error("Please enter text for embedding");if("images"===F&&!eE.trim())return void E.oR.error("Please enter an image prompt");if("audio-speech"===F&&!e4.trim())return void E.oR.error("Please enter text for speech synthesis");if("audio-transcription"===F&&!ex)return void E.oR.error("Please record or upload an audio file for transcription");let e=await sn();so.mutate(e)},sc=M.filter(e=>e.isEnabled),su=ss?(e=>{let s=se.find(s=>s.provider===e.provider),t=e.api_key||(null==s?void 0:s.group_api_key),a=e.url;return e.url.startsWith("/")&&(null==s?void 0:s.group_url)&&(a="".concat(s.group_url.replace(/\/$/,"")).concat(e.url)),{apiKey:t,baseUrl:a=a.replace(/\/v1\/.*$/,"").replace(/\/$/,""),group:s}})(ss):null,sm=su?(k=su.baseUrl,C=eW[F].path,"".concat(k).concat(C)):"";return(0,a.jsxs)(en.Zp,{className:"w-full",children:[(0,a.jsxs)(en.aR,{children:[(0,a.jsxs)(en.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(eY.A,{className:"h-5 w-5"}),"API Endpoint Tester"]}),(0,a.jsx)(en.BT,{children:"Comprehensive testing of OpenAI-compatible API endpoints through the secure proxy (resolves CORS and network issues)"})]}),(0,a.jsxs)(en.Wu,{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"model-select",children:"Select Model"}),(0,a.jsxs)(f.l6,{value:A,onValueChange:S,children:[(0,a.jsx)(f.bq,{id:"model-select",children:(0,a.jsx)(f.yv,{placeholder:"Choose a model to test..."})}),(0,a.jsx)(f.gC,{children:sc.map(e=>(0,a.jsx)(f.eb,{value:e.id,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{children:e.name}),(0,a.jsx)(er.E,{variant:"outline",className:"text-xs",children:e.provider}),e.is_free&&(0,a.jsx)(er.E,{variant:"secondary",className:"text-xs",children:"Free"})]})},e.id))})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"endpoint-select",children:"API Endpoint"}),(0,a.jsxs)(f.l6,{value:F,onValueChange:e=>P(e),children:[(0,a.jsx)(f.bq,{id:"endpoint-select",children:(0,a.jsx)(f.yv,{})}),(0,a.jsx)(f.gC,{children:Object.entries(eW).map(e=>{let[s,t]=e,r=t.icon;return(0,a.jsx)(f.eb,{value:s,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(r,{className:"h-4 w-4"}),(0,a.jsx)("span",{children:t.name})]})},s)})})]})]})]}),ss&&su&&(0,a.jsxs)("div",{className:"text-muted-foreground bg-muted space-y-2 rounded-md p-3 text-sm",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(K.A,{className:"h-4 w-4"}),(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Endpoint:"})," ",sm]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(Q.A,{className:"h-4 w-4"}),(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"API Key:"})," ",su.apiKey?"".concat(su.apiKey.substring(0,8),"..."):"Not configured"]}),(0,a.jsx)(er.E,{variant:su.apiKey?"default":"destructive",className:"text-xs",children:ss.api_key_type||"Unknown"})]}),(0,a.jsx)("div",{children:(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Provider:"})," ",ss.provider]})}),(0,a.jsx)("div",{children:(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Description:"})," ",eW[F].description]})}),!su.apiKey&&(0,a.jsxs)($.Fc,{variant:"default",className:"mt-2",children:[(0,a.jsx)(G.A,{className:"h-4 w-4"}),(0,a.jsx)($.TN,{children:"No API key configured for this model. Testing may still work if the model is free or if authentication is handled elsewhere. For models requiring authentication, please add an API key to the model or its provider group."})]})]}),(()=>{switch(F){case"chat-completions":return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"max-tokens",children:"Max Tokens"}),(0,a.jsx)(g.p,{id:"max-tokens",type:"number",min:1,max:4e3,value:J,onChange:e=>D(parseInt(e.target.value)||150)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"temperature",children:"Temperature"}),(0,a.jsx)(g.p,{id:"temperature",type:"number",min:0,max:2,step:.1,value:V,onChange:e=>B(parseFloat(e.target.value)||.7)})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"system-message",children:"System Message (Optional)"}),(0,a.jsx)(j.T,{id:"system-message",placeholder:"Enter system message...",value:L,onChange:e=>Y(e.target.value),rows:2})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"user-message",children:"Test Message"}),(0,a.jsx)(j.T,{id:"user-message",placeholder:"Enter your test message...",value:O,onChange:e=>U(e.target.value),rows:3})]})]});case"vision-chat":return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"vision-max-tokens",children:"Max Tokens"}),(0,a.jsx)(g.p,{id:"vision-max-tokens",type:"number",min:1,max:4e3,value:es,onChange:e=>et(parseInt(e.target.value)||300)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"vision-temperature",children:"Temperature"}),(0,a.jsx)(g.p,{id:"vision-temperature",type:"number",min:0,max:2,step:.1,value:ea,onChange:e=>el(parseFloat(e.target.value)||.7)})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"vision-system-message",children:"System Message (Optional)"}),(0,a.jsx)(j.T,{id:"vision-system-message",placeholder:"Enter system message...",value:W,onChange:e=>H(e.target.value),rows:2})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"vision-user-message",children:"Test Message"}),(0,a.jsx)(j.T,{id:"vision-user-message",placeholder:"Enter your test message...",value:X,onChange:e=>ee(e.target.value),rows:3})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-detail",children:"Image Detail"}),(0,a.jsxs)(f.l6,{value:ei,onValueChange:e=>eo(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"low",children:"Low"}),(0,a.jsx)(f.eb,{value:"high",children:"High"}),(0,a.jsx)(f.eb,{value:"auto",children:"Auto"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-upload",children:"Upload Image (Optional)"}),(0,a.jsx)(g.p,{type:"file",accept:"image/*",onChange:st,ref:eS,className:"file:mr-4 file:rounded-full file:border-0 file:bg-blue-50 file:px-4 file:py-2 file:text-sm file:font-semibold file:text-blue-700 hover:file:bg-blue-100"}),ed&&(0,a.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,a.jsx)(eD.A,{className:"h-5 w-5 text-blue-500"}),(0,a.jsxs)("span",{className:"text-muted-foreground text-sm",children:["Selected image: ",ed.name]}),(0,a.jsx)(x.$,{variant:"outline",size:"sm",onClick:()=>ec(null),className:"ml-auto",children:"Remove"})]}),eu&&(0,a.jsx)("div",{className:"relative mt-2 aspect-square w-32 overflow-hidden rounded-md border",children:(0,a.jsx)(eB.default,{src:eu,alt:"Image preview",fill:!0,className:"object-cover"})})]})]});case"embeddings":return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"encoding-format",children:"Encoding Format"}),(0,a.jsxs)(f.l6,{value:eT,onValueChange:e=>ez(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"float",children:"Float"}),(0,a.jsx)(f.eb,{value:"base64",children:"Base64"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"embedding-input",children:"Text Input"}),(0,a.jsx)(j.T,{id:"embedding-input",placeholder:"Enter text to generate embeddings for...",value:eP,onChange:e=>eR(e.target.value),rows:4})]})]});case"images":return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-count",children:"Number of Images"}),(0,a.jsx)(g.p,{id:"image-count",type:"number",min:1,max:10,value:eq,onChange:e=>eU(parseInt(e.target.value)||1)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-size",children:"Size"}),(0,a.jsxs)(f.l6,{value:eJ,onValueChange:e=>eQ(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"256x256",children:"256x256"}),(0,a.jsx)(f.eb,{value:"512x512",children:"512x512"}),(0,a.jsx)(f.eb,{value:"1024x1024",children:"1024x1024"}),(0,a.jsx)(f.eb,{value:"1792x1024",children:"1792x1024"}),(0,a.jsx)(f.eb,{value:"1024x1792",children:"1024x1792"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-quality",children:"Quality"}),(0,a.jsxs)(f.l6,{value:eH,onValueChange:e=>eX(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"standard",children:"Standard"}),(0,a.jsx)(f.eb,{value:"hd",children:"HD"})]})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-style",children:"Style"}),(0,a.jsxs)(f.l6,{value:e0,onValueChange:e=>e2(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"vivid",children:"Vivid"}),(0,a.jsx)(f.eb,{value:"natural",children:"Natural"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-prompt",children:"Image Prompt"}),(0,a.jsx)(j.T,{id:"image-prompt",placeholder:"Describe the image you want to generate...",value:eE,onChange:e=>eI(e.target.value),rows:3})]})]});case"audio-speech":return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-3",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"speech-voice",children:"Voice"}),(0,a.jsxs)(f.l6,{value:e5,onValueChange:e=>e3(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"alloy",children:"Alloy"}),(0,a.jsx)(f.eb,{value:"echo",children:"Echo"}),(0,a.jsx)(f.eb,{value:"fable",children:"Fable"}),(0,a.jsx)(f.eb,{value:"onyx",children:"Onyx"}),(0,a.jsx)(f.eb,{value:"nova",children:"Nova"}),(0,a.jsx)(f.eb,{value:"shimmer",children:"Shimmer"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"speech-format",children:"Response Format"}),(0,a.jsxs)(f.l6,{value:e6,onValueChange:e=>e9(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"mp3",children:"MP3"}),(0,a.jsx)(f.eb,{value:"opus",children:"Opus"}),(0,a.jsx)(f.eb,{value:"aac",children:"AAC"}),(0,a.jsx)(f.eb,{value:"flac",children:"FLAC"}),(0,a.jsx)(f.eb,{value:"wav",children:"WAV"}),(0,a.jsx)(f.eb,{value:"pcm",children:"PCM"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"speech-speed",children:"Speed"}),(0,a.jsx)(g.p,{id:"speech-speed",type:"number",min:.25,max:4,step:.25,value:e8,onChange:e=>e7(parseFloat(e.target.value)||1)})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"speech-input",children:"Text to Synthesize"}),(0,a.jsx)(j.T,{id:"speech-input",placeholder:"Enter text to convert to speech...",value:e4,onChange:e=>e1(e.target.value),rows:4})]})]});case"audio-transcription":return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"audio-transcription-prompt",children:"Prompt (Optional)"}),(0,a.jsx)(j.T,{id:"audio-transcription-prompt",placeholder:"Enter a prompt for the transcription...",value:eb,onChange:e=>eN(e.target.value),rows:2})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"audio-transcription-temperature",children:"Temperature"}),(0,a.jsx)(g.p,{id:"audio-transcription-temperature",type:"number",min:0,max:1,step:.1,value:ek,onChange:e=>eC(parseFloat(e.target.value)||0)})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"audio-transcription-language",children:"Language (Optional)"}),(0,a.jsx)(g.p,{id:"audio-transcription-language",placeholder:"e.g., en-US, fr-FR",value:eM,onChange:e=>eA(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"audio-transcription-response-format",children:"Response Format"}),(0,a.jsxs)(f.l6,{value:ew,onValueChange:e=>e_(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"json",children:"JSON"}),(0,a.jsx)(f.eb,{value:"text",children:"Text"}),(0,a.jsx)(f.eb,{value:"srt",children:"SRT"}),(0,a.jsx)(f.eb,{value:"verbose_json",children:"Verbose JSON"}),(0,a.jsx)(f.eb,{value:"vtt",children:"VTT"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Voice Recording"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(x.$,{type:"button",variant:ep?"destructive":"default",size:"sm",onClick:ep?sl:sr,className:"flex items-center gap-2",children:ep?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eV.A,{className:"h-4 w-4"}),"Stop Recording"]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eG.A,{className:"h-4 w-4"}),"Start Recording"]})}),ep&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-red-600",children:[(0,a.jsx)("div",{className:"h-2 w-2 animate-pulse rounded-full bg-red-600"}),(0,a.jsx)("span",{className:"text-sm",children:"Recording..."})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"audio-transcription-upload",children:"Or Upload Audio File"}),(0,a.jsx)(g.p,{type:"file",accept:"audio/*",onChange:sa,ref:eF,className:"file:mr-4 file:rounded-full file:border-0 file:bg-blue-50 file:px-4 file:py-2 file:text-sm file:font-semibold file:text-blue-700 hover:file:bg-blue-100"}),ex&&(0,a.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,a.jsx)(e$.A,{className:"h-5 w-5 text-blue-500"}),(0,a.jsxs)("span",{className:"text-muted-foreground text-sm",children:["Selected audio: ",ex.name]}),(0,a.jsx)(x.$,{variant:"outline",size:"sm",onClick:()=>{eg(null),ev(null)},className:"ml-auto",children:"Remove"})]}),ej&&(0,a.jsx)("div",{className:"bg-muted mt-2 rounded-md p-4",children:(0,a.jsx)("audio",{controls:!0,src:ej,className:"w-full",children:"Your browser does not support the audio element."})})]})]})]});case"models":return(0,a.jsx)("div",{className:"space-y-4",children:(0,a.jsxs)($.Fc,{children:[(0,a.jsx)(eK.A,{className:"h-4 w-4"}),(0,a.jsx)($.TN,{children:"This endpoint lists all available models from the provider. No additional parameters are required."})]})});default:return null}})(),(0,a.jsx)(x.$,{onClick:sd,disabled:!A||so.isPending,className:"w-full",children:so.isPending?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Testing ",eW[F].name,"..."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eY.A,{className:"mr-2 h-4 w-4"}),"Test ",eW[F].name]})}),I&&(0,a.jsxs)($.Fc,{variant:"destructive",children:[(0,a.jsx)(eO.A,{className:"h-4 w-4"}),(0,a.jsxs)($.TN,{children:[(0,a.jsx)("strong",{children:"Test Failed:"})," ",I]})]}),R&&(0,a.jsxs)($.Fc,{children:[(0,a.jsx)(Z.A,{className:"h-4 w-4"}),(0,a.jsxs)($.TN,{children:[(0,a.jsx)("strong",{children:"Test Successful!"})," ",eW[F].name," endpoint responded correctly."]})]}),R&&(R?"type"in(y=R)&&"audio"===y.type?(0,a.jsx)("div",{className:"space-y-4",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Generated Audio"}),(0,a.jsxs)("div",{className:"bg-muted rounded-md p-4",children:[(0,a.jsx)("audio",{controls:!0,src:R.url,className:"w-full",children:"Your browser does not support the audio element."}),(0,a.jsxs)("p",{className:"text-muted-foreground mt-2 text-sm",children:["Audio file size: ",(R.size/1024).toFixed(2)," KB"]})]})]})}):"text"in R?(0,a.jsx)("div",{className:"space-y-4",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Transcription Result"}),(0,a.jsx)("div",{className:"bg-muted rounded-md p-4",children:(0,a.jsx)("p",{className:"text-sm whitespace-pre-wrap",children:R.text||"No transcription result available"})})]})}):"choices"in R?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Model Response"}),(0,a.jsx)("div",{className:"bg-muted rounded-md p-4",children:(0,a.jsx)("p",{className:"text-sm whitespace-pre-wrap",children:(null==(l=R.choices)||null==(t=l[0])||null==(s=t.message)?void 0:s.content)||"No content in response"})})]}),R.usage&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Usage Statistics"}),(0,a.jsxs)("div",{className:"grid grid-cols-3 gap-4 text-sm",children:[(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center",children:[(0,a.jsx)("div",{className:"font-semibold",children:R.usage.prompt_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Prompt Tokens"})]}),(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center",children:[(0,a.jsx)("div",{className:"font-semibold",children:R.usage.completion_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Completion Tokens"})]}),(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center",children:[(0,a.jsx)("div",{className:"font-semibold",children:R.usage.total_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Total Tokens"})]})]})]})]}):"data"in(b=R)&&Array.isArray(b.data)&&b.data.length>0&&"embedding"in b.data[0]?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Embedding Vector"}),(0,a.jsxs)("div",{className:"bg-muted rounded-md p-4",children:[(0,a.jsxs)("p",{className:"text-muted-foreground mb-2 text-sm",children:["Generated ",(null==(c=R.data)||null==(d=c[0])||null==(o=d.embedding)?void 0:o.length)||0," ","dimensional embedding vector"]}),(0,a.jsxs)("details",{className:"group",children:[(0,a.jsx)("summary",{className:"hover:text-foreground cursor-pointer text-sm",children:"Show first 10 values"}),(0,a.jsxs)("pre",{className:"mt-2 text-xs",children:[JSON.stringify(null==(p=R.data)||null==(m=p[0])||null==(u=m.embedding)?void 0:u.slice(0,10),null,2),"..."]})]})]})]}),R.usage&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Usage Statistics"}),(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center text-sm",children:[(0,a.jsx)("div",{className:"font-semibold",children:R.usage.total_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Total Tokens"})]})]})]}):"data"in(w=R)&&Array.isArray(w.data)&&w.data.length>0&&"url"in w.data[0]?(0,a.jsx)("div",{className:"space-y-4",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Generated Images"}),(0,a.jsx)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:null==(h=R.data)?void 0:h.map((e,s)=>(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("div",{className:"relative aspect-square w-full",children:(0,a.jsx)(eB.default,{src:e.url,alt:"Generated image ".concat(s+1),fill:!0,className:"rounded-md border object-cover",unoptimized:!0})}),e.revised_prompt&&(0,a.jsxs)("p",{className:"text-muted-foreground text-xs",children:["Revised prompt: ",e.revised_prompt]})]},s))})]})}):"data"in(_=R)&&Array.isArray(_.data)&&_.data.length>0&&"id"in _.data[0]?(0,a.jsx)("div",{className:"space-y-4",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Available Models"}),(0,a.jsx)("div",{className:"max-h-60 overflow-auto",children:(0,a.jsx)("div",{className:"grid gap-2",children:null==(v=R.data)?void 0:v.map(e=>(0,a.jsxs)("div",{className:"bg-muted rounded-md p-3",children:[(0,a.jsx)("div",{className:"font-medium",children:e.id}),e.object&&(0,a.jsxs)("div",{className:"text-muted-foreground text-sm",children:["Type: ",e.object]}),e.created&&(0,a.jsxs)("div",{className:"text-muted-foreground text-sm",children:["Created:"," ",new Date(1e3*e.created).toLocaleDateString()]})]},e.id))})})]})}):null:null),R&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Raw Response"}),(0,a.jsxs)("details",{className:"group",children:[(0,a.jsxs)("summary",{className:"text-muted-foreground hover:text-foreground cursor-pointer text-sm",children:[(0,a.jsx)(G.A,{className:"mr-1 inline h-4 w-4"}),"Show detailed response data"]}),(0,a.jsx)("pre",{className:"bg-muted mt-2 max-h-60 overflow-auto rounded-md p-4 text-xs",children:JSON.stringify(R,null,2)})]})]})]})]})}var eX=t(953),e0=t(7569),e2=t(4756),e4=t(6839);function e1(){let{data:e,isLoading:s,error:t}=(0,i.I)({queryKey:["admin-models-with-providers"],queryFn:()=>o.zQ.getModelsWithProviders(),refetchOnWindowFocus:!1}),{models:l=[],groups:n=[]}=e||{},d=(0,r.useMemo)(()=>l?l.reduce((e,s)=>{let t=s.provider;return e[t]||(e[t]=[]),e[t].push(s),e},{}):{},[l]),c=(0,r.useMemo)(()=>new Map(n.map(e=>[e.provider,e])),[n]),u=(0,r.useMemo)(()=>Object.entries(d).map(e=>{let[s,t]=e,a=c.get(s);return{provider:s,activeModels:t.filter(e=>!e.soft_deleted).length,totalModels:t.length,groupData:a,hasGroupUrl:!!(null==a?void 0:a.group_url),hasGroupApiKey:!!(null==a?void 0:a.group_api_key)}}),[d,c]);return(0,a.jsxs)(eX.SidebarProvider,{children:[(0,a.jsx)(e0.AppSidebar,{variant:"inset"}),(0,a.jsxs)(eX.SidebarInset,{children:[(0,a.jsx)(e2.SiteHeader,{}),(0,a.jsx)("div",{className:"flex flex-1 flex-col",children:(0,a.jsxs)("div",{className:"@container/main flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-8",children:[(0,a.jsx)("div",{className:"mb-6 flex items-center justify-between",children:(0,a.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:"Model Management & API Testing"})}),(0,a.jsxs)(e4.tU,{defaultValue:"manage",className:"w-full",children:[(0,a.jsx)(e4.j7,{className:"grid w-full grid-cols-3",children:(0,a.jsx)(e4.Xi,{value:"manage",children:"Manage Models"})}),(0,a.jsxs)(e4.av,{value:"manage",className:"space-y-4",children:[(0,a.jsx)("div",{className:"text-muted-foreground text-sm",children:"Manage your AI models organized by provider groups. Configure API keys, and organize models by provider groups."}),s?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(eo.E,{className:"h-[60px] w-full"}),(0,a.jsx)(eo.E,{className:"h-[400px] w-full"})]}):t?(0,a.jsxs)($.Fc,{variant:"destructive",children:[(0,a.jsx)(W.A,{className:"h-4 w-4"}),(0,a.jsx)($.TN,{children:"Failed to load models. Please try refreshing the page."})]}):(0,a.jsx)(e4.tU,{defaultValue:"all",className:"w-full",children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"rounded-lg border p-1",children:(0,a.jsxs)(e4.j7,{className:"grid w-full max-w-full auto-cols-fr grid-flow-col overflow-x-auto",children:[(0,a.jsxs)(e4.Xi,{value:"all",className:"flex items-center gap-2",children:[(0,a.jsx)(K.A,{className:"h-4 w-4"}),"All Models",(0,a.jsx)(er.E,{variant:"secondary",className:"ml-1",children:l.length})]}),u.map(e=>{let{provider:s,activeModels:t,totalModels:r}=e;return(0,a.jsxs)(e4.Xi,{value:s,className:"flex min-w-fit items-center gap-2",children:[(0,a.jsx)(J.A,{className:"h-4 w-4"}),s,(0,a.jsx)("div",{className:"flex items-center gap-1",children:(0,a.jsxs)(er.E,{variant:"secondary",className:"ml-1",children:[t,"/",r]})})]},s)})]})}),(0,a.jsx)(e4.av,{value:"all",children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"text-muted-foreground text-sm",children:"Overview of all models across all provider groups."}),(0,a.jsx)(ez,{})]})}),Object.entries(d).map(e=>{let[s,t]=e,r=c.get(s);return(0,a.jsx)(e4.av,{value:s,children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{children:[(0,a.jsxs)("h3",{className:"flex items-center gap-2 text-lg font-semibold",children:[(0,a.jsx)(J.A,{className:"h-5 w-5"}),s]}),(0,a.jsxs)("div",{className:"text-muted-foreground flex items-center gap-4 text-sm",children:[t.filter(e=>e.soft_deleted).length>0&&(0,a.jsxs)("span",{className:"text-orange-600",children:[t.filter(e=>e.soft_deleted).length," ","soft deleted"]}),(null==r?void 0:r.group_url)&&(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)(K.A,{className:"h-3 w-3"}),r.group_url]})]})]})}),(0,a.jsx)(ez,{filterProvider:s,groupData:r,showProviderActions:!0})]})},s)})]})})]}),(0,a.jsxs)(e4.av,{value:"test-basic",className:"space-y-4",children:[(0,a.jsx)("div",{className:"text-muted-foreground text-sm",children:"Test model credentials and connectivity with basic chat completion requests through the secure proxy (resolves CORS and Docker network issues). Models can be tested even without API keys configured (useful for free models or when authentication is handled elsewhere)."}),s?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(eo.E,{className:"h-[200px] w-full"}),(0,a.jsx)(eo.E,{className:"h-[100px] w-full"})]}):t?(0,a.jsxs)($.Fc,{variant:"destructive",children:[(0,a.jsx)(W.A,{className:"h-4 w-4"}),(0,a.jsx)($.TN,{children:"Failed to load models for testing. Please try refreshing the page."})]}):(0,a.jsx)(eU,{models:l})]}),(0,a.jsxs)(e4.av,{value:"test-api",className:"space-y-4",children:[(0,a.jsx)("div",{className:"text-muted-foreground text-sm",children:"Comprehensive testing of all OpenAI API endpoints including chat completions, embeddings, image generation, audio synthesis, and model listing through the secure proxy (resolves CORS and Docker network issues). Models can be tested with or without API keys configured."}),s?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(eo.E,{className:"h-[300px] w-full"}),(0,a.jsx)(eo.E,{className:"h-[200px] w-full"})]}):t?(0,a.jsxs)($.Fc,{variant:"destructive",children:[(0,a.jsx)(W.A,{className:"h-4 w-4"}),(0,a.jsx)($.TN,{children:"Failed to load models for API testing. Please try refreshing the page."})]}):(0,a.jsx)(eH,{models:l})]})]})]})})]})]})}}},e=>{var s=s=>e(e.s=s);e.O(0,[363,222,808,29,730,978,481,982,938,236,255,945,497,358],()=>s(6715)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ui_out/_next/static/chunks/app/model/page-ffdaf3929a2720ec.js b/ui_out/_next/static/chunks/app/model/page-ffdaf3929a2720ec.js new file mode 100644 index 00000000..4226e4fc --- /dev/null +++ b/ui_out/_next/static/chunks/app/model/page-ffdaf3929a2720ec.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552],{834:(e,s,t)=>{"use strict";t.d(s,{T:()=>l});var a=t(3422);t(4398);var r=t(9183);function l(e){let{className:s,...t}=e;return(0,a.jsx)("textarea",{"data-slot":"textarea",className:(0,r.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",s),...t})}},2264:(e,s,t)=>{"use strict";t.d(s,{bq:()=>u,eb:()=>p,gC:()=>m,l6:()=>d,yv:()=>c});var a=t(3422);t(4398);var r=t(3439),l=t(9994),i=t(8940),n=t(4967),o=t(9183);function d(e){let{...s}=e;return(0,a.jsx)(r.bL,{"data-slot":"select",...s})}function c(e){let{...s}=e;return(0,a.jsx)(r.WT,{"data-slot":"select-value",...s})}function u(e){let{className:s,size:t="default",children:i,...n}=e;return(0,a.jsxs)(r.l9,{"data-slot":"select-trigger","data-size":t,className:(0,o.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s),...n,children:[i,(0,a.jsx)(r.In,{asChild:!0,children:(0,a.jsx)(l.A,{className:"size-4 opacity-50"})})]})}function m(e){let{className:s,children:t,position:l="popper",...i}=e;return(0,a.jsx)(r.ZL,{children:(0,a.jsxs)(r.UC,{"data-slot":"select-content",className:(0,o.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===l&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",s),position:l,...i,children:[(0,a.jsx)(h,{}),(0,a.jsx)(r.LM,{className:(0,o.cn)("p-1","popper"===l&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),(0,a.jsx)(x,{})]})})}function p(e){let{className:s,children:t,...l}=e;return(0,a.jsxs)(r.q7,{"data-slot":"select-item",className:(0,o.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",s),...l,children:[(0,a.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,a.jsx)(r.VF,{children:(0,a.jsx)(i.A,{className:"size-4"})})}),(0,a.jsx)(r.p4,{children:t})]})}function h(e){let{className:s,...t}=e;return(0,a.jsx)(r.PP,{"data-slot":"select-scroll-up-button",className:(0,o.cn)("flex cursor-default items-center justify-center py-1",s),...t,children:(0,a.jsx)(n.A,{className:"size-4"})})}function x(e){let{className:s,...t}=e;return(0,a.jsx)(r.wn,{"data-slot":"select-scroll-down-button",className:(0,o.cn)("flex cursor-default items-center justify-center py-1",s),...t,children:(0,a.jsx)(l.A,{className:"size-4"})})}},6320:(e,s,t)=>{"use strict";t.d(s,{Cf:()=>u,Es:()=>p,L3:()=>h,c7:()=>m,lG:()=>n,rr:()=>x,zM:()=>o});var a=t(3422);t(4398);var r=t(4316),l=t(9680),i=t(9183);function n(e){let{...s}=e;return(0,a.jsx)(r.bL,{"data-slot":"dialog",...s})}function o(e){let{...s}=e;return(0,a.jsx)(r.l9,{"data-slot":"dialog-trigger",...s})}function d(e){let{...s}=e;return(0,a.jsx)(r.ZL,{"data-slot":"dialog-portal",...s})}function c(e){let{className:s,...t}=e;return(0,a.jsx)(r.hJ,{"data-slot":"dialog-overlay",className:(0,i.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",s),...t})}function u(e){let{className:s,children:t,...n}=e;return(0,a.jsxs)(d,{"data-slot":"dialog-portal",children:[(0,a.jsx)(c,{}),(0,a.jsxs)(r.UC,{"data-slot":"dialog-content",className:(0,i.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",s),...n,children:[t,(0,a.jsxs)(r.bm,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,a.jsx)(l.A,{}),(0,a.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function m(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"dialog-header",className:(0,i.cn)("flex flex-col gap-2 text-center sm:text-left",s),...t})}function p(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"dialog-footer",className:(0,i.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",s),...t})}function h(e){let{className:s,...t}=e;return(0,a.jsx)(r.hE,{"data-slot":"dialog-title",className:(0,i.cn)("text-lg leading-none font-semibold",s),...t})}function x(e){let{className:s,...t}=e;return(0,a.jsx)(r.VY,{"data-slot":"dialog-description",className:(0,i.cn)("text-muted-foreground text-sm",s),...t})}},6568:(e,s,t)=>{"use strict";t.d(s,{d:()=>i});var a=t(3422);t(4398);var r=t(2495),l=t(9183);function i(e){let{className:s,...t}=e;return(0,a.jsx)(r.bL,{"data-slot":"switch",className:(0,l.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",s),...t,children:(0,a.jsx)(r.zi,{"data-slot":"switch-thumb",className:(0,l.cn)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}},6715:(e,s,t)=>{Promise.resolve().then(t.bind(t,7678))},6839:(e,s,t)=>{"use strict";t.d(s,{Xi:()=>o,av:()=>d,j7:()=>n,tU:()=>i});var a=t(3422);t(4398);var r=t(1749),l=t(9183);function i(e){let{className:s,...t}=e;return(0,a.jsx)(r.bL,{"data-slot":"tabs",className:(0,l.cn)("flex flex-col gap-2",s),...t})}function n(e){let{className:s,...t}=e;return(0,a.jsx)(r.B8,{"data-slot":"tabs-list",className:(0,l.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",s),...t})}function o(e){let{className:s,...t}=e;return(0,a.jsx)(r.l9,{"data-slot":"tabs-trigger",className:(0,l.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s),...t})}function d(e){let{className:s,...t}=e;return(0,a.jsx)(r.UC,{"data-slot":"tabs-content",className:(0,l.cn)("flex-1 outline-none",s),...t})}},7678:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>e9});var a=t(3422),r=t(4398),l=t(100),i=t(2349),n=t(6013),o=t(9119),d=t(1407),c=t(552),u=t(9945);let m=u.Ik({id:u.Yj(),name:u.Yj(),full_name:u.Yj(),description:u.Yj().optional(),modelType:u.Yj(),isEnabled:u.zM(),createdAt:u.Yj().datetime(),updatedAt:u.Yj().datetime(),provider:u.Yj(),url:u.Yj().url(),api_key:u.Yj().optional(),input_cost:u.ai().min(0),output_cost:u.ai().min(0),min_cost_per_request:u.ai().min(0,"Minimum cost per request must be non-negative").default(0),min_cash_per_request:u.ai().min(0,"Minimum cash per request must be non-negative").default(0),contextLength:u.ai().int().optional(),apiKeyRequired:u.zM().default(!0),provider_id:u.Yj().optional(),is_free:u.zM().default(!1),soft_deleted:u.zM().optional(),has_own_api_key:u.zM(),api_key_type:u.Yj()});m.extend({settings:u.g1(u.L5()).optional(),pricing:u.Ik({inputCostPer1kTokens:u.ai().optional(),outputCostPer1kTokens:u.ai().optional(),unitCost:u.ai().optional()}).optional()}),m.omit({id:!0,createdAt:!0,updatedAt:!0,has_own_api_key:!0,api_key_type:!0}).extend({settings:u.g1(u.L5()).optional()}),m.partial().omit({id:!0,createdAt:!0,updatedAt:!0,has_own_api_key:!0,api_key_type:!0});let p=u.Ik({name:u.Yj().min(1,"Name is required"),full_name:u.Yj().optional(),input_cost:u.ai().min(0,"Input cost must be non-negative"),output_cost:u.ai().min(0,"Output cost must be non-negative"),provider:u.Yj().min(1,"Provider is required"),modelType:u.k5(["text","embedding","image","audio","multimodal"]),description:u.Yj().optional().transform(e=>""===e?void 0:e),contextLength:u.ai().int().min(0).optional().transform(e=>0===e?void 0:e)}).transform(e=>({...e})),h=u.Ik({provider:u.Yj().min(1,"Provider is required"),group_api_key:u.Yj().transform(e=>""===e?void 0:e).optional(),group_url:u.Yj().transform(e=>""===e?void 0:e).pipe(u.Yj().url("Please enter a valid URL").optional()).optional()});u.Ik({data:u.YO(m),pagination:u.Ik({total:u.ai(),page:u.ai(),pageSize:u.ai(),totalPages:u.ai()})}),u.Ik({modelId:u.Yj(),input:u.Yj(),parameters:u.g1(u.L5()).optional()}),u.Ik({output:u.Yj(),usage:u.Ik({promptTokens:u.ai().optional(),completionTokens:u.ai().optional(),totalTokens:u.ai().optional()}).optional(),timings:u.Ik({totalMs:u.ai()}).optional()});var x=t(3648),g=t(268),v=t(834),j=t(6320),f=t(2264),y=t(6950),b=t(9183),N=t(3130);let w=d.Op,_=r.createContext({}),k=e=>{let{...s}=e;return(0,a.jsx)(_.Provider,{value:{name:s.name},children:(0,a.jsx)(d.xI,{...s})})},C=()=>{let e=r.useContext(_),s=r.useContext(M),{getFieldState:t}=(0,d.xW)(),a=(0,d.lN)({name:e.name}),l=t(e.name,a);if(!e)throw Error("useFormField should be used within ");let{id:i}=s;return{id:i,name:e.name,formItemId:"".concat(i,"-form-item"),formDescriptionId:"".concat(i,"-form-item-description"),formMessageId:"".concat(i,"-form-item-message"),...l}},M=r.createContext({});function A(e){let{className:s,...t}=e,l=r.useId();return(0,a.jsx)(M.Provider,{value:{id:l},children:(0,a.jsx)("div",{"data-slot":"form-item",className:(0,b.cn)("grid gap-2",s),...t})})}function S(e){let{className:s,...t}=e,{error:r,formItemId:l}=C();return(0,a.jsx)(N.J,{"data-slot":"form-label","data-error":!!r,className:(0,b.cn)("data-[error=true]:text-destructive",s),htmlFor:l,...t})}function F(e){let{...s}=e,{error:t,formItemId:r,formDescriptionId:l,formMessageId:i}=C();return(0,a.jsx)(y.DX,{"data-slot":"form-control",id:r,"aria-describedby":t?"".concat(l," ").concat(i):"".concat(l),"aria-invalid":!!t,...s})}function P(e){let{className:s,...t}=e,{formDescriptionId:r}=C();return(0,a.jsx)("p",{"data-slot":"form-description",id:r,className:(0,b.cn)("text-muted-foreground text-sm",s),...t})}function R(e){var s;let{className:t,...r}=e,{error:l,formMessageId:i}=C(),n=l?String(null!=(s=null==l?void 0:l.message)?s:""):r.children;return n?(0,a.jsx)("p",{"data-slot":"form-message",id:i,className:(0,b.cn)("text-destructive text-sm",t),...r,children:n}):null}var T=t(856),z=t(2434),E=t(3831);function I(e){let{onModelAdd:s,onCancel:t,isOpen:l}=e,[i,n]=(0,r.useState)(!1),o=(0,d.mN)({resolver:(0,c.u)(p),defaultValues:{name:"",full_name:"",input_cost:0,output_cost:0,provider:"",modelType:"text",description:"",contextLength:void 0}}),u=async e=>{n(!0);try{await s(e),E.oR.success("Model added successfully!"),o.reset(),null==t||t()}catch(e){E.oR.error("Failed to add model. Please try again."),console.error("Error adding model:",e)}finally{n(!1)}},m=()=>{i||(o.reset(),null==t||t())};return(0,a.jsx)(j.lG,{open:l,onOpenChange:m,children:(0,a.jsxs)(j.Cf,{className:"max-h-[90vh] overflow-y-auto sm:max-w-[600px]",children:[(0,a.jsxs)(j.c7,{children:[(0,a.jsxs)(j.L3,{className:"flex items-center gap-2",children:[(0,a.jsx)(T.A,{className:"h-5 w-5"}),"Add New Model"]}),(0,a.jsx)(j.rr,{children:"Manually add a new AI model to your collection"})]}),(0,a.jsx)(w,{...o,children:(0,a.jsxs)("form",{onSubmit:o.handleSubmit(u),className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,a.jsx)(k,{control:o.control,name:"name",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Model Name *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{placeholder:"e.g., GPT-4o",...s,className:"w-full"})}),(0,a.jsx)(P,{children:"Display name for the model"}),(0,a.jsx)(R,{})]})}}),(0,a.jsx)(k,{control:o.control,name:"provider",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Provider *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{placeholder:"e.g., OpenAI, Anthropic",...s,className:"w-full"})}),(0,a.jsx)(P,{children:"AI model provider or company"}),(0,a.jsx)(R,{})]})}})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,a.jsx)(k,{control:o.control,name:"input_cost",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Input Cost (per 1M tokens) *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:"number",step:"0.001",min:"0",placeholder:"5.00",...s,value:s.value?parseFloat(s.value.toFixed(3)):"",onChange:e=>{let t=Math.round(1e3*(parseFloat(e.target.value)||0))/1e3;s.onChange(t)},className:"w-full"})}),(0,a.jsx)(P,{children:"Cost in USD per 1,000,000 input tokens (max 3 decimals)"}),(0,a.jsx)(R,{})]})}}),(0,a.jsx)(k,{control:o.control,name:"output_cost",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Output Cost (per 1M tokens) *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:"number",step:"0.001",min:"0",placeholder:"15.00",...s,value:s.value?parseFloat(s.value.toFixed(3)):"",onChange:e=>{let t=Math.round(1e3*(parseFloat(e.target.value)||0))/1e3;s.onChange(t)},className:"w-full"})}),(0,a.jsx)(P,{children:"Cost in USD per 1,000,000 output tokens (max 3 decimals)"}),(0,a.jsx)(R,{})]})}})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,a.jsx)(k,{control:o.control,name:"modelType",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Model Type"}),(0,a.jsxs)(f.l6,{onValueChange:s.onChange,defaultValue:s.value,children:[(0,a.jsx)(F,{children:(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{placeholder:"Select model type"})})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"text",children:"Text/Chat"}),(0,a.jsx)(f.eb,{value:"embedding",children:"Embedding"}),(0,a.jsx)(f.eb,{value:"image",children:"Image Generation"}),(0,a.jsx)(f.eb,{value:"audio",children:"Audio"}),(0,a.jsx)(f.eb,{value:"multimodal",children:"Multimodal"})]})]}),(0,a.jsx)(P,{children:"Type of AI model functionality"}),(0,a.jsx)(R,{})]})}}),(0,a.jsx)(k,{control:o.control,name:"contextLength",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Context Length"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:"number",min:"0",placeholder:"8192",value:s.value||"",onChange:e=>{let t=parseInt(e.target.value);s.onChange(isNaN(t)||0===t?void 0:t)},className:"w-full"})}),(0,a.jsx)(P,{children:"Maximum context length in tokens (optional, leave empty for default)"}),(0,a.jsx)(R,{})]})}})]}),(0,a.jsx)(k,{control:o.control,name:"description",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Description"}),(0,a.jsx)(F,{children:(0,a.jsx)(v.T,{placeholder:"Brief description of the model...",...s,rows:3,className:"w-full"})}),(0,a.jsx)(P,{children:"Optional description or notes about the model"}),(0,a.jsx)(R,{})]})}}),(0,a.jsxs)("div",{className:"flex justify-end gap-2 pt-4",children:[(0,a.jsx)(x.$,{type:"button",variant:"outline",onClick:m,disabled:i,children:"Cancel"}),(0,a.jsx)(x.$,{type:"submit",disabled:i,children:i?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Adding..."]}):"Add Model"})]})]})})]})})}var q=t(7996),L=t(6568);let Y=u.Ik({name:u.Yj().min(1,"Name is required"),description:u.Yj().optional(),context_length:u.au.number().min(0),prompt:u.au.number().min(0),completion:u.au.number().min(0),enabled:u.zM()}),U=e=>null==e||isNaN(e)?0:Math.round(1e5*e)/1e5;function O(e){let{model:s,providerId:t,onModelUpdate:l,onCancel:i,isOpen:n}=e,[u,m]=(0,r.useState)(!1),[p,h]=(0,r.useState)(null),[f,y]=(0,r.useState)(!1),b=(0,d.mN)({resolver:(0,c.u)(Y),defaultValues:{name:s.name,description:s.description||"",context_length:s.contextLength||4096,prompt:U(s.input_cost),completion:U(s.output_cost),enabled:!1!==s.isEnabled}}),N=(0,r.useCallback)(async()=>{if(!t)return void console.error("loadAdminModel called without providerId");try{console.log("Loading admin model:",{providerId:t,modelId:s.full_name});let e=await o.zQ.getProviderModel(t,s.full_name);h(e),y(!1),b.reset({name:e.name,description:e.description||"",context_length:e.context_length,prompt:U(e.pricing.prompt),completion:U(e.pricing.completion),enabled:!1!==e.enabled})}catch(e){console.log("Model not in database, will create new override:",e),y(!0),h({id:s.full_name,name:s.name,description:s.description||"",created:Math.floor(Date.now()/1e3),context_length:s.contextLength||4096,architecture:{modality:s.modelType||"text",input_modalities:[s.modelType||"text"],output_modalities:[s.modelType||"text"],tokenizer:"",instruct_type:null},pricing:{prompt:U(s.input_cost),completion:U(s.output_cost),request:0,image:0,web_search:0,internal_reasoning:0},per_request_limits:null,top_provider:null,upstream_provider_id:t,enabled:!1!==s.isEnabled}),b.reset({name:s.name,description:s.description||"",context_length:s.contextLength||4096,prompt:U(s.input_cost),completion:U(s.output_cost),enabled:!1!==s.isEnabled})}},[t,s,b]);(0,r.useEffect)(()=>{n&&t?N():n&&!t&&(console.error("EditModelForm opened without providerId",{model:s,providerId:t}),E.oR.error("Missing provider information for this model"))},[n,t,s,N]);let _=async e=>{if(!t){console.error("onSubmit called without providerId",{model:s,providerId:t}),E.oR.error("Missing provider ID - cannot update model");return}if(!p){console.error("onSubmit called without adminModelData",{model:s,providerId:t,adminModelData:p}),E.oR.error("Model data not loaded - please try reopening the form");return}m(!0);try{let s={id:p.id,name:e.name,description:e.description||"",created:p.created||Math.floor(Date.now()/1e3),context_length:e.context_length,architecture:p.architecture||{modality:"text",input_modalities:["text"],output_modalities:["text"],tokenizer:"",instruct_type:null},pricing:{prompt:U(e.prompt),completion:U(e.completion),request:0,image:0,web_search:0,internal_reasoning:0},per_request_limits:p.per_request_limits,top_provider:p.top_provider,upstream_provider_id:t,enabled:e.enabled};f?(console.log("Creating new model override"),await o.zQ.createProviderModel(t,s),E.oR.success("Model override created successfully!")):(console.log("Updating existing model override"),await o.zQ.updateProviderModel(t,p.id,s),E.oR.success("Model updated successfully!")),null==l||l(),null==i||i()}catch(s){let e=f?"create":"update";E.oR.error("Failed to ".concat(e," model. Please try again.")),console.error("Error ".concat(e,"ing model:"),s)}finally{m(!1)}},C=()=>{u||null==i||i()};return(0,a.jsx)(j.lG,{open:n,onOpenChange:C,children:(0,a.jsxs)(j.Cf,{className:"max-h-[90vh] overflow-y-auto sm:max-w-[600px]",children:[(0,a.jsxs)(j.c7,{children:[(0,a.jsxs)(j.L3,{className:"flex items-center gap-2",children:[(0,a.jsx)(q.A,{className:"h-5 w-5"}),f?"Create Model Override":"Edit Model Override"]}),(0,a.jsx)(j.rr,{children:f?"Create an override for "".concat(s.name,"""):"Update the model override for "".concat(s.name,""")})]}),(0,a.jsx)(w,{...b,children:(0,a.jsxs)("form",{onSubmit:b.handleSubmit(_),className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,a.jsx)(k,{control:b.control,name:"name",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Display Name *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{placeholder:"e.g., GPT-4",...s,className:"w-full"})}),(0,a.jsx)(P,{children:"Custom display name for the model"}),(0,a.jsx)(R,{})]})}}),(0,a.jsx)(k,{control:b.control,name:"context_length",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Context Length *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:"number",min:"0",placeholder:"4096",...s,className:"w-full"})}),(0,a.jsx)(P,{children:"Maximum context window size"}),(0,a.jsx)(R,{})]})}})]}),(0,a.jsx)(k,{control:b.control,name:"description",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Description"}),(0,a.jsx)(F,{children:(0,a.jsx)(v.T,{placeholder:"Brief description of the model...",...s,rows:3,className:"w-full"})}),(0,a.jsx)(P,{children:"Optional description or notes about the model"}),(0,a.jsx)(R,{})]})}}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,a.jsx)(k,{control:b.control,name:"prompt",render:e=>{var s;let{field:t}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Input Cost (per 1M tokens) *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:"number",step:"0.00001",min:"0",placeholder:"5.00000",value:null!=(s=t.value)?s:"",onChange:e=>{let s=e.target.value;t.onChange(""===s?0:parseFloat(s))},onBlur:e=>{let s=parseFloat(e.target.value);t.onChange(U(s))},className:"w-full"})}),(0,a.jsx)(P,{children:"Cost in USD per 1,000,000 input tokens (max 5 decimals)"}),(0,a.jsx)(R,{})]})}}),(0,a.jsx)(k,{control:b.control,name:"completion",render:e=>{var s;let{field:t}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Output Cost (per 1M tokens) *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:"number",step:"0.00001",min:"0",placeholder:"15.00000",value:null!=(s=t.value)?s:"",onChange:e=>{let s=e.target.value;t.onChange(""===s?0:parseFloat(s))},onBlur:e=>{let s=parseFloat(e.target.value);t.onChange(U(s))},className:"w-full"})}),(0,a.jsx)(P,{children:"Cost in USD per 1,000,000 output tokens (max 5 decimals)"}),(0,a.jsx)(R,{})]})}})]}),(0,a.jsx)(k,{control:b.control,name:"enabled",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{className:"flex flex-row items-center justify-between rounded-lg border p-4",children:[(0,a.jsxs)("div",{className:"space-y-0.5",children:[(0,a.jsx)(S,{className:"text-base",children:"Model Enabled"}),(0,a.jsx)(P,{children:"Enable or disable this model override"})]}),(0,a.jsx)(F,{children:(0,a.jsx)(L.d,{checked:s.value,onCheckedChange:s.onChange})})]})}}),(0,a.jsxs)("div",{className:"flex justify-end gap-2 pt-4",children:[(0,a.jsx)(x.$,{type:"button",variant:"outline",onClick:C,disabled:u,children:"Cancel"}),(0,a.jsx)(x.$,{type:"submit",disabled:u,children:u?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 animate-spin"}),f?"Creating...":"Updating..."]}):f?"Create Override":"Update Model"})]})]})})]})})}var J=t(1935),Q=t(5195),K=t(9906),D=t(2267),G=t(1220),V=t(9442);function $(e){let{provider:s,models:t,groupSettings:l,onGroupUpdate:i,onCancel:n,isOpen:o}=e,[u,m]=(0,r.useState)(!1),[p,v]=(0,r.useState)(!1),[f,y]=(0,r.useState)(!!(null==l?void 0:l.group_url)),b=(0,d.mN)({resolver:(0,c.u)(h),defaultValues:{provider:s,group_api_key:(null==l?void 0:l.group_api_key)||"",group_url:(null==l?void 0:l.group_url)||""}}),N=async e=>{m(!0);try{var t,a;let r={...e,group_api_key:(null==(t=e.group_api_key)?void 0:t.trim())||void 0,group_url:f&&(null==(a=e.group_url)?void 0:a.trim())||void 0};await i(s,r),E.oR.success('Group "'.concat(s,'" updated successfully!')),null==n||n()}catch(e){E.oR.error("Failed to update group. Please try again."),console.error("Error updating group:",e)}finally{m(!1)}},_=t.filter(e=>!e.api_key).length,C=t.filter(e=>!e.api_key&&(!e.url||e.url.startsWith("/"))).length,M=()=>{u||null==n||n()};return(0,a.jsx)(j.lG,{open:o,onOpenChange:M,children:(0,a.jsxs)(j.Cf,{className:"max-h-[90vh] overflow-y-auto sm:max-w-[700px]",children:[(0,a.jsxs)(j.c7,{children:[(0,a.jsxs)(j.L3,{className:"flex items-center gap-2",children:[(0,a.jsx)(J.A,{className:"h-5 w-5"}),"Edit Provider Group: ",s]}),(0,a.jsxs)(j.rr,{children:["Update settings for all ",t.length," models in this group. Group settings provide defaults for models without individual configurations."]})]}),(0,a.jsxs)("div",{className:"mb-6 space-y-4",children:[(0,a.jsxs)("div",{className:"rounded-md border p-4",children:[(0,a.jsxs)("h4",{className:"mb-2 flex items-center gap-2 text-sm font-medium",children:[(0,a.jsx)(Q.A,{className:"h-4 w-4"}),"API Key Configuration"]}),(0,a.jsx)("div",{className:"space-y-2 text-sm",children:(0,a.jsxs)("div",{className:"flex justify-between",children:[(0,a.jsx)("span",{children:"Models using group API key:"}),(0,a.jsx)("span",{className:"font-medium text-blue-600",children:_})]})})]}),(0,a.jsxs)("div",{className:"rounded-md border p-4",children:[(0,a.jsxs)("h4",{className:"mb-2 flex items-center gap-2 text-sm font-medium",children:[(0,a.jsx)(K.A,{className:"h-4 w-4"}),"URL Configuration"]}),(0,a.jsxs)("div",{className:"space-y-2 text-sm",children:[(0,a.jsxs)("div",{className:"flex justify-between",children:[(0,a.jsx)("span",{children:"Models using group URL:"}),(0,a.jsx)("span",{className:"font-medium text-blue-600",children:C})]}),(0,a.jsxs)("div",{className:"flex justify-between",children:[(0,a.jsx)("span",{children:"Models with individual URLs:"}),(0,a.jsx)("span",{className:"font-medium text-green-600",children:t.length-C})]}),(null==l?void 0:l.group_url)&&(0,a.jsxs)("div",{className:"mt-2 rounded bg-blue-50 p-2 text-xs",children:[(0,a.jsx)("span",{className:"font-medium",children:"Current group URL:"})," ",l.group_url]})]})]}),(0,a.jsxs)("div",{className:"rounded-md border p-4",children:[(0,a.jsx)("h4",{className:"mb-2 text-sm font-medium",children:"Models in this group:"}),(0,a.jsx)("div",{className:"max-h-32 overflow-y-auto",children:(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:t.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ".concat(e.api_key?"bg-green-100 text-green-800":"bg-blue-100 text-blue-800"),title:e.api_key?"Has individual API key and URL":"Uses group API key and URL",children:[e.name,e.api_key&&" \uD83D\uDD11",e.url&&!e.url.startsWith("/")&&e.api_key&&" \uD83C\uDF10"]},e.id))})})]})]}),(0,a.jsx)(w,{...b,children:(0,a.jsxs)("form",{onSubmit:b.handleSubmit(N),className:"space-y-6",children:[(0,a.jsx)(k,{control:b.control,name:"provider",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Provider Name *"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{placeholder:"e.g., OpenAI, Anthropic",...s,className:"w-full"})}),(0,a.jsx)(P,{children:"This will update the provider name for all models in this group"}),(0,a.jsx)(R,{})]})}}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"space-y-0.5",children:[(0,a.jsx)(S,{className:"text-base",children:"Group Base URL"}),(0,a.jsx)(P,{children:"Provide a custom base URL for this provider group"})]}),(0,a.jsx)(L.d,{checked:f,onCheckedChange:y})]}),f&&(0,a.jsx)(k,{control:b.control,name:"group_url",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Base URL"}),(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{placeholder:"https://api.openai.com/v1 or https://your-proxy.com/v1",...s,className:"w-full"})}),(0,a.jsx)(P,{children:"This base URL will be used for models without individual URLs. Models will append their endpoint path (e.g., /chat/completions) to this base."}),(0,a.jsx)(R,{})]})}}),!f&&(null==l?void 0:l.group_url)&&(0,a.jsxs)(V.Fc,{children:[(0,a.jsx)(D.A,{className:"h-4 w-4"}),(0,a.jsx)(V.TN,{children:"Removing the group URL will make models in this group fall back to the default system endpoint. Models with individual URLs will be unaffected."})]}),f&&!(null==l?void 0:l.group_url)&&(0,a.jsxs)(V.Fc,{children:[(0,a.jsx)(G.A,{className:"h-4 w-4"}),(0,a.jsx)(V.TN,{children:"Adding a group URL will allow models in this group to use a custom endpoint instead of the default system endpoint."})]})]}),(0,a.jsx)(k,{control:b.control,name:"group_api_key",render:e=>{let{field:s}=e;return(0,a.jsxs)(A,{children:[(0,a.jsx)(S,{children:"Group API Key"}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(F,{children:(0,a.jsx)(g.p,{type:p?"text":"password",placeholder:"sk-... (leave empty to remove)",...s,className:"w-full pr-24"})}),(0,a.jsx)(x.$,{type:"button",variant:"ghost",size:"sm",className:"absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent",onClick:()=>v(!p),children:p?"Hide":"Show"})]}),(0,a.jsxs)(P,{children:["This API key will be used for models that don't have individual API keys (",_," models). Leave empty to remove the group API key."]}),(0,a.jsx)(R,{})]})}}),(0,a.jsxs)("div",{className:"rounded-md border border-amber-200 bg-amber-50 p-4",children:[(0,a.jsx)("p",{className:"text-sm text-amber-800",children:(0,a.jsx)("strong",{children:"How group settings work:"})}),(0,a.jsxs)("ul",{className:"mt-2 list-inside list-disc space-y-1 text-sm text-amber-800",children:[(0,a.jsx)("li",{children:"Models with individual API keys and URLs will keep their specific settings"}),(0,a.jsx)("li",{children:"Models without individual settings will use the group defaults"}),(0,a.jsx)("li",{children:"Removing the group URL makes models fall back to the system default endpoint"}),(0,a.jsx)("li",{children:'You can use "Apply Group Settings" to force models to use group configurations'})]})]}),(0,a.jsxs)("div",{className:"flex justify-end gap-2 pt-4",children:[(0,a.jsx)(x.$,{type:"button",variant:"outline",onClick:M,disabled:u,children:"Cancel"}),(0,a.jsx)(x.$,{type:"submit",disabled:u,children:u?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Updating..."]}):"Update Group"})]})]})})]})})}var B=t(7228),W=t(9675),Z=t(246),H=t(1853),X=t(8940);function ee(e){let{className:s,...t}=e;return(0,a.jsx)(H.bL,{"data-slot":"checkbox",className:(0,b.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",s),...t,children:(0,a.jsx)(H.C1,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:(0,a.jsx)(X.A,{className:"size-3.5"})})})}var es=t(9625);function et(e){let{className:s,children:t,...r}=e;return(0,a.jsxs)(es.bL,{"data-slot":"scroll-area",className:(0,b.cn)("relative",s),...r,children:[(0,a.jsx)(es.LM,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:t}),(0,a.jsx)(ea,{}),(0,a.jsx)(es.OK,{})]})}function ea(e){let{className:s,orientation:t="vertical",...r}=e;return(0,a.jsx)(es.VM,{"data-slot":"scroll-area-scrollbar",orientation:t,className:(0,b.cn)("flex touch-none p-px transition-colors select-none","vertical"===t&&"h-full w-2.5 border-l border-l-transparent","horizontal"===t&&"h-2.5 flex-col border-t border-t-transparent",s),...r,children:(0,a.jsx)(es.lr,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}var er=t(8561);function el(e){let{isOpen:s,onClose:t,onSuccess:l}=e,[i,n]=(0,r.useState)(null),[d,c]=(0,r.useState)([]),[u,m]=(0,r.useState)([]),[p,h]=(0,r.useState)(new Set),[g,v]=(0,r.useState)(!1),[y,b]=(0,r.useState)(!1),[N,w]=(0,r.useState)(!1),[_,k]=(0,r.useState)(null),C=(0,r.useCallback)(async()=>{if(i){b(!0),m([]),h(new Set);try{let e=await o.zQ.getProviderModels(i),s=new Set(e.db_models.map(e=>e.id)),t=e.remote_models.filter(e=>!s.has(e.id));m(t)}catch(e){E.oR.error("Failed to fetch models from provider")}finally{b(!1)}}},[i]);(0,r.useEffect)(()=>{s&&M()},[s]),(0,r.useEffect)(()=>{i&&C()},[i,C]);let M=async()=>{v(!0);try{let e=await o.zQ.getUpstreamProviders();c(e)}catch(e){E.oR.error("Failed to load providers")}finally{v(!1)}},A=e=>{let s=new Set(p);s.has(e)?s.delete(e):s.add(e),h(s)},S=async()=>{if(0===p.size)return void E.oR.error("Please select at least one model");w(!0);let e=0,s=0,t=[];try{for(let a of Array.from(p)){let r=u.find(e=>e.id===a);if(r)try{await o.zQ.createModel({...r,upstream_provider_id:i,enabled:!0,created:Math.floor(Date.now()/1e3)}),e++}catch(r){let e=r instanceof Error?r.message:"Unknown error";e.includes("already exists")?s++:t.push("".concat(a,": ").concat(e))}}k({added:e,skipped:s,errors:t}),e>0&&(E.oR.success("Successfully added ".concat(e," models")),null==l||l()),t.length>0&&E.oR.warning("Completed with ".concat(t.length," errors"))}catch(e){E.oR.error("Failed to collect models")}finally{w(!1)}},F=()=>{N||(n(null),m([]),h(new Set),k(null),t())};return(0,a.jsx)(j.lG,{open:s,onOpenChange:F,children:(0,a.jsxs)(j.Cf,{className:"max-h-[80vh] sm:max-w-[700px]",children:[(0,a.jsxs)(j.c7,{children:[(0,a.jsxs)(j.L3,{className:"flex items-center gap-2",children:[(0,a.jsx)(B.A,{className:"h-5 w-5"}),"Collect Models from Provider"]}),(0,a.jsx)(j.rr,{children:"Fetch models from an upstream provider and add them to your database"})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Select Provider"}),(0,a.jsxs)(f.l6,{value:null==i?void 0:i.toString(),onValueChange:e=>n(parseInt(e)),disabled:g,children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{placeholder:"Choose an upstream provider"})}),(0,a.jsx)(f.gC,{children:d.map(e=>(0,a.jsxs)(f.eb,{value:e.id.toString(),children:[e.provider_type," - ",e.base_url]},e.id))})]})]}),y&&(0,a.jsxs)("div",{className:"flex items-center justify-center py-8",children:[(0,a.jsx)(z.A,{className:"h-8 w-8 animate-spin"}),(0,a.jsx)("span",{className:"ml-2",children:"Loading models from provider..."})]}),!y&&i&&u.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"text-sm font-medium",children:[u.length," models available"]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(x.$,{variant:"outline",size:"sm",onClick:()=>{h(new Set(u.map(e=>e.id)))},disabled:N,children:"Select All"}),(0,a.jsx)(x.$,{variant:"outline",size:"sm",onClick:()=>{h(new Set)},disabled:N,children:"Deselect All"})]})]}),(0,a.jsx)(et,{className:"h-[300px] rounded-md border p-4",children:(0,a.jsx)("div",{className:"space-y-2",children:u.map(e=>(0,a.jsxs)("div",{className:"hover:bg-accent flex items-start space-x-3 rounded-lg border p-3",children:[(0,a.jsx)(ee,{checked:p.has(e.id),onCheckedChange:()=>A(e.id),disabled:N}),(0,a.jsxs)("div",{className:"flex-1 space-y-1",children:[(0,a.jsx)("div",{className:"font-mono text-sm font-medium",children:e.id}),(0,a.jsx)("div",{className:"text-muted-foreground text-xs",children:e.description||e.name}),e.context_length&&(0,a.jsxs)(er.E,{variant:"secondary",className:"text-xs",children:[e.context_length.toLocaleString()," tokens"]})]})]},e.id))})})]}),!y&&i&&0===u.length&&(0,a.jsxs)(V.Fc,{children:[(0,a.jsx)(W.A,{className:"h-4 w-4"}),(0,a.jsx)(V.TN,{children:"No new models available from this provider. All models may already be in your database."})]}),_&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)(V.Fc,{children:[(0,a.jsx)(Z.A,{className:"h-4 w-4"}),(0,a.jsxs)(V.TN,{children:[(0,a.jsx)("strong",{children:"Collection Results:"}),(0,a.jsx)("br",{}),"• ",_.added," models added",(0,a.jsx)("br",{}),"• ",_.skipped," models skipped",_.errors.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("br",{}),"• ",_.errors.length," errors occurred"]})]})]}),_.errors.length>0&&(0,a.jsxs)(V.Fc,{variant:"destructive",children:[(0,a.jsx)(W.A,{className:"h-4 w-4"}),(0,a.jsxs)(V.TN,{children:[(0,a.jsx)("strong",{children:"Errors:"}),(0,a.jsxs)("ul",{className:"mt-1 list-inside list-disc text-sm",children:[_.errors.slice(0,3).map((e,s)=>(0,a.jsx)("li",{children:e},s)),_.errors.length>3&&(0,a.jsxs)("li",{children:["... and ",_.errors.length-3," more errors"]})]})]})]})]}),(0,a.jsxs)("div",{className:"flex justify-end gap-2 pt-4",children:[(0,a.jsx)(x.$,{variant:"outline",onClick:F,disabled:N,children:_?"Close":"Cancel"}),(0,a.jsx)(x.$,{onClick:S,disabled:N||!i||0===p.size||y,children:N?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Adding Models..."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(B.A,{className:"mr-2 h-4 w-4"}),"Add ",p.size," Models"]})})]})]})]})})}function ei(e){return 0===e?"Free":e<1e-6?"$".concat(e.toFixed(8)):e<.001?"$".concat(e.toFixed(6)):e<.01?"$".concat(e.toFixed(4)):"$".concat(e.toFixed(3))}var en=t(2738),eo=t(2745),ed=t(8815);function ec(e){let{...s}=e;return(0,a.jsx)(ed.bL,{"data-slot":"alert-dialog",...s})}function eu(e){let{...s}=e;return(0,a.jsx)(ed.ZL,{"data-slot":"alert-dialog-portal",...s})}function em(e){let{className:s,...t}=e;return(0,a.jsx)(ed.hJ,{"data-slot":"alert-dialog-overlay",className:(0,b.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",s),...t})}function ep(e){let{className:s,...t}=e;return(0,a.jsxs)(eu,{children:[(0,a.jsx)(em,{}),(0,a.jsx)(ed.UC,{"data-slot":"alert-dialog-content",className:(0,b.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",s),...t})]})}function eh(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,b.cn)("flex flex-col gap-2 text-center sm:text-left",s),...t})}function ex(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,b.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",s),...t})}function eg(e){let{className:s,...t}=e;return(0,a.jsx)(ed.hE,{"data-slot":"alert-dialog-title",className:(0,b.cn)("text-lg font-semibold",s),...t})}function ev(e){let{className:s,...t}=e;return(0,a.jsx)(ed.VY,{"data-slot":"alert-dialog-description",className:(0,b.cn)("text-muted-foreground text-sm",s),...t})}function ej(e){let{className:s,...t}=e;return(0,a.jsx)(ed.rc,{className:(0,b.cn)((0,x.r)(),s),...t})}function ef(e){let{className:s,...t}=e;return(0,a.jsx)(ed.ZD,{className:(0,b.cn)((0,x.r)({variant:"outline"}),s),...t})}var ey=t(6049);function eb(e){let{...s}=e;return(0,a.jsx)(ey.bL,{"data-slot":"dropdown-menu",...s})}function eN(e){let{...s}=e;return(0,a.jsx)(ey.l9,{"data-slot":"dropdown-menu-trigger",...s})}function ew(e){let{className:s,sideOffset:t=4,...r}=e;return(0,a.jsx)(ey.ZL,{children:(0,a.jsx)(ey.UC,{"data-slot":"dropdown-menu-content",sideOffset:t,className:(0,b.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",s),...r})})}function e_(e){let{className:s,inset:t,variant:r="default",...l}=e;return(0,a.jsx)(ey.q7,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":r,className:(0,b.cn)("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s),...l})}function ek(e){let{className:s,...t}=e;return(0,a.jsx)(ey.wv,{"data-slot":"dropdown-menu-separator",className:(0,b.cn)("bg-border -mx-1 my-1 h-px",s),...t})}var eC=t(2034),eM=t(9987),eA=t(3545),eS=t(4963),eF=t(6541),eP=t(9197),eR=t(3732),eT=t(3728);function ez(e){let{filterProvider:s,groupData:t,filteredModels:d}=e,[c,u]=(0,r.useState)(""),[,m]=(0,r.useState)(null),[p,h]=(0,r.useState)(!1),[g,v]=(0,r.useState)(null),[j,f]=(0,r.useState)(null),[y,N]=(0,r.useState)(!1),[w,_]=(0,r.useState)(new Set),[k,C]=(0,r.useState)(!1),[M,A]=(0,r.useState)(!1),[S,F]=(0,r.useState)(!1),[P]=(0,r.useState)([]),R=(0,l.jE)(),{data:T,isLoading:z,error:L,refetch:Y}=(0,i.I)({queryKey:["models-with-providers"],queryFn:()=>o.zQ.getModelsWithProviders(),refetchOnWindowFocus:!1}),{models:U=[],groups:G=[]}=T||{},V=(0,r.useMemo)(()=>s?U.filter(e=>e.provider===s):U,[U,s]),B=(0,n.n)({mutationFn:async e=>{let s=U.filter(s=>e.includes(s.id)).reduce((e,s)=>{let t=s.provider_id||"unknown";return e[t]||(e[t]=[]),e[t].push(s),e},{}),t=0;for(let[e,a]of Object.entries(s)){if("unknown"===e)continue;let s=a.map(e=>e.full_name);t+=(await o.zQ.deleteModels(s,e)).deleted_count}return{deleted_count:t,message:"Models deleted"}},onSuccess:e=>{E.oR.success("Successfully deleted ".concat(e.deleted_count," model overrides")),_(new Set),R.invalidateQueries({queryKey:["models-with-providers"]}),R.invalidateQueries({queryKey:["all-provider-models"]}),R.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to delete model overrides: ".concat(e.message))}}),W=(0,n.n)({mutationFn:async e=>{let s=U.filter(s=>e.includes(s.id)).reduce((e,s)=>{let t=s.provider_id||"unknown";return e[t]||(e[t]=[]),e[t].push(s),e},{}),t=0;for(let[e,r]of Object.entries(s))if("unknown"!==e)for(let s of r){let r=parseInt(e);try{let e=await o.zQ.getProviderModel(r,s.full_name);await o.zQ.updateProviderModel(r,s.full_name,{...e,enabled:!1}),t++}catch(e){var a;if((null==(a=e.message)?void 0:a.includes("404"))||404===e.status){let e={id:s.full_name,name:s.name,description:s.description||"",created:Math.floor(Date.now()/1e3),context_length:s.contextLength||4096,architecture:{modality:s.modelType||"text",input_modalities:[s.modelType||"text"],output_modalities:[s.modelType||"text"],tokenizer:"",instruct_type:null},pricing:{prompt:s.input_cost,completion:s.output_cost,request:0,image:0,web_search:0,internal_reasoning:0},per_request_limits:null,top_provider:null,upstream_provider_id:r,enabled:!1};await o.zQ.createProviderModel(r,e),t++}}}return{deleted_count:t,message:"Models disabled"}},onSuccess:e=>{E.oR.success("Successfully disabled ".concat(e.deleted_count," models")),_(new Set),R.invalidateQueries({queryKey:["models-with-providers"]}),R.invalidateQueries({queryKey:["all-provider-models"]}),R.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to disable models: ".concat(e.message))}}),H=(0,n.n)({mutationFn:async e=>{if(!t)throw Error("No group data available");let s={};return s.api_key="",t.group_url&&(s.url=t.group_url),o.zQ.bulkUpdateModels(e,s)},onSuccess:e=>{E.oR.success("Successfully applied group settings to ".concat(e.updated_count," models")),e.errors.length>0&&(E.oR.warning("".concat(e.errors.length," models had errors during update")),console.warn("Bulk update errors:",e.errors)),_(new Set),R.invalidateQueries({queryKey:["models-with-providers"]}),R.invalidateQueries({queryKey:["all-provider-models"]}),R.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to apply group settings: ".concat(e.message))}}),X=(0,n.n)({mutationFn:()=>o.zQ.deleteAllModels(),onSuccess:e=>{E.oR.success("Successfully permanently deleted ".concat(e.deleted_count," models")),_(new Set),R.invalidateQueries({queryKey:["models-with-providers"]}),R.invalidateQueries({queryKey:["all-provider-models"]}),R.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to permanently delete all models: ".concat(e.message))}}),es=(0,n.n)({mutationFn:e=>o.zQ.deleteModelsByProvider(e),onSuccess:e=>{E.oR.success("Successfully permanently deleted ".concat(e.deleted_count," models from provider")),_(new Set),R.invalidateQueries({queryKey:["models-with-providers"]}),R.invalidateQueries({queryKey:["all-provider-models"]}),R.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to permanently delete provider models: ".concat(e.message))}}),et=(0,n.n)({mutationFn:async e=>{let s=U.find(s=>s.id===e);if(!s)throw Error("Model not found");if(!s.provider_id)throw Error("Provider ID not available for this model");let t=parseInt(s.provider_id),a=await o.zQ.getProviderModel(t,s.full_name);return await o.zQ.updateProviderModel(t,s.full_name,{...a,enabled:!0}),{restored_count:1}},onSuccess:()=>{E.oR.success("Model enabled successfully"),R.invalidateQueries({queryKey:["models-with-providers"]}),R.invalidateQueries({queryKey:["all-provider-models"]}),R.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to enable model: ".concat(e.message))}}),ea=(0,n.n)({mutationFn:async e=>{let s=U.filter(s=>e.includes(s.id)).reduce((e,s)=>{let t=s.provider_id||"unknown";return e[t]||(e[t]=[]),e[t].push(s),e},{}),t=0;for(let[e,a]of Object.entries(s))if("unknown"!==e)for(let s of a){let a=parseInt(e);try{let e=await o.zQ.getProviderModel(a,s.full_name);await o.zQ.updateProviderModel(a,s.full_name,{...e,enabled:!0}),t++}catch(e){console.error("Failed to enable model ".concat(s.full_name,":"),e)}}return{restored_count:t,message:"Models enabled"}},onSuccess:e=>{E.oR.success("Successfully enabled ".concat(e.restored_count," models")),_(new Set),R.invalidateQueries({queryKey:["models-with-providers"]}),R.invalidateQueries({queryKey:["all-provider-models"]}),R.invalidateQueries({queryKey:["upstream-providers"]})},onError:e=>{E.oR.error("Failed to enable models: ".concat(e.message))}}),er=(0,r.useMemo)(()=>{let e=d&&d.length>0?d:P.length>0?P:V;return s?{[s]:e}:e?e.reduce((e,s)=>{let t=s.provider;return e[t]||(e[t]=[]),e[t].push(s),e},{}):{}},[V,P,d,s]),ed=(0,r.useMemo)(()=>new Map(G.map(e=>[e.provider,e])),[G]),eu=(0,r.useMemo)(()=>{let e={};return G.forEach(s=>{e[s.provider]={group_api_key:s.group_api_key,group_url:s.group_url}}),e},[G]),em=e=>{var s;return e.api_key?e.api_key:null==(s=eu[e.provider])?void 0:s.group_api_key},ey=e=>{let s=ed.get(e.provider),t=!!(e.api_key&&"string"==typeof e.api_key&&e.api_key!==(null==s?void 0:s.group_api_key)),a=!!(e.url&&"string"==typeof e.url&&!e.url.startsWith("/")&&e.url!==(null==s?void 0:s.group_url));return t||a},ez=async e=>{try{let s=G.find(s=>s.provider===e.provider);s||(s=await o.zQ.createModelGroup({provider:e.provider,group_api_key:void 0}));let t={name:e.name,full_name:e.name,input_cost:e.input_cost,output_cost:e.output_cost,provider:e.provider,modelType:e.modelType,description:e.description||void 0,contextLength:e.contextLength};await o.zQ.createModel(t),await Y(),E.oR.success('Model "'.concat(e.name,'" added successfully!'))}catch(e){throw console.error("Error adding model:",e),E.oR.error("Failed to add model. Please try again."),e}},eE=async()=>{await Y(),v(null)},eI=async(e,s)=>{try{let t=ed.get(e);t&&(await o.zQ.updateModelGroup(t.id,{provider:s.provider,group_api_key:s.group_api_key||void 0,group_url:s.group_url||void 0}),await Y(),f(null),E.oR.success("Group updated successfully!"))}catch(e){console.error("Error updating group:",e),E.oR.error("Failed to update group. Please try again.")}},eq=async()=>{await Y(),N(!1)},eL=async e=>{let s=ed.get(e);if(!(null==s?void 0:s.id))return void E.oR.error("No group configuration found for this provider");try{let e=await o.zQ.refreshModels({provider_id:s.id});E.oR.info(e.message),await Y(),R.invalidateQueries({queryKey:["models-with-providers"]}),R.invalidateQueries({queryKey:["all-provider-models"]}),R.invalidateQueries({queryKey:["upstream-providers"]})}catch(t){console.error("Error refreshing provider models:",t);let s=t instanceof Error?t.message:"Unknown error";E.oR.error("Failed to refresh ".concat(e," models: ").concat(s))}},eY=e=>{switch(e.toLowerCase()){case"text":default:return(0,a.jsx)(eC.A,{className:"h-4 w-4"});case"embedding":return(0,a.jsx)(eM.A,{className:"h-4 w-4"});case"image":return(0,a.jsx)(K.A,{className:"h-4 w-4"})}},eU=e=>{switch(e.toLowerCase()){case"text":return"bg-blue-100 text-blue-800";case"embedding":return"bg-purple-100 text-purple-800";case"image":return"bg-green-100 text-green-800";case"audio":return"bg-orange-100 text-orange-800";case"multimodal":return"bg-pink-100 text-pink-800";default:return"bg-gray-100 text-gray-800"}},eO=e=>{let s=new Set(w);s.has(e)?s.delete(e):s.add(e),_(s)},eJ=e=>{let s=(d&&d.length>0?d:P.length>0?P:V).filter(s=>s.provider===e).map(e=>e.id),t=new Set(w);s.forEach(e=>t.add(e)),_(t)},eQ=e=>{let s=ed.get(e);(null==s?void 0:s.id)&&es.mutate(s.id)},eK=async e=>{let s=U.find(s=>s.id===e);if(!s)return void E.oR.error("Model not found");if(!s.provider_id)return void E.oR.error("Provider ID not available for this model");try{let e=parseInt(s.provider_id);await o.zQ.deleteProviderModel(e,s.full_name),E.oR.success("Model override deleted successfully"),R.invalidateQueries({queryKey:["models-with-providers"]}),R.invalidateQueries({queryKey:["all-provider-models"]}),R.invalidateQueries({queryKey:["upstream-providers"]})}catch(s){let e=s instanceof Error?s.message:"Unknown error";E.oR.error("Failed to delete model override: ".concat(e))}},eD=async e=>{let s=U.find(s=>s.id===e);if(!s)return void E.oR.error("Model not found");if(!s.provider_id)return void E.oR.error("Provider ID not available for this model");try{let e=parseInt(s.provider_id);try{let t=await o.zQ.getProviderModel(e,s.full_name);await o.zQ.updateProviderModel(e,s.full_name,{...t,enabled:!1}),E.oR.success("Model disabled successfully")}catch(a){var t;if((null==(t=a.message)?void 0:t.includes("404"))||404===a.status){let t={id:s.full_name,name:s.name,description:s.description||"",created:Math.floor(Date.now()/1e3),context_length:s.contextLength||4096,architecture:{modality:s.modelType||"text",input_modalities:[s.modelType||"text"],output_modalities:[s.modelType||"text"],tokenizer:"",instruct_type:null},pricing:{prompt:s.input_cost,completion:s.output_cost,request:0,image:0,web_search:0,internal_reasoning:0},per_request_limits:null,top_provider:null,upstream_provider_id:e,enabled:!1};await o.zQ.createProviderModel(e,t),E.oR.success("Model disabled successfully")}else throw a}R.invalidateQueries({queryKey:["models-with-providers"]}),R.invalidateQueries({queryKey:["all-provider-models"]}),R.invalidateQueries({queryKey:["upstream-providers"]})}catch(s){let e=s instanceof Error?s.message:"Unknown error";E.oR.error("Failed to disable model: ".concat(e))}};return z?(0,a.jsxs)("div",{className:"grid gap-4",children:[(0,a.jsx)(eo.E,{className:"h-[200px]"}),(0,a.jsx)(eo.E,{className:"h-[200px]"})]}):L?(0,a.jsx)("div",{className:"rounded-lg border border-red-200 bg-red-50 p-4",children:(0,a.jsx)("p",{className:"text-sm text-red-800",children:"Error loading models. Please try again later."})}):(0,a.jsxs)("div",{className:"grid gap-6",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)(x.$,{onClick:()=>{_(new Set((d&&d.length>0?d:P.length>0?P:V).map(e=>e.id)))},children:[(0,a.jsx)(eA.A,{className:"mr-2 h-4 w-4"}),"Select All Models"]}),(0,a.jsxs)(x.$,{onClick:()=>{_(new Set)},children:[(0,a.jsx)(eS.A,{className:"mr-2 h-4 w-4"}),"Deselect All"]}),(0,a.jsxs)(x.$,{onClick:()=>{A(!0)},className:"text-destructive focus:text-destructive",children:[(0,a.jsx)(D.A,{className:"mr-2 h-4 w-4"}),"Delete All Models Permanently"]}),w.size>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"bg-border h-6 w-px"}),(0,a.jsxs)("span",{className:"text-muted-foreground text-sm",children:[w.size," selected"]}),(()=>{let e=(d&&d.length>0?d:P.length>0?P:V).filter(e=>w.has(e.id)&&e.soft_deleted);return e.length>0&&(0,a.jsxs)(x.$,{onClick:()=>ea.mutate(e.map(e=>e.id)),variant:"outline",size:"sm",className:"gap-2 border-green-300 text-green-600 hover:border-green-400 hover:text-green-700",disabled:ea.isPending,children:[(0,a.jsx)(Z.A,{className:"h-4 w-4"}),"Enable Selected (",e.length,")"]})})(),(0,a.jsxs)(x.$,{onClick:()=>{C(!0)},variant:"destructive",size:"sm",className:"gap-2",disabled:B.isPending,children:[(0,a.jsx)(eF.A,{className:"h-4 w-4"}),"Delete Selected Overrides"]}),(0,a.jsxs)(x.$,{onClick:()=>{W.mutate(Array.from(w))},variant:"outline",size:"sm",className:"gap-2 border-orange-300 text-orange-600 hover:border-orange-400 hover:text-orange-700",disabled:W.isPending,children:[(0,a.jsx)(eP.A,{className:"h-4 w-4"}),"Disable Selected"]})]})]}),Object.entries(er).map(e=>{let[t,r]=e;if(s&&t!==s)return null;let l=ed.get(t),i=r.every(e=>w.has(e.id)),n=r.some(e=>w.has(e.id));return(0,a.jsxs)(en.Zp,{className:"overflow-hidden",children:[!s&&(0,a.jsx)(en.aR,{className:"pb-3",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)(ee,{checked:i,ref:e=>{e&&"indeterminate"in e&&(e.indeterminate=n&&!i)},onCheckedChange:e=>{if(e)eJ(t);else{let e=r.map(e=>e.id),s=new Set(w);e.forEach(e=>s.delete(e)),_(s)}}}),(0,a.jsxs)("div",{children:[(0,a.jsxs)(en.ZB,{className:"flex items-center gap-2 text-lg",children:[(0,a.jsx)(J.A,{className:"h-5 w-5"}),t,(0,a.jsxs)("span",{className:"text-muted-foreground text-sm font-normal",children:["(",r.length," models)"]})]}),(0,a.jsxs)(en.BT,{children:[(null==l?void 0:l.group_url)?(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)(K.A,{className:"h-3 w-3"}),l.group_url]}):"Using default endpoint",(null==l?void 0:l.group_api_key)&&(0,a.jsxs)("span",{className:"ml-2 flex items-center gap-1",children:[(0,a.jsx)(Q.A,{className:"h-3 w-3"}),"Group API Key"]})]})]})]}),(0,a.jsx)("div",{className:"flex items-center gap-2",children:(0,a.jsxs)(eb,{children:[(0,a.jsx)(eN,{asChild:!0,children:(0,a.jsx)(x.$,{variant:"ghost",size:"sm",children:(0,a.jsx)(eR.A,{className:"h-4 w-4"})})}),(0,a.jsxs)(ew,{align:"end",children:[(0,a.jsxs)(e_,{onClick:()=>{l&&f({provider:t,models:r,groupData:l})},children:[(0,a.jsx)(q.A,{className:"mr-2 h-4 w-4"}),"Edit Group"]}),(0,a.jsxs)(e_,{onClick:()=>eJ(t),children:[(0,a.jsx)(eA.A,{className:"mr-2 h-4 w-4"}),"Select All"]}),(0,a.jsxs)(e_,{onClick:()=>eL(t),children:[(0,a.jsx)(eT.A,{className:"mr-2 h-4 w-4"}),"Refresh Models"]}),(0,a.jsx)(ek,{}),(0,a.jsxs)(e_,{onClick:()=>eQ(t),className:"text-destructive focus:text-destructive",children:[(0,a.jsx)(eF.A,{className:"mr-2 h-4 w-4"}),"Delete All Models Permanently"]})]})]})})]})}),(0,a.jsx)(en.Wu,{className:s?"pt-6":"pt-0",children:(0,a.jsx)("div",{className:"grid gap-3 md:grid-cols-2 lg:grid-cols-3",children:r.map(e=>(0,a.jsxs)(en.Zp,{className:(0,b.cn)("relative cursor-pointer overflow-hidden transition-all duration-200 hover:shadow-md",w.has(e.id)&&"ring-primary ring-2",c===e.id&&"ring-2 ring-blue-500",e.soft_deleted&&"border-red-200 bg-red-50 opacity-75"),onMouseEnter:()=>m(e.id),onMouseLeave:()=>m(null),children:[(0,a.jsx)(en.aR,{className:"pb-2",children:(0,a.jsxs)("div",{className:"flex items-start gap-2 pr-10",children:[(0,a.jsx)(ee,{checked:w.has(e.id),onCheckedChange:()=>eO(e.id),onClick:e=>e.stopPropagation(),className:"mt-1 flex-shrink-0"}),(0,a.jsxs)("div",{className:"flex w-[calc(100%-3rem)] items-start gap-2 overflow-hidden",children:[(0,a.jsx)("div",{className:"mt-1 flex-shrink-0",children:eY(e.modelType)}),(0,a.jsxs)("div",{className:"w-full overflow-hidden",children:[(0,a.jsx)("h3",{className:(0,b.cn)("overflow-hidden text-sm font-medium text-ellipsis whitespace-nowrap",e.soft_deleted&&"text-red-600 line-through"),children:e.name}),e.full_name!==e.name&&(0,a.jsx)("p",{className:"text-muted-foreground overflow-hidden text-xs text-ellipsis whitespace-nowrap",children:e.full_name})]})]}),(0,a.jsx)("div",{className:"absolute top-3 right-2",children:(0,a.jsxs)(eb,{children:[(0,a.jsx)(eN,{asChild:!0,children:(0,a.jsx)(x.$,{variant:"ghost",size:"sm",onClick:e=>e.stopPropagation(),className:"h-8 w-8 p-0",children:(0,a.jsx)(eR.A,{className:"h-4 w-4"})})}),(0,a.jsxs)(ew,{align:"end",children:[(0,a.jsxs)(e_,{onClick:s=>{s.stopPropagation(),v(e)},children:[(0,a.jsx)(q.A,{className:"mr-2 h-4 w-4"}),"Edit Model"]}),(0,a.jsx)(ek,{}),e.soft_deleted?(0,a.jsxs)(e_,{onClick:s=>{s.stopPropagation(),et.mutate(e.id)},className:"text-green-600 focus:text-green-700",children:[(0,a.jsx)(Z.A,{className:"mr-2 h-4 w-4"}),"Enable Model"]}):(0,a.jsxs)(e_,{onClick:s=>{s.stopPropagation(),eD(e.id)},className:"text-orange-600 focus:text-orange-700",children:[(0,a.jsx)(eP.A,{className:"mr-2 h-4 w-4"}),"Disable Model"]}),(0,a.jsxs)(e_,{onClick:s=>{s.stopPropagation(),eK(e.id)},className:"text-destructive focus:text-destructive",children:[(0,a.jsx)(eF.A,{className:"mr-2 h-4 w-4"}),"Delete"]})]})]})})]})}),(0,a.jsxs)(en.Wu,{className:"space-y-2 pt-0",onClick:()=>u(e.id),children:[(0,a.jsxs)("div",{className:"flex flex-wrap gap-1",children:[(0,a.jsx)("span",{className:(0,b.cn)("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium",eU(e.modelType)),children:e.modelType}),"remote"===e.api_key_type&&(0,a.jsx)("span",{className:"inline-flex items-center rounded-full border border-blue-200 bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-800",children:"Remote"}),"remote"!==e.api_key_type&&(0,a.jsx)("span",{className:"inline-flex items-center rounded-full border border-emerald-200 bg-emerald-100 px-2.5 py-0.5 text-xs font-medium text-emerald-800",children:"Database"}),e.is_free&&(0,a.jsx)("span",{className:"inline-flex items-center rounded-full bg-yellow-100 px-2.5 py-0.5 text-xs font-medium text-yellow-800",children:"Free"}),!em(e)&&(0,a.jsxs)("span",{className:"inline-flex items-center rounded-full bg-red-100 px-2.5 py-0.5 text-xs font-medium text-red-800",children:[(0,a.jsx)(Q.A,{className:"mr-1 h-3 w-3"}),"No API Key"]}),em(e)&&!ey(e)&&(0,a.jsxs)("span",{className:"inline-flex items-center rounded-full bg-green-100 px-2.5 py-0.5 text-xs font-medium text-green-800",children:[(0,a.jsx)(J.A,{className:"mr-1 h-3 w-3"}),"Group Key"]}),ey(e)&&(0,a.jsxs)("span",{className:"inline-flex items-center rounded-full bg-purple-100 px-2.5 py-0.5 text-xs font-medium text-purple-800",children:[(0,a.jsx)(Q.A,{className:"mr-1 h-3 w-3"}),"Individual Key"]}),e.soft_deleted&&(0,a.jsxs)("span",{className:"inline-flex items-center rounded-full border border-red-300 bg-red-100 px-2.5 py-0.5 text-xs font-medium text-red-800",children:[(0,a.jsx)(eF.A,{className:"mr-1 h-3 w-3"}),"Deleted"]})]}),!e.is_free&&(0,a.jsxs)("div",{className:"text-muted-foreground space-y-1 text-xs",children:[(0,a.jsxs)("div",{className:"flex justify-between",children:[(0,a.jsx)("span",{className:"truncate",children:"Input:"}),(0,a.jsxs)("span",{className:"ml-2 truncate",children:[ei(e.input_cost),"/1M tokens"]})]}),(0,a.jsxs)("div",{className:"flex justify-between",children:[(0,a.jsx)("span",{className:"truncate",children:"Output:"}),(0,a.jsxs)("span",{className:"ml-2 truncate",children:[ei(e.output_cost),"/1M tokens"]})]})]}),e.description&&(0,a.jsx)("p",{className:"text-muted-foreground line-clamp-2 overflow-hidden text-xs break-words text-ellipsis",children:e.description})]})]},e.id))})})]},t)}),(0,a.jsx)(I,{isOpen:p,onModelAdd:ez,onCancel:()=>h(!1)}),g&&(0,a.jsx)(O,{model:g,providerId:g.provider_id?parseInt(g.provider_id):void 0,onModelUpdate:eE,onCancel:()=>v(null),isOpen:!!g}),j&&(0,a.jsx)($,{provider:j.provider,models:j.models,groupSettings:{group_api_key:j.groupData.group_api_key,group_url:j.groupData.group_url},onGroupUpdate:eI,onCancel:()=>f(null),isOpen:!!j}),(0,a.jsx)(el,{isOpen:y,onClose:()=>N(!1),onSuccess:eq}),(0,a.jsx)(ec,{open:k,onOpenChange:C,children:(0,a.jsxs)(ep,{children:[(0,a.jsxs)(eh,{children:[(0,a.jsx)(eg,{children:"Permanently Delete Selected Models"}),(0,a.jsxs)(ev,{children:["Are you sure you want to permanently delete ",w.size," ","selected models? This will completely remove them from the database and cannot be undone."]})]}),(0,a.jsxs)(ex,{children:[(0,a.jsx)(ef,{children:"Cancel"}),(0,a.jsx)(ej,{onClick:()=>{B.mutate(Array.from(w)),C(!1)},className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Delete Models"})]})]})}),(0,a.jsx)(ec,{open:S,onOpenChange:F,children:(0,a.jsxs)(ep,{children:[(0,a.jsxs)(eh,{children:[(0,a.jsxs)(eg,{children:["Apply Group Settings to"," ",w.size===P.length&&s?"All Models in ".concat(s):"Selected Models"]}),(0,a.jsxs)(ev,{children:[w.size===P.length&&s?(0,a.jsxs)("div",{children:[(0,a.jsxs)("p",{children:["Are you sure you want to force ALL ",w.size," ","models in the ",(0,a.jsx)("strong",{children:s})," group to use group settings?"]}),(0,a.jsx)("p",{className:"mt-2 text-sm text-amber-600",children:(0,a.jsx)("strong",{children:"⚠️ This will override individual model configurations:"})})]}):(0,a.jsxs)("p",{children:["Are you sure you want to apply the group settings to"," ",w.size," selected models?"]}),(0,a.jsxs)("ul",{className:"mt-2 list-inside list-disc space-y-1 text-sm",children:[(0,a.jsx)("li",{children:"Remove individual API keys (models will use the group API key)"}),(null==t?void 0:t.group_url)&&(0,a.jsxs)("li",{children:["Set the URL to:"," ",(0,a.jsx)("code",{className:"rounded bg-gray-100 px-1",children:t.group_url})]}),(0,a.jsx)("li",{children:"Force models to use group configurations"}),w.size===P.length&&s&&(0,a.jsx)("li",{className:"font-medium text-amber-600",children:"This will affect ALL models in this provider group"})]})]})]}),(0,a.jsxs)(ex,{children:[(0,a.jsx)(ef,{children:"Cancel"}),(0,a.jsx)(ej,{onClick:()=>{H.mutate(Array.from(w)),F(!1)},className:"bg-blue-600 text-white hover:bg-blue-700",children:w.size===P.length&&s?"Force All ".concat(w.size," Models"):"Apply Group Settings"})]})]})}),(0,a.jsx)(ec,{open:M,onOpenChange:A,children:(0,a.jsxs)(ep,{children:[(0,a.jsxs)(eh,{children:[(0,a.jsx)(eg,{children:"Permanently Delete All Models"}),(0,a.jsxs)(ev,{children:["Are you sure you want to permanently delete ALL models? This will completely remove all ",U.length," models from the database. This action cannot be undone."]})]}),(0,a.jsxs)(ex,{children:[(0,a.jsx)(ef,{children:"Cancel"}),(0,a.jsx)(ej,{onClick:()=>{X.mutate(),A(!1)},className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Delete All Models"})]})]})})]})}var eE=t(7916);u.Ik({id:u.Yj(),created_at:u.Yj(),updated_at:u.Yj(),provider:u.Yj(),group_api_key:u.Yj().optional(),group_url:u.Yj().optional()}),u.Ik({provider:u.Yj(),group_api_key:u.Yj().optional(),group_url:u.Yj().optional()}),u.Ik({provider:u.Yj().optional(),group_api_key:u.Yj().optional(),group_url:u.Yj().optional()}),u.Ik({base_endpoint:u.Yj(),api_key:u.Yj().optional(),provider_name:u.Yj(),default_input_cost:u.ai(),default_output_cost:u.ai(),default_min_cost:u.ai()}),u.Ik({collected_count:u.ai(),skipped_count:u.ai(),models:u.YO(u.bz()),errors:u.YO(u.Yj())}),u.Ik({provider_id:u.Yj()}),u.Ik({refreshed_count:u.ai(),created_count:u.ai(),restored_count:u.ai(),deleted_count:u.ai(),errors:u.YO(u.Yj())}),u.Ik({total_refreshed_count:u.ai(),total_created_count:u.ai(),total_restored_count:u.ai(),total_deleted_count:u.ai(),provider_results:u.YO(u.Ik({provider_name:u.Yj(),refreshed_count:u.ai(),created_count:u.ai(),restored_count:u.ai(),deleted_count:u.ai(),errors:u.YO(u.Yj())})),errors:u.YO(u.Yj())});let eI=u.Ik({id:u.Yj(),canonical_slug:u.Yj().optional(),hugging_face_id:u.Yj().optional(),name:u.Yj().optional(),created:u.ai(),description:u.Yj().optional(),context_length:u.ai().optional(),architecture:u.bz().optional(),pricing:u.bz().optional(),top_provider:u.bz().optional(),per_request_limits:u.bz().optional(),supported_parameters:u.YO(u.Yj()).optional(),provider_url:u.Yj(),provider_name:u.Yj().optional(),group_id:u.Yj().optional()});function eq(e,s){var t,a;return{id:e.id,name:e.name,full_name:e.full_name,description:e.description,modelType:e.model_type||"text",isEnabled:!e.soft_deleted,createdAt:e.created_at,updatedAt:e.updated_at,provider:e.provider||s||"",url:e.url,api_key:e.api_key,input_cost:Number(e.input_cost),output_cost:Number(e.output_cost),min_cost_per_request:Number(e.min_cost_per_request||"0"),min_cash_per_request:Number(e.min_cash_per_request||"0"),contextLength:e.context_length,apiKeyRequired:!0,provider_id:e.provider_id,is_free:null!=(t=e.is_free)&&t,soft_deleted:null!=(a=e.soft_deleted)&&a,has_own_api_key:e.has_own_api_key,api_key_type:e.api_key_type}}u.Ik({object:u.Yj(),data:u.YO(eI)}),u.Ik({id:u.Yj(),created_at:u.Yj(),updated_at:u.Yj(),full_name:u.Yj(),name:u.Yj(),url:u.Yj(),input_cost:u.Yj(),output_cost:u.Yj(),api_key:u.Yj().optional(),min_cash_per_request:u.Yj(),min_cost_per_request:u.Yj().optional(),provider_id:u.Yj().optional(),provider:u.Yj().optional(),soft_deleted:u.zM().optional(),architecture:u.bz().optional(),model_type:u.Yj().optional(),description:u.Yj().optional(),context_length:u.ai().optional(),is_free:u.zM().optional(),has_own_api_key:u.zM(),api_key_type:u.Yj()});class eL{static async createModelGroup(e){return await eE.apiClient.post("/api/model-groups",{provider:e.provider,group_api_key:e.group_api_key,group_url:e.group_url})}static async getModelGroups(){return await eE.apiClient.get("/api/model-groups")}static async getModelGroup(e){return await eE.apiClient.get("/api/model-groups/".concat(e))}static async updateModelGroup(e,s){return await eE.apiClient.put("/api/model-groups/".concat(e),{provider:s.provider,group_api_key:s.group_api_key,group_url:s.group_url})}static async deleteModelGroup(e){return await eE.apiClient.delete("/api/model-groups/".concat(e))}static async createModel(e){let s={full_name:e.name,name:e.name,url:e.url,api_key:e.api_key,input_cost:e.input_cost,output_cost:e.output_cost,min_cost_per_request:e.min_cost_per_request,min_cash_per_request:e.min_cash_per_request,provider:e.provider,model_type:e.modelType,description:e.description,context_length:e.contextLength,is_free:e.is_free};return eq(await eE.apiClient.post("/api/models",s))}static async getModels(){return(await eE.apiClient.get("/api/models")).map(e=>eq(e))}static async getModel(e){return eq(await eE.apiClient.get("/api/models/".concat(e)))}static async getModelsByProvider(e){return(await eE.apiClient.get("/api/models/provider/".concat(e))).map(e=>eq(e))}static async updateModel(e,s){let t={name:s.name,url:s.url,api_key:s.api_key,input_cost:s.input_cost,output_cost:s.output_cost,min_cost_per_request:s.min_cost_per_request,min_cash_per_request:s.min_cash_per_request,provider:s.provider,model_type:s.modelType,description:s.description,context_length:s.contextLength,is_free:s.is_free};return eq(await eE.apiClient.put("/api/models/".concat(e),t))}static async deleteModel(e){return await eE.apiClient.delete("/api/models/".concat(e))}static async softDeleteModel(e){return await eE.apiClient.put("/api/models/".concat(e,"/soft-delete"),{})}static async deleteModels(e){return await eE.apiClient.post("/api/models/bulk/delete",{model_ids:e})}static async softDeleteModels(e){return await eE.apiClient.post("/api/models/bulk/soft-delete",{model_ids:e})}static async bulkUpdateModels(e,s){return await eE.apiClient.post("/api/models/bulk/update",{model_ids:e,api_key:s.api_key,url:s.url})}static async deleteAllModels(){return await eE.apiClient.post("/api/models/all/delete",{})}static async deleteModelsByProvider(e){return await eE.apiClient.post("/api/models/provider/".concat(e,"/delete"),{})}static async restoreModels(e){return await eE.apiClient.post("/api/models/bulk/restore",{model_ids:e})}static async getSoftDeletedModels(){return(await eE.apiClient.get("/api/models/deleted")).map(e=>eq(e))}static async collectModels(e){return await eE.apiClient.post("/api/models/collect",e)}static async getModelsWithProviders(){let[e,s]=await Promise.all([eE.apiClient.get("/api/models"),this.getModelGroups()]),t=new Map(s.map(e=>[e.id,e.provider]));return{models:e.map(e=>eq(e,t.get(e.provider_id||"")||"Unknown")),groups:s}}static async listModels(e){let{models:s}=await this.getModelsWithProviders();return(null==e?void 0:e.enabled)!==!1?s.filter(e=>e.isEnabled):s}static async getModelInfo(e){return await this.getModel(e)}static async refreshModels(e){return await eE.apiClient.post("/api/models/refresh",e)}static async refreshAllModels(){return await eE.apiClient.post("/api/models/refresh-all",{})}static async getEnhancedModels(){return await eE.apiClient.get("/api/enhanced-models")}static async getEnhancedModelsByProvider(e){return await eE.apiClient.get("/api/enhanced-models/".concat(encodeURIComponent(e)))}static downloadModelsAsJson(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"models.json",t=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),a=URL.createObjectURL(t),r=document.createElement("a");r.href=a,r.download=s,r.click(),URL.revokeObjectURL(a)}static async downloadAllEnhancedModels(){try{let e=await this.getEnhancedModels();this.downloadModelsAsJson(e,"enhanced-models-all.json")}catch(e){throw console.error("Error downloading all enhanced models:",e),e}}static async downloadEnhancedModelsByProvider(e){try{let s=await this.getEnhancedModelsByProvider(e);this.downloadModelsAsJson(s,"enhanced-models-".concat(e.toLowerCase(),".json"))}catch(s){throw console.error("Error downloading enhanced models for provider ".concat(e,":"),s),s}}static async testModel(e,s,t){return await eE.apiClient.post("/api/models/test",{model_id:e,endpoint_type:s,request_data:t})}}var eY=t(2390),eU=t(4717);function eO(e){var s,t;let{models:l}=e,[o,d]=(0,r.useState)(""),[c,u]=(0,r.useState)("You are a helpful assistant. Please respond concisely."),[m,p]=(0,r.useState)("Hello! Can you tell me what model you are and confirm that you are working correctly?"),[h,g]=(0,r.useState)(150),[j,y]=(0,r.useState)(.7),[b,w]=(0,r.useState)(null),[_,k]=(0,r.useState)(null),{data:C=[]}=(0,i.I)({queryKey:["model-groups"],queryFn:()=>eL.getModelGroups(),refetchOnWindowFocus:!1}),M=l.find(e=>e.id===o),A=(0,n.n)({mutationFn:async e=>{if(!M)throw Error("No model selected");k(null),w(null);try{console.log("Testing model via proxy: ".concat(M.name)),console.log("Request payload:",e);let s=await eL.testModel(M.id,"chat-completions",e);if(!s.success)throw Error(s.error||"Test failed");return s.data}catch(e){throw console.error("Model test error via proxy:",e),Error(e instanceof Error?e.message:"Failed to test model via proxy")}},onSuccess:e=>{w(e),E.oR.success("Model test completed successfully!")},onError:e=>{let s=(null==e?void 0:e.message)||"Unknown error occurred";k(s),E.oR.error("Model test failed: ".concat(s))}}),S=async()=>{if(!M)return void E.oR.error("Please select a model to test");if(!m.trim())return void E.oR.error("Please enter a test message");let e=[];c.trim()&&e.push({role:"system",content:c.trim()}),e.push({role:"user",content:m.trim()});let s={model:M.name,messages:e,max_tokens:h,temperature:j};A.mutate(s)},F=l.filter(e=>e.isEnabled),P=M?(e=>{let s=C.find(s=>s.provider===e.provider),t=e.api_key||(null==s?void 0:s.group_api_key),a=e.url;return e.url.startsWith("/")&&(null==s?void 0:s.group_url)&&(a="".concat(s.group_url.replace(/\/$/,"")).concat(e.url)),"text"!==e.modelType||a.includes("/chat/completions")||(a=a.replace(/\/$/,"")+"/chat/completions"),{apiKey:t,endpointUrl:a,group:s}})(M):null;return(0,a.jsxs)(en.Zp,{className:"w-full",children:[(0,a.jsxs)(en.aR,{children:[(0,a.jsxs)(en.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(eY.A,{className:"h-5 w-5"}),"Model Credential Tester"]}),(0,a.jsx)(en.BT,{children:"Test model functionality by sending chat completion requests through the secure proxy (resolves CORS and network issues)"})]}),(0,a.jsxs)(en.Wu,{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"model-select",children:"Select Model"}),(0,a.jsxs)(f.l6,{value:o,onValueChange:d,children:[(0,a.jsx)(f.bq,{id:"model-select",children:(0,a.jsx)(f.yv,{placeholder:"Choose a model to test..."})}),(0,a.jsx)(f.gC,{children:F.map(e=>(0,a.jsx)(f.eb,{value:e.id,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{children:e.name}),(0,a.jsx)(er.E,{variant:"outline",className:"text-xs",children:e.provider}),e.is_free&&(0,a.jsx)(er.E,{variant:"secondary",className:"text-xs",children:"Free"})]})},e.id))})]}),M&&P&&(0,a.jsxs)("div",{className:"text-muted-foreground bg-muted space-y-2 rounded-md p-3 text-sm",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(K.A,{className:"h-4 w-4"}),(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Endpoint:"})," ",P.endpointUrl]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(Q.A,{className:"h-4 w-4"}),(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"API Key:"})," ",P.apiKey?"".concat(P.apiKey.substring(0,8),"..."):"Not configured"]}),(0,a.jsx)(er.E,{variant:P.apiKey?"default":"destructive",className:"text-xs",children:M.api_key_type||"Unknown"})]}),(0,a.jsx)("div",{children:(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Provider:"})," ",M.provider]})}),(0,a.jsx)("div",{children:(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Type:"})," ",M.modelType]})}),M.contextLength&&(0,a.jsx)("div",{children:(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Context Length:"})," ",M.contextLength.toLocaleString()]})}),!P.apiKey&&(0,a.jsxs)(V.Fc,{variant:"default",className:"mt-2",children:[(0,a.jsx)(G.A,{className:"h-4 w-4"}),(0,a.jsx)(V.TN,{children:"No API key configured for this model. Testing may still work if the model is free or if authentication is handled elsewhere. For models requiring authentication, please add an API key to the model or its provider group."})]})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"max-tokens",children:"Max Tokens"}),(0,a.jsx)("input",{id:"max-tokens",type:"number",min:1,max:4e3,value:h,onChange:e=>g(parseInt(e.target.value)||150),className:"border-input bg-background w-full rounded-md border px-3 py-2 text-sm"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"temperature",children:"Temperature"}),(0,a.jsx)("input",{id:"temperature",type:"number",min:0,max:2,step:.1,value:j,onChange:e=>y(parseFloat(e.target.value)||.7),className:"border-input bg-background w-full rounded-md border px-3 py-2 text-sm"})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"system-message",children:"System Message (Optional)"}),(0,a.jsx)(v.T,{id:"system-message",placeholder:"Enter system message...",value:c,onChange:e=>u(e.target.value),rows:2})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"user-message",children:"Test Message"}),(0,a.jsx)(v.T,{id:"user-message",placeholder:"Enter your test message...",value:m,onChange:e=>p(e.target.value),rows:3})]}),(0,a.jsx)(x.$,{onClick:S,disabled:!o||A.isPending,className:"w-full",children:A.isPending?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Testing Model..."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eY.A,{className:"mr-2 h-4 w-4"}),"Test Model (via Proxy)"]})}),_&&(0,a.jsxs)(V.Fc,{variant:"destructive",children:[(0,a.jsx)(eU.A,{className:"h-4 w-4"}),(0,a.jsxs)(V.TN,{children:[(0,a.jsx)("strong",{children:"Test Failed:"})," ",_]})]}),b&&(0,a.jsxs)(V.Fc,{children:[(0,a.jsx)(Z.A,{className:"h-4 w-4"}),(0,a.jsxs)(V.TN,{children:[(0,a.jsx)("strong",{children:"Test Successful!"})," Model responded correctly via secure proxy."]})]}),b&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Model Response"}),(0,a.jsx)("div",{className:"bg-muted rounded-md p-4",children:(0,a.jsx)("p",{className:"text-sm whitespace-pre-wrap",children:(null==(t=b.choices[0])||null==(s=t.message)?void 0:s.content)||"No content in response"})})]}),b.usage&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Usage Statistics"}),(0,a.jsxs)("div",{className:"grid grid-cols-3 gap-4 text-sm",children:[(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center",children:[(0,a.jsx)("div",{className:"font-semibold",children:b.usage.prompt_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Prompt Tokens"})]}),(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center",children:[(0,a.jsx)("div",{className:"font-semibold",children:b.usage.completion_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Completion Tokens"})]}),(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center",children:[(0,a.jsx)("div",{className:"font-semibold",children:b.usage.total_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Total Tokens"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Raw Response"}),(0,a.jsxs)("details",{className:"group",children:[(0,a.jsxs)("summary",{className:"text-muted-foreground hover:text-foreground cursor-pointer text-sm",children:[(0,a.jsx)(G.A,{className:"mr-1 inline h-4 w-4"}),"Show detailed response data"]}),(0,a.jsx)("pre",{className:"bg-muted mt-2 max-h-60 overflow-auto rounded-md p-4 text-xs",children:JSON.stringify(b,null,2)})]})]})]})]})]})}var eJ=t(4938),eQ=t(7137),eK=t(9472),eD=t(413),eG=t(9911),eV=t(4713),e$=t(9935),eB=t(8019);let eW={"chat-completions":{name:"Chat Completions",path:"/chat/completions",icon:eJ.A,description:"Test conversational AI with chat completion requests"},"vision-chat":{name:"Vision Chat (Image + Text)",path:"/chat/completions",icon:eQ.A,description:"Analyze images with text prompts using vision models"},embeddings:{name:"Embeddings",path:"/embeddings",icon:eK.A,description:"Generate embeddings for text input"},images:{name:"Image Generation",path:"/images/generations",icon:eD.A,description:"Generate images from text prompts"},"audio-speech":{name:"Text-to-Speech",path:"/audio/speech",icon:eG.A,description:"Convert text to speech audio"},"audio-transcription":{name:"Audio Transcription",path:"/audio/transcriptions",icon:eV.A,description:"Transcribe audio files to text"},models:{name:"List Models",path:"/model",icon:eK.A,description:"List all available models from the provider"}},eZ={"chat-completions":{systemMessage:"You are a helpful assistant. Please respond concisely.",userMessage:"Hello! Can you tell me what model you are and confirm that you are working correctly?",maxTokens:150,temperature:.7},"vision-chat":{systemMessage:"You are a helpful assistant that can analyze images. Please describe what you see.",userMessage:"What do you see in this image? Please provide a detailed description.",maxTokens:300,temperature:.7,imageDetail:"auto"},embeddings:{input:"The quick brown fox jumps over the lazy dog.",encoding_format:"float"},images:{prompt:"A beautiful sunset over a mountain landscape",n:1,size:"1024x1024",quality:"standard",style:"vivid"},"audio-speech":{input:"Hello, this is a test of the text-to-speech functionality.",voice:"alloy",response_format:"mp3",speed:1},"audio-transcription":{prompt:"This is a test transcription.",response_format:"json",temperature:0,language:""}};function eH(e){var s,t,l,o,d,c,u,m,p,h,j;let y,b,w,_,k,C,{models:M}=e,[A,S]=(0,r.useState)(""),[F,P]=(0,r.useState)("chat-completions"),[R,T]=(0,r.useState)(null),[I,q]=(0,r.useState)(null),[L,Y]=(0,r.useState)(eZ["chat-completions"].systemMessage),[U,O]=(0,r.useState)(eZ["chat-completions"].userMessage),[J,D]=(0,r.useState)(eZ["chat-completions"].maxTokens),[$,B]=(0,r.useState)(eZ["chat-completions"].temperature),[W,H]=(0,r.useState)(eZ["vision-chat"].systemMessage),[X,ee]=(0,r.useState)(eZ["vision-chat"].userMessage),[es,et]=(0,r.useState)(eZ["vision-chat"].maxTokens),[ea,el]=(0,r.useState)(eZ["vision-chat"].temperature),[ei,eo]=(0,r.useState)(eZ["vision-chat"].imageDetail),[ed,ec]=(0,r.useState)(null),[eu,em]=(0,r.useState)(null),[ep,eh]=(0,r.useState)(!1),[ex,eg]=(0,r.useState)(null),[ev,ej]=(0,r.useState)(null),[ef,ey]=(0,r.useState)(null),[eb,eN]=(0,r.useState)(eZ["audio-transcription"].prompt),[ew,e_]=(0,r.useState)(eZ["audio-transcription"].response_format),[ek,eC]=(0,r.useState)(eZ["audio-transcription"].temperature),[eM,eA]=(0,r.useState)(eZ["audio-transcription"].language),eS=(0,r.useRef)(null),eF=(0,r.useRef)(null),[eP,eR]=(0,r.useState)(eZ.embeddings.input),[eT,ez]=(0,r.useState)(eZ.embeddings.encoding_format),[eE,eI]=(0,r.useState)(eZ.images.prompt),[eq,eO]=(0,r.useState)(eZ.images.n),[eJ,eQ]=(0,r.useState)(eZ.images.size),[eH,eX]=(0,r.useState)(eZ.images.quality),[e0,e2]=(0,r.useState)(eZ.images.style),[e4,e1]=(0,r.useState)(eZ["audio-speech"].input),[e5,e3]=(0,r.useState)(eZ["audio-speech"].voice),[e6,e9]=(0,r.useState)(eZ["audio-speech"].response_format),[e8,e7]=(0,r.useState)(eZ["audio-speech"].speed),{data:se=[]}=(0,i.I)({queryKey:["model-groups"],queryFn:()=>eL.getModelGroups(),refetchOnWindowFocus:!1}),ss=M.find(e=>e.id===A),st=e=>{var s;let t=null==(s=e.target.files)?void 0:s[0];t&&(t.type.startsWith("image/")?(ec(t),em(URL.createObjectURL(t))):E.oR.error("Please select a valid image file"))},sa=e=>{var s;let t=null==(s=e.target.files)?void 0:s[0];t&&(t.type.startsWith("audio/")?(eg(t),ej(URL.createObjectURL(t))):E.oR.error("Please select a valid audio file"))},sr=async()=>{try{let e=await navigator.mediaDevices.getUserMedia({audio:!0}),s=new MediaRecorder(e),t=[];s.ondataavailable=e=>{e.data.size>0&&t.push(e.data)},s.onstop=()=>{let s=new Blob(t,{type:"audio/webm"}),a=new File([s],"recording.webm",{type:"audio/webm"});eg(a);let r=URL.createObjectURL(s);ej(r),e.getTracks().forEach(e=>e.stop())},s.start(),ey(s),eh(!0),E.oR.success("Recording started")}catch(e){console.error("Error starting recording:",e),E.oR.error("Failed to start recording. Please check microphone permissions.")}},sl=()=>{ef&&(ef.stop(),ey(null),eh(!1),E.oR.success("Recording stopped"))},si=e=>new Promise((s,t)=>{let a=new FileReader;a.readAsDataURL(e),a.onload=()=>s(a.result),a.onerror=e=>t(e)}),sn=async()=>{if(!ss)return null;switch(F){case"chat-completions":let e=[];return L.trim()&&e.push({role:"system",content:L.trim()}),e.push({role:"user",content:U.trim()}),{model:ss.name,messages:e,max_tokens:J,temperature:$};case"vision-chat":if(!ed)throw Error("Please select an image for vision analysis");let s=await si(ed),t=[];return W.trim()&&t.push({role:"system",content:W.trim()}),t.push({role:"user",content:[{type:"text",text:X.trim()},{type:"image_url",image_url:{url:s,detail:ei}}]}),{model:ss.name,messages:t,max_tokens:es,temperature:ea};case"embeddings":return{model:ss.name,input:eP,encoding_format:eT};case"images":return{model:ss.name,prompt:eE,n:eq,size:eJ,quality:eH,style:e0};case"audio-speech":return{model:ss.name,input:e4,voice:e5,response_format:e6,speed:e8};case"audio-transcription":if(!ex)throw Error("Please record or upload an audio file for transcription");return{model:ss.name,file:ex,prompt:eb.trim()||void 0,response_format:ew,temperature:ek,language:eM.trim()||void 0};default:return null}},so=(0,n.n)({mutationFn:async e=>{if(!ss)throw Error("No model selected");q(null),T(null);try{console.log("Testing endpoint via proxy: ".concat(F)),console.log("Request payload:",e);let s=await eL.testModel(ss.id,F,e);if(!s.success)throw Error(s.error||"Test failed");return s.data}catch(e){throw console.error("API endpoint test error via proxy:",e),Error(e instanceof Error?e.message:"Failed to test endpoint via proxy")}},onSuccess:e=>{T(e),E.oR.success("".concat(eW[F].name," test completed successfully!"))},onError:e=>{let s=(null==e?void 0:e.message)||"Unknown error occurred";q(s),E.oR.error("".concat(eW[F].name," test failed: ").concat(s))}}),sd=async()=>{if(!ss)return void E.oR.error("Please select a model to test");if("chat-completions"===F&&!U.trim())return void E.oR.error("Please enter a test message");if("vision-chat"===F){if(!X.trim())return void E.oR.error("Please enter a test message");if(!ed)return void E.oR.error("Please select an image for vision analysis")}if("embeddings"===F&&!eP.trim())return void E.oR.error("Please enter text for embedding");if("images"===F&&!eE.trim())return void E.oR.error("Please enter an image prompt");if("audio-speech"===F&&!e4.trim())return void E.oR.error("Please enter text for speech synthesis");if("audio-transcription"===F&&!ex)return void E.oR.error("Please record or upload an audio file for transcription");let e=await sn();so.mutate(e)},sc=M.filter(e=>e.isEnabled),su=ss?(e=>{let s=se.find(s=>s.provider===e.provider),t=e.api_key||(null==s?void 0:s.group_api_key),a=e.url;return e.url.startsWith("/")&&(null==s?void 0:s.group_url)&&(a="".concat(s.group_url.replace(/\/$/,"")).concat(e.url)),{apiKey:t,baseUrl:a=a.replace(/\/v1\/.*$/,"").replace(/\/$/,""),group:s}})(ss):null,sm=su?(k=su.baseUrl,C=eW[F].path,"".concat(k).concat(C)):"";return(0,a.jsxs)(en.Zp,{className:"w-full",children:[(0,a.jsxs)(en.aR,{children:[(0,a.jsxs)(en.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(eY.A,{className:"h-5 w-5"}),"API Endpoint Tester"]}),(0,a.jsx)(en.BT,{children:"Comprehensive testing of OpenAI-compatible API endpoints through the secure proxy (resolves CORS and network issues)"})]}),(0,a.jsxs)(en.Wu,{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"model-select",children:"Select Model"}),(0,a.jsxs)(f.l6,{value:A,onValueChange:S,children:[(0,a.jsx)(f.bq,{id:"model-select",children:(0,a.jsx)(f.yv,{placeholder:"Choose a model to test..."})}),(0,a.jsx)(f.gC,{children:sc.map(e=>(0,a.jsx)(f.eb,{value:e.id,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{children:e.name}),(0,a.jsx)(er.E,{variant:"outline",className:"text-xs",children:e.provider}),e.is_free&&(0,a.jsx)(er.E,{variant:"secondary",className:"text-xs",children:"Free"})]})},e.id))})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"endpoint-select",children:"API Endpoint"}),(0,a.jsxs)(f.l6,{value:F,onValueChange:e=>P(e),children:[(0,a.jsx)(f.bq,{id:"endpoint-select",children:(0,a.jsx)(f.yv,{})}),(0,a.jsx)(f.gC,{children:Object.entries(eW).map(e=>{let[s,t]=e,r=t.icon;return(0,a.jsx)(f.eb,{value:s,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(r,{className:"h-4 w-4"}),(0,a.jsx)("span",{children:t.name})]})},s)})})]})]})]}),ss&&su&&(0,a.jsxs)("div",{className:"text-muted-foreground bg-muted space-y-2 rounded-md p-3 text-sm",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(K.A,{className:"h-4 w-4"}),(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Endpoint:"})," ",sm]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(Q.A,{className:"h-4 w-4"}),(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"API Key:"})," ",su.apiKey?"".concat(su.apiKey.substring(0,8),"..."):"Not configured"]}),(0,a.jsx)(er.E,{variant:su.apiKey?"default":"destructive",className:"text-xs",children:ss.api_key_type||"Unknown"})]}),(0,a.jsx)("div",{children:(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Provider:"})," ",ss.provider]})}),(0,a.jsx)("div",{children:(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:"Description:"})," ",eW[F].description]})}),!su.apiKey&&(0,a.jsxs)(V.Fc,{variant:"default",className:"mt-2",children:[(0,a.jsx)(G.A,{className:"h-4 w-4"}),(0,a.jsx)(V.TN,{children:"No API key configured for this model. Testing may still work if the model is free or if authentication is handled elsewhere. For models requiring authentication, please add an API key to the model or its provider group."})]})]}),(()=>{switch(F){case"chat-completions":return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"max-tokens",children:"Max Tokens"}),(0,a.jsx)(g.p,{id:"max-tokens",type:"number",min:1,max:4e3,value:J,onChange:e=>D(parseInt(e.target.value)||150)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"temperature",children:"Temperature"}),(0,a.jsx)(g.p,{id:"temperature",type:"number",min:0,max:2,step:.1,value:$,onChange:e=>B(parseFloat(e.target.value)||.7)})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"system-message",children:"System Message (Optional)"}),(0,a.jsx)(v.T,{id:"system-message",placeholder:"Enter system message...",value:L,onChange:e=>Y(e.target.value),rows:2})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"user-message",children:"Test Message"}),(0,a.jsx)(v.T,{id:"user-message",placeholder:"Enter your test message...",value:U,onChange:e=>O(e.target.value),rows:3})]})]});case"vision-chat":return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"vision-max-tokens",children:"Max Tokens"}),(0,a.jsx)(g.p,{id:"vision-max-tokens",type:"number",min:1,max:4e3,value:es,onChange:e=>et(parseInt(e.target.value)||300)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"vision-temperature",children:"Temperature"}),(0,a.jsx)(g.p,{id:"vision-temperature",type:"number",min:0,max:2,step:.1,value:ea,onChange:e=>el(parseFloat(e.target.value)||.7)})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"vision-system-message",children:"System Message (Optional)"}),(0,a.jsx)(v.T,{id:"vision-system-message",placeholder:"Enter system message...",value:W,onChange:e=>H(e.target.value),rows:2})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"vision-user-message",children:"Test Message"}),(0,a.jsx)(v.T,{id:"vision-user-message",placeholder:"Enter your test message...",value:X,onChange:e=>ee(e.target.value),rows:3})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-detail",children:"Image Detail"}),(0,a.jsxs)(f.l6,{value:ei,onValueChange:e=>eo(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"low",children:"Low"}),(0,a.jsx)(f.eb,{value:"high",children:"High"}),(0,a.jsx)(f.eb,{value:"auto",children:"Auto"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-upload",children:"Upload Image (Optional)"}),(0,a.jsx)(g.p,{type:"file",accept:"image/*",onChange:st,ref:eS,className:"file:mr-4 file:rounded-full file:border-0 file:bg-blue-50 file:px-4 file:py-2 file:text-sm file:font-semibold file:text-blue-700 hover:file:bg-blue-100"}),ed&&(0,a.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,a.jsx)(eD.A,{className:"h-5 w-5 text-blue-500"}),(0,a.jsxs)("span",{className:"text-muted-foreground text-sm",children:["Selected image: ",ed.name]}),(0,a.jsx)(x.$,{variant:"outline",size:"sm",onClick:()=>ec(null),className:"ml-auto",children:"Remove"})]}),eu&&(0,a.jsx)("div",{className:"relative mt-2 aspect-square w-32 overflow-hidden rounded-md border",children:(0,a.jsx)(eB.default,{src:eu,alt:"Image preview",fill:!0,className:"object-cover"})})]})]});case"embeddings":return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"encoding-format",children:"Encoding Format"}),(0,a.jsxs)(f.l6,{value:eT,onValueChange:e=>ez(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"float",children:"Float"}),(0,a.jsx)(f.eb,{value:"base64",children:"Base64"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"embedding-input",children:"Text Input"}),(0,a.jsx)(v.T,{id:"embedding-input",placeholder:"Enter text to generate embeddings for...",value:eP,onChange:e=>eR(e.target.value),rows:4})]})]});case"images":return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-count",children:"Number of Images"}),(0,a.jsx)(g.p,{id:"image-count",type:"number",min:1,max:10,value:eq,onChange:e=>eO(parseInt(e.target.value)||1)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-size",children:"Size"}),(0,a.jsxs)(f.l6,{value:eJ,onValueChange:e=>eQ(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"256x256",children:"256x256"}),(0,a.jsx)(f.eb,{value:"512x512",children:"512x512"}),(0,a.jsx)(f.eb,{value:"1024x1024",children:"1024x1024"}),(0,a.jsx)(f.eb,{value:"1792x1024",children:"1792x1024"}),(0,a.jsx)(f.eb,{value:"1024x1792",children:"1024x1792"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-quality",children:"Quality"}),(0,a.jsxs)(f.l6,{value:eH,onValueChange:e=>eX(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"standard",children:"Standard"}),(0,a.jsx)(f.eb,{value:"hd",children:"HD"})]})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-style",children:"Style"}),(0,a.jsxs)(f.l6,{value:e0,onValueChange:e=>e2(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"vivid",children:"Vivid"}),(0,a.jsx)(f.eb,{value:"natural",children:"Natural"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"image-prompt",children:"Image Prompt"}),(0,a.jsx)(v.T,{id:"image-prompt",placeholder:"Describe the image you want to generate...",value:eE,onChange:e=>eI(e.target.value),rows:3})]})]});case"audio-speech":return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-3",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"speech-voice",children:"Voice"}),(0,a.jsxs)(f.l6,{value:e5,onValueChange:e=>e3(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"alloy",children:"Alloy"}),(0,a.jsx)(f.eb,{value:"echo",children:"Echo"}),(0,a.jsx)(f.eb,{value:"fable",children:"Fable"}),(0,a.jsx)(f.eb,{value:"onyx",children:"Onyx"}),(0,a.jsx)(f.eb,{value:"nova",children:"Nova"}),(0,a.jsx)(f.eb,{value:"shimmer",children:"Shimmer"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"speech-format",children:"Response Format"}),(0,a.jsxs)(f.l6,{value:e6,onValueChange:e=>e9(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"mp3",children:"MP3"}),(0,a.jsx)(f.eb,{value:"opus",children:"Opus"}),(0,a.jsx)(f.eb,{value:"aac",children:"AAC"}),(0,a.jsx)(f.eb,{value:"flac",children:"FLAC"}),(0,a.jsx)(f.eb,{value:"wav",children:"WAV"}),(0,a.jsx)(f.eb,{value:"pcm",children:"PCM"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"speech-speed",children:"Speed"}),(0,a.jsx)(g.p,{id:"speech-speed",type:"number",min:.25,max:4,step:.25,value:e8,onChange:e=>e7(parseFloat(e.target.value)||1)})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"speech-input",children:"Text to Synthesize"}),(0,a.jsx)(v.T,{id:"speech-input",placeholder:"Enter text to convert to speech...",value:e4,onChange:e=>e1(e.target.value),rows:4})]})]});case"audio-transcription":return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"audio-transcription-prompt",children:"Prompt (Optional)"}),(0,a.jsx)(v.T,{id:"audio-transcription-prompt",placeholder:"Enter a prompt for the transcription...",value:eb,onChange:e=>eN(e.target.value),rows:2})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"audio-transcription-temperature",children:"Temperature"}),(0,a.jsx)(g.p,{id:"audio-transcription-temperature",type:"number",min:0,max:1,step:.1,value:ek,onChange:e=>eC(parseFloat(e.target.value)||0)})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"audio-transcription-language",children:"Language (Optional)"}),(0,a.jsx)(g.p,{id:"audio-transcription-language",placeholder:"e.g., en-US, fr-FR",value:eM,onChange:e=>eA(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"audio-transcription-response-format",children:"Response Format"}),(0,a.jsxs)(f.l6,{value:ew,onValueChange:e=>e_(e),children:[(0,a.jsx)(f.bq,{children:(0,a.jsx)(f.yv,{})}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"json",children:"JSON"}),(0,a.jsx)(f.eb,{value:"text",children:"Text"}),(0,a.jsx)(f.eb,{value:"srt",children:"SRT"}),(0,a.jsx)(f.eb,{value:"verbose_json",children:"Verbose JSON"}),(0,a.jsx)(f.eb,{value:"vtt",children:"VTT"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Voice Recording"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(x.$,{type:"button",variant:ep?"destructive":"default",size:"sm",onClick:ep?sl:sr,className:"flex items-center gap-2",children:ep?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(e$.A,{className:"h-4 w-4"}),"Stop Recording"]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eG.A,{className:"h-4 w-4"}),"Start Recording"]})}),ep&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-red-600",children:[(0,a.jsx)("div",{className:"h-2 w-2 animate-pulse rounded-full bg-red-600"}),(0,a.jsx)("span",{className:"text-sm",children:"Recording..."})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{htmlFor:"audio-transcription-upload",children:"Or Upload Audio File"}),(0,a.jsx)(g.p,{type:"file",accept:"audio/*",onChange:sa,ref:eF,className:"file:mr-4 file:rounded-full file:border-0 file:bg-blue-50 file:px-4 file:py-2 file:text-sm file:font-semibold file:text-blue-700 hover:file:bg-blue-100"}),ex&&(0,a.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,a.jsx)(eV.A,{className:"h-5 w-5 text-blue-500"}),(0,a.jsxs)("span",{className:"text-muted-foreground text-sm",children:["Selected audio: ",ex.name]}),(0,a.jsx)(x.$,{variant:"outline",size:"sm",onClick:()=>{eg(null),ej(null)},className:"ml-auto",children:"Remove"})]}),ev&&(0,a.jsx)("div",{className:"bg-muted mt-2 rounded-md p-4",children:(0,a.jsx)("audio",{controls:!0,src:ev,className:"w-full",children:"Your browser does not support the audio element."})})]})]})]});case"models":return(0,a.jsx)("div",{className:"space-y-4",children:(0,a.jsxs)(V.Fc,{children:[(0,a.jsx)(eK.A,{className:"h-4 w-4"}),(0,a.jsx)(V.TN,{children:"This endpoint lists all available models from the provider. No additional parameters are required."})]})});default:return null}})(),(0,a.jsx)(x.$,{onClick:sd,disabled:!A||so.isPending,className:"w-full",children:so.isPending?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Testing ",eW[F].name,"..."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eY.A,{className:"mr-2 h-4 w-4"}),"Test ",eW[F].name]})}),I&&(0,a.jsxs)(V.Fc,{variant:"destructive",children:[(0,a.jsx)(eU.A,{className:"h-4 w-4"}),(0,a.jsxs)(V.TN,{children:[(0,a.jsx)("strong",{children:"Test Failed:"})," ",I]})]}),R&&(0,a.jsxs)(V.Fc,{children:[(0,a.jsx)(Z.A,{className:"h-4 w-4"}),(0,a.jsxs)(V.TN,{children:[(0,a.jsx)("strong",{children:"Test Successful!"})," ",eW[F].name," endpoint responded correctly."]})]}),R&&(R?"type"in(y=R)&&"audio"===y.type?(0,a.jsx)("div",{className:"space-y-4",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Generated Audio"}),(0,a.jsxs)("div",{className:"bg-muted rounded-md p-4",children:[(0,a.jsx)("audio",{controls:!0,src:R.url,className:"w-full",children:"Your browser does not support the audio element."}),(0,a.jsxs)("p",{className:"text-muted-foreground mt-2 text-sm",children:["Audio file size: ",(R.size/1024).toFixed(2)," KB"]})]})]})}):"text"in R?(0,a.jsx)("div",{className:"space-y-4",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Transcription Result"}),(0,a.jsx)("div",{className:"bg-muted rounded-md p-4",children:(0,a.jsx)("p",{className:"text-sm whitespace-pre-wrap",children:R.text||"No transcription result available"})})]})}):"choices"in R?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Model Response"}),(0,a.jsx)("div",{className:"bg-muted rounded-md p-4",children:(0,a.jsx)("p",{className:"text-sm whitespace-pre-wrap",children:(null==(l=R.choices)||null==(t=l[0])||null==(s=t.message)?void 0:s.content)||"No content in response"})})]}),R.usage&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Usage Statistics"}),(0,a.jsxs)("div",{className:"grid grid-cols-3 gap-4 text-sm",children:[(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center",children:[(0,a.jsx)("div",{className:"font-semibold",children:R.usage.prompt_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Prompt Tokens"})]}),(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center",children:[(0,a.jsx)("div",{className:"font-semibold",children:R.usage.completion_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Completion Tokens"})]}),(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center",children:[(0,a.jsx)("div",{className:"font-semibold",children:R.usage.total_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Total Tokens"})]})]})]})]}):"data"in(b=R)&&Array.isArray(b.data)&&b.data.length>0&&"embedding"in b.data[0]?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Embedding Vector"}),(0,a.jsxs)("div",{className:"bg-muted rounded-md p-4",children:[(0,a.jsxs)("p",{className:"text-muted-foreground mb-2 text-sm",children:["Generated ",(null==(c=R.data)||null==(d=c[0])||null==(o=d.embedding)?void 0:o.length)||0," ","dimensional embedding vector"]}),(0,a.jsxs)("details",{className:"group",children:[(0,a.jsx)("summary",{className:"hover:text-foreground cursor-pointer text-sm",children:"Show first 10 values"}),(0,a.jsxs)("pre",{className:"mt-2 text-xs",children:[JSON.stringify(null==(p=R.data)||null==(m=p[0])||null==(u=m.embedding)?void 0:u.slice(0,10),null,2),"..."]})]})]})]}),R.usage&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Usage Statistics"}),(0,a.jsxs)("div",{className:"bg-muted rounded p-2 text-center text-sm",children:[(0,a.jsx)("div",{className:"font-semibold",children:R.usage.total_tokens}),(0,a.jsx)("div",{className:"text-muted-foreground",children:"Total Tokens"})]})]})]}):"data"in(w=R)&&Array.isArray(w.data)&&w.data.length>0&&"url"in w.data[0]?(0,a.jsx)("div",{className:"space-y-4",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Generated Images"}),(0,a.jsx)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:null==(h=R.data)?void 0:h.map((e,s)=>(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("div",{className:"relative aspect-square w-full",children:(0,a.jsx)(eB.default,{src:e.url,alt:"Generated image ".concat(s+1),fill:!0,className:"rounded-md border object-cover",unoptimized:!0})}),e.revised_prompt&&(0,a.jsxs)("p",{className:"text-muted-foreground text-xs",children:["Revised prompt: ",e.revised_prompt]})]},s))})]})}):"data"in(_=R)&&Array.isArray(_.data)&&_.data.length>0&&"id"in _.data[0]?(0,a.jsx)("div",{className:"space-y-4",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Available Models"}),(0,a.jsx)("div",{className:"max-h-60 overflow-auto",children:(0,a.jsx)("div",{className:"grid gap-2",children:null==(j=R.data)?void 0:j.map(e=>(0,a.jsxs)("div",{className:"bg-muted rounded-md p-3",children:[(0,a.jsx)("div",{className:"font-medium",children:e.id}),e.object&&(0,a.jsxs)("div",{className:"text-muted-foreground text-sm",children:["Type: ",e.object]}),e.created&&(0,a.jsxs)("div",{className:"text-muted-foreground text-sm",children:["Created:"," ",new Date(1e3*e.created).toLocaleDateString()]})]},e.id))})})]})}):null:null),R&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(N.J,{children:"Raw Response"}),(0,a.jsxs)("details",{className:"group",children:[(0,a.jsxs)("summary",{className:"text-muted-foreground hover:text-foreground cursor-pointer text-sm",children:[(0,a.jsx)(G.A,{className:"mr-1 inline h-4 w-4"}),"Show detailed response data"]}),(0,a.jsx)("pre",{className:"bg-muted mt-2 max-h-60 overflow-auto rounded-md p-4 text-xs",children:JSON.stringify(R,null,2)})]})]})]})]})}var eX=t(484),e0=t(2612),e2=t(9680);function e4(e){let{models:s,onFilteredModelsChange:t,className:l}=e,[i,n]=(0,r.useState)(""),[o,d]=(0,r.useState)("name-asc"),c=(0,r.useMemo)(()=>{let e=[...s];if(i.trim()){let s=i.toLowerCase().trim();e=e.filter(e=>e.name.toLowerCase().includes(s)||e.full_name.toLowerCase().includes(s)||e.provider.toLowerCase().includes(s)||e.description&&e.description.toLowerCase().includes(s)||e.modelType.toLowerCase().includes(s))}return e.sort((e,s)=>{switch(o){case"name-asc":return e.name.localeCompare(s.name);case"name-desc":return s.name.localeCompare(e.name);case"price-asc":return(e.is_free?0:(e.input_cost||0)+(e.output_cost||0))-(s.is_free?0:(s.input_cost||0)+(s.output_cost||0));case"price-desc":{let t=e.is_free?0:(e.input_cost||0)+(e.output_cost||0);return(s.is_free?0:(s.input_cost||0)+(s.output_cost||0))-t}default:return 0}}),e},[s,i,o]);r.useEffect(()=>{t(c)},[c,t]);let u=""!==i.trim()||"name-asc"!==o;return(0,a.jsxs)("div",{className:(0,b.cn)("flex flex-col gap-4 sm:flex-row sm:items-center sm:gap-3",l),children:[(0,a.jsxs)("div",{className:"relative flex-1",children:[(0,a.jsx)(eX.A,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),(0,a.jsx)(g.p,{placeholder:"Search models by name, provider, or description...",value:i,onChange:e=>n(e.target.value),className:"pl-9"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)(f.l6,{value:o,onValueChange:e=>d(e),children:[(0,a.jsxs)(f.bq,{className:"w-full sm:w-[180px]",children:[(0,a.jsx)(e0.A,{className:"mr-2 h-4 w-4"}),(0,a.jsx)(f.yv,{placeholder:"Sort by"})]}),(0,a.jsxs)(f.gC,{children:[(0,a.jsx)(f.eb,{value:"name-asc",children:"Name (A-Z)"}),(0,a.jsx)(f.eb,{value:"name-desc",children:"Name (Z-A)"}),(0,a.jsx)(f.eb,{value:"price-asc",children:"Price (Low to High)"}),(0,a.jsx)(f.eb,{value:"price-desc",children:"Price (High to Low)"})]})]}),u&&(0,a.jsx)(x.$,{variant:"outline",size:"icon",onClick:()=>{n(""),d("name-asc")},className:"h-9 w-9",title:"Clear filters",children:(0,a.jsx)(e2.A,{className:"h-4 w-4"})})]})]})}var e1=t(953),e5=t(7569),e3=t(4756),e6=t(6839);function e9(){let[e,s]=(0,r.useState)([]),{data:t,isLoading:l,error:n}=(0,i.I)({queryKey:["admin-models-with-providers"],queryFn:()=>o.zQ.getModelsWithProviders(),refetchOnWindowFocus:!1}),{models:d=[],groups:c=[]}=t||{},u=(0,r.useMemo)(()=>d?d.reduce((e,s)=>{let t=s.provider;return e[t]||(e[t]=[]),e[t].push(s),e},{}):{},[d]),m=(0,r.useMemo)(()=>new Map(c.map(e=>[e.provider,e])),[c]),p=(0,r.useMemo)(()=>Object.entries(u).map(e=>{let[s,t]=e,a=m.get(s);return{provider:s,activeModels:t.filter(e=>!e.soft_deleted).length,totalModels:t.length,groupData:a,hasGroupUrl:!!(null==a?void 0:a.group_url),hasGroupApiKey:!!(null==a?void 0:a.group_api_key)}}),[u,m]);return(0,a.jsxs)(e1.SidebarProvider,{children:[(0,a.jsx)(e5.AppSidebar,{variant:"inset"}),(0,a.jsxs)(e1.SidebarInset,{children:[(0,a.jsx)(e3.SiteHeader,{}),(0,a.jsx)("div",{className:"flex flex-1 flex-col",children:(0,a.jsxs)("div",{className:"@container/main flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-8",children:[(0,a.jsx)("div",{className:"mb-6 flex items-center justify-between",children:(0,a.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:"Model Management & API Testing"})}),(0,a.jsxs)(e6.tU,{defaultValue:"manage",className:"w-full",children:[(0,a.jsx)(e6.j7,{className:"grid w-full grid-cols-3",children:(0,a.jsx)(e6.Xi,{value:"manage",children:"Manage Models"})}),(0,a.jsxs)(e6.av,{value:"manage",className:"space-y-4",children:[(0,a.jsx)("div",{className:"text-muted-foreground text-sm",children:"Manage your AI models organized by provider groups. Configure API keys, and organize models by provider groups."}),l?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(eo.E,{className:"h-[60px] w-full"}),(0,a.jsx)(eo.E,{className:"h-[400px] w-full"})]}):n?(0,a.jsxs)(V.Fc,{variant:"destructive",children:[(0,a.jsx)(W.A,{className:"h-4 w-4"}),(0,a.jsx)(V.TN,{children:"Failed to load models. Please try refreshing the page."})]}):(0,a.jsx)(e6.tU,{defaultValue:"all",className:"w-full",children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"rounded-lg border p-1",children:(0,a.jsxs)(e6.j7,{className:"grid w-full max-w-full auto-cols-fr grid-flow-col overflow-x-auto",children:[(0,a.jsxs)(e6.Xi,{value:"all",className:"flex items-center gap-2",children:[(0,a.jsx)(K.A,{className:"h-4 w-4"}),"All Models",(0,a.jsx)(er.E,{variant:"secondary",className:"ml-1",children:d.length})]}),p.map(e=>{let{provider:s,activeModels:t,totalModels:r}=e;return(0,a.jsxs)(e6.Xi,{value:s,className:"flex min-w-fit items-center gap-2",children:[(0,a.jsx)(J.A,{className:"h-4 w-4"}),s,(0,a.jsx)("div",{className:"flex items-center gap-1",children:(0,a.jsxs)(er.E,{variant:"secondary",className:"ml-1",children:[t,"/",r]})})]},s)})]})}),(0,a.jsx)(e6.av,{value:"all",children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"text-muted-foreground text-sm",children:"Overview of all models across all provider groups."}),(0,a.jsx)(e4,{models:d,onFilteredModelsChange:s}),(0,a.jsx)(ez,{filteredModels:e})]})}),Object.entries(u).map(e=>{let[s,t]=e,r=m.get(s);return(0,a.jsx)(e6.av,{value:s,children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{children:[(0,a.jsxs)("h3",{className:"flex items-center gap-2 text-lg font-semibold",children:[(0,a.jsx)(J.A,{className:"h-5 w-5"}),s]}),(0,a.jsxs)("div",{className:"text-muted-foreground flex items-center gap-4 text-sm",children:[t.filter(e=>e.soft_deleted).length>0&&(0,a.jsxs)("span",{className:"text-orange-600",children:[t.filter(e=>e.soft_deleted).length," ","soft deleted"]}),(null==r?void 0:r.group_url)&&(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)(K.A,{className:"h-3 w-3"}),r.group_url]})]})]})}),(0,a.jsx)(ez,{filterProvider:s,groupData:r,showProviderActions:!0})]})},s)})]})})]}),(0,a.jsxs)(e6.av,{value:"test-basic",className:"space-y-4",children:[(0,a.jsx)("div",{className:"text-muted-foreground text-sm",children:"Test model credentials and connectivity with basic chat completion requests through the secure proxy (resolves CORS and Docker network issues). Models can be tested even without API keys configured (useful for free models or when authentication is handled elsewhere)."}),l?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(eo.E,{className:"h-[200px] w-full"}),(0,a.jsx)(eo.E,{className:"h-[100px] w-full"})]}):n?(0,a.jsxs)(V.Fc,{variant:"destructive",children:[(0,a.jsx)(W.A,{className:"h-4 w-4"}),(0,a.jsx)(V.TN,{children:"Failed to load models for testing. Please try refreshing the page."})]}):(0,a.jsx)(eO,{models:d})]}),(0,a.jsxs)(e6.av,{value:"test-api",className:"space-y-4",children:[(0,a.jsx)("div",{className:"text-muted-foreground text-sm",children:"Comprehensive testing of all OpenAI API endpoints including chat completions, embeddings, image generation, audio synthesis, and model listing through the secure proxy (resolves CORS and Docker network issues). Models can be tested with or without API keys configured."}),l?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(eo.E,{className:"h-[300px] w-full"}),(0,a.jsx)(eo.E,{className:"h-[200px] w-full"})]}):n?(0,a.jsxs)(V.Fc,{variant:"destructive",children:[(0,a.jsx)(W.A,{className:"h-4 w-4"}),(0,a.jsx)(V.TN,{children:"Failed to load models for API testing. Please try refreshing the page."})]}):(0,a.jsx)(eH,{models:d})]})]})]})})]})]})}},8561:(e,s,t)=>{"use strict";t.d(s,{E:()=>n});var a=t(3422);t(4398);var r=t(4676),l=t(9183);let i=(0,r.F)("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground",success:"border-transparent bg-green-500 text-white hover:bg-green-500/80",warning:"border-transparent bg-yellow-500 text-white hover:bg-yellow-500/80",error:"border-transparent bg-red-500 text-white hover:bg-red-500/80"}},defaultVariants:{variant:"default"}});function n(e){let{className:s,variant:t,...r}=e;return(0,a.jsx)("div",{className:(0,l.cn)(i({variant:t}),s),...r})}},9442:(e,s,t)=>{"use strict";t.d(s,{Fc:()=>n,TN:()=>o});var a=t(3422);t(4398);var r=t(4676),l=t(9183);let i=(0,r.F)("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function n(e){let{className:s,variant:t,...r}=e;return(0,a.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,l.cn)(i({variant:t}),s),...r})}function o(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"alert-description",className:(0,l.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",s),...t})}}},e=>{var s=s=>e(e.s=s);e.O(0,[363,222,808,29,730,978,481,982,826,236,601,945,497,358],()=>s(6715)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ui_out/_next/static/chunks/app/page-521ee9b11aefe1b2.js b/ui_out/_next/static/chunks/app/page-521ee9b11aefe1b2.js new file mode 100644 index 00000000..b8a483a2 --- /dev/null +++ b/ui_out/_next/static/chunks/app/page-521ee9b11aefe1b2.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{159:(e,t,s)=>{"use strict";s.d(t,{DetailedWalletBalance:()=>k});var a=s(3422),l=s(4398),n=s(2349);let r=(0,s(3929).A)("wallet",[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]]);var i=s(3728),c=s(2434),d=s(9675),o=s(9945),x=s(7916);o.Ik({token:o.Yj().min(1)}),o.Ik({success:o.zM(),amount:o.ai().optional(),message:o.Yj().optional()}),o.Ik({amount:o.ai().positive(),offline:o.zM().optional()}),o.Ik({token:o.Yj(),balance:o.ai(),npub:o.Yj().optional()});class m{static async redeemToken(e){try{return await x.apiClient.post("/api/wallet/redeem",{token:e})}catch(e){return console.error("Error redeeming token:",e),{success:!1,message:"Failed to redeem token. Please try again."}}}static async sendToken(e){try{return await x.apiClient.post("/api/wallet/send",{amount:e})}catch(e){throw console.error("Error generating token:",e),Error("Failed to generate token. Please try again.")}}static async getBalance(){try{return await x.apiClient.get("/api/wallet/balance")}catch(e){throw console.error("Error fetching balance:",e),e}}static async getDetailedBalances(){try{return await x.apiClient.get("/admin/api/balances")}catch(e){throw console.error("Error fetching detailed balances:",e),e}}static async withdraw(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"sat";try{return await x.apiClient.post("/admin/withdraw",{amount:e,mint_url:t,unit:s})}catch(e){throw console.error("Error withdrawing funds:",e),e}}}var h=s(2738),u=s(3648),p=s(6013),g=s(6320),f=s(268),j=s(3130),v=s(2264),b=s(246),N=s(2533);function y(e){let{open:t,onOpenChange:s,balances:n,onSuccess:r}=e,[i,c]=(0,l.useState)(""),[o,x]=(0,l.useState)(""),[h,y]=(0,l.useState)(""),[w,k]=(0,l.useState)(!1),_=n.filter(e=>!e.error&&e.wallet_balance>0),C=_.find(e=>"".concat(e.mint_url,"|").concat(e.unit)===i),A=(0,p.n)({mutationFn:async()=>{if(!C)throw Error("No balance selected");let e=parseInt(o);if(isNaN(e)||e<=0)throw Error("Invalid amount");return m.withdraw(e,C.mint_url,C.unit)},onSuccess:e=>{y(e.token),null==r||r()}});(0,l.useEffect)(()=>{C&&x((C.owner_balance>0?C.owner_balance:0).toString())},[C]),(0,l.useEffect)(()=>{t||(y(""),x(""),c(""),k(!1))},[t]);let z=parseInt(o)||0,S=C&&z>C.owner_balance&&z<=C.wallet_balance;return h?(0,a.jsx)(g.lG,{open:t,onOpenChange:s,children:(0,a.jsxs)(g.Cf,{className:"sm:max-w-xl",children:[(0,a.jsxs)(g.c7,{children:[(0,a.jsx)(g.L3,{children:"Withdrawal Successful"}),(0,a.jsx)(g.rr,{children:"Save this token! It represents your withdrawn balance."})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"rounded-lg border border-green-200 bg-green-50 p-4 dark:border-green-800 dark:bg-green-950",children:[(0,a.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,a.jsx)(b.A,{className:"h-5 w-5 text-green-600"}),(0,a.jsx)("span",{className:"font-semibold text-green-900 dark:text-green-100",children:"Withdrawal Token"})]}),(0,a.jsx)("div",{className:"rounded-md bg-gray-900 p-3 font-mono text-xs break-all text-green-400",children:h})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(u.$,{onClick:()=>{navigator.clipboard.writeText(h),k(!0),setTimeout(()=>k(!1),2e3)},className:"flex-1",variant:w?"outline":"default",children:w?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(b.A,{className:"mr-2 h-4 w-4"}),"Copied!"]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(N.A,{className:"mr-2 h-4 w-4"}),"Copy Token"]})}),(0,a.jsx)(u.$,{onClick:()=>s(!1),variant:"outline",children:"Close"})]})]})]})}):(0,a.jsx)(g.lG,{open:t,onOpenChange:s,children:(0,a.jsxs)(g.Cf,{className:"sm:max-w-md",children:[(0,a.jsxs)(g.c7,{children:[(0,a.jsx)(g.L3,{children:"Withdraw Balance"}),(0,a.jsx)(g.rr,{children:"Select mint and currency, then enter the amount to withdraw."})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(j.J,{htmlFor:"mint-select",children:"Mint / Currency"}),(0,a.jsxs)(v.l6,{value:i,onValueChange:c,children:[(0,a.jsx)(v.bq,{id:"mint-select",children:(0,a.jsx)(v.yv,{placeholder:"Select mint and currency"})}),(0,a.jsx)(v.gC,{children:_.map(e=>(0,a.jsxs)(v.eb,{value:"".concat(e.mint_url,"|").concat(e.unit),children:[e.mint_url.replace("https://","").replace("http://","")," ","• ",e.unit.toUpperCase()," (",e.owner_balance,")"]},"".concat(e.mint_url,"|").concat(e.unit)))})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(j.J,{htmlFor:"amount",children:"Amount"}),(0,a.jsx)(f.p,{id:"amount",type:"number",min:"1",value:o,onChange:e=>x(e.target.value),placeholder:"Enter amount"}),C&&(0,a.jsxs)("div",{className:"space-y-1 text-xs",children:[(0,a.jsxs)("p",{className:"text-muted-foreground",children:["Maximum:"," ",(0,a.jsxs)("span",{className:"font-semibold",children:[C.wallet_balance," ",C.unit]})]}),(0,a.jsxs)("p",{className:"text-muted-foreground",children:["Your recommended balance:"," ",(0,a.jsxs)("span",{className:"font-semibold",children:[C.owner_balance," ",C.unit]})]})]})]}),S&&(0,a.jsxs)("div",{className:"bg-destructive/10 text-destructive flex items-start gap-2 rounded-md p-3 text-sm",children:[(0,a.jsx)(d.A,{className:"mt-0.5 h-5 w-5 flex-shrink-0"}),(0,a.jsx)("span",{children:"Warning: Withdrawing more than your balance will use user funds!"})]}),A.isError&&(0,a.jsxs)("div",{className:"bg-destructive/10 text-destructive flex items-start gap-2 rounded-md p-3 text-sm",children:[(0,a.jsx)(d.A,{className:"mt-0.5 h-5 w-5 flex-shrink-0"}),(0,a.jsx)("span",{children:A.error.message||"Failed to withdraw"})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(u.$,{onClick:()=>A.mutate(),disabled:!i||!o||A.isPending||z<=0||C&&z>C.wallet_balance,className:"flex-1",children:A.isPending?"Withdrawing...":"Withdraw"}),(0,a.jsx)(u.$,{onClick:()=>s(!1),variant:"outline",disabled:A.isPending,children:"Cancel"})]})]})]})})}var w=s(9183);function k(e){let t,s,o,{refreshInterval:x=1e4}=e,[p,g]=(0,l.useState)(!1),{data:f,isLoading:j,isError:v,error:b,isFetching:N,refetch:k}=(0,n.I)({queryKey:["detailed-wallet-balance"],queryFn:async()=>m.getDetailedBalances(),refetchInterval:x}),_=f?(t=0,s=0,o=0,f.forEach(e=>{e.error||(t+=e.wallet_balance||0,s+=e.user_balance||0,o+=e.owner_balance||0)}),{totalWallet:t,totalUser:s,totalOwner:o}):{totalWallet:0,totalUser:0,totalOwner:0};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(h.Zp,{className:"h-full w-full shadow-sm",children:[(0,a.jsxs)(h.aR,{className:"pb-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)(h.ZB,{className:"text-xl",children:"Cashu Wallet Balance"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsxs)(u.$,{variant:"default",size:"sm",onClick:()=>g(!0),disabled:j||!f||0===f.length,children:[(0,a.jsx)(r,{className:"mr-2 h-4 w-4"}),"Withdraw"]}),(0,a.jsxs)(u.$,{variant:"ghost",size:"icon",onClick:()=>k(),disabled:j||N,className:"h-8 w-8",children:[(0,a.jsx)(i.A,{className:(0,w.cn)("h-4 w-4",(N||j)&&"animate-spin")}),(0,a.jsx)("span",{className:"sr-only",children:"Refresh balance"})]})]})]}),(0,a.jsx)(h.BT,{children:"Detailed balance breakdown by mint and currency"})]}),(0,a.jsx)(h.Wu,{children:j?(0,a.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,a.jsx)(c.A,{className:"text-primary h-8 w-8 animate-spin"})}):v?(0,a.jsxs)("div",{className:"bg-destructive/10 text-destructive flex items-center space-x-2 rounded-md p-4",children:[(0,a.jsx)(d.A,{className:"h-5 w-5"}),(0,a.jsxs)("span",{children:["Error loading balance: ",b.message]})]}):(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-muted-foreground text-sm",children:"Your Balance (Total)"}),(0,a.jsxs)("span",{className:"text-2xl font-bold text-green-600",children:[_.totalOwner.toLocaleString()," sats"]})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-muted-foreground text-sm",children:"Total Wallet"}),(0,a.jsxs)("span",{className:"text-lg font-semibold",children:[_.totalWallet.toLocaleString()," sats"]})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-muted-foreground text-sm",children:"User Balance"}),(0,a.jsxs)("span",{className:"text-lg font-semibold",children:[_.totalUser.toLocaleString()," sats"]})]})]}),(0,a.jsx)("p",{className:"text-muted-foreground text-xs",children:"Your balance = Total wallet - User balance"}),(0,a.jsxs)("div",{className:"overflow-hidden rounded-lg border",children:[(0,a.jsxs)("div",{className:"bg-muted grid grid-cols-4 gap-2 p-3 text-sm font-semibold",children:[(0,a.jsx)("div",{children:"Mint / Unit"}),(0,a.jsx)("div",{className:"text-right",children:"Wallet"}),(0,a.jsx)("div",{className:"text-right",children:"Users"}),(0,a.jsx)("div",{className:"text-right",children:"Owner"})]}),f&&f.length>0?f.filter(e=>e.wallet_balance&&e.wallet_balance>0||e.error).map((e,t)=>(0,a.jsxs)("div",{className:(0,w.cn)("grid grid-cols-4 gap-2 border-t p-3 text-sm",e.error&&"bg-destructive/10 text-destructive"),children:[(0,a.jsxs)("div",{className:"text-xs break-all",children:[e.mint_url.replace("https://","").replace("http://","")," ","• ",e.unit.toUpperCase()]}),(0,a.jsx)("div",{className:"text-right font-mono",children:e.error?"error":e.wallet_balance.toLocaleString()}),(0,a.jsx)("div",{className:"text-right font-mono",children:e.error?"-":e.user_balance.toLocaleString()}),(0,a.jsx)("div",{className:(0,w.cn)("text-right font-mono",!e.error&&e.owner_balance>0&&"font-semibold text-green-600"),children:e.error?"-":e.owner_balance.toLocaleString()})]},t)):(0,a.jsx)("div",{className:"text-muted-foreground p-4 text-center text-sm",children:"No balances to display"})]})]})})]}),(0,a.jsx)(y,{open:p,onOpenChange:g,balances:f||[],onSuccess:()=>{k()}})]})}},246:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(3929).A)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},1551:(e,t,s)=>{Promise.resolve().then(s.bind(s,7569)),Promise.resolve().then(s.bind(s,159)),Promise.resolve().then(s.bind(s,4756)),Promise.resolve().then(s.bind(s,2483)),Promise.resolve().then(s.bind(s,953))},2264:(e,t,s)=>{"use strict";s.d(t,{bq:()=>x,eb:()=>h,gC:()=>m,l6:()=>d,yv:()=>o});var a=s(3422);s(4398);var l=s(3439),n=s(9994),r=s(8940),i=s(4967),c=s(9183);function d(e){let{...t}=e;return(0,a.jsx)(l.bL,{"data-slot":"select",...t})}function o(e){let{...t}=e;return(0,a.jsx)(l.WT,{"data-slot":"select-value",...t})}function x(e){let{className:t,size:s="default",children:r,...i}=e;return(0,a.jsxs)(l.l9,{"data-slot":"select-trigger","data-size":s,className:(0,c.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...i,children:[r,(0,a.jsx)(l.In,{asChild:!0,children:(0,a.jsx)(n.A,{className:"size-4 opacity-50"})})]})}function m(e){let{className:t,children:s,position:n="popper",...r}=e;return(0,a.jsx)(l.ZL,{children:(0,a.jsxs)(l.UC,{"data-slot":"select-content",className:(0,c.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===n&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,...r,children:[(0,a.jsx)(u,{}),(0,a.jsx)(l.LM,{className:(0,c.cn)("p-1","popper"===n&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:s}),(0,a.jsx)(p,{})]})})}function h(e){let{className:t,children:s,...n}=e;return(0,a.jsxs)(l.q7,{"data-slot":"select-item",className:(0,c.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...n,children:[(0,a.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,a.jsx)(l.VF,{children:(0,a.jsx)(r.A,{className:"size-4"})})}),(0,a.jsx)(l.p4,{children:s})]})}function u(e){let{className:t,...s}=e;return(0,a.jsx)(l.PP,{"data-slot":"select-scroll-up-button",className:(0,c.cn)("flex cursor-default items-center justify-center py-1",t),...s,children:(0,a.jsx)(i.A,{className:"size-4"})})}function p(e){let{className:t,...s}=e;return(0,a.jsx)(l.wn,{"data-slot":"select-scroll-down-button",className:(0,c.cn)("flex cursor-default items-center justify-center py-1",t),...s,children:(0,a.jsx)(n.A,{className:"size-4"})})}},2434:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(3929).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},2483:(e,t,s)=>{"use strict";s.d(t,{TemporaryBalances:()=>j});var a=s(3422),l=s(4398),n=s(2349),r=s(5195),i=s(3728),c=s(2434),d=s(9675),o=s(3929);let x=(0,o.A)("dollar-sign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]]),m=(0,o.A)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]),h=(0,o.A)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);var u=s(9119),p=s(2738),g=s(3648),f=s(9183);function j(e){let t,s,o,{refreshInterval:j=1e4}=e,[v,b]=(0,l.useState)(""),{data:N,isLoading:y,isError:w,error:k,isFetching:_,refetch:C}=(0,n.I)({queryKey:["temporary-balances"],queryFn:async()=>u.zQ.getTemporaryBalances(),refetchInterval:j}),A=e=>"".concat(e.toLocaleString()," msat"),z=N?N.filter(e=>{var t;return e.hashed_key.toLowerCase().includes(v.toLowerCase())||(null==(t=e.refund_address)?void 0:t.toLowerCase().includes(v.toLowerCase()))}):[],S=N?(t=0,s=0,o=0,N.forEach(e=>{t+=e.balance||0,s+=e.total_spent||0,o+=e.total_requests||0}),{totalBalance:t,totalSpent:s,totalRequests:o}):{totalBalance:0,totalSpent:0,totalRequests:0};return(0,a.jsx)(a.Fragment,{children:(0,a.jsxs)(p.Zp,{className:"h-full w-full shadow-sm",children:[(0,a.jsxs)(p.aR,{className:"pb-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)(p.ZB,{className:"flex items-center gap-2 text-xl",children:[(0,a.jsx)(r.A,{className:"h-5 w-5"}),"Temporary Balances"]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{type:"text",placeholder:"Search by key or address...",value:v,onChange:e=>b(e.target.value),className:"focus:ring-primary/20 w-64 rounded-md border py-2 pr-3 pl-8 text-sm focus:ring-2 focus:outline-none"}),(0,a.jsx)(r.A,{className:"text-muted-foreground absolute top-2.5 left-2 h-4 w-4"})]}),(0,a.jsxs)(g.$,{variant:"ghost",size:"icon",onClick:()=>C(),disabled:y||_,className:"h-8 w-8",children:[(0,a.jsx)(i.A,{className:(0,f.cn)("h-4 w-4",(_||y)&&"animate-spin")}),(0,a.jsx)("span",{className:"sr-only",children:"Refresh temporary balances"})]})]})]}),(0,a.jsx)(p.BT,{children:"API keys with their current balances and usage statistics"})]}),(0,a.jsx)(p.Wu,{children:y?(0,a.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,a.jsx)(c.A,{className:"text-primary h-8 w-8 animate-spin"})}):w?(0,a.jsxs)("div",{className:"bg-destructive/10 text-destructive flex items-center space-x-2 rounded-md p-4",children:[(0,a.jsx)(d.A,{className:"h-5 w-5"}),(0,a.jsxs)("span",{children:["Error loading temporary balances: ",k.message]})]}):(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"mb-6 grid grid-cols-1 gap-4 md:grid-cols-3",children:[(0,a.jsxs)("div",{className:"rounded-lg border border-blue-200 bg-gradient-to-r from-blue-50 to-indigo-50 p-4",children:[(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(x,{className:"h-5 w-5 text-blue-600"}),(0,a.jsx)("span",{className:"text-sm font-medium text-blue-800",children:"Total Balance"})]})}),(0,a.jsx)("div",{className:"mt-2 text-2xl font-bold text-blue-900",children:A(S.totalBalance)})]}),(0,a.jsxs)("div",{className:"rounded-lg border border-green-200 bg-gradient-to-r from-green-50 to-emerald-50 p-4",children:[(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(m,{className:"h-5 w-5 text-green-600"}),(0,a.jsx)("span",{className:"text-sm font-medium text-green-800",children:"Total Spent"})]})}),(0,a.jsx)("div",{className:"mt-2 text-2xl font-bold text-green-900",children:A(S.totalSpent)})]}),(0,a.jsxs)("div",{className:"rounded-lg border border-purple-200 bg-gradient-to-r from-purple-50 to-pink-50 p-4",children:[(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(r.A,{className:"h-5 w-5 text-purple-600"}),(0,a.jsx)("span",{className:"text-sm font-medium text-purple-800",children:"Total Requests"})]})}),(0,a.jsx)("div",{className:"mt-2 text-2xl font-bold text-purple-900",children:S.totalRequests.toLocaleString()})]})]}),(0,a.jsxs)("div",{className:"overflow-hidden rounded-lg border",children:[(0,a.jsxs)("div",{className:"bg-muted grid grid-cols-6 gap-2 p-3 text-sm font-semibold",children:[(0,a.jsx)("div",{children:"Hashed Key"}),(0,a.jsx)("div",{className:"text-right",children:"Balance"}),(0,a.jsx)("div",{className:"text-right",children:"Total Spent"}),(0,a.jsx)("div",{className:"text-right",children:"Total Requests"}),(0,a.jsx)("div",{children:"Refund Address"}),(0,a.jsx)("div",{className:"text-right",children:"Expiry Time"})]}),z.length>0?z.map((e,t)=>(0,a.jsxs)("div",{className:(0,f.cn)("hover:bg-muted/50 grid grid-cols-6 gap-2 border-t p-3 text-sm transition-colors",0===e.balance&&"opacity-60"),children:[(0,a.jsx)("div",{className:"max-w-32 truncate font-mono text-xs break-all",children:e.hashed_key}),(0,a.jsx)("div",{className:"text-right font-mono",children:A(e.balance)}),(0,a.jsx)("div",{className:"text-right font-mono",children:A(e.total_spent)}),(0,a.jsx)("div",{className:"text-right font-mono",children:e.total_requests.toLocaleString()}),(0,a.jsx)("div",{className:"max-w-32 truncate font-mono text-xs break-all",children:e.refund_address||"-"}),(0,a.jsx)("div",{className:"text-right font-mono text-xs",children:e.key_expiry_time?(0,a.jsxs)("div",{className:"flex items-center justify-end gap-1",children:[(0,a.jsx)(h,{className:"h-3 w-3"}),(0,a.jsx)("span",{children:new Date(1e3*e.key_expiry_time).toLocaleDateString()})]}):"-"})]},t)):(0,a.jsx)("div",{className:"text-muted-foreground p-8 text-center text-sm",children:v?(0,a.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[(0,a.jsx)(d.A,{className:"h-8 w-8"}),(0,a.jsx)("span",{children:"No temporary balances match your search"})]}):(0,a.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[(0,a.jsx)(r.A,{className:"h-8 w-8"}),(0,a.jsx)("span",{children:"No temporary balances found"})]})})]}),N&&N.length>0&&(0,a.jsxs)("div",{className:"text-muted-foreground mt-4 text-xs",children:["Showing ",z.length," of ",N.length," temporary balances"]})]})})]})})}},2533:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(3929).A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},3728:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(3929).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},5195:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(3929).A)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]])},6320:(e,t,s)=>{"use strict";s.d(t,{Cf:()=>x,Es:()=>h,L3:()=>u,c7:()=>m,lG:()=>i,rr:()=>p,zM:()=>c});var a=s(3422);s(4398);var l=s(4316),n=s(9680),r=s(9183);function i(e){let{...t}=e;return(0,a.jsx)(l.bL,{"data-slot":"dialog",...t})}function c(e){let{...t}=e;return(0,a.jsx)(l.l9,{"data-slot":"dialog-trigger",...t})}function d(e){let{...t}=e;return(0,a.jsx)(l.ZL,{"data-slot":"dialog-portal",...t})}function o(e){let{className:t,...s}=e;return(0,a.jsx)(l.hJ,{"data-slot":"dialog-overlay",className:(0,r.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...s})}function x(e){let{className:t,children:s,...i}=e;return(0,a.jsxs)(d,{"data-slot":"dialog-portal",children:[(0,a.jsx)(o,{}),(0,a.jsxs)(l.UC,{"data-slot":"dialog-content",className:(0,r.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",t),...i,children:[s,(0,a.jsxs)(l.bm,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,a.jsx)(n.A,{}),(0,a.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function m(e){let{className:t,...s}=e;return(0,a.jsx)("div",{"data-slot":"dialog-header",className:(0,r.cn)("flex flex-col gap-2 text-center sm:text-left",t),...s})}function h(e){let{className:t,...s}=e;return(0,a.jsx)("div",{"data-slot":"dialog-footer",className:(0,r.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t),...s})}function u(e){let{className:t,...s}=e;return(0,a.jsx)(l.hE,{"data-slot":"dialog-title",className:(0,r.cn)("text-lg leading-none font-semibold",t),...s})}function p(e){let{className:t,...s}=e;return(0,a.jsx)(l.VY,{"data-slot":"dialog-description",className:(0,r.cn)("text-muted-foreground text-sm",t),...s})}}},e=>{var t=t=>e(e.s=t);e.O(0,[363,222,808,29,730,978,481,236,601,945,497,358],()=>t(1551)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ui_out/_next/static/chunks/app/page-cbf91667e39e2dcb.js b/ui_out/_next/static/chunks/app/page-cbf91667e39e2dcb.js deleted file mode 100644 index 40b2d85a..00000000 --- a/ui_out/_next/static/chunks/app/page-cbf91667e39e2dcb.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{159:(e,t,a)=>{"use strict";a.d(t,{DetailedWalletBalance:()=>k});var s=a(3422),n=a(4398),r=a(2349);let l=(0,a(3929).A)("wallet",[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]]);var i=a(3728),c=a(2434),d=a(9675),o=a(9945),u=a(7916);o.Ik({token:o.Yj().min(1)}),o.Ik({success:o.zM(),amount:o.ai().optional(),message:o.Yj().optional()}),o.Ik({amount:o.ai().positive(),offline:o.zM().optional()}),o.Ik({token:o.Yj(),balance:o.ai(),npub:o.Yj().optional()});class m{static async redeemToken(e){try{return await u.apiClient.post("/api/wallet/redeem",{token:e})}catch(e){return console.error("Error redeeming token:",e),{success:!1,message:"Failed to redeem token. Please try again."}}}static async sendToken(e){try{return await u.apiClient.post("/api/wallet/send",{amount:e})}catch(e){throw console.error("Error generating token:",e),Error("Failed to generate token. Please try again.")}}static async getBalance(){try{return await u.apiClient.get("/api/wallet/balance")}catch(e){throw console.error("Error fetching balance:",e),e}}static async getDetailedBalances(){try{return await u.apiClient.get("/admin/api/balances")}catch(e){throw console.error("Error fetching detailed balances:",e),e}}static async withdraw(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"sat";try{return await u.apiClient.post("/admin/withdraw",{amount:e,mint_url:t,unit:a})}catch(e){throw console.error("Error withdrawing funds:",e),e}}}var x=a(2738),h=a(3648),p=a(6013),g=a(6320),f=a(268),j=a(3130),b=a(2264),v=a(246),w=a(2533);function N(e){let{open:t,onOpenChange:a,balances:r,onSuccess:l}=e,[i,c]=(0,n.useState)(""),[o,u]=(0,n.useState)(""),[x,N]=(0,n.useState)(""),[y,k]=(0,n.useState)(!1),_=r.filter(e=>!e.error&&e.wallet_balance>0),C=_.find(e=>"".concat(e.mint_url,"|").concat(e.unit)===i),z=(0,p.n)({mutationFn:async()=>{if(!C)throw Error("No balance selected");let e=parseInt(o);if(isNaN(e)||e<=0)throw Error("Invalid amount");return m.withdraw(e,C.mint_url,C.unit)},onSuccess:e=>{N(e.token),null==l||l()}});(0,n.useEffect)(()=>{C&&u((C.owner_balance>0?C.owner_balance:0).toString())},[C]),(0,n.useEffect)(()=>{t||(N(""),u(""),c(""),k(!1))},[t]);let A=parseInt(o)||0,E=C&&A>C.owner_balance&&A<=C.wallet_balance;return x?(0,s.jsx)(g.lG,{open:t,onOpenChange:a,children:(0,s.jsxs)(g.Cf,{className:"sm:max-w-xl",children:[(0,s.jsxs)(g.c7,{children:[(0,s.jsx)(g.L3,{children:"Withdrawal Successful"}),(0,s.jsx)(g.rr,{children:"Save this token! It represents your withdrawn balance."})]}),(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("div",{className:"rounded-lg border border-green-200 bg-green-50 p-4 dark:border-green-800 dark:bg-green-950",children:[(0,s.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,s.jsx)(v.A,{className:"h-5 w-5 text-green-600"}),(0,s.jsx)("span",{className:"font-semibold text-green-900 dark:text-green-100",children:"Withdrawal Token"})]}),(0,s.jsx)("div",{className:"rounded-md bg-gray-900 p-3 font-mono text-xs break-all text-green-400",children:x})]}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(h.$,{onClick:()=>{navigator.clipboard.writeText(x),k(!0),setTimeout(()=>k(!1),2e3)},className:"flex-1",variant:y?"outline":"default",children:y?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(v.A,{className:"mr-2 h-4 w-4"}),"Copied!"]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(w.A,{className:"mr-2 h-4 w-4"}),"Copy Token"]})}),(0,s.jsx)(h.$,{onClick:()=>a(!1),variant:"outline",children:"Close"})]})]})]})}):(0,s.jsx)(g.lG,{open:t,onOpenChange:a,children:(0,s.jsxs)(g.Cf,{className:"sm:max-w-md",children:[(0,s.jsxs)(g.c7,{children:[(0,s.jsx)(g.L3,{children:"Withdraw Balance"}),(0,s.jsx)(g.rr,{children:"Select mint and currency, then enter the amount to withdraw."})]}),(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(j.J,{htmlFor:"mint-select",children:"Mint / Currency"}),(0,s.jsxs)(b.l6,{value:i,onValueChange:c,children:[(0,s.jsx)(b.bq,{id:"mint-select",children:(0,s.jsx)(b.yv,{placeholder:"Select mint and currency"})}),(0,s.jsx)(b.gC,{children:_.map(e=>(0,s.jsxs)(b.eb,{value:"".concat(e.mint_url,"|").concat(e.unit),children:[e.mint_url.replace("https://","").replace("http://","")," ","• ",e.unit.toUpperCase()," (",e.owner_balance,")"]},"".concat(e.mint_url,"|").concat(e.unit)))})]})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(j.J,{htmlFor:"amount",children:"Amount"}),(0,s.jsx)(f.p,{id:"amount",type:"number",min:"1",value:o,onChange:e=>u(e.target.value),placeholder:"Enter amount"}),C&&(0,s.jsxs)("div",{className:"space-y-1 text-xs",children:[(0,s.jsxs)("p",{className:"text-muted-foreground",children:["Maximum:"," ",(0,s.jsxs)("span",{className:"font-semibold",children:[C.wallet_balance," ",C.unit]})]}),(0,s.jsxs)("p",{className:"text-muted-foreground",children:["Your recommended balance:"," ",(0,s.jsxs)("span",{className:"font-semibold",children:[C.owner_balance," ",C.unit]})]})]})]}),E&&(0,s.jsxs)("div",{className:"bg-destructive/10 text-destructive flex items-start gap-2 rounded-md p-3 text-sm",children:[(0,s.jsx)(d.A,{className:"mt-0.5 h-5 w-5 flex-shrink-0"}),(0,s.jsx)("span",{children:"Warning: Withdrawing more than your balance will use user funds!"})]}),z.isError&&(0,s.jsxs)("div",{className:"bg-destructive/10 text-destructive flex items-start gap-2 rounded-md p-3 text-sm",children:[(0,s.jsx)(d.A,{className:"mt-0.5 h-5 w-5 flex-shrink-0"}),(0,s.jsx)("span",{children:z.error.message||"Failed to withdraw"})]}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(h.$,{onClick:()=>z.mutate(),disabled:!i||!o||z.isPending||A<=0||C&&A>C.wallet_balance,className:"flex-1",children:z.isPending?"Withdrawing...":"Withdraw"}),(0,s.jsx)(h.$,{onClick:()=>a(!1),variant:"outline",disabled:z.isPending,children:"Cancel"})]})]})]})})}var y=a(9183);function k(e){let t,a,o,{refreshInterval:u=1e4}=e,[p,g]=(0,n.useState)(!1),{data:f,isLoading:j,isError:b,error:v,isFetching:w,refetch:k}=(0,r.I)({queryKey:["detailed-wallet-balance"],queryFn:async()=>m.getDetailedBalances(),refetchInterval:u}),_=f?(t=0,a=0,o=0,f.forEach(e=>{e.error||(t+=e.wallet_balance||0,a+=e.user_balance||0,o+=e.owner_balance||0)}),{totalWallet:t,totalUser:a,totalOwner:o}):{totalWallet:0,totalUser:0,totalOwner:0};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(x.Zp,{className:"h-full w-full shadow-sm",children:[(0,s.jsxs)(x.aR,{className:"pb-4",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)(x.ZB,{className:"text-xl",children:"Cashu Wallet Balance"}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsxs)(h.$,{variant:"default",size:"sm",onClick:()=>g(!0),disabled:j||!f||0===f.length,children:[(0,s.jsx)(l,{className:"mr-2 h-4 w-4"}),"Withdraw"]}),(0,s.jsxs)(h.$,{variant:"ghost",size:"icon",onClick:()=>k(),disabled:j||w,className:"h-8 w-8",children:[(0,s.jsx)(i.A,{className:(0,y.cn)("h-4 w-4",(w||j)&&"animate-spin")}),(0,s.jsx)("span",{className:"sr-only",children:"Refresh balance"})]})]})]}),(0,s.jsx)(x.BT,{children:"Detailed balance breakdown by mint and currency"})]}),(0,s.jsx)(x.Wu,{children:j?(0,s.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,s.jsx)(c.A,{className:"text-primary h-8 w-8 animate-spin"})}):b?(0,s.jsxs)("div",{className:"bg-destructive/10 text-destructive flex items-center space-x-2 rounded-md p-4",children:[(0,s.jsx)(d.A,{className:"h-5 w-5"}),(0,s.jsxs)("span",{children:["Error loading balance: ",v.message]})]}):(0,s.jsxs)("div",{className:"space-y-6",children:[(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-muted-foreground text-sm",children:"Your Balance (Total)"}),(0,s.jsxs)("span",{className:"text-2xl font-bold text-green-600",children:[_.totalOwner.toLocaleString()," sats"]})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-muted-foreground text-sm",children:"Total Wallet"}),(0,s.jsxs)("span",{className:"text-lg font-semibold",children:[_.totalWallet.toLocaleString()," sats"]})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-muted-foreground text-sm",children:"User Balance"}),(0,s.jsxs)("span",{className:"text-lg font-semibold",children:[_.totalUser.toLocaleString()," sats"]})]})]}),(0,s.jsx)("p",{className:"text-muted-foreground text-xs",children:"Your balance = Total wallet - User balance"}),(0,s.jsxs)("div",{className:"overflow-hidden rounded-lg border",children:[(0,s.jsxs)("div",{className:"bg-muted grid grid-cols-4 gap-2 p-3 text-sm font-semibold",children:[(0,s.jsx)("div",{children:"Mint / Unit"}),(0,s.jsx)("div",{className:"text-right",children:"Wallet"}),(0,s.jsx)("div",{className:"text-right",children:"Users"}),(0,s.jsx)("div",{className:"text-right",children:"Owner"})]}),f&&f.length>0?f.filter(e=>e.wallet_balance&&e.wallet_balance>0||e.error).map((e,t)=>(0,s.jsxs)("div",{className:(0,y.cn)("grid grid-cols-4 gap-2 border-t p-3 text-sm",e.error&&"bg-destructive/10 text-destructive"),children:[(0,s.jsxs)("div",{className:"text-xs break-all",children:[e.mint_url.replace("https://","").replace("http://","")," ","• ",e.unit.toUpperCase()]}),(0,s.jsx)("div",{className:"text-right font-mono",children:e.error?"error":e.wallet_balance.toLocaleString()}),(0,s.jsx)("div",{className:"text-right font-mono",children:e.error?"-":e.user_balance.toLocaleString()}),(0,s.jsx)("div",{className:(0,y.cn)("text-right font-mono",!e.error&&e.owner_balance>0&&"font-semibold text-green-600"),children:e.error?"-":e.owner_balance.toLocaleString()})]},t)):(0,s.jsx)("div",{className:"text-muted-foreground p-4 text-center text-sm",children:"No balances to display"})]})]})})]}),(0,s.jsx)(N,{open:p,onOpenChange:g,balances:f||[],onSuccess:()=>{k()}})]})}},246:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(3929).A)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},2264:(e,t,a)=>{"use strict";a.d(t,{bq:()=>u,eb:()=>x,gC:()=>m,l6:()=>d,yv:()=>o});var s=a(3422);a(4398);var n=a(3439),r=a(9994),l=a(8940),i=a(4967),c=a(9183);function d(e){let{...t}=e;return(0,s.jsx)(n.bL,{"data-slot":"select",...t})}function o(e){let{...t}=e;return(0,s.jsx)(n.WT,{"data-slot":"select-value",...t})}function u(e){let{className:t,size:a="default",children:l,...i}=e;return(0,s.jsxs)(n.l9,{"data-slot":"select-trigger","data-size":a,className:(0,c.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...i,children:[l,(0,s.jsx)(n.In,{asChild:!0,children:(0,s.jsx)(r.A,{className:"size-4 opacity-50"})})]})}function m(e){let{className:t,children:a,position:r="popper",...l}=e;return(0,s.jsx)(n.ZL,{children:(0,s.jsxs)(n.UC,{"data-slot":"select-content",className:(0,c.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===r&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:r,...l,children:[(0,s.jsx)(h,{}),(0,s.jsx)(n.LM,{className:(0,c.cn)("p-1","popper"===r&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:a}),(0,s.jsx)(p,{})]})})}function x(e){let{className:t,children:a,...r}=e;return(0,s.jsxs)(n.q7,{"data-slot":"select-item",className:(0,c.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...r,children:[(0,s.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,s.jsx)(n.VF,{children:(0,s.jsx)(l.A,{className:"size-4"})})}),(0,s.jsx)(n.p4,{children:a})]})}function h(e){let{className:t,...a}=e;return(0,s.jsx)(n.PP,{"data-slot":"select-scroll-up-button",className:(0,c.cn)("flex cursor-default items-center justify-center py-1",t),...a,children:(0,s.jsx)(i.A,{className:"size-4"})})}function p(e){let{className:t,...a}=e;return(0,s.jsx)(n.wn,{"data-slot":"select-scroll-down-button",className:(0,c.cn)("flex cursor-default items-center justify-center py-1",t),...a,children:(0,s.jsx)(r.A,{className:"size-4"})})}},2434:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(3929).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},2533:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(3929).A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},2738:(e,t,a)=>{"use strict";a.d(t,{BT:()=>c,Wu:()=>d,ZB:()=>i,Zp:()=>r,aR:()=>l,wL:()=>o});var s=a(3422);a(4398);var n=a(9183);function r(e){let{className:t,...a}=e;return(0,s.jsx)("div",{"data-slot":"card",className:(0,n.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",t),...a})}function l(e){let{className:t,...a}=e;return(0,s.jsx)("div",{"data-slot":"card-header",className:(0,n.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...a})}function i(e){let{className:t,...a}=e;return(0,s.jsx)("div",{"data-slot":"card-title",className:(0,n.cn)("leading-none font-semibold",t),...a})}function c(e){let{className:t,...a}=e;return(0,s.jsx)("div",{"data-slot":"card-description",className:(0,n.cn)("text-muted-foreground text-sm",t),...a})}function d(e){let{className:t,...a}=e;return(0,s.jsx)("div",{"data-slot":"card-content",className:(0,n.cn)("px-6",t),...a})}function o(e){let{className:t,...a}=e;return(0,s.jsx)("div",{"data-slot":"card-footer",className:(0,n.cn)("flex items-center px-6 [.border-t]:pt-6",t),...a})}},2801:(e,t,a)=>{Promise.resolve().then(a.bind(a,7569)),Promise.resolve().then(a.bind(a,159)),Promise.resolve().then(a.bind(a,4756)),Promise.resolve().then(a.bind(a,953))},3130:(e,t,a)=>{"use strict";a.d(t,{J:()=>l});var s=a(3422);a(4398);var n=a(2996),r=a(9183);function l(e){let{className:t,...a}=e;return(0,s.jsx)(n.b,{"data-slot":"label",className:(0,r.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t),...a})}},3728:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(3929).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},6320:(e,t,a)=>{"use strict";a.d(t,{Cf:()=>u,Es:()=>x,L3:()=>h,c7:()=>m,lG:()=>i,rr:()=>p,zM:()=>c});var s=a(3422);a(4398);var n=a(4316),r=a(9680),l=a(9183);function i(e){let{...t}=e;return(0,s.jsx)(n.bL,{"data-slot":"dialog",...t})}function c(e){let{...t}=e;return(0,s.jsx)(n.l9,{"data-slot":"dialog-trigger",...t})}function d(e){let{...t}=e;return(0,s.jsx)(n.ZL,{"data-slot":"dialog-portal",...t})}function o(e){let{className:t,...a}=e;return(0,s.jsx)(n.hJ,{"data-slot":"dialog-overlay",className:(0,l.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...a})}function u(e){let{className:t,children:a,...i}=e;return(0,s.jsxs)(d,{"data-slot":"dialog-portal",children:[(0,s.jsx)(o,{}),(0,s.jsxs)(n.UC,{"data-slot":"dialog-content",className:(0,l.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",t),...i,children:[a,(0,s.jsxs)(n.bm,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,s.jsx)(r.A,{}),(0,s.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function m(e){let{className:t,...a}=e;return(0,s.jsx)("div",{"data-slot":"dialog-header",className:(0,l.cn)("flex flex-col gap-2 text-center sm:text-left",t),...a})}function x(e){let{className:t,...a}=e;return(0,s.jsx)("div",{"data-slot":"dialog-footer",className:(0,l.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t),...a})}function h(e){let{className:t,...a}=e;return(0,s.jsx)(n.hE,{"data-slot":"dialog-title",className:(0,l.cn)("text-lg leading-none font-semibold",t),...a})}function p(e){let{className:t,...a}=e;return(0,s.jsx)(n.VY,{"data-slot":"dialog-description",className:(0,l.cn)("text-muted-foreground text-sm",t),...a})}}},e=>{var t=t=>e(e.s=t);e.O(0,[363,222,808,29,730,978,481,236,945,497,358],()=>t(2801)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ui_out/_next/static/chunks/app/providers/page-24027db6adfd0b9b.js b/ui_out/_next/static/chunks/app/providers/page-24027db6adfd0b9b.js new file mode 100644 index 00000000..6d9c957f --- /dev/null +++ b/ui_out/_next/static/chunks/app/providers/page-24027db6adfd0b9b.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[387],{989:(e,s,t)=>{"use strict";t.d(s,{A:()=>a});let a=(0,t(3929).A)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]])},2264:(e,s,t)=>{"use strict";t.d(s,{bq:()=>u,eb:()=>p,gC:()=>x,l6:()=>o,yv:()=>c});var a=t(3422);t(4398);var r=t(3439),n=t(9994),i=t(8940),l=t(4967),d=t(9183);function o(e){let{...s}=e;return(0,a.jsx)(r.bL,{"data-slot":"select",...s})}function c(e){let{...s}=e;return(0,a.jsx)(r.WT,{"data-slot":"select-value",...s})}function u(e){let{className:s,size:t="default",children:i,...l}=e;return(0,a.jsxs)(r.l9,{"data-slot":"select-trigger","data-size":t,className:(0,d.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s),...l,children:[i,(0,a.jsx)(r.In,{asChild:!0,children:(0,a.jsx)(n.A,{className:"size-4 opacity-50"})})]})}function x(e){let{className:s,children:t,position:n="popper",...i}=e;return(0,a.jsx)(r.ZL,{children:(0,a.jsxs)(r.UC,{"data-slot":"select-content",className:(0,d.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===n&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",s),position:n,...i,children:[(0,a.jsx)(m,{}),(0,a.jsx)(r.LM,{className:(0,d.cn)("p-1","popper"===n&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),(0,a.jsx)(h,{})]})})}function p(e){let{className:s,children:t,...n}=e;return(0,a.jsxs)(r.q7,{"data-slot":"select-item",className:(0,d.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",s),...n,children:[(0,a.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,a.jsx)(r.VF,{children:(0,a.jsx)(i.A,{className:"size-4"})})}),(0,a.jsx)(r.p4,{children:t})]})}function m(e){let{className:s,...t}=e;return(0,a.jsx)(r.PP,{"data-slot":"select-scroll-up-button",className:(0,d.cn)("flex cursor-default items-center justify-center py-1",s),...t,children:(0,a.jsx)(l.A,{className:"size-4"})})}function h(e){let{className:s,...t}=e;return(0,a.jsx)(r.wn,{"data-slot":"select-scroll-down-button",className:(0,d.cn)("flex cursor-default items-center justify-center py-1",s),...t,children:(0,a.jsx)(n.A,{className:"size-4"})})}},6078:(e,s,t)=>{Promise.resolve().then(t.bind(t,8288))},6320:(e,s,t)=>{"use strict";t.d(s,{Cf:()=>u,Es:()=>p,L3:()=>m,c7:()=>x,lG:()=>l,rr:()=>h,zM:()=>d});var a=t(3422);t(4398);var r=t(4316),n=t(9680),i=t(9183);function l(e){let{...s}=e;return(0,a.jsx)(r.bL,{"data-slot":"dialog",...s})}function d(e){let{...s}=e;return(0,a.jsx)(r.l9,{"data-slot":"dialog-trigger",...s})}function o(e){let{...s}=e;return(0,a.jsx)(r.ZL,{"data-slot":"dialog-portal",...s})}function c(e){let{className:s,...t}=e;return(0,a.jsx)(r.hJ,{"data-slot":"dialog-overlay",className:(0,i.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",s),...t})}function u(e){let{className:s,children:t,...l}=e;return(0,a.jsxs)(o,{"data-slot":"dialog-portal",children:[(0,a.jsx)(c,{}),(0,a.jsxs)(r.UC,{"data-slot":"dialog-content",className:(0,i.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",s),...l,children:[t,(0,a.jsxs)(r.bm,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,a.jsx)(n.A,{}),(0,a.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function x(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"dialog-header",className:(0,i.cn)("flex flex-col gap-2 text-center sm:text-left",s),...t})}function p(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"dialog-footer",className:(0,i.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",s),...t})}function m(e){let{className:s,...t}=e;return(0,a.jsx)(r.hE,{"data-slot":"dialog-title",className:(0,i.cn)("text-lg leading-none font-semibold",s),...t})}function h(e){let{className:s,...t}=e;return(0,a.jsx)(r.VY,{"data-slot":"dialog-description",className:(0,i.cn)("text-muted-foreground text-sm",s),...t})}},6568:(e,s,t)=>{"use strict";t.d(s,{d:()=>i});var a=t(3422);t(4398);var r=t(2495),n=t(9183);function i(e){let{className:s,...t}=e;return(0,a.jsx)(r.bL,{"data-slot":"switch",className:(0,n.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",s),...t,children:(0,a.jsx)(r.zi,{"data-slot":"switch-thumb",className:(0,n.cn)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}},6839:(e,s,t)=>{"use strict";t.d(s,{Xi:()=>d,av:()=>o,j7:()=>l,tU:()=>i});var a=t(3422);t(4398);var r=t(1749),n=t(9183);function i(e){let{className:s,...t}=e;return(0,a.jsx)(r.bL,{"data-slot":"tabs",className:(0,n.cn)("flex flex-col gap-2",s),...t})}function l(e){let{className:s,...t}=e;return(0,a.jsx)(r.B8,{"data-slot":"tabs-list",className:(0,n.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",s),...t})}function d(e){let{className:s,...t}=e;return(0,a.jsx)(r.l9,{"data-slot":"tabs-trigger",className:(0,n.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s),...t})}function o(e){let{className:s,...t}=e;return(0,a.jsx)(r.UC,{"data-slot":"tabs-content",className:(0,n.cn)("flex-1 outline-none",s),...t})}},8288:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>L});var a=t(3422),r=t(953),n=t(7569),i=t(4756),l=t(3648),d=t(2738),o=t(8561),c=t(100),u=t(2349),x=t(6013),p=t(9119),m=t(2745),h=t(856),v=t(9675),g=t(2335),f=t(9285),j=t(4967),b=t(9994);let y=(0,t(3929).A)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);var N=t(6541),_=t(989),w=t(7137),k=t(9442),z=t(6320),C=t(268),A=t(3130),P=t(2264),E=t(6568),F=t(6839),S=t(4398),I=t(3831);function L(){let e=(0,c.jE)(),[s,t]=(0,S.useState)(null),[L,U]=(0,S.useState)(!1),[O,R]=(0,S.useState)(!1),[M,q]=(0,S.useState)(null),[J,V]=(0,S.useState)(new Set),[$,K]=(0,S.useState)(null),[Q,T]=(0,S.useState)({provider_type:"openrouter",base_url:"",api_key:"",api_version:null,enabled:!0}),{data:D=[],isLoading:G,error:B}=(0,u.I)({queryKey:["upstream-providers"],queryFn:()=>p.zQ.getUpstreamProviders(),refetchOnWindowFocus:!1}),{data:W,isLoading:Z}=(0,u.I)({queryKey:["provider-models",$],queryFn:()=>$?p.zQ.getProviderModels($):Promise.resolve(null),enabled:!!$,refetchOnWindowFocus:!1}),X=(0,x.n)({mutationFn:e=>p.zQ.createUpstreamProvider(e),onSuccess:()=>{e.invalidateQueries({queryKey:["upstream-providers"]}),U(!1),I.oR.success("Provider created successfully"),ee()},onError:e=>{I.oR.error("Failed to create provider: ".concat(e.message))}}),H=(0,x.n)({mutationFn:e=>{let{id:s,data:t}=e;return p.zQ.updateUpstreamProvider(s,t)},onSuccess:()=>{e.invalidateQueries({queryKey:["upstream-providers"]}),R(!1),t(null),I.oR.success("Provider updated successfully")},onError:e=>{I.oR.error("Failed to update provider: ".concat(e.message))}}),Y=(0,x.n)({mutationFn:e=>p.zQ.deleteUpstreamProvider(e),onSuccess:()=>{e.invalidateQueries({queryKey:["upstream-providers"]}),I.oR.success("Provider deleted successfully")},onError:e=>{I.oR.error("Failed to delete provider: ".concat(e.message))}}),ee=()=>{T({provider_type:"openrouter",base_url:"",api_key:"",api_version:null,enabled:!0})},es=e=>{t(e),T({provider_type:e.provider_type,base_url:e.base_url,api_key:"",api_version:e.api_version||null,enabled:e.enabled}),R(!0)},et=e=>{confirm("Are you sure you want to delete this provider?")&&Y.mutate(e)},ea=e=>({openrouter:"https://openrouter.ai/api/v1",openai:"https://api.openai.com/v1",anthropic:"https://api.anthropic.com/v1",azure:"",ollama:"http://localhost:11434",generic:""})[e]||"",er=e=>{let s=new Set(J);s.has(e)?s.delete(e):s.add(e),V(s),s.has(e)?K(e):K(null)};return(0,a.jsxs)(r.SidebarProvider,{children:[(0,a.jsx)(n.AppSidebar,{variant:"inset"}),(0,a.jsxs)(r.SidebarInset,{children:[(0,a.jsx)(i.SiteHeader,{}),(0,a.jsx)("div",{className:"flex flex-1 flex-col",children:(0,a.jsxs)("div",{className:"@container/main flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-8",children:[(0,a.jsxs)("div",{className:"mb-6 flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:"Upstream Providers"}),(0,a.jsx)("p",{className:"text-muted-foreground mt-2 text-sm",children:"Manage your AI provider connections and credentials"})]}),(0,a.jsxs)(z.lG,{open:L,onOpenChange:U,children:[(0,a.jsx)(z.zM,{asChild:!0,children:(0,a.jsxs)(l.$,{className:"flex items-center gap-2",children:[(0,a.jsx)(h.A,{className:"h-4 w-4"}),"Add Provider"]})}),(0,a.jsxs)(z.Cf,{className:"sm:max-w-[500px]",children:[(0,a.jsxs)(z.c7,{children:[(0,a.jsx)(z.L3,{children:"Add Upstream Provider"}),(0,a.jsx)(z.rr,{children:"Configure a new AI provider connection"})]}),(0,a.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(A.J,{htmlFor:"provider_type",children:"Provider Type"}),(0,a.jsxs)(P.l6,{value:Q.provider_type,onValueChange:e=>{T({...Q,provider_type:e,base_url:ea(e)})},children:[(0,a.jsx)(P.bq,{children:(0,a.jsx)(P.yv,{})}),(0,a.jsxs)(P.gC,{children:[(0,a.jsx)(P.eb,{value:"openrouter",children:"OpenRouter"}),(0,a.jsx)(P.eb,{value:"openai",children:"OpenAI"}),(0,a.jsx)(P.eb,{value:"anthropic",children:"Anthropic"}),(0,a.jsx)(P.eb,{value:"azure",children:"Azure OpenAI"}),(0,a.jsx)(P.eb,{value:"ollama",children:"Ollama"}),(0,a.jsx)(P.eb,{value:"generic",children:"Generic"})]})]})]}),(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(A.J,{htmlFor:"base_url",children:"Base URL"}),(0,a.jsx)(C.p,{id:"base_url",value:Q.base_url,onChange:e=>T({...Q,base_url:e.target.value}),placeholder:"https://api.example.com/v1"})]}),(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(A.J,{htmlFor:"api_key",children:"API Key"}),(0,a.jsx)(C.p,{id:"api_key",type:"password",value:Q.api_key,onChange:e=>T({...Q,api_key:e.target.value}),placeholder:"sk-..."})]}),"azure"===Q.provider_type&&(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(A.J,{htmlFor:"api_version",children:"API Version"}),(0,a.jsx)(C.p,{id:"api_version",value:Q.api_version||"",onChange:e=>T({...Q,api_version:e.target.value||null}),placeholder:"2024-02-15-preview"})]}),(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(E.d,{id:"enabled",checked:Q.enabled,onCheckedChange:e=>T({...Q,enabled:e})}),(0,a.jsx)(A.J,{htmlFor:"enabled",children:"Enabled"})]})]}),(0,a.jsxs)(z.Es,{children:[(0,a.jsx)(l.$,{variant:"outline",onClick:()=>U(!1),children:"Cancel"}),(0,a.jsx)(l.$,{onClick:()=>{X.mutate(Q)},disabled:X.isPending,children:X.isPending?"Creating...":"Create"})]})]})]})]}),G?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(m.E,{className:"h-[100px] w-full"}),(0,a.jsx)(m.E,{className:"h-[100px] w-full"})]}):B?(0,a.jsxs)(k.Fc,{variant:"destructive",children:[(0,a.jsx)(v.A,{className:"h-4 w-4"}),(0,a.jsx)(k.TN,{children:"Failed to load providers. Please try refreshing the page."})]}):0===D.length?(0,a.jsx)(d.Zp,{children:(0,a.jsxs)(d.Wu,{className:"flex flex-col items-center justify-center py-12",children:[(0,a.jsx)(g.A,{className:"text-muted-foreground mb-4 h-12 w-12"}),(0,a.jsx)("h3",{className:"mb-2 text-lg font-semibold",children:"No providers configured"}),(0,a.jsx)("p",{className:"text-muted-foreground mb-4 text-sm",children:"Get started by adding your first upstream provider"}),(0,a.jsxs)(l.$,{onClick:()=>U(!0),children:[(0,a.jsx)(h.A,{className:"mr-2 h-4 w-4"}),"Add Provider"]})]})}):(0,a.jsx)("div",{className:"grid gap-4",children:D.map(e=>(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{children:(0,a.jsxs)("div",{className:"flex items-start justify-between",children:[(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(d.ZB,{className:"text-lg",children:e.provider_type}),(0,a.jsx)(o.E,{variant:e.enabled?"default":"secondary",children:e.enabled?"Enabled":"Disabled"})]}),(0,a.jsx)(d.BT,{className:"mt-1",children:e.base_url})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)(l.$,{variant:"outline",size:"sm",onClick:()=>er(e.id),children:[(0,a.jsx)(f.A,{className:"mr-1 h-4 w-4"}),"Models",J.has(e.id)?(0,a.jsx)(j.A,{className:"ml-1 h-4 w-4"}):(0,a.jsx)(b.A,{className:"ml-1 h-4 w-4"})]}),(0,a.jsx)(l.$,{variant:"outline",size:"sm",onClick:()=>es(e),children:(0,a.jsx)(y,{className:"h-4 w-4"})}),(0,a.jsx)(l.$,{variant:"outline",size:"sm",onClick:()=>et(e.id),children:(0,a.jsx)(N.A,{className:"h-4 w-4"})})]})]})}),(0,a.jsx)(d.Wu,{children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{className:"text-muted-foreground",children:"Provider ID:"}),(0,a.jsx)("span",{className:"font-mono",children:e.id})]}),e.api_version&&(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{className:"text-muted-foreground",children:"API Version:"}),(0,a.jsx)("span",{className:"font-mono",children:e.api_version})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{className:"text-muted-foreground",children:"API Key:"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"font-mono",children:M===e.id?e.api_key||"[REDACTED]":"••••••••"}),(0,a.jsx)(l.$,{variant:"ghost",size:"sm",onClick:()=>q(M===e.id?null:e.id),children:M===e.id?(0,a.jsx)(_.A,{className:"h-4 w-4"}):(0,a.jsx)(w.A,{className:"h-4 w-4"})})]})]})]}),J.has(e.id)&&(0,a.jsx)("div",{className:"mt-4 border-t pt-4",children:Z&&$===e.id?(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(m.E,{className:"h-[40px] w-full"}),(0,a.jsx)(m.E,{className:"h-[40px] w-full"})]}):W&&$===e.id?(0,a.jsxs)(F.tU,{defaultValue:"remote",className:"w-full",children:[(0,a.jsxs)(F.j7,{className:"grid w-full grid-cols-2",children:[(0,a.jsxs)(F.Xi,{value:"remote",children:["Remote Models",(0,a.jsx)(o.E,{variant:"secondary",className:"ml-2",children:W.remote_models.length})]}),(0,a.jsxs)(F.Xi,{value:"db",children:["Database Models",(0,a.jsx)(o.E,{variant:"secondary",className:"ml-2",children:W.db_models.length})]})]}),(0,a.jsx)(F.av,{value:"db",className:"mt-4 space-y-2",children:0===W.db_models.length?(0,a.jsx)("div",{className:"text-muted-foreground py-4 text-center text-sm",children:"No database models configured"}):(0,a.jsx)("div",{className:"space-y-2",children:W.db_models.map(e=>{var s;return(0,a.jsxs)("div",{className:"hover:bg-accent flex items-center justify-between rounded-lg border p-3 transition-colors",children:[(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"font-mono text-sm font-medium",children:e.id}),(0,a.jsx)(o.E,{variant:e.enabled?"default":"secondary",className:"text-xs",children:e.enabled?"Enabled":"Disabled"})]}),(0,a.jsx)("div",{className:"text-muted-foreground mt-1 text-xs",children:e.description||e.name})]}),(0,a.jsxs)("div",{className:"text-muted-foreground text-xs",children:[null==(s=e.context_length)?void 0:s.toLocaleString()," ","tokens"]})]},e.id)})})}),(0,a.jsx)(F.av,{value:"remote",className:"mt-4 space-y-2",children:0===W.remote_models.length?(0,a.jsx)("div",{className:"text-muted-foreground py-4 text-center text-sm",children:"No remote models available"}):(0,a.jsx)("div",{className:"space-y-2",children:W.remote_models.map(e=>{var s;return(0,a.jsxs)("div",{className:"hover:bg-accent flex items-center justify-between rounded-lg border p-3 transition-colors",children:[(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("div",{className:"font-mono text-sm font-medium",children:e.id}),(0,a.jsx)("div",{className:"text-muted-foreground mt-1 text-xs",children:e.description||e.name})]}),(0,a.jsxs)("div",{className:"text-muted-foreground text-xs",children:[null==(s=e.context_length)?void 0:s.toLocaleString()," ","tokens"]})]},e.id)})})})]}):null})]})})]},e.id))})]})}),(0,a.jsx)(z.lG,{open:O,onOpenChange:R,children:(0,a.jsxs)(z.Cf,{className:"sm:max-w-[500px]",children:[(0,a.jsxs)(z.c7,{children:[(0,a.jsx)(z.L3,{children:"Edit Upstream Provider"}),(0,a.jsx)(z.rr,{children:"Update provider configuration"})]}),(0,a.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(A.J,{htmlFor:"edit_provider_type",children:"Provider Type"}),(0,a.jsxs)(P.l6,{value:Q.provider_type,onValueChange:e=>{T({...Q,provider_type:e})},children:[(0,a.jsx)(P.bq,{children:(0,a.jsx)(P.yv,{})}),(0,a.jsxs)(P.gC,{children:[(0,a.jsx)(P.eb,{value:"openrouter",children:"OpenRouter"}),(0,a.jsx)(P.eb,{value:"openai",children:"OpenAI"}),(0,a.jsx)(P.eb,{value:"anthropic",children:"Anthropic"}),(0,a.jsx)(P.eb,{value:"azure",children:"Azure OpenAI"}),(0,a.jsx)(P.eb,{value:"ollama",children:"Ollama"}),(0,a.jsx)(P.eb,{value:"generic",children:"Generic"})]})]})]}),(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(A.J,{htmlFor:"edit_base_url",children:"Base URL"}),(0,a.jsx)(C.p,{id:"edit_base_url",value:Q.base_url,onChange:e=>T({...Q,base_url:e.target.value}),placeholder:"https://api.example.com/v1"})]}),(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(A.J,{htmlFor:"edit_api_key",children:"API Key (leave blank to keep current)"}),(0,a.jsx)(C.p,{id:"edit_api_key",type:"password",value:Q.api_key,onChange:e=>T({...Q,api_key:e.target.value}),placeholder:"Leave blank to keep current"})]}),"azure"===Q.provider_type&&(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(A.J,{htmlFor:"edit_api_version",children:"API Version"}),(0,a.jsx)(C.p,{id:"edit_api_version",value:Q.api_version||"",onChange:e=>T({...Q,api_version:e.target.value||null}),placeholder:"2024-02-15-preview"})]}),(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(E.d,{id:"edit_enabled",checked:Q.enabled,onCheckedChange:e=>T({...Q,enabled:e})}),(0,a.jsx)(A.J,{htmlFor:"edit_enabled",children:"Enabled"})]})]}),(0,a.jsxs)(z.Es,{children:[(0,a.jsx)(l.$,{variant:"outline",onClick:()=>R(!1),children:"Cancel"}),(0,a.jsx)(l.$,{onClick:()=>{if(!s)return;let e={provider_type:Q.provider_type,base_url:Q.base_url,api_version:Q.api_version,enabled:Q.enabled};Q.api_key&&(e.api_key=Q.api_key),H.mutate({id:s.id,data:e})},disabled:H.isPending,children:H.isPending?"Updating...":"Update"})]})]})})]})]})}},8561:(e,s,t)=>{"use strict";t.d(s,{E:()=>l});var a=t(3422);t(4398);var r=t(4676),n=t(9183);let i=(0,r.F)("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground",success:"border-transparent bg-green-500 text-white hover:bg-green-500/80",warning:"border-transparent bg-yellow-500 text-white hover:bg-yellow-500/80",error:"border-transparent bg-red-500 text-white hover:bg-red-500/80"}},defaultVariants:{variant:"default"}});function l(e){let{className:s,variant:t,...r}=e;return(0,a.jsx)("div",{className:(0,n.cn)(i({variant:t}),s),...r})}},9442:(e,s,t)=>{"use strict";t.d(s,{Fc:()=>l,TN:()=>d});var a=t(3422);t(4398);var r=t(4676),n=t(9183);let i=(0,r.F)("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function l(e){let{className:s,variant:t,...r}=e;return(0,a.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,n.cn)(i({variant:t}),s),...r})}function d(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"alert-description",className:(0,n.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",s),...t})}}},e=>{var s=s=>e(e.s=s);e.O(0,[363,222,808,29,730,978,481,982,236,601,945,497,358],()=>s(6078)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ui_out/_next/static/chunks/app/providers/page-284d295c40b8f18c.js b/ui_out/_next/static/chunks/app/providers/page-284d295c40b8f18c.js deleted file mode 100644 index 58a4db04..00000000 --- a/ui_out/_next/static/chunks/app/providers/page-284d295c40b8f18c.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[387],{989:(e,s,a)=>{"use strict";a.d(s,{A:()=>t});let t=(0,a(3929).A)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]])},2264:(e,s,a)=>{"use strict";a.d(s,{bq:()=>u,eb:()=>p,gC:()=>x,l6:()=>o,yv:()=>c});var t=a(3422);a(4398);var r=a(3439),l=a(9994),i=a(8940),n=a(4967),d=a(9183);function o(e){let{...s}=e;return(0,t.jsx)(r.bL,{"data-slot":"select",...s})}function c(e){let{...s}=e;return(0,t.jsx)(r.WT,{"data-slot":"select-value",...s})}function u(e){let{className:s,size:a="default",children:i,...n}=e;return(0,t.jsxs)(r.l9,{"data-slot":"select-trigger","data-size":a,className:(0,d.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s),...n,children:[i,(0,t.jsx)(r.In,{asChild:!0,children:(0,t.jsx)(l.A,{className:"size-4 opacity-50"})})]})}function x(e){let{className:s,children:a,position:l="popper",...i}=e;return(0,t.jsx)(r.ZL,{children:(0,t.jsxs)(r.UC,{"data-slot":"select-content",className:(0,d.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===l&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",s),position:l,...i,children:[(0,t.jsx)(m,{}),(0,t.jsx)(r.LM,{className:(0,d.cn)("p-1","popper"===l&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:a}),(0,t.jsx)(h,{})]})})}function p(e){let{className:s,children:a,...l}=e;return(0,t.jsxs)(r.q7,{"data-slot":"select-item",className:(0,d.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",s),...l,children:[(0,t.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,t.jsx)(r.VF,{children:(0,t.jsx)(i.A,{className:"size-4"})})}),(0,t.jsx)(r.p4,{children:a})]})}function m(e){let{className:s,...a}=e;return(0,t.jsx)(r.PP,{"data-slot":"select-scroll-up-button",className:(0,d.cn)("flex cursor-default items-center justify-center py-1",s),...a,children:(0,t.jsx)(n.A,{className:"size-4"})})}function h(e){let{className:s,...a}=e;return(0,t.jsx)(r.wn,{"data-slot":"select-scroll-down-button",className:(0,d.cn)("flex cursor-default items-center justify-center py-1",s),...a,children:(0,t.jsx)(l.A,{className:"size-4"})})}},6078:(e,s,a)=>{Promise.resolve().then(a.bind(a,8288))},6320:(e,s,a)=>{"use strict";a.d(s,{Cf:()=>u,Es:()=>p,L3:()=>m,c7:()=>x,lG:()=>n,rr:()=>h,zM:()=>d});var t=a(3422);a(4398);var r=a(4316),l=a(9680),i=a(9183);function n(e){let{...s}=e;return(0,t.jsx)(r.bL,{"data-slot":"dialog",...s})}function d(e){let{...s}=e;return(0,t.jsx)(r.l9,{"data-slot":"dialog-trigger",...s})}function o(e){let{...s}=e;return(0,t.jsx)(r.ZL,{"data-slot":"dialog-portal",...s})}function c(e){let{className:s,...a}=e;return(0,t.jsx)(r.hJ,{"data-slot":"dialog-overlay",className:(0,i.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",s),...a})}function u(e){let{className:s,children:a,...n}=e;return(0,t.jsxs)(o,{"data-slot":"dialog-portal",children:[(0,t.jsx)(c,{}),(0,t.jsxs)(r.UC,{"data-slot":"dialog-content",className:(0,i.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",s),...n,children:[a,(0,t.jsxs)(r.bm,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,t.jsx)(l.A,{}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function x(e){let{className:s,...a}=e;return(0,t.jsx)("div",{"data-slot":"dialog-header",className:(0,i.cn)("flex flex-col gap-2 text-center sm:text-left",s),...a})}function p(e){let{className:s,...a}=e;return(0,t.jsx)("div",{"data-slot":"dialog-footer",className:(0,i.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",s),...a})}function m(e){let{className:s,...a}=e;return(0,t.jsx)(r.hE,{"data-slot":"dialog-title",className:(0,i.cn)("text-lg leading-none font-semibold",s),...a})}function h(e){let{className:s,...a}=e;return(0,t.jsx)(r.VY,{"data-slot":"dialog-description",className:(0,i.cn)("text-muted-foreground text-sm",s),...a})}},6568:(e,s,a)=>{"use strict";a.d(s,{d:()=>i});var t=a(3422);a(4398);var r=a(2495),l=a(9183);function i(e){let{className:s,...a}=e;return(0,t.jsx)(r.bL,{"data-slot":"switch",className:(0,l.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",s),...a,children:(0,t.jsx)(r.zi,{"data-slot":"switch-thumb",className:(0,l.cn)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}},8288:(e,s,a)=>{"use strict";a.r(s),a.d(s,{default:()=>L});var t=a(3422),r=a(953),l=a(7569),i=a(4756),n=a(3648),d=a(2738),o=a(8561),c=a(100),u=a(2349),x=a(6013),p=a(9119),m=a(2745),h=a(856),v=a(9675),j=a(2335),g=a(9285),f=a(4967),b=a(9994);let y=(0,a(3929).A)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);var N=a(6541),_=a(989),k=a(7137),w=a(9442),z=a(6320),C=a(268),A=a(3130),P=a(2264),E=a(6568),F=a(6839),S=a(4398),I=a(3831);function L(){let e=(0,c.jE)(),[s,a]=(0,S.useState)(null),[L,U]=(0,S.useState)(!1),[O,R]=(0,S.useState)(!1),[M,q]=(0,S.useState)(null),[J,$]=(0,S.useState)(new Set),[K,Q]=(0,S.useState)(null),[V,D]=(0,S.useState)({provider_type:"openrouter",base_url:"",api_key:"",api_version:null,enabled:!0}),{data:G=[],isLoading:T,error:W}=(0,u.I)({queryKey:["upstream-providers"],queryFn:()=>p.zQ.getUpstreamProviders(),refetchOnWindowFocus:!1}),{data:Z,isLoading:B}=(0,u.I)({queryKey:["provider-models",K],queryFn:()=>K?p.zQ.getProviderModels(K):Promise.resolve(null),enabled:!!K,refetchOnWindowFocus:!1}),X=(0,x.n)({mutationFn:e=>p.zQ.createUpstreamProvider(e),onSuccess:()=>{e.invalidateQueries({queryKey:["upstream-providers"]}),U(!1),I.oR.success("Provider created successfully"),ee()},onError:e=>{I.oR.error("Failed to create provider: ".concat(e.message))}}),H=(0,x.n)({mutationFn:e=>{let{id:s,data:a}=e;return p.zQ.updateUpstreamProvider(s,a)},onSuccess:()=>{e.invalidateQueries({queryKey:["upstream-providers"]}),R(!1),a(null),I.oR.success("Provider updated successfully")},onError:e=>{I.oR.error("Failed to update provider: ".concat(e.message))}}),Y=(0,x.n)({mutationFn:e=>p.zQ.deleteUpstreamProvider(e),onSuccess:()=>{e.invalidateQueries({queryKey:["upstream-providers"]}),I.oR.success("Provider deleted successfully")},onError:e=>{I.oR.error("Failed to delete provider: ".concat(e.message))}}),ee=()=>{D({provider_type:"openrouter",base_url:"",api_key:"",api_version:null,enabled:!0})},es=e=>{a(e),D({provider_type:e.provider_type,base_url:e.base_url,api_key:"",api_version:e.api_version||null,enabled:e.enabled}),R(!0)},ea=e=>{confirm("Are you sure you want to delete this provider?")&&Y.mutate(e)},et=e=>({openrouter:"https://openrouter.ai/api/v1",openai:"https://api.openai.com/v1",anthropic:"https://api.anthropic.com/v1",azure:"",ollama:"http://localhost:11434",generic:""})[e]||"",er=e=>{let s=new Set(J);s.has(e)?s.delete(e):s.add(e),$(s),s.has(e)?Q(e):Q(null)};return(0,t.jsxs)(r.SidebarProvider,{children:[(0,t.jsx)(l.AppSidebar,{variant:"inset"}),(0,t.jsxs)(r.SidebarInset,{children:[(0,t.jsx)(i.SiteHeader,{}),(0,t.jsx)("div",{className:"flex flex-1 flex-col",children:(0,t.jsxs)("div",{className:"@container/main flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-8",children:[(0,t.jsxs)("div",{className:"mb-6 flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:"Upstream Providers"}),(0,t.jsx)("p",{className:"text-muted-foreground mt-2 text-sm",children:"Manage your AI provider connections and credentials"})]}),(0,t.jsxs)(z.lG,{open:L,onOpenChange:U,children:[(0,t.jsx)(z.zM,{asChild:!0,children:(0,t.jsxs)(n.$,{className:"flex items-center gap-2",children:[(0,t.jsx)(h.A,{className:"h-4 w-4"}),"Add Provider"]})}),(0,t.jsxs)(z.Cf,{className:"sm:max-w-[500px]",children:[(0,t.jsxs)(z.c7,{children:[(0,t.jsx)(z.L3,{children:"Add Upstream Provider"}),(0,t.jsx)(z.rr,{children:"Configure a new AI provider connection"})]}),(0,t.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(A.J,{htmlFor:"provider_type",children:"Provider Type"}),(0,t.jsxs)(P.l6,{value:V.provider_type,onValueChange:e=>{D({...V,provider_type:e,base_url:et(e)})},children:[(0,t.jsx)(P.bq,{children:(0,t.jsx)(P.yv,{})}),(0,t.jsxs)(P.gC,{children:[(0,t.jsx)(P.eb,{value:"openrouter",children:"OpenRouter"}),(0,t.jsx)(P.eb,{value:"openai",children:"OpenAI"}),(0,t.jsx)(P.eb,{value:"anthropic",children:"Anthropic"}),(0,t.jsx)(P.eb,{value:"azure",children:"Azure OpenAI"}),(0,t.jsx)(P.eb,{value:"ollama",children:"Ollama"}),(0,t.jsx)(P.eb,{value:"generic",children:"Generic"})]})]})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(A.J,{htmlFor:"base_url",children:"Base URL"}),(0,t.jsx)(C.p,{id:"base_url",value:V.base_url,onChange:e=>D({...V,base_url:e.target.value}),placeholder:"https://api.example.com/v1"})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(A.J,{htmlFor:"api_key",children:"API Key"}),(0,t.jsx)(C.p,{id:"api_key",type:"password",value:V.api_key,onChange:e=>D({...V,api_key:e.target.value}),placeholder:"sk-..."})]}),"azure"===V.provider_type&&(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(A.J,{htmlFor:"api_version",children:"API Version"}),(0,t.jsx)(C.p,{id:"api_version",value:V.api_version||"",onChange:e=>D({...V,api_version:e.target.value||null}),placeholder:"2024-02-15-preview"})]}),(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)(E.d,{id:"enabled",checked:V.enabled,onCheckedChange:e=>D({...V,enabled:e})}),(0,t.jsx)(A.J,{htmlFor:"enabled",children:"Enabled"})]})]}),(0,t.jsxs)(z.Es,{children:[(0,t.jsx)(n.$,{variant:"outline",onClick:()=>U(!1),children:"Cancel"}),(0,t.jsx)(n.$,{onClick:()=>{X.mutate(V)},disabled:X.isPending,children:X.isPending?"Creating...":"Create"})]})]})]})]}),T?(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(m.E,{className:"h-[100px] w-full"}),(0,t.jsx)(m.E,{className:"h-[100px] w-full"})]}):W?(0,t.jsxs)(w.Fc,{variant:"destructive",children:[(0,t.jsx)(v.A,{className:"h-4 w-4"}),(0,t.jsx)(w.TN,{children:"Failed to load providers. Please try refreshing the page."})]}):0===G.length?(0,t.jsx)(d.Zp,{children:(0,t.jsxs)(d.Wu,{className:"flex flex-col items-center justify-center py-12",children:[(0,t.jsx)(j.A,{className:"text-muted-foreground mb-4 h-12 w-12"}),(0,t.jsx)("h3",{className:"mb-2 text-lg font-semibold",children:"No providers configured"}),(0,t.jsx)("p",{className:"text-muted-foreground mb-4 text-sm",children:"Get started by adding your first upstream provider"}),(0,t.jsxs)(n.$,{onClick:()=>U(!0),children:[(0,t.jsx)(h.A,{className:"mr-2 h-4 w-4"}),"Add Provider"]})]})}):(0,t.jsx)("div",{className:"grid gap-4",children:G.map(e=>(0,t.jsxs)(d.Zp,{children:[(0,t.jsx)(d.aR,{children:(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(d.ZB,{className:"text-lg",children:e.provider_type}),(0,t.jsx)(o.E,{variant:e.enabled?"default":"secondary",children:e.enabled?"Enabled":"Disabled"})]}),(0,t.jsx)(d.BT,{className:"mt-1",children:e.base_url})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)(n.$,{variant:"outline",size:"sm",onClick:()=>er(e.id),children:[(0,t.jsx)(g.A,{className:"mr-1 h-4 w-4"}),"Models",J.has(e.id)?(0,t.jsx)(f.A,{className:"ml-1 h-4 w-4"}):(0,t.jsx)(b.A,{className:"ml-1 h-4 w-4"})]}),(0,t.jsx)(n.$,{variant:"outline",size:"sm",onClick:()=>es(e),children:(0,t.jsx)(y,{className:"h-4 w-4"})}),(0,t.jsx)(n.$,{variant:"outline",size:"sm",onClick:()=>ea(e.id),children:(0,t.jsx)(N.A,{className:"h-4 w-4"})})]})]})}),(0,t.jsx)(d.Wu,{children:(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"Provider ID:"}),(0,t.jsx)("span",{className:"font-mono",children:e.id})]}),e.api_version&&(0,t.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"API Version:"}),(0,t.jsx)("span",{className:"font-mono",children:e.api_version})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"API Key:"}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"font-mono",children:M===e.id?e.api_key||"[REDACTED]":"••••••••"}),(0,t.jsx)(n.$,{variant:"ghost",size:"sm",onClick:()=>q(M===e.id?null:e.id),children:M===e.id?(0,t.jsx)(_.A,{className:"h-4 w-4"}):(0,t.jsx)(k.A,{className:"h-4 w-4"})})]})]})]}),J.has(e.id)&&(0,t.jsx)("div",{className:"mt-4 border-t pt-4",children:B&&K===e.id?(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(m.E,{className:"h-[40px] w-full"}),(0,t.jsx)(m.E,{className:"h-[40px] w-full"})]}):Z&&K===e.id?(0,t.jsxs)(F.tU,{defaultValue:"remote",className:"w-full",children:[(0,t.jsxs)(F.j7,{className:"grid w-full grid-cols-2",children:[(0,t.jsxs)(F.Xi,{value:"remote",children:["Remote Models",(0,t.jsx)(o.E,{variant:"secondary",className:"ml-2",children:Z.remote_models.length})]}),(0,t.jsxs)(F.Xi,{value:"db",children:["Database Models",(0,t.jsx)(o.E,{variant:"secondary",className:"ml-2",children:Z.db_models.length})]})]}),(0,t.jsx)(F.av,{value:"db",className:"mt-4 space-y-2",children:0===Z.db_models.length?(0,t.jsx)("div",{className:"text-muted-foreground py-4 text-center text-sm",children:"No database models configured"}):(0,t.jsx)("div",{className:"space-y-2",children:Z.db_models.map(e=>{var s;return(0,t.jsxs)("div",{className:"hover:bg-accent flex items-center justify-between rounded-lg border p-3 transition-colors",children:[(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"font-mono text-sm font-medium",children:e.id}),(0,t.jsx)(o.E,{variant:e.enabled?"default":"secondary",className:"text-xs",children:e.enabled?"Enabled":"Disabled"})]}),(0,t.jsx)("div",{className:"text-muted-foreground mt-1 text-xs",children:e.description||e.name})]}),(0,t.jsxs)("div",{className:"text-muted-foreground text-xs",children:[null==(s=e.context_length)?void 0:s.toLocaleString()," ","tokens"]})]},e.id)})})}),(0,t.jsx)(F.av,{value:"remote",className:"mt-4 space-y-2",children:0===Z.remote_models.length?(0,t.jsx)("div",{className:"text-muted-foreground py-4 text-center text-sm",children:"No remote models available"}):(0,t.jsx)("div",{className:"space-y-2",children:Z.remote_models.map(e=>{var s;return(0,t.jsxs)("div",{className:"hover:bg-accent flex items-center justify-between rounded-lg border p-3 transition-colors",children:[(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("div",{className:"font-mono text-sm font-medium",children:e.id}),(0,t.jsx)("div",{className:"text-muted-foreground mt-1 text-xs",children:e.description||e.name})]}),(0,t.jsxs)("div",{className:"text-muted-foreground text-xs",children:[null==(s=e.context_length)?void 0:s.toLocaleString()," ","tokens"]})]},e.id)})})})]}):null})]})})]},e.id))})]})}),(0,t.jsx)(z.lG,{open:O,onOpenChange:R,children:(0,t.jsxs)(z.Cf,{className:"sm:max-w-[500px]",children:[(0,t.jsxs)(z.c7,{children:[(0,t.jsx)(z.L3,{children:"Edit Upstream Provider"}),(0,t.jsx)(z.rr,{children:"Update provider configuration"})]}),(0,t.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(A.J,{htmlFor:"edit_provider_type",children:"Provider Type"}),(0,t.jsxs)(P.l6,{value:V.provider_type,onValueChange:e=>{D({...V,provider_type:e})},children:[(0,t.jsx)(P.bq,{children:(0,t.jsx)(P.yv,{})}),(0,t.jsxs)(P.gC,{children:[(0,t.jsx)(P.eb,{value:"openrouter",children:"OpenRouter"}),(0,t.jsx)(P.eb,{value:"openai",children:"OpenAI"}),(0,t.jsx)(P.eb,{value:"anthropic",children:"Anthropic"}),(0,t.jsx)(P.eb,{value:"azure",children:"Azure OpenAI"}),(0,t.jsx)(P.eb,{value:"ollama",children:"Ollama"}),(0,t.jsx)(P.eb,{value:"generic",children:"Generic"})]})]})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(A.J,{htmlFor:"edit_base_url",children:"Base URL"}),(0,t.jsx)(C.p,{id:"edit_base_url",value:V.base_url,onChange:e=>D({...V,base_url:e.target.value}),placeholder:"https://api.example.com/v1"})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(A.J,{htmlFor:"edit_api_key",children:"API Key (leave blank to keep current)"}),(0,t.jsx)(C.p,{id:"edit_api_key",type:"password",value:V.api_key,onChange:e=>D({...V,api_key:e.target.value}),placeholder:"Leave blank to keep current"})]}),"azure"===V.provider_type&&(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(A.J,{htmlFor:"edit_api_version",children:"API Version"}),(0,t.jsx)(C.p,{id:"edit_api_version",value:V.api_version||"",onChange:e=>D({...V,api_version:e.target.value||null}),placeholder:"2024-02-15-preview"})]}),(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)(E.d,{id:"edit_enabled",checked:V.enabled,onCheckedChange:e=>D({...V,enabled:e})}),(0,t.jsx)(A.J,{htmlFor:"edit_enabled",children:"Enabled"})]})]}),(0,t.jsxs)(z.Es,{children:[(0,t.jsx)(n.$,{variant:"outline",onClick:()=>R(!1),children:"Cancel"}),(0,t.jsx)(n.$,{onClick:()=>{if(!s)return;let e={provider_type:V.provider_type,base_url:V.base_url,api_version:V.api_version,enabled:V.enabled};V.api_key&&(e.api_key=V.api_key),H.mutate({id:s.id,data:e})},disabled:H.isPending,children:H.isPending?"Updating...":"Update"})]})]})})]})]})}}},e=>{var s=s=>e(e.s=s);e.O(0,[363,222,808,29,730,978,481,982,236,255,945,497,358],()=>s(6078)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ui_out/_next/static/chunks/app/settings/page-a90352a6b8bf0df3.js b/ui_out/_next/static/chunks/app/settings/page-a90352a6b8bf0df3.js deleted file mode 100644 index c02092c4..00000000 --- a/ui_out/_next/static/chunks/app/settings/page-a90352a6b8bf0df3.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[662],{834:(e,s,a)=>{"use strict";a.d(s,{T:()=>t});var r=a(3422);a(4398);var n=a(9183);function t(e){let{className:s,...a}=e;return(0,r.jsx)("textarea",{"data-slot":"textarea",className:(0,n.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",s),...a})}},2739:(e,s,a)=>{Promise.resolve().then(a.bind(a,4961))},4961:(e,s,a)=>{"use strict";a.r(s),a.d(s,{default:()=>R});var r=a(3422),n=a(4398),t=a(6839),i=a(3234),l=a(3831),c=a(2738),d=a(268),o=a(3130),h=a(3648),u=a(8561),x=a(9675),p=a(246),m=a(4717);function j(){let{config:e,updateField:s,saveConfig:a,isSyncing:t}=function(){let[e,s]=(0,n.useState)({endpoint:"",apiKey:"",enabled:!1}),[a,r]=(0,n.useState)(!1),[t,c]=(0,n.useState)(!1);(0,n.useEffect)(()=>{(async()=>{s(i.s.getServerConfig()),r(!0);try{c(!0);let e=await i.s.loadServerConfigFromBackend();e&&s(e)}catch(e){console.error("Error loading configuration from backend:",e)}finally{c(!1)}})()},[]);let d=(0,n.useCallback)(async e=>{i.s.saveServerConfig(e),s(e);try{c(!0),await i.s.saveServerConfigToBackend(e)||l.oR.warning("Configuration saved locally, but failed to sync with server")}catch(e){console.error("Error saving configuration to backend:",e),l.oR.error("Failed to sync configuration with server")}finally{c(!1)}},[]),o=(0,n.useCallback)((s,a)=>{d({...e,[s]:a})},[e,d]),h=(0,n.useCallback)(()=>{d({...e,enabled:!e.enabled})},[e,d]);return{config:e,isLoaded:a,isSyncing:t,saveConfig:d,updateField:o,toggleEnabled:h,isConfigValid:(0,n.useCallback)(()=>i.s.isServerConfigValid(),[])}}(),[j,v]=(0,n.useState)("idle"),f=(e,a)=>{s(e,a),v("idle")},g=async()=>{if(e.endpoint){v("testing");try{await i.s.testConnection(e)?(v("success"),l.oR.success("Connection successful!")):(v("error"),l.oR.error("Connection failed. Please check your settings."))}catch(e){console.error("Connection test error:",e),v("error"),l.oR.error("Connection failed. Please check your settings.")}}};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"mb-6 flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-xl font-semibold tracking-tight",children:"External Server Configuration"}),t&&(0,r.jsxs)(u.E,{variant:"outline",className:"flex items-center gap-1",children:[(0,r.jsx)(x.A,{className:"h-4 w-4 animate-spin text-blue-500"}),"Syncing..."]})]}),(0,r.jsxs)(c.Zp,{children:[(0,r.jsx)(c.aR,{children:(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)(c.ZB,{children:"Request Forwarding Settings"}),(0,r.jsx)(c.BT,{children:"Configure external server endpoint and authentication for API request forwarding"})]}),e.enabled&&("idle"===j?(0,r.jsxs)(u.E,{variant:"outline",className:"flex items-center gap-1",children:[(0,r.jsx)(x.A,{className:"h-4 w-4 text-yellow-500"}),"Not tested"]}):"testing"===j?(0,r.jsxs)(u.E,{variant:"outline",className:"flex items-center gap-1",children:[(0,r.jsx)(x.A,{className:"h-4 w-4 animate-pulse text-blue-500"}),"Testing..."]}):"success"===j?(0,r.jsxs)(u.E,{variant:"outline",className:"flex items-center gap-1",children:[(0,r.jsx)(p.A,{className:"h-4 w-4 text-green-500"}),"Connected"]}):(0,r.jsxs)(u.E,{variant:"outline",className:"flex items-center gap-1",children:[(0,r.jsx)(m.A,{className:"h-4 w-4 text-red-500"}),"Failed"]}))]})}),(0,r.jsx)(c.Wu,{className:"space-y-4",children:(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(o.J,{htmlFor:"server-endpoint",children:"Server Endpoint URL"}),(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)(d.p,{id:"server-endpoint",placeholder:"https://ecash.routstr.info",value:e.endpoint,onChange:e=>f("endpoint",e.target.value),className:"pr-24"}),(0,r.jsx)(h.$,{type:"button",variant:"ghost",size:"sm",className:"absolute top-0 right-0 h-full px-3 py-2 text-xs",onClick:()=>f("endpoint","https://ecash.routstr.info"),children:"Use Default"})]})]})}),(0,r.jsxs)(c.wL,{className:"flex justify-between",children:[(0,r.jsx)(h.$,{variant:"outline",onClick:g,disabled:!e.endpoint||"testing"===j,children:"Test Connection"}),(0,r.jsx)(h.$,{onClick:()=>{try{a(e),l.oR.success("Server configuration saved successfully")}catch(e){l.oR.error("Failed to save configuration"),console.error("Configuration save error:",e)}},children:"Save Configuration"})]})]})]})}var v=a(9119),f=a(834),g=a(9442),w=a(989),N=a(7137),y=a(3728),b=a(7829);function C(){let[e,s]=(0,n.useState)({}),[t,i]=(0,n.useState)(!0),[u,p]=(0,n.useState)(!1),[m,j]=(0,n.useState)(""),[C,_]=(0,n.useState)(!1),[S,k]=(0,n.useState)(""),[R,A]=(0,n.useState)({current_password:"",new_password:"",confirm_password:""}),[F,E]=(0,n.useState)(""),[P,B]=(0,n.useState)(!1);(0,n.useEffect)(()=>{T()},[]);let T=async()=>{try{i(!0),j("");let e=await v.zQ.getSettings();s(e)}catch(s){let e=s instanceof Error?s.message:"Failed to load settings";j(e),l.oR.error(e)}finally{i(!1)}},Z=async()=>{try{p(!0),j("");let a=await v.zQ.updateSettings(e);s(a),l.oR.success("Settings saved successfully")}catch(s){let e=s instanceof Error?s.message:"Failed to save settings";j(e),l.oR.error(e)}finally{p(!1)}},J=async()=>{try{if(B(!0),E(""),R.new_password!==R.confirm_password)return void E("New passwords do not match");if(R.new_password.length<6)return void E("New password must be at least 6 characters");let{apiClient:e}=await Promise.resolve().then(a.bind(a,7916));await e.patch("/admin/api/password",{current_password:R.current_password,new_password:R.new_password}),A({current_password:"",new_password:"",confirm_password:""}),l.oR.success("Password updated successfully")}catch(s){let e=s instanceof Error?s.message:"Failed to update password";E(e),l.oR.error(e)}finally{B(!1)}},U=(e,a)=>{s(s=>({...s,[e]:a}))},$=e=>{s(s=>{var a;return{...s,cashu_mints:(null==(a=s.cashu_mints)?void 0:a.filter((s,a)=>a!==e))||[]}})},L=(s,a,n)=>{let t=e[s]||"";return(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(o.J,{htmlFor:s,children:a}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(d.p,{id:s,type:C?"text":"password",value:C?t:t?"••••••••":"",onChange:e=>U(s,e.target.value),placeholder:n,className:"flex-1"}),(0,r.jsx)(h.$,{type:"button",variant:"outline",size:"icon",onClick:()=>_(!C),children:C?(0,r.jsx)(w.A,{className:"h-4 w-4"}):(0,r.jsx)(N.A,{className:"h-4 w-4"})})]})]})};return t?(0,r.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,r.jsx)("div",{className:"text-muted-foreground",children:"Loading settings..."})}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"mb-6",children:[(0,r.jsx)("h2",{className:"text-xl font-semibold tracking-tight",children:"Admin Settings"}),(0,r.jsx)("p",{className:"text-muted-foreground",children:"Configure your Routstr node settings"})]}),m&&(0,r.jsxs)(g.Fc,{variant:"destructive",className:"mb-6",children:[(0,r.jsx)(x.A,{className:"h-4 w-4"}),(0,r.jsx)(g.TN,{children:m})]}),(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)(c.Zp,{children:[(0,r.jsxs)(c.aR,{children:[(0,r.jsx)(c.ZB,{children:"Basic Information"}),(0,r.jsx)(c.BT,{children:"Configure the basic node information and branding"})]}),(0,r.jsxs)(c.Wu,{className:"space-y-4",children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(o.J,{htmlFor:"name",children:"Node Name"}),(0,r.jsx)(d.p,{id:"name",value:e.name||"",onChange:e=>U("name",e.target.value),placeholder:"ARoutstrNode"})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(o.J,{htmlFor:"description",children:"Description"}),(0,r.jsx)(f.T,{id:"description",value:e.description||"",onChange:e=>U("description",e.target.value),placeholder:"A Routstr Node",rows:3})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(o.J,{htmlFor:"http_url",children:"HTTP URL"}),(0,r.jsx)(d.p,{id:"http_url",value:e.http_url||"",onChange:e=>U("http_url",e.target.value),placeholder:"https://your-node.com"})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(o.J,{htmlFor:"onion_url",children:"Onion URL (Optional)"}),(0,r.jsx)(d.p,{id:"onion_url",value:e.onion_url||"",onChange:e=>U("onion_url",e.target.value),placeholder:"http://your-node.onion"})]})]})]}),(0,r.jsxs)(c.Zp,{children:[(0,r.jsxs)(c.aR,{children:[(0,r.jsx)(c.ZB,{children:"Nostr Configuration"}),(0,r.jsx)(c.BT,{children:"Configure Nostr public and private keys"})]}),(0,r.jsxs)(c.Wu,{className:"space-y-4",children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(o.J,{htmlFor:"npub",children:"Public Key (npub)"}),(0,r.jsx)(d.p,{id:"npub",value:e.npub||"",onChange:e=>U("npub",e.target.value),placeholder:"npub1..."})]}),L("nsec","Private Key (nsec)","nsec1...")]})]}),(0,r.jsxs)(c.Zp,{children:[(0,r.jsxs)(c.aR,{children:[(0,r.jsx)(c.ZB,{children:"Security Settings"}),(0,r.jsx)(c.BT,{children:"Configure authentication and API access"})]}),(0,r.jsx)(c.Wu,{className:"space-y-4",children:L("upstream_api_key","Upstream API Key","Enter API key")})]}),(0,r.jsxs)(c.Zp,{children:[(0,r.jsxs)(c.aR,{children:[(0,r.jsx)(c.ZB,{children:"Cashu Mints"}),(0,r.jsx)(c.BT,{children:"Configure Cashu mint endpoints for payments"})]}),(0,r.jsxs)(c.Wu,{className:"space-y-4",children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(o.J,{htmlFor:"newMint",children:"Add Mint URL"}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(d.p,{id:"newMint",value:S,onChange:e=>k(e.target.value),placeholder:"https://mint.example.com"}),(0,r.jsx)(h.$,{onClick:()=>{S.trim()&&(s(e=>({...e,cashu_mints:[...e.cashu_mints||[],S.trim()]})),k(""))},disabled:!S.trim(),children:"Add Mint"})]})]}),e.cashu_mints&&e.cashu_mints.length>0&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(o.J,{children:"Configured Mints"}),(0,r.jsx)("div",{className:"space-y-2",children:e.cashu_mints.map((e,s)=>(0,r.jsxs)("div",{className:"flex items-center gap-2 rounded border p-2",children:[(0,r.jsx)("span",{className:"flex-1 text-sm",children:e}),(0,r.jsx)(h.$,{variant:"outline",size:"sm",onClick:()=>$(s),children:"Remove"})]},s))})]})]})]}),(0,r.jsx)(c.Zp,{className:"mt-6",children:(0,r.jsxs)(c.wL,{className:"flex justify-between",children:[(0,r.jsxs)(h.$,{variant:"outline",onClick:T,disabled:t||u,children:[(0,r.jsx)(y.A,{className:"mr-2 h-4 w-4"}),"Reload"]}),(0,r.jsxs)(h.$,{onClick:Z,disabled:t||u,children:[(0,r.jsx)(b.A,{className:"mr-2 h-4 w-4"}),u?"Saving...":"Save Settings"]})]})}),(0,r.jsxs)(c.Zp,{children:[(0,r.jsxs)(c.aR,{children:[(0,r.jsx)(c.ZB,{children:"Change Admin Password"}),(0,r.jsx)(c.BT,{children:"Update your admin password for enhanced security"})]}),(0,r.jsxs)(c.Wu,{className:"space-y-4",children:[F&&(0,r.jsxs)(g.Fc,{variant:"destructive",children:[(0,r.jsx)(x.A,{className:"h-4 w-4"}),(0,r.jsx)(g.TN,{children:F})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(o.J,{htmlFor:"current_password",children:"Current Password"}),(0,r.jsx)(d.p,{id:"current_password",type:"password",value:R.current_password,onChange:e=>A(s=>({...s,current_password:e.target.value})),placeholder:"Enter current password"})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(o.J,{htmlFor:"new_password",children:"New Password"}),(0,r.jsx)(d.p,{id:"new_password",type:"password",value:R.new_password,onChange:e=>A(s=>({...s,new_password:e.target.value})),placeholder:"Enter new password (min 6 characters)"})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(o.J,{htmlFor:"confirm_password",children:"Confirm New Password"}),(0,r.jsx)(d.p,{id:"confirm_password",type:"password",value:R.confirm_password,onChange:e=>A(s=>({...s,confirm_password:e.target.value})),placeholder:"Confirm new password"})]})]}),(0,r.jsx)(c.wL,{children:(0,r.jsxs)(h.$,{onClick:J,disabled:P||!R.current_password||!R.new_password||!R.confirm_password,children:[(0,r.jsx)(b.A,{className:"mr-2 h-4 w-4"}),P?"Updating...":"Update Password"]})})]})]})]})}var _=a(4756),S=a(7569),k=a(953);function R(){return(0,r.jsxs)(k.SidebarProvider,{children:[(0,r.jsx)(S.AppSidebar,{variant:"inset"}),(0,r.jsxs)(k.SidebarInset,{children:[(0,r.jsx)(_.SiteHeader,{}),(0,r.jsx)("div",{className:"flex flex-1 flex-col",children:(0,r.jsxs)("div",{className:"@container/main flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-8",children:[(0,r.jsx)("div",{className:"flex items-center",children:(0,r.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:"Settings"})}),(0,r.jsxs)(t.tU,{defaultValue:"admin",className:"w-full",children:[(0,r.jsx)(t.j7,{className:"mb-4",children:(0,r.jsx)(t.Xi,{value:"admin",children:"Admin Settings"})}),(0,r.jsx)(t.av,{value:"server",children:(0,r.jsx)(j,{})}),(0,r.jsx)(t.av,{value:"admin",children:(0,r.jsx)(C,{})})]})]})})]}),(0,r.jsx)(l.l$,{})]})}}},e=>{var s=s=>e(e.s=s);e.O(0,[363,222,808,978,651,236,255,945,497,358],()=>s(2739)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ui_out/_next/static/chunks/app/settings/page-abf398be5044bf9e.js b/ui_out/_next/static/chunks/app/settings/page-abf398be5044bf9e.js new file mode 100644 index 00000000..1649f93f --- /dev/null +++ b/ui_out/_next/static/chunks/app/settings/page-abf398be5044bf9e.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[662],{834:(e,s,r)=>{"use strict";r.d(s,{T:()=>n});var a=r(3422);r(4398);var t=r(9183);function n(e){let{className:s,...r}=e;return(0,a.jsx)("textarea",{"data-slot":"textarea",className:(0,t.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",s),...r})}},2739:(e,s,r)=>{Promise.resolve().then(r.bind(r,4961))},4961:(e,s,r)=>{"use strict";r.r(s),r.d(s,{default:()=>R});var a=r(3422),t=r(4398),n=r(6839),i=r(3234),l=r(3831),c=r(2738),o=r(268),d=r(3130),u=r(3648),x=r(8561),h=r(9675),p=r(246),m=r(4717);function g(){let{config:e,updateField:s,saveConfig:r,isSyncing:n}=function(){let[e,s]=(0,t.useState)({endpoint:"",apiKey:"",enabled:!1}),[r,a]=(0,t.useState)(!1),[n,c]=(0,t.useState)(!1);(0,t.useEffect)(()=>{(async()=>{s(i.s.getServerConfig()),a(!0);try{c(!0);let e=await i.s.loadServerConfigFromBackend();e&&s(e)}catch(e){console.error("Error loading configuration from backend:",e)}finally{c(!1)}})()},[]);let o=(0,t.useCallback)(async e=>{i.s.saveServerConfig(e),s(e);try{c(!0),await i.s.saveServerConfigToBackend(e)||l.oR.warning("Configuration saved locally, but failed to sync with server")}catch(e){console.error("Error saving configuration to backend:",e),l.oR.error("Failed to sync configuration with server")}finally{c(!1)}},[]),d=(0,t.useCallback)((s,r)=>{o({...e,[s]:r})},[e,o]),u=(0,t.useCallback)(()=>{o({...e,enabled:!e.enabled})},[e,o]);return{config:e,isLoaded:r,isSyncing:n,saveConfig:o,updateField:d,toggleEnabled:u,isConfigValid:(0,t.useCallback)(()=>i.s.isServerConfigValid(),[])}}(),[g,v]=(0,t.useState)("idle"),f=(e,r)=>{s(e,r),v("idle")},j=async()=>{if(e.endpoint){v("testing");try{await i.s.testConnection(e)?(v("success"),l.oR.success("Connection successful!")):(v("error"),l.oR.error("Connection failed. Please check your settings."))}catch(e){console.error("Connection test error:",e),v("error"),l.oR.error("Connection failed. Please check your settings.")}}};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"mb-6 flex items-center justify-between",children:[(0,a.jsx)("h2",{className:"text-xl font-semibold tracking-tight",children:"External Server Configuration"}),n&&(0,a.jsxs)(x.E,{variant:"outline",className:"flex items-center gap-1",children:[(0,a.jsx)(h.A,{className:"h-4 w-4 animate-spin text-blue-500"}),"Syncing..."]})]}),(0,a.jsxs)(c.Zp,{children:[(0,a.jsx)(c.aR,{children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(c.ZB,{children:"Request Forwarding Settings"}),(0,a.jsx)(c.BT,{children:"Configure external server endpoint and authentication for API request forwarding"})]}),e.enabled&&("idle"===g?(0,a.jsxs)(x.E,{variant:"outline",className:"flex items-center gap-1",children:[(0,a.jsx)(h.A,{className:"h-4 w-4 text-yellow-500"}),"Not tested"]}):"testing"===g?(0,a.jsxs)(x.E,{variant:"outline",className:"flex items-center gap-1",children:[(0,a.jsx)(h.A,{className:"h-4 w-4 animate-pulse text-blue-500"}),"Testing..."]}):"success"===g?(0,a.jsxs)(x.E,{variant:"outline",className:"flex items-center gap-1",children:[(0,a.jsx)(p.A,{className:"h-4 w-4 text-green-500"}),"Connected"]}):(0,a.jsxs)(x.E,{variant:"outline",className:"flex items-center gap-1",children:[(0,a.jsx)(m.A,{className:"h-4 w-4 text-red-500"}),"Failed"]}))]})}),(0,a.jsx)(c.Wu,{className:"space-y-4",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(d.J,{htmlFor:"server-endpoint",children:"Server Endpoint URL"}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(o.p,{id:"server-endpoint",placeholder:"https://ecash.routstr.info",value:e.endpoint,onChange:e=>f("endpoint",e.target.value),className:"pr-24"}),(0,a.jsx)(u.$,{type:"button",variant:"ghost",size:"sm",className:"absolute top-0 right-0 h-full px-3 py-2 text-xs",onClick:()=>f("endpoint","https://ecash.routstr.info"),children:"Use Default"})]})]})}),(0,a.jsxs)(c.wL,{className:"flex justify-between",children:[(0,a.jsx)(u.$,{variant:"outline",onClick:j,disabled:!e.endpoint||"testing"===g,children:"Test Connection"}),(0,a.jsx)(u.$,{onClick:()=>{try{r(e),l.oR.success("Server configuration saved successfully")}catch(e){l.oR.error("Failed to save configuration"),console.error("Configuration save error:",e)}},children:"Save Configuration"})]})]})]})}var v=r(9119),f=r(834),j=r(9442),w=r(989),b=r(7137),y=r(3728),N=r(7829);function C(){let[e,s]=(0,t.useState)({}),[n,i]=(0,t.useState)(!0),[x,p]=(0,t.useState)(!1),[m,g]=(0,t.useState)(""),[C,_]=(0,t.useState)(!1),[S,k]=(0,t.useState)(""),[R,F]=(0,t.useState)({current_password:"",new_password:"",confirm_password:""}),[A,E]=(0,t.useState)(""),[P,B]=(0,t.useState)(!1);(0,t.useEffect)(()=>{T()},[]);let T=async()=>{try{i(!0),g("");let e=await v.zQ.getSettings();s(e)}catch(s){let e=s instanceof Error?s.message:"Failed to load settings";g(e),l.oR.error(e)}finally{i(!1)}},Z=async()=>{try{p(!0),g("");let r=await v.zQ.updateSettings(e);s(r),l.oR.success("Settings saved successfully")}catch(s){let e=s instanceof Error?s.message:"Failed to save settings";g(e),l.oR.error(e)}finally{p(!1)}},J=async()=>{try{if(B(!0),E(""),R.new_password!==R.confirm_password)return void E("New passwords do not match");if(R.new_password.length<6)return void E("New password must be at least 6 characters");let{apiClient:e}=await Promise.resolve().then(r.bind(r,7916));await e.patch("/admin/api/password",{current_password:R.current_password,new_password:R.new_password}),F({current_password:"",new_password:"",confirm_password:""}),l.oR.success("Password updated successfully")}catch(s){let e=s instanceof Error?s.message:"Failed to update password";E(e),l.oR.error(e)}finally{B(!1)}},U=(e,r)=>{s(s=>({...s,[e]:r}))},$=e=>{s(s=>{var r;return{...s,cashu_mints:(null==(r=s.cashu_mints)?void 0:r.filter((s,r)=>r!==e))||[]}})},z=(s,r,t)=>{let n=e[s]||"";return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(d.J,{htmlFor:s,children:r}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.p,{id:s,type:C?"text":"password",value:C?n:n?"••••••••":"",onChange:e=>U(s,e.target.value),placeholder:t,className:"flex-1"}),(0,a.jsx)(u.$,{type:"button",variant:"outline",size:"icon",onClick:()=>_(!C),children:C?(0,a.jsx)(w.A,{className:"h-4 w-4"}):(0,a.jsx)(b.A,{className:"h-4 w-4"})})]})]})};return n?(0,a.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,a.jsx)("div",{className:"text-muted-foreground",children:"Loading settings..."})}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"mb-6",children:[(0,a.jsx)("h2",{className:"text-xl font-semibold tracking-tight",children:"Admin Settings"}),(0,a.jsx)("p",{className:"text-muted-foreground",children:"Configure your Routstr node settings"})]}),m&&(0,a.jsxs)(j.Fc,{variant:"destructive",className:"mb-6",children:[(0,a.jsx)(h.A,{className:"h-4 w-4"}),(0,a.jsx)(j.TN,{children:m})]}),(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)(c.Zp,{children:[(0,a.jsxs)(c.aR,{children:[(0,a.jsx)(c.ZB,{children:"Basic Information"}),(0,a.jsx)(c.BT,{children:"Configure the basic node information and branding"})]}),(0,a.jsxs)(c.Wu,{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(d.J,{htmlFor:"name",children:"Node Name"}),(0,a.jsx)(o.p,{id:"name",value:e.name||"",onChange:e=>U("name",e.target.value),placeholder:"ARoutstrNode"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(d.J,{htmlFor:"description",children:"Description"}),(0,a.jsx)(f.T,{id:"description",value:e.description||"",onChange:e=>U("description",e.target.value),placeholder:"A Routstr Node",rows:3})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(d.J,{htmlFor:"http_url",children:"HTTP URL"}),(0,a.jsx)(o.p,{id:"http_url",value:e.http_url||"",onChange:e=>U("http_url",e.target.value),placeholder:"https://your-node.com"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(d.J,{htmlFor:"onion_url",children:"Onion URL (Optional)"}),(0,a.jsx)(o.p,{id:"onion_url",value:e.onion_url||"",onChange:e=>U("onion_url",e.target.value),placeholder:"http://your-node.onion"})]})]})]}),(0,a.jsxs)(c.Zp,{children:[(0,a.jsxs)(c.aR,{children:[(0,a.jsx)(c.ZB,{children:"Nostr Configuration"}),(0,a.jsx)(c.BT,{children:"Configure Nostr public and private keys"})]}),(0,a.jsxs)(c.Wu,{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(d.J,{htmlFor:"npub",children:"Public Key (npub)"}),(0,a.jsx)(o.p,{id:"npub",value:e.npub||"",onChange:e=>U("npub",e.target.value),placeholder:"npub1..."})]}),z("nsec","Private Key (nsec)","nsec1...")]})]}),(0,a.jsxs)(c.Zp,{children:[(0,a.jsxs)(c.aR,{children:[(0,a.jsx)(c.ZB,{children:"Security Settings"}),(0,a.jsx)(c.BT,{children:"Configure authentication and API access"})]}),(0,a.jsx)(c.Wu,{className:"space-y-4",children:z("upstream_api_key","Upstream API Key","Enter API key")})]}),(0,a.jsxs)(c.Zp,{children:[(0,a.jsxs)(c.aR,{children:[(0,a.jsx)(c.ZB,{children:"Cashu Mints"}),(0,a.jsx)(c.BT,{children:"Configure Cashu mint endpoints for payments"})]}),(0,a.jsxs)(c.Wu,{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(d.J,{htmlFor:"newMint",children:"Add Mint URL"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.p,{id:"newMint",value:S,onChange:e=>k(e.target.value),placeholder:"https://mint.example.com"}),(0,a.jsx)(u.$,{onClick:()=>{S.trim()&&(s(e=>({...e,cashu_mints:[...e.cashu_mints||[],S.trim()]})),k(""))},disabled:!S.trim(),children:"Add Mint"})]})]}),e.cashu_mints&&e.cashu_mints.length>0&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(d.J,{children:"Configured Mints"}),(0,a.jsx)("div",{className:"space-y-2",children:e.cashu_mints.map((e,s)=>(0,a.jsxs)("div",{className:"flex items-center gap-2 rounded border p-2",children:[(0,a.jsx)("span",{className:"flex-1 text-sm",children:e}),(0,a.jsx)(u.$,{variant:"outline",size:"sm",onClick:()=>$(s),children:"Remove"})]},s))})]})]})]}),(0,a.jsx)(c.Zp,{className:"mt-6",children:(0,a.jsxs)(c.wL,{className:"flex justify-between",children:[(0,a.jsxs)(u.$,{variant:"outline",onClick:T,disabled:n||x,children:[(0,a.jsx)(y.A,{className:"mr-2 h-4 w-4"}),"Reload"]}),(0,a.jsxs)(u.$,{onClick:Z,disabled:n||x,children:[(0,a.jsx)(N.A,{className:"mr-2 h-4 w-4"}),x?"Saving...":"Save Settings"]})]})}),(0,a.jsxs)(c.Zp,{children:[(0,a.jsxs)(c.aR,{children:[(0,a.jsx)(c.ZB,{children:"Change Admin Password"}),(0,a.jsx)(c.BT,{children:"Update your admin password for enhanced security"})]}),(0,a.jsxs)(c.Wu,{className:"space-y-4",children:[A&&(0,a.jsxs)(j.Fc,{variant:"destructive",children:[(0,a.jsx)(h.A,{className:"h-4 w-4"}),(0,a.jsx)(j.TN,{children:A})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(d.J,{htmlFor:"current_password",children:"Current Password"}),(0,a.jsx)(o.p,{id:"current_password",type:"password",value:R.current_password,onChange:e=>F(s=>({...s,current_password:e.target.value})),placeholder:"Enter current password"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(d.J,{htmlFor:"new_password",children:"New Password"}),(0,a.jsx)(o.p,{id:"new_password",type:"password",value:R.new_password,onChange:e=>F(s=>({...s,new_password:e.target.value})),placeholder:"Enter new password (min 6 characters)"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(d.J,{htmlFor:"confirm_password",children:"Confirm New Password"}),(0,a.jsx)(o.p,{id:"confirm_password",type:"password",value:R.confirm_password,onChange:e=>F(s=>({...s,confirm_password:e.target.value})),placeholder:"Confirm new password"})]})]}),(0,a.jsx)(c.wL,{children:(0,a.jsxs)(u.$,{onClick:J,disabled:P||!R.current_password||!R.new_password||!R.confirm_password,children:[(0,a.jsx)(N.A,{className:"mr-2 h-4 w-4"}),P?"Updating...":"Update Password"]})})]})]})]})}var _=r(4756),S=r(7569),k=r(953);function R(){return(0,a.jsxs)(k.SidebarProvider,{children:[(0,a.jsx)(S.AppSidebar,{variant:"inset"}),(0,a.jsxs)(k.SidebarInset,{children:[(0,a.jsx)(_.SiteHeader,{}),(0,a.jsx)("div",{className:"flex flex-1 flex-col",children:(0,a.jsxs)("div",{className:"@container/main flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-8",children:[(0,a.jsx)("div",{className:"flex items-center",children:(0,a.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:"Settings"})}),(0,a.jsxs)(n.tU,{defaultValue:"admin",className:"w-full",children:[(0,a.jsx)(n.j7,{className:"mb-4",children:(0,a.jsx)(n.Xi,{value:"admin",children:"Admin Settings"})}),(0,a.jsx)(n.av,{value:"server",children:(0,a.jsx)(g,{})}),(0,a.jsx)(n.av,{value:"admin",children:(0,a.jsx)(C,{})})]})]})})]}),(0,a.jsx)(l.l$,{})]})}},6839:(e,s,r)=>{"use strict";r.d(s,{Xi:()=>c,av:()=>o,j7:()=>l,tU:()=>i});var a=r(3422);r(4398);var t=r(1749),n=r(9183);function i(e){let{className:s,...r}=e;return(0,a.jsx)(t.bL,{"data-slot":"tabs",className:(0,n.cn)("flex flex-col gap-2",s),...r})}function l(e){let{className:s,...r}=e;return(0,a.jsx)(t.B8,{"data-slot":"tabs-list",className:(0,n.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",s),...r})}function c(e){let{className:s,...r}=e;return(0,a.jsx)(t.l9,{"data-slot":"tabs-trigger",className:(0,n.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s),...r})}function o(e){let{className:s,...r}=e;return(0,a.jsx)(t.UC,{"data-slot":"tabs-content",className:(0,n.cn)("flex-1 outline-none",s),...r})}},8561:(e,s,r)=>{"use strict";r.d(s,{E:()=>l});var a=r(3422);r(4398);var t=r(4676),n=r(9183);let i=(0,t.F)("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground",success:"border-transparent bg-green-500 text-white hover:bg-green-500/80",warning:"border-transparent bg-yellow-500 text-white hover:bg-yellow-500/80",error:"border-transparent bg-red-500 text-white hover:bg-red-500/80"}},defaultVariants:{variant:"default"}});function l(e){let{className:s,variant:r,...t}=e;return(0,a.jsx)("div",{className:(0,n.cn)(i({variant:r}),s),...t})}},9442:(e,s,r)=>{"use strict";r.d(s,{Fc:()=>l,TN:()=>c});var a=r(3422);r(4398);var t=r(4676),n=r(9183);let i=(0,t.F)("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function l(e){let{className:s,variant:r,...t}=e;return(0,a.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,n.cn)(i({variant:r}),s),...t})}function c(e){let{className:s,...r}=e;return(0,a.jsx)("div",{"data-slot":"alert-description",className:(0,n.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",s),...r})}}},e=>{var s=s=>e(e.s=s);e.O(0,[363,222,808,978,651,236,601,945,497,358],()=>s(2739)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ui_out/_next/static/css/5bf7a4b46c37a9cb.css b/ui_out/_next/static/css/5bf7a4b46c37a9cb.css deleted file mode 100644 index 0265bf13..00000000 --- a/ui_out/_next/static/css/5bf7a4b46c37a9cb.css +++ /dev/null @@ -1 +0,0 @@ -/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:host,:root{--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-800:oklch(44.4% .177 26.899);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-orange-800:oklch(47% .157 37.304);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-800:oklch(47.3% .137 46.201);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-green-950:oklch(26.6% .065 152.934);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-800:oklch(43.2% .095 166.913);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-800:oklch(43.8% .218 303.724);--color-pink-100:oklch(94.8% .028 342.258);--color-pink-800:oklch(45.9% .187 3.815);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-xs:.125rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-geist-sans);--default-mono-font-family:var(--font-geist-mono);--color-border:var(--border)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.\@container\/card{container:card/inline-size}.\@container\/card-header{container:card-header/inline-size}.\@container\/main{container:main/inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-12{top:calc(var(--spacing)*-12)}.top-0{top:calc(var(--spacing)*0)}.top-1\.5{top:calc(var(--spacing)*1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-3{top:calc(var(--spacing)*3)}.top-3\.5{top:calc(var(--spacing)*3.5)}.top-4{top:calc(var(--spacing)*4)}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.-right-12{right:calc(var(--spacing)*-12)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.-bottom-12{bottom:calc(var(--spacing)*-12)}.bottom-0{bottom:calc(var(--spacing)*0)}.-left-12{left:calc(var(--spacing)*-12)}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[100\]{z-index:100}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3\.5{margin-inline:calc(var(--spacing)*3.5)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing)*.5)}.my-1{margin-block:calc(var(--spacing)*1)}.my-2{margin-block:calc(var(--spacing)*2)}.-mt-4{margin-top:calc(var(--spacing)*-4)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.-ml-4{margin-left:calc(var(--spacing)*-4)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-7{width:calc(var(--spacing)*7);height:calc(var(--spacing)*7)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-full{width:100%;height:100%}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-24{height:calc(var(--spacing)*24)}.h-\[1\.15rem\]{height:1.15rem}.h-\[40px\]{height:40px}.h-\[60px\]{height:60px}.h-\[100px\]{height:100px}.h-\[120px\]{height:120px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-\(--radix-context-menu-content-available-height\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-32{max-height:calc(var(--spacing)*32)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[300px\]{max-height:300px}.max-h-screen{max-height:100vh}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-4{min-height:calc(var(--spacing)*4)}.min-h-16{min-height:calc(var(--spacing)*16)}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0{width:calc(var(--spacing)*0)}.w-1{width:calc(var(--spacing)*1)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-40{width:calc(var(--spacing)*40)}.w-56{width:calc(var(--spacing)*56)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-\[--radix-dropdown-menu-trigger-width\]{width:--radix-dropdown-menu-trigger-width}.w-\[60px\]{width:60px}.w-\[100px\]{width:100px}.w-\[400px\]{width:400px}.w-\[calc\(100\%-3rem\)\]{width:calc(100% - 3rem)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[300px\]{max-width:300px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-max{max-width:max-content}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-5{min-width:calc(var(--spacing)*5)}.min-w-8{min-width:calc(var(--spacing)*8)}.min-w-9{min-width:calc(var(--spacing)*9)}.min-w-10{min-width:calc(var(--spacing)*10)}.min-w-56{min-width:calc(var(--spacing)*56)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-fit{min-width:fit-content}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.origin-\(--radix-context-menu-content-transform-origin\){transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-hover-card-content-transform-origin\){transform-origin:var(--radix-hover-card-content-transform-origin)}.origin-\(--radix-menubar-content-transform-origin\){transform-origin:var(--radix-menubar-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1)}.-translate-x-1\/2,.-translate-x-px{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-x-\[-50\%\],.translate-x-px{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1)}.-translate-y-1\/2,.translate-y-\[-50\%\]{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-caret-blink{animation:caret-blink 1.25s ease-out infinite}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing)*1)}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing)*.5)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\(--color-border\){border-color:var(--color-border)}.border-amber-200{border-color:var(--color-amber-200)}.border-blue-200{border-color:var(--color-blue-200)}.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.border-destructive{border-color:var(--destructive)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-green-200{border-color:var(--color-green-200)}.border-green-300{border-color:var(--color-green-300)}.border-green-500{border-color:var(--color-green-500)}.border-input{border-color:var(--input)}.border-orange-300{border-color:var(--color-orange-300)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\(--color-bg\){background-color:var(--color-bg)}.bg-accent{background-color:var(--accent)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-background{background-color:var(--background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive,.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-foreground{background-color:var(--foreground)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/30{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/30{background-color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-orange-100{background-color:var(--color-orange-100)}.bg-pink-100{background-color:var(--color-pink-100)}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-500{background-color:var(--color-yellow-500)}.fill-current{fill:currentColor}.fill-primary{fill:var(--primary)}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-2\.5{padding-right:calc(var(--spacing)*2.5)}.pr-8{padding-right:calc(var(--spacing)*8)}.pr-10{padding-right:calc(var(--spacing)*10)}.pr-24{padding-right:calc(var(--spacing)*24)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-geist-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-amber-800{color:var(--color-amber-800)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-emerald-800{color:var(--color-emerald-800)}.text-foreground,.text-foreground\/50{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/50{color:color-mix(in oklab,var(--foreground)50%,transparent)}}.text-gray-800{color:var(--color-gray-800)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-800{color:var(--color-green-800)}.text-green-900{color:var(--color-green-900)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{color:var(--color-orange-600)}.text-orange-800{color:var(--color-orange-800)}.text-pink-800{color:var(--color-pink-800)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-800{color:var(--color-purple-800)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground)70%,transparent)}}.text-white{color:var(--color-white)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-800{color:var(--color-yellow-800)}.capitalize{text-transform:capitalize}.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,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)))}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-lg,.shadow-md{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.shadow-none{--tw-shadow:0 0 #0000}.shadow-none,.shadow-sm{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a)}.shadow-xl,.shadow-xs{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.ring-0,.ring-2{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.ring-blue-500{--tw-ring-color:var(--color-blue-500)}.ring-primary{--tw-ring-color:var(--primary)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.grayscale{--tw-grayscale:grayscale(100%)}.filter,.grayscale{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\]{transition-property:width,height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.running{animation-play-state:running}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *),.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-has-data-\[collapsible\=icon\]\/sidebar-wrapper\:h-12:is(:where(.group\/sidebar-wrapper):has([data-collapsible=icon]) *){height:calc(var(--spacing)*12)}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing)*8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing)*-8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing)*8)!important;height:calc(var(--spacing)*8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing)*0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing)*-4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing)*0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:top-full:is(:where(.group\/navigation-menu)[data-viewport=false] *){top:100%}.group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5:is(:where(.group\/navigation-menu)[data-viewport=false] *){margin-top:calc(var(--spacing)*1.5)}.group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden:is(:where(.group\/navigation-menu)[data-viewport=false] *){overflow:hidden}.group-data-\[viewport\=false\]\/navigation-menu\:rounded-md:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-radius:calc(var(--radius) - 2px)}.group-data-\[viewport\=false\]\/navigation-menu\:border:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[viewport\=false\]\/navigation-menu\:bg-popover:is(:where(.group\/navigation-menu)[data-viewport=false] *){background-color:var(--popover)}.group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground:is(:where(.group\/navigation-menu)[data-viewport=false] *){color:var(--popover-foreground)}.group-data-\[viewport\=false\]\/navigation-menu\:shadow:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:duration-200:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-duration:.2s;transition-duration:.2s}.group-\[\.destructive\]\:border-muted\/40:is(:where(.group).destructive *){border-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.group-\[\.destructive\]\:border-muted\/40:is(:where(.group).destructive *){border-color:color-mix(in oklab,var(--muted)40%,transparent)}}.group-\[\.destructive\]\:text-red-300:is(:where(.group).destructive *){color:var(--color-red-300)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing)*1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing)*2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing)*1)}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:mr-4::file-selector-button{margin-right:calc(var(--spacing)*4)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:rounded-full::file-selector-button{border-radius:3.40282e+38px}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-blue-50::file-selector-button{background-color:var(--color-blue-50)}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:px-4::file-selector-button{padding-inline:calc(var(--spacing)*4)}.file\:py-2::file-selector-button{padding-block:calc(var(--spacing)*2)}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:font-semibold::file-selector-button{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.file\:text-blue-700::file-selector-button{color:var(--color-blue-700)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing)*-2)}.after\:inset-0:after{content:var(--tw-content);inset:calc(var(--spacing)*0)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\:top-1\/2:after{content:var(--tw-content);top:50%}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:z-0:after{content:var(--tw-content);z-index:0}.after\:flex:after{content:var(--tw-content);display:flex}.after\:w-1:after{content:var(--tw-content);width:calc(var(--spacing)*1)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.after\:items-center:after{content:var(--tw-content);align-items:center}.after\:border-t:after{content:var(--tw-content);border-top-style:var(--tw-border-style);border-top-width:1px}.after\:border-border:after{content:var(--tw-content);border-color:var(--border)}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}@media (hover:hover){.hover\:border-green-400:hover{border-color:var(--color-green-400)}.hover\:border-orange-400:hover{border-color:var(--color-orange-400)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-destructive\/80:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/80:hover{background-color:color-mix(in oklab,var(--destructive)80%,transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-green-500\/80:hover{background-color:#00c758cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-green-500\/80:hover{background-color:color-mix(in oklab,var(--color-green-500)80%,transparent)}}.hover\:bg-input\/30:hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-input\/30:hover{background-color:color-mix(in oklab,var(--input)30%,transparent)}}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\:bg-primary\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab,var(--primary)80%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-red-500\/80:hover{background-color:#fb2c36cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/80:hover{background-color:color-mix(in oklab,var(--color-red-500)80%,transparent)}}.hover\:bg-secondary:hover,.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-yellow-500\/80:hover{background-color:#edb200cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-yellow-500\/80:hover{background-color:color-mix(in oklab,var(--color-yellow-500)80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-green-700:hover{color:var(--color-green-700)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-orange-700:hover{color:var(--color-orange-700)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)))}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover,.hover\:shadow-md:hover{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.group-\[\.destructive\]\:hover\:border-destructive\/30:is(:where(.group).destructive *):hover{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.group-\[\.destructive\]\:hover\:border-destructive\/30:is(:where(.group).destructive *):hover{border-color:color-mix(in oklab,var(--destructive)30%,transparent)}}.group-\[\.destructive\]\:hover\:bg-destructive:is(:where(.group).destructive *):hover{background-color:var(--destructive)}.group-\[\.destructive\]\:hover\:text-red-50:is(:where(.group).destructive *):hover{color:var(--color-red-50)}.hover\:file\:bg-blue-100:hover::file-selector-button{background-color:var(--color-blue-100)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:z-10:focus{z-index:10}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:text-destructive:focus{color:var(--destructive)}.focus\:text-green-700:focus{color:var(--color-green-700)}.focus\:text-orange-700:focus{color:var(--color-orange-700)}.focus\:opacity-100:focus{opacity:1}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.group-\[\.destructive\]\:focus\:ring-destructive:is(:where(.group).destructive *):focus{--tw-ring-color:var(--destructive)}.group-\[\.destructive\]\:focus\:ring-red-400:is(:where(.group).destructive *):focus{--tw-ring-color:var(--color-red-400)}.group-\[\.destructive\]\:focus\:ring-offset-red-600:is(:where(.group).destructive *):focus{--tw-ring-offset-color:var(--color-red-600)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border:focus-visible{border-style:var(--tw-border-style);border-width:1px}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:bg-background:focus-visible{background-color:var(--background)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing)*4)1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:var(--ring)}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:var(--accent-foreground)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}@media (hover:hover){.data-\[active\=true\]\:hover\:bg-accent[data-active=true]:hover{background-color:var(--accent)}}.data-\[active\=true\]\:focus\:bg-accent[data-active=true]:focus{background-color:var(--accent)}.data-\[active\=true\]\:aria-invalid\:border-destructive[data-active=true][aria-invalid=true]{border-color:var(--destructive)}.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[dragging\=true\]\:z-10[data-dragging=true]{z-index:10}.data-\[dragging\=true\]\:opacity-80[data-dragging=true]{opacity:.8}.data-\[error\=true\]\:text-destructive[data-error=true]{color:var(--destructive)}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing)*8)}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x:calc(52*var(--spacing))}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x:calc(52*var(--spacing)*-1)}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x:calc(52*var(--spacing))}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x:calc(52*var(--spacing)*-1)}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity:0}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-]{--tw-exit-opacity:0}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-4[data-orientation=vertical]{height:calc(var(--spacing)*4)}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:calc(var(--spacing)*0)}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:calc(var(--spacing)*1)}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive)90%,transparent)}}:is(.\*\:data-\[slot\=card\]\:bg-gradient-to-t>*)[data-slot=card]{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}:is(.\*\:data-\[slot\=card\]\:from-primary\/5>*)[data-slot=card]{--tw-gradient-from:var(--primary)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=card\]\:from-primary\/5>*)[data-slot=card]{--tw-gradient-from:color-mix(in oklab,var(--primary)5%,transparent)}}:is(.\*\:data-\[slot\=card\]\:from-primary\/5>*)[data-slot=card]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}:is(.\*\:data-\[slot\=card\]\:to-card>*)[data-slot=card]{--tw-gradient-to:var(--card);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}:is(.\*\:data-\[slot\=card\]\:shadow-xs>*)[data-slot=card]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing)*12)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:ring-0 *)[data-slot=navigation-menu-link]:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:outline-none *)[data-slot=navigation-menu-link]:focus{--tw-outline-style:none;outline-style:none}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[slot\=sidebar-menu-button\]\:\!p-1\.5[data-slot=sidebar-menu-button]{padding:calc(var(--spacing)*1.5)!important}:is(.\*\*\:data-\[slot\=table-cell\]\:first\:w-8 *)[data-slot=table-cell]:first-child{width:calc(var(--spacing)*8)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x:calc(100% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:fade-out-80[data-state=closed]{--tw-exit-opacity:.8}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-right-full[data-state=closed]{--tw-exit-translate-x:calc(1*100%)}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-opacity:0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=hidden\]\:animate-out[data-state=hidden]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity:0}.data-\[state\=on\]\:bg-accent[data-state=on]{background-color:var(--accent)}.data-\[state\=on\]\:text-accent-foreground[data-state=on]{color:var(--accent-foreground)}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open],.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.data-\[state\=open\]\:bg-muted[data-state=open]{background-color:var(--muted)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:bg-sidebar-accent[data-state=open]{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:text-sidebar-accent-foreground[data-state=open]{color:var(--sidebar-accent-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale:.9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=open\]\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y:calc(1*-100%)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-opacity:0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-scale:.95}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-accent[data-state=open]:hover{background-color:var(--accent)}.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=open\]\:focus\:bg-accent[data-state=open]:focus{background-color:var(--accent)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[state\=visible\]\:animate-in[data-state=visible]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity:0}.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x:var(--radix-toast-swipe-end-x);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[swipe\=end\]\:animate-out[data-swipe=end]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x:var(--radix-toast-swipe-move-x);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}.data-\[variant\=outline\]\:border-l-0[data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.data-\[variant\=outline\]\:shadow-xs[data-variant=outline]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[variant\=outline\]\:first\:border-l[data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}@media (min-width:40rem){.sm\:top-auto{top:auto}.sm\:right-0{right:calc(var(--spacing)*0)}.sm\:bottom-0{bottom:calc(var(--spacing)*0)}.sm\:flex{display:flex}.sm\:inline{display:inline}.sm\:max-w-\[500px\]{max-width:500px}.sm\:max-w-\[600px\]{max-width:600px}.sm\:max-w-\[700px\]{max-width:700px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-col{flex-direction:column}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}:where(.sm\:space-x-0>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*0)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-x-reverse)))}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:pt-6{padding-top:calc(var(--spacing)*6)}.sm\:text-left{text-align:left}.data-\[state\=open\]\:sm\:slide-in-from-bottom-full[data-state=open]{--tw-enter-translate-y:calc(1*100%)}}@media (min-width:48rem){.md\:absolute{position:absolute}.md\:block{display:block}.md\:flex{display:flex}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:max-w-\[420px\]{max-width:420px}.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\:gap-8{gap:calc(var(--spacing)*8)}.md\:p-8{padding:calc(var(--spacing)*8)}.md\:px-6{padding-inline:calc(var(--spacing)*6)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing)*2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing)*0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing)*2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (min-width:64rem){.lg\:ml-0{margin-left:calc(var(--spacing)*0)}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:inline{display:inline}.lg\:w-fit{width:fit-content}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:gap-2{gap:calc(var(--spacing)*2)}.lg\:px-6{padding-inline:calc(var(--spacing)*6)}.lg\:px-8{padding-inline:calc(var(--spacing)*8)}}@container card (min-width:250px){.\@\[250px\]\/card\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@container card (min-width:540px){.\@\[540px\]\/card\:block{display:block}.\@\[540px\]\/card\:hidden{display:none}}@container card (min-width:767px){.\@\[767px\]\/card\:flex{display:flex}.\@\[767px\]\/card\:hidden{display:none}}@container main (min-width:36rem){.\@xl\/main\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@container main (min-width:56rem){.\@4xl\/main\:flex{display:flex}.\@4xl\/main\:hidden{display:none}}@container main (min-width:64rem){.\@5xl\/main\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:border-green-800:is(.dark *){border-color:var(--color-green-800)}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-green-950:is(.dark *){background-color:var(--color-green-950)}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:text-green-100:is(.dark *){color:var(--color-green-100)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}@media (hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}:is(.dark\:\*\:data-\[slot\=card\]\:bg-card:is(.dark *)>*)[data-slot=card]{background-color:var(--card)}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input)80%,transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:var(--muted-foreground)}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke=\#ccc]{stroke:var(--border)}@supports (color:color-mix(in lab,red,red)){.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke=\#ccc]{stroke:color-mix(in oklab,var(--border)50%,transparent)}}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:var(--border)}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke=\#fff]{stroke:#0000}.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke=\#ccc]{stroke:var(--border)}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:var(--muted)}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke=\#ccc]{stroke:var(--border)}.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke=\#fff]{stroke:#0000}.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{outline-offset:2px;outline:2px solid #0000}}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing)*1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing)*0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing)*5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing)*5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing)*12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing)*3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing)*5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing)*5)}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_a\]\:underline-offset-4 a{text-underline-offset:4px}@media (hover:hover){.hover\:\[\&_a\]\:text-primary:hover a{color:var(--primary)}}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-3 svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>svg\]\:h-2\.5>svg{height:calc(var(--spacing)*2.5)}.\[\&\>svg\]\:h-3>svg{height:calc(var(--spacing)*3)}.\[\&\>svg\]\:w-2\.5>svg{width:calc(var(--spacing)*2.5)}.\[\&\>svg\]\:w-3>svg{width:calc(var(--spacing)*3)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:var(--muted-foreground)}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{rotate:90deg}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing)*-2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing)*-2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.7% .004 49.25);--card:oklch(100% 0 0);--card-foreground:oklch(14.7% .004 49.25);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.7% .004 49.25);--primary:oklch(21.6% .006 56.043);--primary-foreground:oklch(98.5% .001 106.423);--secondary:oklch(97% .001 106.424);--secondary-foreground:oklch(21.6% .006 56.043);--muted:oklch(97% .001 106.424);--muted-foreground:oklch(55.3% .013 58.071);--accent:oklch(97% .001 106.424);--accent-foreground:oklch(21.6% .006 56.043);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.3% .003 48.717);--input:oklch(92.3% .003 48.717);--ring:oklch(70.9% .01 56.259);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% .001 106.423);--sidebar-foreground:oklch(14.7% .004 49.25);--sidebar-primary:oklch(21.6% .006 56.043);--sidebar-primary-foreground:oklch(98.5% .001 106.423);--sidebar-accent:oklch(97% .001 106.424);--sidebar-accent-foreground:oklch(21.6% .006 56.043);--sidebar-border:oklch(92.3% .003 48.717);--sidebar-ring:oklch(70.9% .01 56.259)}.dark{--background:oklch(14.7% .004 49.25);--foreground:oklch(98.5% .001 106.423);--card:oklch(21.6% .006 56.043);--card-foreground:oklch(98.5% .001 106.423);--popover:oklch(21.6% .006 56.043);--popover-foreground:oklch(98.5% .001 106.423);--primary:oklch(92.3% .003 48.717);--primary-foreground:oklch(21.6% .006 56.043);--secondary:oklch(26.8% .007 34.298);--secondary-foreground:oklch(98.5% .001 106.423);--muted:oklch(26.8% .007 34.298);--muted-foreground:oklch(70.9% .01 56.259);--accent:oklch(26.8% .007 34.298);--accent-foreground:oklch(98.5% .001 106.423);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.3% .013 58.071);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(21.6% .006 56.043);--sidebar-foreground:oklch(98.5% .001 106.423);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% .001 106.423);--sidebar-accent:oklch(26.8% .007 34.298);--sidebar-accent-foreground:oklch(98.5% .001 106.423);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.3% .013 58.071)}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.animate-shimmer{animation:shimmer 2s infinite}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}@keyframes caret-blink{0%,70%,to{opacity:1}20%,50%{opacity:0}} \ No newline at end of file diff --git a/ui_out/_next/static/css/6b70638fbb45b4f2.css b/ui_out/_next/static/css/6b70638fbb45b4f2.css new file mode 100644 index 00000000..07baf955 --- /dev/null +++ b/ui_out/_next/static/css/6b70638fbb45b4f2.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:host,:root{--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-800:oklch(44.4% .177 26.899);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-orange-800:oklch(47% .157 37.304);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-800:oklch(47.3% .137 46.201);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-green-950:oklch(26.6% .065 152.934);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-800:oklch(43.2% .095 166.913);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-indigo-50:oklch(96.2% .018 272.314);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-pink-50:oklch(97.1% .014 343.198);--color-pink-100:oklch(94.8% .028 342.258);--color-pink-800:oklch(45.9% .187 3.815);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-xs:.125rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-geist-sans);--default-mono-font-family:var(--font-geist-mono);--color-border:var(--border)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.\@container\/card{container:card/inline-size}.\@container\/card-header{container:card-header/inline-size}.\@container\/main{container:main/inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-12{top:calc(var(--spacing)*-12)}.top-0{top:calc(var(--spacing)*0)}.top-1\.5{top:calc(var(--spacing)*1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-2\.5{top:calc(var(--spacing)*2.5)}.top-3{top:calc(var(--spacing)*3)}.top-3\.5{top:calc(var(--spacing)*3.5)}.top-4{top:calc(var(--spacing)*4)}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.-right-12{right:calc(var(--spacing)*-12)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.-bottom-12{bottom:calc(var(--spacing)*-12)}.bottom-0{bottom:calc(var(--spacing)*0)}.-left-12{left:calc(var(--spacing)*-12)}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-3{left:calc(var(--spacing)*3)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[100\]{z-index:100}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3\.5{margin-inline:calc(var(--spacing)*3.5)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing)*.5)}.my-1{margin-block:calc(var(--spacing)*1)}.my-2{margin-block:calc(var(--spacing)*2)}.-mt-4{margin-top:calc(var(--spacing)*-4)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.-ml-4{margin-left:calc(var(--spacing)*-4)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-7{width:calc(var(--spacing)*7);height:calc(var(--spacing)*7)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-full{width:100%;height:100%}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-24{height:calc(var(--spacing)*24)}.h-\[1\.15rem\]{height:1.15rem}.h-\[40px\]{height:40px}.h-\[60px\]{height:60px}.h-\[100px\]{height:100px}.h-\[120px\]{height:120px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-\(--radix-context-menu-content-available-height\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-32{max-height:calc(var(--spacing)*32)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[300px\]{max-height:300px}.max-h-screen{max-height:100vh}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-4{min-height:calc(var(--spacing)*4)}.min-h-16{min-height:calc(var(--spacing)*16)}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0{width:calc(var(--spacing)*0)}.w-1{width:calc(var(--spacing)*1)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-40{width:calc(var(--spacing)*40)}.w-56{width:calc(var(--spacing)*56)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-\[--radix-dropdown-menu-trigger-width\]{width:--radix-dropdown-menu-trigger-width}.w-\[60px\]{width:60px}.w-\[100px\]{width:100px}.w-\[400px\]{width:400px}.w-\[calc\(100\%-3rem\)\]{width:calc(100% - 3rem)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-32{max-width:calc(var(--spacing)*32)}.max-w-\[300px\]{max-width:300px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-max{max-width:max-content}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-5{min-width:calc(var(--spacing)*5)}.min-w-8{min-width:calc(var(--spacing)*8)}.min-w-9{min-width:calc(var(--spacing)*9)}.min-w-10{min-width:calc(var(--spacing)*10)}.min-w-56{min-width:calc(var(--spacing)*56)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-fit{min-width:fit-content}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.origin-\(--radix-context-menu-content-transform-origin\){transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-hover-card-content-transform-origin\){transform-origin:var(--radix-hover-card-content-transform-origin)}.origin-\(--radix-menubar-content-transform-origin\){transform-origin:var(--radix-menubar-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1)}.-translate-x-1\/2,.-translate-x-px{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-x-\[-50\%\],.translate-x-px{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1)}.-translate-y-1\/2,.translate-y-\[-50\%\]{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-caret-blink{animation:caret-blink 1.25s ease-out infinite}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing)*1)}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing)*.5)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\(--color-border\){border-color:var(--color-border)}.border-amber-200{border-color:var(--color-amber-200)}.border-blue-200{border-color:var(--color-blue-200)}.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.border-destructive{border-color:var(--destructive)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-green-200{border-color:var(--color-green-200)}.border-green-300{border-color:var(--color-green-300)}.border-green-500{border-color:var(--color-green-500)}.border-input{border-color:var(--input)}.border-orange-300{border-color:var(--color-orange-300)}.border-purple-200{border-color:var(--color-purple-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\(--color-bg\){background-color:var(--color-bg)}.bg-accent{background-color:var(--accent)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-background{background-color:var(--background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive,.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-foreground{background-color:var(--foreground)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/30{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/30{background-color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-orange-100{background-color:var(--color-orange-100)}.bg-pink-100{background-color:var(--color-pink-100)}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-50{--tw-gradient-from:var(--color-blue-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-green-50{--tw-gradient-from:var(--color-green-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-50{--tw-gradient-from:var(--color-purple-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-50{--tw-gradient-to:var(--color-emerald-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-indigo-50{--tw-gradient-to:var(--color-indigo-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-pink-50{--tw-gradient-to:var(--color-pink-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.fill-current{fill:currentColor}.fill-primary{fill:var(--primary)}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-2\.5{padding-right:calc(var(--spacing)*2.5)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-8{padding-right:calc(var(--spacing)*8)}.pr-10{padding-right:calc(var(--spacing)*10)}.pr-24{padding-right:calc(var(--spacing)*24)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-9{padding-left:calc(var(--spacing)*9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-geist-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-amber-800{color:var(--color-amber-800)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-emerald-800{color:var(--color-emerald-800)}.text-foreground,.text-foreground\/50{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/50{color:color-mix(in oklab,var(--foreground)50%,transparent)}}.text-gray-800{color:var(--color-gray-800)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-800{color:var(--color-green-800)}.text-green-900{color:var(--color-green-900)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{color:var(--color-orange-600)}.text-orange-800{color:var(--color-orange-800)}.text-pink-800{color:var(--color-pink-800)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-600{color:var(--color-purple-600)}.text-purple-800{color:var(--color-purple-800)}.text-purple-900{color:var(--color-purple-900)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground)70%,transparent)}}.text-white{color:var(--color-white)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-800{color:var(--color-yellow-800)}.capitalize{text-transform:capitalize}.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,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)))}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-lg,.shadow-md{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.shadow-none{--tw-shadow:0 0 #0000}.shadow-none,.shadow-sm{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a)}.shadow-xl,.shadow-xs{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.ring-0,.ring-2{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.ring-blue-500{--tw-ring-color:var(--color-blue-500)}.ring-primary{--tw-ring-color:var(--primary)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.grayscale{--tw-grayscale:grayscale(100%)}.filter,.grayscale{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\]{transition-property:width,height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.running{animation-play-state:running}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *),.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-has-data-\[collapsible\=icon\]\/sidebar-wrapper\:h-12:is(:where(.group\/sidebar-wrapper):has([data-collapsible=icon]) *){height:calc(var(--spacing)*12)}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing)*8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing)*-8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing)*8)!important;height:calc(var(--spacing)*8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing)*0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing)*-4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing)*0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:top-full:is(:where(.group\/navigation-menu)[data-viewport=false] *){top:100%}.group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5:is(:where(.group\/navigation-menu)[data-viewport=false] *){margin-top:calc(var(--spacing)*1.5)}.group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden:is(:where(.group\/navigation-menu)[data-viewport=false] *){overflow:hidden}.group-data-\[viewport\=false\]\/navigation-menu\:rounded-md:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-radius:calc(var(--radius) - 2px)}.group-data-\[viewport\=false\]\/navigation-menu\:border:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[viewport\=false\]\/navigation-menu\:bg-popover:is(:where(.group\/navigation-menu)[data-viewport=false] *){background-color:var(--popover)}.group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground:is(:where(.group\/navigation-menu)[data-viewport=false] *){color:var(--popover-foreground)}.group-data-\[viewport\=false\]\/navigation-menu\:shadow:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:duration-200:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-duration:.2s;transition-duration:.2s}.group-\[\.destructive\]\:border-muted\/40:is(:where(.group).destructive *){border-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.group-\[\.destructive\]\:border-muted\/40:is(:where(.group).destructive *){border-color:color-mix(in oklab,var(--muted)40%,transparent)}}.group-\[\.destructive\]\:text-red-300:is(:where(.group).destructive *){color:var(--color-red-300)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing)*1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing)*2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing)*1)}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:mr-4::file-selector-button{margin-right:calc(var(--spacing)*4)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:rounded-full::file-selector-button{border-radius:3.40282e+38px}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-blue-50::file-selector-button{background-color:var(--color-blue-50)}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:px-4::file-selector-button{padding-inline:calc(var(--spacing)*4)}.file\:py-2::file-selector-button{padding-block:calc(var(--spacing)*2)}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:font-semibold::file-selector-button{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.file\:text-blue-700::file-selector-button{color:var(--color-blue-700)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing)*-2)}.after\:inset-0:after{content:var(--tw-content);inset:calc(var(--spacing)*0)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\:top-1\/2:after{content:var(--tw-content);top:50%}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:z-0:after{content:var(--tw-content);z-index:0}.after\:flex:after{content:var(--tw-content);display:flex}.after\:w-1:after{content:var(--tw-content);width:calc(var(--spacing)*1)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.after\:items-center:after{content:var(--tw-content);align-items:center}.after\:border-t:after{content:var(--tw-content);border-top-style:var(--tw-border-style);border-top-width:1px}.after\:border-border:after{content:var(--tw-content);border-color:var(--border)}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}@media (hover:hover){.hover\:border-green-400:hover{border-color:var(--color-green-400)}.hover\:border-orange-400:hover{border-color:var(--color-orange-400)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-destructive\/80:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/80:hover{background-color:color-mix(in oklab,var(--destructive)80%,transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-green-500\/80:hover{background-color:#00c758cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-green-500\/80:hover{background-color:color-mix(in oklab,var(--color-green-500)80%,transparent)}}.hover\:bg-input\/30:hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-input\/30:hover{background-color:color-mix(in oklab,var(--input)30%,transparent)}}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\:bg-primary\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab,var(--primary)80%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-red-500\/80:hover{background-color:#fb2c36cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/80:hover{background-color:color-mix(in oklab,var(--color-red-500)80%,transparent)}}.hover\:bg-secondary:hover,.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-yellow-500\/80:hover{background-color:#edb200cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-yellow-500\/80:hover{background-color:color-mix(in oklab,var(--color-yellow-500)80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-green-700:hover{color:var(--color-green-700)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-orange-700:hover{color:var(--color-orange-700)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)))}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover,.hover\:shadow-md:hover{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.group-\[\.destructive\]\:hover\:border-destructive\/30:is(:where(.group).destructive *):hover{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.group-\[\.destructive\]\:hover\:border-destructive\/30:is(:where(.group).destructive *):hover{border-color:color-mix(in oklab,var(--destructive)30%,transparent)}}.group-\[\.destructive\]\:hover\:bg-destructive:is(:where(.group).destructive *):hover{background-color:var(--destructive)}.group-\[\.destructive\]\:hover\:text-red-50:is(:where(.group).destructive *):hover{color:var(--color-red-50)}.hover\:file\:bg-blue-100:hover::file-selector-button{background-color:var(--color-blue-100)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:z-10:focus{z-index:10}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:text-destructive:focus{color:var(--destructive)}.focus\:text-green-700:focus{color:var(--color-green-700)}.focus\:text-orange-700:focus{color:var(--color-orange-700)}.focus\:opacity-100:focus{opacity:1}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-primary\/20:focus{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/20:focus{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.group-\[\.destructive\]\:focus\:ring-destructive:is(:where(.group).destructive *):focus{--tw-ring-color:var(--destructive)}.group-\[\.destructive\]\:focus\:ring-red-400:is(:where(.group).destructive *):focus{--tw-ring-color:var(--color-red-400)}.group-\[\.destructive\]\:focus\:ring-offset-red-600:is(:where(.group).destructive *):focus{--tw-ring-offset-color:var(--color-red-600)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border:focus-visible{border-style:var(--tw-border-style);border-width:1px}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:bg-background:focus-visible{background-color:var(--background)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing)*4)1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:var(--ring)}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:var(--accent-foreground)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}@media (hover:hover){.data-\[active\=true\]\:hover\:bg-accent[data-active=true]:hover{background-color:var(--accent)}}.data-\[active\=true\]\:focus\:bg-accent[data-active=true]:focus{background-color:var(--accent)}.data-\[active\=true\]\:aria-invalid\:border-destructive[data-active=true][aria-invalid=true]{border-color:var(--destructive)}.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[dragging\=true\]\:z-10[data-dragging=true]{z-index:10}.data-\[dragging\=true\]\:opacity-80[data-dragging=true]{opacity:.8}.data-\[error\=true\]\:text-destructive[data-error=true]{color:var(--destructive)}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing)*8)}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x:calc(52*var(--spacing))}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x:calc(52*var(--spacing)*-1)}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x:calc(52*var(--spacing))}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x:calc(52*var(--spacing)*-1)}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity:0}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-]{--tw-exit-opacity:0}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-4[data-orientation=vertical]{height:calc(var(--spacing)*4)}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:calc(var(--spacing)*0)}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:calc(var(--spacing)*1)}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive)90%,transparent)}}:is(.\*\:data-\[slot\=card\]\:bg-gradient-to-t>*)[data-slot=card]{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}:is(.\*\:data-\[slot\=card\]\:from-primary\/5>*)[data-slot=card]{--tw-gradient-from:var(--primary)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=card\]\:from-primary\/5>*)[data-slot=card]{--tw-gradient-from:color-mix(in oklab,var(--primary)5%,transparent)}}:is(.\*\:data-\[slot\=card\]\:from-primary\/5>*)[data-slot=card]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}:is(.\*\:data-\[slot\=card\]\:to-card>*)[data-slot=card]{--tw-gradient-to:var(--card);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}:is(.\*\:data-\[slot\=card\]\:shadow-xs>*)[data-slot=card]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing)*12)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:ring-0 *)[data-slot=navigation-menu-link]:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:outline-none *)[data-slot=navigation-menu-link]:focus{--tw-outline-style:none;outline-style:none}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[slot\=sidebar-menu-button\]\:\!p-1\.5[data-slot=sidebar-menu-button]{padding:calc(var(--spacing)*1.5)!important}:is(.\*\*\:data-\[slot\=table-cell\]\:first\:w-8 *)[data-slot=table-cell]:first-child{width:calc(var(--spacing)*8)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x:calc(100% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:fade-out-80[data-state=closed]{--tw-exit-opacity:.8}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-right-full[data-state=closed]{--tw-exit-translate-x:calc(1*100%)}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-opacity:0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=hidden\]\:animate-out[data-state=hidden]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity:0}.data-\[state\=on\]\:bg-accent[data-state=on]{background-color:var(--accent)}.data-\[state\=on\]\:text-accent-foreground[data-state=on]{color:var(--accent-foreground)}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open],.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.data-\[state\=open\]\:bg-muted[data-state=open]{background-color:var(--muted)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:bg-sidebar-accent[data-state=open]{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:text-sidebar-accent-foreground[data-state=open]{color:var(--sidebar-accent-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale:.9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=open\]\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y:calc(1*-100%)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-opacity:0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-scale:.95}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-accent[data-state=open]:hover{background-color:var(--accent)}.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=open\]\:focus\:bg-accent[data-state=open]:focus{background-color:var(--accent)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[state\=visible\]\:animate-in[data-state=visible]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity:0}.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x:var(--radix-toast-swipe-end-x);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[swipe\=end\]\:animate-out[data-swipe=end]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x:var(--radix-toast-swipe-move-x);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}.data-\[variant\=outline\]\:border-l-0[data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.data-\[variant\=outline\]\:shadow-xs[data-variant=outline]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[variant\=outline\]\:first\:border-l[data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}@media (min-width:40rem){.sm\:top-auto{top:auto}.sm\:right-0{right:calc(var(--spacing)*0)}.sm\:bottom-0{bottom:calc(var(--spacing)*0)}.sm\:flex{display:flex}.sm\:inline{display:inline}.sm\:w-\[180px\]{width:180px}.sm\:max-w-\[500px\]{max-width:500px}.sm\:max-w-\[600px\]{max-width:600px}.sm\:max-w-\[700px\]{max-width:700px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-col{flex-direction:column}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:gap-3{gap:calc(var(--spacing)*3)}:where(.sm\:space-x-0>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*0)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-x-reverse)))}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:pt-6{padding-top:calc(var(--spacing)*6)}.sm\:text-left{text-align:left}.data-\[state\=open\]\:sm\:slide-in-from-bottom-full[data-state=open]{--tw-enter-translate-y:calc(1*100%)}}@media (min-width:48rem){.md\:absolute{position:absolute}.md\:block{display:block}.md\:flex{display:flex}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:max-w-\[420px\]{max-width:420px}.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\:gap-8{gap:calc(var(--spacing)*8)}.md\:p-8{padding:calc(var(--spacing)*8)}.md\:px-6{padding-inline:calc(var(--spacing)*6)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing)*2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing)*0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing)*2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (min-width:64rem){.lg\:ml-0{margin-left:calc(var(--spacing)*0)}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:inline{display:inline}.lg\:w-fit{width:fit-content}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:gap-2{gap:calc(var(--spacing)*2)}.lg\:px-6{padding-inline:calc(var(--spacing)*6)}.lg\:px-8{padding-inline:calc(var(--spacing)*8)}}@container card (min-width:250px){.\@\[250px\]\/card\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@container card (min-width:540px){.\@\[540px\]\/card\:block{display:block}.\@\[540px\]\/card\:hidden{display:none}}@container card (min-width:767px){.\@\[767px\]\/card\:flex{display:flex}.\@\[767px\]\/card\:hidden{display:none}}@container main (min-width:36rem){.\@xl\/main\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@container main (min-width:56rem){.\@4xl\/main\:flex{display:flex}.\@4xl\/main\:hidden{display:none}}@container main (min-width:64rem){.\@5xl\/main\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:border-green-800:is(.dark *){border-color:var(--color-green-800)}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-green-950:is(.dark *){background-color:var(--color-green-950)}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:text-green-100:is(.dark *){color:var(--color-green-100)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}@media (hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}:is(.dark\:\*\:data-\[slot\=card\]\:bg-card:is(.dark *)>*)[data-slot=card]{background-color:var(--card)}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input)80%,transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:var(--muted-foreground)}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke=\#ccc]{stroke:var(--border)}@supports (color:color-mix(in lab,red,red)){.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke=\#ccc]{stroke:color-mix(in oklab,var(--border)50%,transparent)}}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:var(--border)}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke=\#fff]{stroke:#0000}.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke=\#ccc]{stroke:var(--border)}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:var(--muted)}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke=\#ccc]{stroke:var(--border)}.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke=\#fff]{stroke:#0000}.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{outline-offset:2px;outline:2px solid #0000}}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing)*1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing)*0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing)*5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing)*5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing)*12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing)*3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing)*5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing)*5)}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_a\]\:underline-offset-4 a{text-underline-offset:4px}@media (hover:hover){.hover\:\[\&_a\]\:text-primary:hover a{color:var(--primary)}}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-3 svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>svg\]\:h-2\.5>svg{height:calc(var(--spacing)*2.5)}.\[\&\>svg\]\:h-3>svg{height:calc(var(--spacing)*3)}.\[\&\>svg\]\:w-2\.5>svg{width:calc(var(--spacing)*2.5)}.\[\&\>svg\]\:w-3>svg{width:calc(var(--spacing)*3)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:var(--muted-foreground)}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{rotate:90deg}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing)*-2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing)*-2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.7% .004 49.25);--card:oklch(100% 0 0);--card-foreground:oklch(14.7% .004 49.25);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.7% .004 49.25);--primary:oklch(21.6% .006 56.043);--primary-foreground:oklch(98.5% .001 106.423);--secondary:oklch(97% .001 106.424);--secondary-foreground:oklch(21.6% .006 56.043);--muted:oklch(97% .001 106.424);--muted-foreground:oklch(55.3% .013 58.071);--accent:oklch(97% .001 106.424);--accent-foreground:oklch(21.6% .006 56.043);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.3% .003 48.717);--input:oklch(92.3% .003 48.717);--ring:oklch(70.9% .01 56.259);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% .001 106.423);--sidebar-foreground:oklch(14.7% .004 49.25);--sidebar-primary:oklch(21.6% .006 56.043);--sidebar-primary-foreground:oklch(98.5% .001 106.423);--sidebar-accent:oklch(97% .001 106.424);--sidebar-accent-foreground:oklch(21.6% .006 56.043);--sidebar-border:oklch(92.3% .003 48.717);--sidebar-ring:oklch(70.9% .01 56.259)}.dark{--background:oklch(14.7% .004 49.25);--foreground:oklch(98.5% .001 106.423);--card:oklch(21.6% .006 56.043);--card-foreground:oklch(98.5% .001 106.423);--popover:oklch(21.6% .006 56.043);--popover-foreground:oklch(98.5% .001 106.423);--primary:oklch(92.3% .003 48.717);--primary-foreground:oklch(21.6% .006 56.043);--secondary:oklch(26.8% .007 34.298);--secondary-foreground:oklch(98.5% .001 106.423);--muted:oklch(26.8% .007 34.298);--muted-foreground:oklch(70.9% .01 56.259);--accent:oklch(26.8% .007 34.298);--accent-foreground:oklch(98.5% .001 106.423);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.3% .013 58.071);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(21.6% .006 56.043);--sidebar-foreground:oklch(98.5% .001 106.423);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% .001 106.423);--sidebar-accent:oklch(26.8% .007 34.298);--sidebar-accent-foreground:oklch(98.5% .001 106.423);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.3% .013 58.071)}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.animate-shimmer{animation:shimmer 2s infinite}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}@keyframes caret-blink{0%,70%,to{opacity:1}20%,50%{opacity:0}} \ No newline at end of file diff --git a/ui_out/index.html b/ui_out/index.html index 6c732872..82f25312 100644 --- a/ui_out/index.html +++ b/ui_out/index.html @@ -1 +1 @@ -Routstr

Routstr

Admin Dashboard

Monitor and manage wallet balances

Cashu Wallet Balance
Detailed balance breakdown by mint and currency
\ No newline at end of file +Routstr

Routstr

Admin Dashboard

Monitor and manage wallet balances

Cashu Wallet Balance
Detailed balance breakdown by mint and currency
Temporary Balances
API keys with their current balances and usage statistics
\ No newline at end of file diff --git a/ui_out/index.txt b/ui_out/index.txt index 0a5e29f6..1c19bf6d 100644 --- a/ui_out/index.txt +++ b/ui_out/index.txt @@ -2,26 +2,27 @@ 2:I[5414,["363","static/chunks/363-119b32fca35baa33.js","29","static/chunks/29-e3557fb1dd82bdc3.js","578","static/chunks/578-9e08cd45b1eda688.js","177","static/chunks/app/layout-1e4148ea2d359141.js"],"Providers"] 3:I[8754,[],""] 4:I[768,[],""] -5:I[953,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","236","static/chunks/236-ba64522839e788ad.js","974","static/chunks/app/page-cbf91667e39e2dcb.js"],"SidebarProvider"] -6:I[7569,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","236","static/chunks/236-ba64522839e788ad.js","974","static/chunks/app/page-cbf91667e39e2dcb.js"],"AppSidebar"] -7:I[953,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","236","static/chunks/236-ba64522839e788ad.js","974","static/chunks/app/page-cbf91667e39e2dcb.js"],"SidebarInset"] -8:I[4756,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","236","static/chunks/236-ba64522839e788ad.js","974","static/chunks/app/page-cbf91667e39e2dcb.js"],"SiteHeader"] -9:I[159,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","236","static/chunks/236-ba64522839e788ad.js","974","static/chunks/app/page-cbf91667e39e2dcb.js"],"DetailedWalletBalance"] -a:I[4826,[],"MetadataBoundary"] -c:I[4826,[],"OutletBoundary"] -f:I[394,[],"AsyncMetadataOutlet"] -11:I[4826,[],"ViewportBoundary"] -13:I[6613,[],""] +5:I[953,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","236","static/chunks/236-ba64522839e788ad.js","601","static/chunks/601-bd77b408e968f9da.js","974","static/chunks/app/page-521ee9b11aefe1b2.js"],"SidebarProvider"] +6:I[7569,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","236","static/chunks/236-ba64522839e788ad.js","601","static/chunks/601-bd77b408e968f9da.js","974","static/chunks/app/page-521ee9b11aefe1b2.js"],"AppSidebar"] +7:I[953,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","236","static/chunks/236-ba64522839e788ad.js","601","static/chunks/601-bd77b408e968f9da.js","974","static/chunks/app/page-521ee9b11aefe1b2.js"],"SidebarInset"] +8:I[4756,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","236","static/chunks/236-ba64522839e788ad.js","601","static/chunks/601-bd77b408e968f9da.js","974","static/chunks/app/page-521ee9b11aefe1b2.js"],"SiteHeader"] +9:I[159,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","236","static/chunks/236-ba64522839e788ad.js","601","static/chunks/601-bd77b408e968f9da.js","974","static/chunks/app/page-521ee9b11aefe1b2.js"],"DetailedWalletBalance"] +a:I[2483,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","236","static/chunks/236-ba64522839e788ad.js","601","static/chunks/601-bd77b408e968f9da.js","974","static/chunks/app/page-521ee9b11aefe1b2.js"],"TemporaryBalances"] +b:I[4826,[],"MetadataBoundary"] +d:I[4826,[],"OutletBoundary"] +10:I[394,[],"AsyncMetadataOutlet"] +12:I[4826,[],"ViewportBoundary"] +14:I[6613,[],""] :HL["/_next/static/media/4cf2300e9c8272f7-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] -:HL["/_next/static/css/5bf7a4b46c37a9cb.css","style"] -0:{"P":null,"b":"vzojcgD75PgXdcu6NGfSb","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5bf7a4b46c37a9cb.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"children":[["$","$L6",null,{"variant":"inset"}],["$","$L7",null,{"className":"p-0","children":[["$","$L8",null,{}],["$","div",null,{"className":"container max-w-6xl px-4 py-8 md:px-6 lg:px-8","children":[["$","div",null,{"className":"mb-8","children":[["$","h1",null,{"className":"text-3xl font-bold tracking-tight","children":"Admin Dashboard"}],["$","p",null,{"className":"text-muted-foreground mt-2","children":"Monitor and manage wallet balances"}]]}],["$","div",null,{"className":"grid gap-6","children":["$","div",null,{"className":"col-span-full","children":["$","$L9",null,{"refreshInterval":5000}]}]}]]}]]}]]}],["$","$La",null,{"children":"$Lb"}],null,["$","$Lc",null,{"children":["$Ld","$Le",["$","$Lf",null,{"promise":"$@10"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","bpBC-ONQIJfOfFwWDcSsU",{"children":[["$","$L11",null,{"children":"$L12"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$13","$undefined"],"s":false,"S":true} -14:"$Sreact.suspense" -15:I[394,[],"AsyncMetadata"] -b:["$","$14",null,{"fallback":null,"children":["$","$L15",null,{"promise":"$@16"}]}] +:HL["/_next/static/css/6b70638fbb45b4f2.css","style"] +0:{"P":null,"b":"MTOFXU9tRAr2QXrmYwVxq","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"children":[["$","$L6",null,{"variant":"inset"}],["$","$L7",null,{"className":"p-0","children":[["$","$L8",null,{}],["$","div",null,{"className":"container max-w-6xl px-4 py-8 md:px-6 lg:px-8","children":[["$","div",null,{"className":"mb-8","children":[["$","h1",null,{"className":"text-3xl font-bold tracking-tight","children":"Admin Dashboard"}],["$","p",null,{"className":"text-muted-foreground mt-2","children":"Monitor and manage wallet balances"}]]}],["$","div",null,{"className":"grid gap-6","children":[["$","div",null,{"className":"col-span-full","children":["$","$L9",null,{"refreshInterval":5000}]}],["$","div",null,{"className":"col-span-full","children":["$","$La",null,{"refreshInterval":10000}]}]]}]]}]]}]]}],["$","$Lb",null,{"children":"$Lc"}],null,["$","$Ld",null,{"children":["$Le","$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","1zRnluoM-lBicTDRV0w4Q",{"children":[["$","$L12",null,{"children":"$L13"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true} +15:"$Sreact.suspense" +16:I[394,[],"AsyncMetadata"] +c:["$","$15",null,{"fallback":null,"children":["$","$L16",null,{"promise":"$@17"}]}] +f:null +13:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] e:null -12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -d:null -16:{"metadata":[["$","title","0",{"children":"Routstr"}],["$","meta","1",{"name":"description","content":"Routstr model management"}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","link","3",{"rel":"icon","href":"/icon.ico"}]],"error":null,"digest":"$undefined"} -10:{"metadata":"$16:metadata","error":null,"digest":"$undefined"} +17:{"metadata":[["$","title","0",{"children":"Routstr"}],["$","meta","1",{"name":"description","content":"Routstr model management"}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","link","3",{"rel":"icon","href":"/icon.ico"}]],"error":null,"digest":"$undefined"} +11:{"metadata":"$17:metadata","error":null,"digest":"$undefined"} diff --git a/ui_out/login/index.html b/ui_out/login/index.html index 74bd2e1d..0175b45d 100644 --- a/ui_out/login/index.html +++ b/ui_out/login/index.html @@ -1 +1 @@ -Routstr
Admin Login
Enter your admin password to access the dashboard
\ No newline at end of file +Routstr
Admin Login
Enter your admin password to access the dashboard
\ No newline at end of file diff --git a/ui_out/login/index.txt b/ui_out/login/index.txt index 92645c7f..470ca5e5 100644 --- a/ui_out/login/index.txt +++ b/ui_out/login/index.txt @@ -12,8 +12,8 @@ e:I[394,[],"AsyncMetadataOutlet"] :HL["/_next/static/media/4cf2300e9c8272f7-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] -:HL["/_next/static/css/5bf7a4b46c37a9cb.css","style"] -0:{"P":null,"b":"vzojcgD75PgXdcu6NGfSb","p":"","c":["","login",""],"i":false,"f":[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5bf7a4b46c37a9cb.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["login",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","f1IgdDFyuxS_tC4eNhcCV",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} +:HL["/_next/static/css/6b70638fbb45b4f2.css","style"] +0:{"P":null,"b":"MTOFXU9tRAr2QXrmYwVxq","p":"","c":["","login",""],"i":false,"f":[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["login",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","MWKTi5nKzexhj8S-SFBip",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} 13:"$Sreact.suspense" 14:I[394,[],"AsyncMetadata"] 7:{} diff --git a/ui_out/model/index.html b/ui_out/model/index.html index c0f243dd..7c3712f8 100644 --- a/ui_out/model/index.html +++ b/ui_out/model/index.html @@ -1 +1 @@ -Routstr

Routstr

Model Management & API Testing

Manage your AI models organized by provider groups. Configure API keys, and organize models by provider groups.
\ No newline at end of file +Routstr

Routstr

Model Management & API Testing

Manage your AI models organized by provider groups. Configure API keys, and organize models by provider groups.
\ No newline at end of file diff --git a/ui_out/model/index.txt b/ui_out/model/index.txt index f4ac823f..5c09c6c9 100644 --- a/ui_out/model/index.txt +++ b/ui_out/model/index.txt @@ -3,7 +3,7 @@ 3:I[8754,[],""] 4:I[768,[],""] 5:I[3971,[],"ClientPageRoot"] -6:I[7557,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","982","static/chunks/982-5588ad0e30e6255e.js","938","static/chunks/938-08cea0300e0df70a.js","236","static/chunks/236-ba64522839e788ad.js","255","static/chunks/255-a44a63a7b4273784.js","552","static/chunks/app/model/page-54703515a5590901.js"],"default"] +6:I[7678,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","982","static/chunks/982-5588ad0e30e6255e.js","826","static/chunks/826-c15935d1c2416e5d.js","236","static/chunks/236-ba64522839e788ad.js","601","static/chunks/601-bd77b408e968f9da.js","552","static/chunks/app/model/page-ffdaf3929a2720ec.js"],"default"] 9:I[4826,[],"MetadataBoundary"] b:I[4826,[],"OutletBoundary"] e:I[394,[],"AsyncMetadataOutlet"] @@ -12,8 +12,8 @@ e:I[394,[],"AsyncMetadataOutlet"] :HL["/_next/static/media/4cf2300e9c8272f7-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] -:HL["/_next/static/css/5bf7a4b46c37a9cb.css","style"] -0:{"P":null,"b":"vzojcgD75PgXdcu6NGfSb","p":"","c":["","model",""],"i":false,"f":[[["",{"children":["model",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5bf7a4b46c37a9cb.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["model",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","TdNwfYh9clyHCCnHOISkg",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} +:HL["/_next/static/css/6b70638fbb45b4f2.css","style"] +0:{"P":null,"b":"MTOFXU9tRAr2QXrmYwVxq","p":"","c":["","model",""],"i":false,"f":[[["",{"children":["model",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["model",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","uCWxpf_6s4ahEgRHYe56p",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} 13:"$Sreact.suspense" 14:I[394,[],"AsyncMetadata"] 7:{} diff --git a/ui_out/out/404.html b/ui_out/out/404.html index 600fa34d..367d24d2 100644 --- a/ui_out/out/404.html +++ b/ui_out/out/404.html @@ -1 +1 @@ -404: This page could not be found.Routstr

404

This page could not be found.

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

404

This page could not be found.

\ No newline at end of file diff --git a/ui_out/out/404/index.html b/ui_out/out/404/index.html index 600fa34d..367d24d2 100644 --- a/ui_out/out/404/index.html +++ b/ui_out/out/404/index.html @@ -1 +1 @@ -404: This page could not be found.Routstr

404

This page could not be found.

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

404

This page could not be found.

\ No newline at end of file diff --git a/ui_out/out/_next/static/lKQa3FSkSrZjnFggXV6Av/_buildManifest.js b/ui_out/out/_next/static/hGLTswdpyRID1jim9jOTQ/_buildManifest.js similarity index 100% rename from ui_out/out/_next/static/lKQa3FSkSrZjnFggXV6Av/_buildManifest.js rename to ui_out/out/_next/static/hGLTswdpyRID1jim9jOTQ/_buildManifest.js diff --git a/ui_out/out/_next/static/lKQa3FSkSrZjnFggXV6Av/_ssgManifest.js b/ui_out/out/_next/static/hGLTswdpyRID1jim9jOTQ/_ssgManifest.js similarity index 100% rename from ui_out/out/_next/static/lKQa3FSkSrZjnFggXV6Av/_ssgManifest.js rename to ui_out/out/_next/static/hGLTswdpyRID1jim9jOTQ/_ssgManifest.js diff --git a/ui_out/out/index.html b/ui_out/out/index.html index 48ef46dc..1bcb4961 100644 --- a/ui_out/out/index.html +++ b/ui_out/out/index.html @@ -1 +1 @@ -Routstr

Routstr

Admin Dashboard

Monitor and manage wallet balances

Cashu Wallet Balance
Detailed balance breakdown by mint and currency
Temporary Balances
API keys with their current balances and usage statistics
\ No newline at end of file +Routstr

Routstr

Admin Dashboard

Monitor and manage wallet balances

Cashu Wallet Balance
Detailed balance breakdown by mint and currency
Temporary Balances
API keys with their current balances and usage statistics
\ No newline at end of file diff --git a/ui_out/out/index.txt b/ui_out/out/index.txt index df475415..625ffa5f 100644 --- a/ui_out/out/index.txt +++ b/ui_out/out/index.txt @@ -17,7 +17,7 @@ d:I[4826,[],"OutletBoundary"] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] :HL["/_next/static/css/6b70638fbb45b4f2.css","style"] -0:{"P":null,"b":"lKQa3FSkSrZjnFggXV6Av","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"children":[["$","$L6",null,{"variant":"inset"}],["$","$L7",null,{"className":"p-0","children":[["$","$L8",null,{}],["$","div",null,{"className":"container max-w-6xl px-4 py-8 md:px-6 lg:px-8","children":[["$","div",null,{"className":"mb-8","children":[["$","h1",null,{"className":"text-3xl font-bold tracking-tight","children":"Admin Dashboard"}],["$","p",null,{"className":"text-muted-foreground mt-2","children":"Monitor and manage wallet balances"}]]}],["$","div",null,{"className":"grid gap-6","children":[["$","div",null,{"className":"col-span-full","children":["$","$L9",null,{"refreshInterval":5000}]}],["$","div",null,{"className":"col-span-full","children":["$","$La",null,{"refreshInterval":10000}]}]]}]]}]]}]]}],["$","$Lb",null,{"children":"$Lc"}],null,["$","$Ld",null,{"children":["$Le","$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","1j_3kheSQcvDBvXEjiDiR",{"children":[["$","$L12",null,{"children":"$L13"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"hGLTswdpyRID1jim9jOTQ","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"children":[["$","$L6",null,{"variant":"inset"}],["$","$L7",null,{"className":"p-0","children":[["$","$L8",null,{}],["$","div",null,{"className":"container max-w-6xl px-4 py-8 md:px-6 lg:px-8","children":[["$","div",null,{"className":"mb-8","children":[["$","h1",null,{"className":"text-3xl font-bold tracking-tight","children":"Admin Dashboard"}],["$","p",null,{"className":"text-muted-foreground mt-2","children":"Monitor and manage wallet balances"}]]}],["$","div",null,{"className":"grid gap-6","children":[["$","div",null,{"className":"col-span-full","children":["$","$L9",null,{"refreshInterval":5000}]}],["$","div",null,{"className":"col-span-full","children":["$","$La",null,{"refreshInterval":10000}]}]]}]]}]]}]]}],["$","$Lb",null,{"children":"$Lc"}],null,["$","$Ld",null,{"children":["$Le","$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","_neu5YsMbxeFR0hn8csdc",{"children":[["$","$L12",null,{"children":"$L13"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true} 15:"$Sreact.suspense" 16:I[394,[],"AsyncMetadata"] c:["$","$15",null,{"fallback":null,"children":["$","$L16",null,{"promise":"$@17"}]}] diff --git a/ui_out/out/login/index.html b/ui_out/out/login/index.html index 4d302561..33f32510 100644 --- a/ui_out/out/login/index.html +++ b/ui_out/out/login/index.html @@ -1 +1 @@ -Routstr
Admin Login
Enter your admin password to access the dashboard
\ No newline at end of file +Routstr
Admin Login
Enter your admin password to access the dashboard
\ No newline at end of file diff --git a/ui_out/out/login/index.txt b/ui_out/out/login/index.txt index d6dce4e0..1a49f9f9 100644 --- a/ui_out/out/login/index.txt +++ b/ui_out/out/login/index.txt @@ -13,7 +13,7 @@ e:I[394,[],"AsyncMetadataOutlet"] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] :HL["/_next/static/css/6b70638fbb45b4f2.css","style"] -0:{"P":null,"b":"lKQa3FSkSrZjnFggXV6Av","p":"","c":["","login",""],"i":false,"f":[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["login",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Vqi2TCa5RZ0nOgBkPdKKp",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"hGLTswdpyRID1jim9jOTQ","p":"","c":["","login",""],"i":false,"f":[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["login",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","57HSdZZIU1_KFwllbDwzY",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} 13:"$Sreact.suspense" 14:I[394,[],"AsyncMetadata"] 7:{} diff --git a/ui_out/out/model/index.html b/ui_out/out/model/index.html index bb684a94..9b1be6c1 100644 --- a/ui_out/out/model/index.html +++ b/ui_out/out/model/index.html @@ -1 +1 @@ -Routstr

Routstr

Model Management & API Testing

Manage your AI models organized by provider groups. Configure API keys, and organize models by provider groups.
\ No newline at end of file +Routstr

Routstr

Model Management & API Testing

Manage your AI models organized by provider groups. Configure API keys, and organize models by provider groups.
\ No newline at end of file diff --git a/ui_out/out/model/index.txt b/ui_out/out/model/index.txt index a4f143ad..4f97dbfe 100644 --- a/ui_out/out/model/index.txt +++ b/ui_out/out/model/index.txt @@ -13,7 +13,7 @@ e:I[394,[],"AsyncMetadataOutlet"] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] :HL["/_next/static/css/6b70638fbb45b4f2.css","style"] -0:{"P":null,"b":"lKQa3FSkSrZjnFggXV6Av","p":"","c":["","model",""],"i":false,"f":[[["",{"children":["model",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["model",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","FV0FcfgQxWGSHKvIK56xj",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"hGLTswdpyRID1jim9jOTQ","p":"","c":["","model",""],"i":false,"f":[[["",{"children":["model",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["model",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","6uW7Fbq1NM9n9CDzy4KxK",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} 13:"$Sreact.suspense" 14:I[394,[],"AsyncMetadata"] 7:{} diff --git a/ui_out/out/providers/index.html b/ui_out/out/providers/index.html index aa59eb5d..e336cc92 100644 --- a/ui_out/out/providers/index.html +++ b/ui_out/out/providers/index.html @@ -1 +1 @@ -Routstr

Routstr

Upstream Providers

Manage your AI provider connections and credentials

\ No newline at end of file +Routstr

Routstr

Upstream Providers

Manage your AI provider connections and credentials

\ No newline at end of file diff --git a/ui_out/out/providers/index.txt b/ui_out/out/providers/index.txt index 4e4da739..dfe8ed3b 100644 --- a/ui_out/out/providers/index.txt +++ b/ui_out/out/providers/index.txt @@ -13,7 +13,7 @@ e:I[394,[],"AsyncMetadataOutlet"] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] :HL["/_next/static/css/6b70638fbb45b4f2.css","style"] -0:{"P":null,"b":"lKQa3FSkSrZjnFggXV6Av","p":"","c":["","providers",""],"i":false,"f":[[["",{"children":["providers",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["providers",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","vHvMf0SRTpXXa9hsxQ5zM",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"hGLTswdpyRID1jim9jOTQ","p":"","c":["","providers",""],"i":false,"f":[[["",{"children":["providers",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["providers",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","VBv_vHcmDB0QFfW744o7O",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} 13:"$Sreact.suspense" 14:I[394,[],"AsyncMetadata"] 7:{} diff --git a/ui_out/out/settings/index.html b/ui_out/out/settings/index.html index 7daad88a..7f5c5124 100644 --- a/ui_out/out/settings/index.html +++ b/ui_out/out/settings/index.html @@ -1 +1 @@ -Routstr

Routstr

Settings

Loading settings...
\ No newline at end of file +Routstr

Routstr

Settings

Loading settings...
\ No newline at end of file diff --git a/ui_out/out/settings/index.txt b/ui_out/out/settings/index.txt index 57b29285..84d83bde 100644 --- a/ui_out/out/settings/index.txt +++ b/ui_out/out/settings/index.txt @@ -13,7 +13,7 @@ e:I[394,[],"AsyncMetadataOutlet"] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] :HL["/_next/static/css/6b70638fbb45b4f2.css","style"] -0:{"P":null,"b":"lKQa3FSkSrZjnFggXV6Av","p":"","c":["","settings",""],"i":false,"f":[[["",{"children":["settings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","h8QyTboOorI4NPZJFTRZE",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"hGLTswdpyRID1jim9jOTQ","p":"","c":["","settings",""],"i":false,"f":[[["",{"children":["settings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","-saMwSeVdt1mn-zDNg3a3",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} 13:"$Sreact.suspense" 14:I[394,[],"AsyncMetadata"] 7:{} diff --git a/ui_out/out/transactions/index.html b/ui_out/out/transactions/index.html index c1b5c2e5..e4443c18 100644 --- a/ui_out/out/transactions/index.html +++ b/ui_out/out/transactions/index.html @@ -1 +1 @@ -Routstr

Routstr

Transaction History

View all Cashu token transactions processed by the system

\ No newline at end of file +Routstr

Routstr

Transaction History

View all Cashu token transactions processed by the system

\ No newline at end of file diff --git a/ui_out/out/transactions/index.txt b/ui_out/out/transactions/index.txt index 2db5e6a7..d7d42929 100644 --- a/ui_out/out/transactions/index.txt +++ b/ui_out/out/transactions/index.txt @@ -13,7 +13,7 @@ e:I[394,[],"AsyncMetadataOutlet"] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] :HL["/_next/static/css/6b70638fbb45b4f2.css","style"] -0:{"P":null,"b":"lKQa3FSkSrZjnFggXV6Av","p":"","c":["","transactions",""],"i":false,"f":[[["",{"children":["transactions",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["transactions",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","4IQVXbWCyHOJWpCIV_WUr",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"hGLTswdpyRID1jim9jOTQ","p":"","c":["","transactions",""],"i":false,"f":[[["",{"children":["transactions",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["transactions",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","N18hORzEArk171vfwRG6X",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} 13:"$Sreact.suspense" 14:I[394,[],"AsyncMetadata"] 7:{} diff --git a/ui_out/out/unauthorized/index.html b/ui_out/out/unauthorized/index.html index aa7434eb..e2db2969 100644 --- a/ui_out/out/unauthorized/index.html +++ b/ui_out/out/unauthorized/index.html @@ -1 +1 @@ -Routstr

Access Denied

You don't have permission to access this page. Please contact your administrator if you believe this is an error.

\ No newline at end of file +Routstr

Access Denied

You don't have permission to access this page. Please contact your administrator if you believe this is an error.

\ No newline at end of file diff --git a/ui_out/out/unauthorized/index.txt b/ui_out/out/unauthorized/index.txt index 8ceb9e27..36d21ea4 100644 --- a/ui_out/out/unauthorized/index.txt +++ b/ui_out/out/unauthorized/index.txt @@ -13,7 +13,7 @@ e:I[394,[],"AsyncMetadataOutlet"] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] :HL["/_next/static/css/6b70638fbb45b4f2.css","style"] -0:{"P":null,"b":"lKQa3FSkSrZjnFggXV6Av","p":"","c":["","unauthorized",""],"i":false,"f":[[["",{"children":["unauthorized",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["unauthorized",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","r6y3OxBtFBfGp-78WIMd7",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"hGLTswdpyRID1jim9jOTQ","p":"","c":["","unauthorized",""],"i":false,"f":[[["",{"children":["unauthorized",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["unauthorized",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","GOMdpCfK5DBHDj0O6xgy8",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} 13:"$Sreact.suspense" 14:I[394,[],"AsyncMetadata"] 7:{} diff --git a/ui_out/providers/index.html b/ui_out/providers/index.html index 99f1a252..c65e6fe0 100644 --- a/ui_out/providers/index.html +++ b/ui_out/providers/index.html @@ -1 +1 @@ -Routstr

Routstr

Upstream Providers

Manage your AI provider connections and credentials

\ No newline at end of file +Routstr

Routstr

Upstream Providers

Manage your AI provider connections and credentials

\ No newline at end of file diff --git a/ui_out/providers/index.txt b/ui_out/providers/index.txt index 02907458..640824f8 100644 --- a/ui_out/providers/index.txt +++ b/ui_out/providers/index.txt @@ -3,7 +3,7 @@ 3:I[8754,[],""] 4:I[768,[],""] 5:I[3971,[],"ClientPageRoot"] -6:I[8288,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","982","static/chunks/982-5588ad0e30e6255e.js","236","static/chunks/236-ba64522839e788ad.js","255","static/chunks/255-a44a63a7b4273784.js","387","static/chunks/app/providers/page-284d295c40b8f18c.js"],"default"] +6:I[8288,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","29","static/chunks/29-e3557fb1dd82bdc3.js","730","static/chunks/730-892209af1fa345bd.js","978","static/chunks/978-cd938190a9f5efa7.js","481","static/chunks/481-48cd0f8fe547e418.js","982","static/chunks/982-5588ad0e30e6255e.js","236","static/chunks/236-ba64522839e788ad.js","601","static/chunks/601-bd77b408e968f9da.js","387","static/chunks/app/providers/page-24027db6adfd0b9b.js"],"default"] 9:I[4826,[],"MetadataBoundary"] b:I[4826,[],"OutletBoundary"] e:I[394,[],"AsyncMetadataOutlet"] @@ -12,8 +12,8 @@ e:I[394,[],"AsyncMetadataOutlet"] :HL["/_next/static/media/4cf2300e9c8272f7-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] -:HL["/_next/static/css/5bf7a4b46c37a9cb.css","style"] -0:{"P":null,"b":"vzojcgD75PgXdcu6NGfSb","p":"","c":["","providers",""],"i":false,"f":[[["",{"children":["providers",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5bf7a4b46c37a9cb.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["providers",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","qmNEsMKsJLgfCLCu4VPoq",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} +:HL["/_next/static/css/6b70638fbb45b4f2.css","style"] +0:{"P":null,"b":"MTOFXU9tRAr2QXrmYwVxq","p":"","c":["","providers",""],"i":false,"f":[[["",{"children":["providers",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["providers",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","bbfLcZJj6TpxucvgVUWNM",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} 13:"$Sreact.suspense" 14:I[394,[],"AsyncMetadata"] 7:{} diff --git a/ui_out/settings/index.html b/ui_out/settings/index.html index 4d70c0dc..2c7a9785 100644 --- a/ui_out/settings/index.html +++ b/ui_out/settings/index.html @@ -1 +1 @@ -Routstr

Routstr

Settings

Loading settings...
\ No newline at end of file +Routstr

Routstr

Settings

Loading settings...
\ No newline at end of file diff --git a/ui_out/settings/index.txt b/ui_out/settings/index.txt index 0c905d04..d2c914e1 100644 --- a/ui_out/settings/index.txt +++ b/ui_out/settings/index.txt @@ -3,7 +3,7 @@ 3:I[8754,[],""] 4:I[768,[],""] 5:I[3971,[],"ClientPageRoot"] -6:I[4961,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","978","static/chunks/978-cd938190a9f5efa7.js","651","static/chunks/651-4a58f299a4aa4df7.js","236","static/chunks/236-ba64522839e788ad.js","255","static/chunks/255-a44a63a7b4273784.js","662","static/chunks/app/settings/page-a90352a6b8bf0df3.js"],"default"] +6:I[4961,["363","static/chunks/363-119b32fca35baa33.js","222","static/chunks/222-4bb848975c01d467.js","808","static/chunks/808-6da586a06e4a6738.js","978","static/chunks/978-cd938190a9f5efa7.js","651","static/chunks/651-4a58f299a4aa4df7.js","236","static/chunks/236-ba64522839e788ad.js","601","static/chunks/601-bd77b408e968f9da.js","662","static/chunks/app/settings/page-abf398be5044bf9e.js"],"default"] 9:I[4826,[],"MetadataBoundary"] b:I[4826,[],"OutletBoundary"] e:I[394,[],"AsyncMetadataOutlet"] @@ -12,8 +12,8 @@ e:I[394,[],"AsyncMetadataOutlet"] :HL["/_next/static/media/4cf2300e9c8272f7-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] -:HL["/_next/static/css/5bf7a4b46c37a9cb.css","style"] -0:{"P":null,"b":"vzojcgD75PgXdcu6NGfSb","p":"","c":["","settings",""],"i":false,"f":[[["",{"children":["settings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5bf7a4b46c37a9cb.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","CkLXoFD2BlyUUG2DPbPh0",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} +:HL["/_next/static/css/6b70638fbb45b4f2.css","style"] +0:{"P":null,"b":"MTOFXU9tRAr2QXrmYwVxq","p":"","c":["","settings",""],"i":false,"f":[[["",{"children":["settings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","AYsJRrtECyyIRr-hy8b2T",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} 13:"$Sreact.suspense" 14:I[394,[],"AsyncMetadata"] 7:{} diff --git a/ui_out/transactions/index.html b/ui_out/transactions/index.html index 60ecbf97..b25d4aba 100644 --- a/ui_out/transactions/index.html +++ b/ui_out/transactions/index.html @@ -1 +1 @@ -Routstr

Routstr

Transaction History

View all Cashu token transactions processed by the system

\ No newline at end of file +Routstr

Routstr

Transaction History

View all Cashu token transactions processed by the system

\ No newline at end of file diff --git a/ui_out/transactions/index.txt b/ui_out/transactions/index.txt index 751c18ef..c5593746 100644 --- a/ui_out/transactions/index.txt +++ b/ui_out/transactions/index.txt @@ -12,8 +12,8 @@ e:I[394,[],"AsyncMetadataOutlet"] :HL["/_next/static/media/4cf2300e9c8272f7-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] -:HL["/_next/static/css/5bf7a4b46c37a9cb.css","style"] -0:{"P":null,"b":"vzojcgD75PgXdcu6NGfSb","p":"","c":["","transactions",""],"i":false,"f":[[["",{"children":["transactions",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5bf7a4b46c37a9cb.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["transactions",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","KqVZZStNGVmAu8IGJMtWa",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} +:HL["/_next/static/css/6b70638fbb45b4f2.css","style"] +0:{"P":null,"b":"MTOFXU9tRAr2QXrmYwVxq","p":"","c":["","transactions",""],"i":false,"f":[[["",{"children":["transactions",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["transactions",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","auE2K9xv61puGfawyOXyq",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} 13:"$Sreact.suspense" 14:I[394,[],"AsyncMetadata"] 7:{} diff --git a/ui_out/unauthorized/index.html b/ui_out/unauthorized/index.html index af2a8f92..6d9aaefa 100644 --- a/ui_out/unauthorized/index.html +++ b/ui_out/unauthorized/index.html @@ -1 +1 @@ -Routstr

Access Denied

You don't have permission to access this page. Please contact your administrator if you believe this is an error.

\ No newline at end of file +Routstr

Access Denied

You don't have permission to access this page. Please contact your administrator if you believe this is an error.

\ No newline at end of file diff --git a/ui_out/unauthorized/index.txt b/ui_out/unauthorized/index.txt index 7b3b963e..ebc55851 100644 --- a/ui_out/unauthorized/index.txt +++ b/ui_out/unauthorized/index.txt @@ -12,8 +12,8 @@ e:I[394,[],"AsyncMetadataOutlet"] :HL["/_next/static/media/4cf2300e9c8272f7-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/css/de70bee13400563f.css","style"] -:HL["/_next/static/css/5bf7a4b46c37a9cb.css","style"] -0:{"P":null,"b":"vzojcgD75PgXdcu6NGfSb","p":"","c":["","unauthorized",""],"i":false,"f":[[["",{"children":["unauthorized",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/5bf7a4b46c37a9cb.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["unauthorized",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","qiwH95X8-b8P9f5RsRStJ",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} +:HL["/_next/static/css/6b70638fbb45b4f2.css","style"] +0:{"P":null,"b":"MTOFXU9tRAr2QXrmYwVxq","p":"","c":["","unauthorized",""],"i":false,"f":[[["",{"children":["unauthorized",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/de70bee13400563f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/6b70638fbb45b4f2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["unauthorized",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],["$","$L9",null,{"children":"$La"}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","gPN6C01KAZVNXY-EtNpqN",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} 13:"$Sreact.suspense" 14:I[394,[],"AsyncMetadata"] 7:{}