cartethyia 2.5.1 → 2.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +5 -1
- package/dist/dashboard/assets/{AccountCooldown-ChpdzxRH.js → AccountCooldown-Bjo92Qat.js} +1 -1
- package/dist/dashboard/assets/AccountCooldown-Bjo92Qat.js.gz +0 -0
- package/dist/dashboard/assets/{BannedPage-ChqnTRpZ.js → BannedPage-hfCzi-Ux.js} +1 -1
- package/dist/dashboard/assets/BannedPage-hfCzi-Ux.js.gz +0 -0
- package/dist/dashboard/assets/CliToolDetailPage-DLGqYEwI.js +1 -0
- package/dist/dashboard/assets/CliToolDetailPage-DLGqYEwI.js.gz +0 -0
- package/dist/dashboard/assets/{CliToolsPage-BXUaRCQQ.js → CliToolsPage-DEDyKBlC.js} +1 -1
- package/dist/dashboard/assets/CliToolsPage-DEDyKBlC.js.gz +0 -0
- package/dist/dashboard/assets/CombosPage-CfuYiQ8Z.js +1 -0
- package/dist/dashboard/assets/CombosPage-CfuYiQ8Z.js.gz +0 -0
- package/dist/dashboard/assets/ConsoleLogPage-bsLuZmYH.js +1 -0
- package/dist/dashboard/assets/ConsoleLogPage-bsLuZmYH.js.gz +0 -0
- package/dist/dashboard/assets/CustomizationPage-_UWhwziJ.js +1 -0
- package/dist/dashboard/assets/CustomizationPage-_UWhwziJ.js.gz +0 -0
- package/dist/dashboard/assets/HealthEventsModal-Cjfc5WFS.js +1 -0
- package/dist/dashboard/assets/HealthEventsModal-Cjfc5WFS.js.gz +0 -0
- package/dist/dashboard/assets/LoginPage-DDVIfZGW.js +1 -0
- package/dist/dashboard/assets/LoginPage-DDVIfZGW.js.gz +0 -0
- package/dist/dashboard/assets/ModelPicker-CWkTUtpX.js +1 -0
- package/dist/dashboard/assets/ModelPicker-CWkTUtpX.js.gz +0 -0
- package/dist/dashboard/assets/OverviewPage-B53YYMng.js +1 -0
- package/dist/dashboard/assets/OverviewPage-B53YYMng.js.gz +0 -0
- package/dist/dashboard/assets/ProviderDetailPage-B0KaAQf0.js +3 -0
- package/dist/dashboard/assets/ProviderDetailPage-B0KaAQf0.js.gz +0 -0
- package/dist/dashboard/assets/ProvidersPage-Dx31DgIO.js +1 -0
- package/dist/dashboard/assets/ProvidersPage-Dx31DgIO.js.gz +0 -0
- package/dist/dashboard/assets/ProxyPage-BpnR4kXT.js +7 -0
- package/dist/dashboard/assets/ProxyPage-BpnR4kXT.js.gz +0 -0
- package/dist/dashboard/assets/QuotaPage-BpOQCnun.js +1 -0
- package/dist/dashboard/assets/QuotaPage-BpOQCnun.js.gz +0 -0
- package/dist/dashboard/assets/SettingsPage-DV1eo2J_.js +1 -0
- package/dist/dashboard/assets/SettingsPage-DV1eo2J_.js.gz +0 -0
- package/dist/dashboard/assets/SetupPage-D6pmQ86L.js +1 -0
- package/dist/dashboard/assets/SetupPage-D6pmQ86L.js.gz +0 -0
- package/dist/dashboard/assets/SortableList-DWvKiuSl.js +1 -0
- package/dist/dashboard/assets/SortableList-DWvKiuSl.js.gz +0 -0
- package/dist/dashboard/assets/{StudioPage-DqK5E26W.js → StudioPage-CmkUrgdj.js} +3 -3
- package/dist/dashboard/assets/StudioPage-CmkUrgdj.js.gz +0 -0
- package/dist/dashboard/assets/UsagePage-B47uOydr.js +56 -0
- package/dist/dashboard/assets/UsagePage-B47uOydr.js.gz +0 -0
- package/dist/dashboard/assets/{api-keys-BmDbsior.js → api-keys-uNywYlfv.js} +1 -1
- package/dist/dashboard/assets/api-keys-uNywYlfv.js.gz +0 -0
- package/dist/dashboard/assets/{app-C-Y4oZT0.js → app-CafWtVXA.js} +1 -1
- package/dist/dashboard/assets/{app-C-Y4oZT0.js.gz → app-CafWtVXA.js.gz} +0 -0
- package/dist/dashboard/assets/app-DxivpfYG.css +2 -0
- package/dist/dashboard/assets/app-DxivpfYG.css.gz +0 -0
- package/dist/dashboard/assets/{assert-BHfaei-X.js → assert-NHwYq95t.js} +1 -1
- package/dist/dashboard/assets/{assert-BHfaei-X.js.gz → assert-NHwYq95t.js.gz} +0 -0
- package/dist/dashboard/assets/badge-6uzDDvqs.js +1 -0
- package/dist/dashboard/assets/badge-6uzDDvqs.js.gz +0 -0
- package/dist/dashboard/assets/banner-4_WNg2WZ.js +1 -0
- package/dist/dashboard/assets/banner-4_WNg2WZ.js.gz +0 -0
- package/dist/dashboard/assets/card--AtFedAq.js +1 -0
- package/dist/dashboard/assets/card--AtFedAq.js.gz +0 -0
- package/dist/dashboard/assets/{cli-tools-B0wBq-RL.js → cli-tools-B3e7dx3N.js} +1 -1
- package/dist/dashboard/assets/cli-tools-B3e7dx3N.js.gz +0 -0
- package/dist/dashboard/assets/clipboard-button-NreUx6c8.js +1 -0
- package/dist/dashboard/assets/clipboard-button-NreUx6c8.js.gz +0 -0
- package/dist/dashboard/assets/dialog-BtpsJU98.js +1 -0
- package/dist/dashboard/assets/dialog-BtpsJU98.js.gz +0 -0
- package/dist/dashboard/assets/drawer-WwwtzihF.js +1 -0
- package/dist/dashboard/assets/drawer-WwwtzihF.js.gz +0 -0
- package/dist/dashboard/assets/entry-CkryrIea.js +4 -0
- package/dist/dashboard/assets/entry-CkryrIea.js.gz +0 -0
- package/dist/dashboard/assets/entry-TJIye_jT.js +1 -0
- package/dist/dashboard/assets/entry-TJIye_jT.js.gz +0 -0
- package/dist/dashboard/assets/{entry-D4O2229X.js → entry-jy9_4-Ke.js} +1 -1
- package/dist/dashboard/assets/entry-jy9_4-Ke.js.gz +0 -0
- package/dist/dashboard/assets/github-badge-D_eM3IgG.js +1 -0
- package/dist/dashboard/assets/github-badge-D_eM3IgG.js.gz +0 -0
- package/dist/dashboard/assets/{index-CcD1eSJ6.js → index-BydyKaDz.js} +2 -2
- package/dist/dashboard/assets/index-BydyKaDz.js.gz +0 -0
- package/dist/dashboard/assets/inline-BcNGF8Gr.js +1 -0
- package/dist/dashboard/assets/inline-BcNGF8Gr.js.gz +0 -0
- package/dist/dashboard/assets/input-BG41et9G.js +1 -0
- package/dist/dashboard/assets/input-BG41et9G.js.gz +0 -0
- package/dist/dashboard/assets/layout-C8mer_Ak.js +1 -0
- package/dist/dashboard/assets/layout-C8mer_Ak.js.gz +0 -0
- package/dist/dashboard/assets/list-row-Gh_W4OR_.js +1 -0
- package/dist/dashboard/assets/list-row-Gh_W4OR_.js.gz +0 -0
- package/dist/dashboard/assets/{live-yfEJFF9T.js → live-BJGYRBnR.js} +1 -1
- package/dist/dashboard/assets/live-BJGYRBnR.js.gz +0 -0
- package/dist/dashboard/assets/{model-bans-CT-TxSNX.js → model-bans-DeVLDA7I.js} +1 -1
- package/dist/dashboard/assets/model-bans-DeVLDA7I.js.gz +0 -0
- package/dist/dashboard/assets/numbers-Bs4LOOuf.js +2 -0
- package/dist/dashboard/assets/numbers-Bs4LOOuf.js.gz +0 -0
- package/dist/dashboard/assets/{routing-Cs6jl49L.js → routing-CcusqXA7.js} +1 -1
- package/dist/dashboard/assets/routing-CcusqXA7.js.gz +0 -0
- package/dist/dashboard/assets/select-BO6h8yNv.js +41 -0
- package/dist/dashboard/assets/select-BO6h8yNv.js.gz +0 -0
- package/dist/dashboard/assets/{settings-CfcTcOyU.js → settings-mpmXTgUa.js} +1 -1
- package/dist/dashboard/assets/settings-mpmXTgUa.js.gz +0 -0
- package/dist/dashboard/assets/stack-DwLmjUFK.js +1 -0
- package/dist/dashboard/assets/stack-DwLmjUFK.js.gz +0 -0
- package/dist/dashboard/assets/state-DYdQmdAl.js +1 -0
- package/dist/dashboard/assets/state-DYdQmdAl.js.gz +0 -0
- package/dist/dashboard/assets/switch-CidSfbG7.js +1 -0
- package/dist/dashboard/assets/switch-CidSfbG7.js.gz +0 -0
- package/dist/dashboard/assets/{useMutation-BQKMcJ1H.js → useMutation-w4u4CVue.js} +1 -1
- package/dist/dashboard/assets/useMutation-w4u4CVue.js.gz +0 -0
- package/dist/dashboard/index.html +1 -1
- package/dist/dashboard/index.html.gz +0 -0
- package/dist/dashboard/precompressed-assets.json +51 -54
- package/package.json +1 -1
- package/scripts/cli/command/console-menu.ts +248 -246
- package/scripts/cli/command/tray.ts +208 -204
- package/src/boot/app.ts +3 -2
- package/src/config/spec.ts +26 -2
- package/src/console/backup/routes.ts +52 -1
- package/src/console/backup/service.ts +60 -4
- package/src/console/observability/contracts.ts +11 -1
- package/src/console/observability/store.ts +9 -6
- package/src/console/share/share-router.ts +6 -9
- package/src/observability/payload-capture.ts +366 -344
- package/src/observability/payload-store.ts +12 -2
- package/src/observability/telemetry-status.ts +28 -16
- package/src/persistence/stores/api-key-store.ts +6 -0
- package/src/persistence/stores/share-store.ts +583 -556
- package/src/persistence/stores/telemetry-store.ts +1 -1
- package/src/protocol/response/gemini.ts +18 -4
- package/src/providers/discovery/openrouter-free-roster.ts +3 -11
- package/src/providers/discovery/probe-phases.ts +42 -5
- package/src/providers/discovery/probing-service.ts +25 -2
- package/src/providers/integrations/antigravity/antigravity-quota.ts +11 -3
- package/src/providers/integrations/buddy/buddy-catalog-shared.ts +4 -4
- package/src/providers/integrations/buddy/workbuddy/shared.ts +201 -200
- package/src/providers/integrations/claude/claude.ts +3 -1
- package/src/providers/integrations/cline/cline-quota.ts +8 -11
- package/src/providers/integrations/cloudflareai/cloudflareai-models.ts +3 -1
- package/src/providers/integrations/inferhub.ts +3 -1
- package/src/providers/integrations/kilo/kilo.ts +0 -1
- package/src/providers/integrations/kiro/kiro-catalog.ts +8 -2
- package/src/providers/integrations/opencode/provider.ts +532 -532
- package/src/providers/integrations/openrouter/provider.ts +5 -15
- package/src/providers/integrations/tokenharbor.ts +2 -2
- package/src/providers/integrations/trae/trae-catalog.ts +5 -3
- package/src/providers/operations/account-health-service.ts +23 -0
- package/src/providers/operations/client-versions.ts +9 -2
- package/src/providers/provider-metadata.ts +7 -1
- package/src/security/api-key-auth.ts +23 -0
- package/src/transport/dispatch/attempt-finalize.ts +46 -5
- package/src/transport/dispatch/proxy-request.ts +9 -0
- package/src/transport/dispatch/streaming/stream.ts +16 -2
- package/src/transport/guards/auth-guard.ts +2 -3
- package/src/transport/routing/route-catalog.ts +806 -799
- package/dist/dashboard/assets/AccountCooldown-ChpdzxRH.js.gz +0 -0
- package/dist/dashboard/assets/BannedPage-ChqnTRpZ.js.gz +0 -0
- package/dist/dashboard/assets/CliToolDetailPage-Bb9CNuoh.js +0 -1
- package/dist/dashboard/assets/CliToolDetailPage-Bb9CNuoh.js.gz +0 -0
- package/dist/dashboard/assets/CliToolsPage-BXUaRCQQ.js.gz +0 -0
- package/dist/dashboard/assets/CombosPage-CisNZOUt.js +0 -1
- package/dist/dashboard/assets/CombosPage-CisNZOUt.js.gz +0 -0
- package/dist/dashboard/assets/ConsoleLogPage-BOpI_LOH.js +0 -1
- package/dist/dashboard/assets/ConsoleLogPage-BOpI_LOH.js.gz +0 -0
- package/dist/dashboard/assets/CustomizationPage-DAkdvJ4k.js +0 -1
- package/dist/dashboard/assets/CustomizationPage-DAkdvJ4k.js.gz +0 -0
- package/dist/dashboard/assets/HealthEventsModal-DeT-VXHd.js +0 -1
- package/dist/dashboard/assets/HealthEventsModal-DeT-VXHd.js.gz +0 -0
- package/dist/dashboard/assets/LoginPage-CytxSeGP.js +0 -1
- package/dist/dashboard/assets/LoginPage-CytxSeGP.js.gz +0 -0
- package/dist/dashboard/assets/ModelPicker-oQ-SDXp8.js +0 -1
- package/dist/dashboard/assets/ModelPicker-oQ-SDXp8.js.gz +0 -0
- package/dist/dashboard/assets/OverviewPage-CU7S1wJs.js +0 -1
- package/dist/dashboard/assets/OverviewPage-CU7S1wJs.js.gz +0 -0
- package/dist/dashboard/assets/ProviderDetailPage-DLm2baot.js +0 -3
- package/dist/dashboard/assets/ProviderDetailPage-DLm2baot.js.gz +0 -0
- package/dist/dashboard/assets/ProvidersPage-DOXfuzfL.js +0 -1
- package/dist/dashboard/assets/ProvidersPage-DOXfuzfL.js.gz +0 -0
- package/dist/dashboard/assets/ProxyPage-wvk0ciQN.js +0 -7
- package/dist/dashboard/assets/ProxyPage-wvk0ciQN.js.gz +0 -0
- package/dist/dashboard/assets/QuotaPage-Cn_fcUHE.js +0 -1
- package/dist/dashboard/assets/QuotaPage-Cn_fcUHE.js.gz +0 -0
- package/dist/dashboard/assets/SettingsPage-8-eVadhc.js +0 -1
- package/dist/dashboard/assets/SettingsPage-8-eVadhc.js.gz +0 -0
- package/dist/dashboard/assets/SetupPage-uEIXPyGO.js +0 -1
- package/dist/dashboard/assets/SetupPage-uEIXPyGO.js.gz +0 -0
- package/dist/dashboard/assets/SortableList-DCY0TPTZ.js +0 -1
- package/dist/dashboard/assets/SortableList-DCY0TPTZ.js.gz +0 -0
- package/dist/dashboard/assets/StudioPage-DqK5E26W.js.gz +0 -0
- package/dist/dashboard/assets/UsagePage-38JfiZ0H.js +0 -56
- package/dist/dashboard/assets/UsagePage-38JfiZ0H.js.gz +0 -0
- package/dist/dashboard/assets/api-keys-BmDbsior.js.gz +0 -0
- package/dist/dashboard/assets/app-BbpSarVV.css +0 -2
- package/dist/dashboard/assets/app-BbpSarVV.css.gz +0 -0
- package/dist/dashboard/assets/badge-DpXT4Ixt.js +0 -1
- package/dist/dashboard/assets/badge-DpXT4Ixt.js.gz +0 -0
- package/dist/dashboard/assets/banner-CSAAWLJv.js +0 -1
- package/dist/dashboard/assets/banner-CSAAWLJv.js.gz +0 -0
- package/dist/dashboard/assets/card-DEhRXXw4.js +0 -1
- package/dist/dashboard/assets/card-DEhRXXw4.js.gz +0 -0
- package/dist/dashboard/assets/check-D69FzdvC.js +0 -1
- package/dist/dashboard/assets/check-D69FzdvC.js.gz +0 -0
- package/dist/dashboard/assets/cli-tools-B0wBq-RL.js.gz +0 -0
- package/dist/dashboard/assets/clipboard-button-DOo6EU8O.js +0 -1
- package/dist/dashboard/assets/clipboard-button-DOo6EU8O.js.gz +0 -0
- package/dist/dashboard/assets/copy-ngmQ9zcZ.js +0 -1
- package/dist/dashboard/assets/copy-ngmQ9zcZ.js.gz +0 -0
- package/dist/dashboard/assets/dialog-BvQeBMfP.js +0 -1
- package/dist/dashboard/assets/dialog-BvQeBMfP.js.gz +0 -0
- package/dist/dashboard/assets/drawer-CMwPXwQB.js +0 -1
- package/dist/dashboard/assets/drawer-CMwPXwQB.js.gz +0 -0
- package/dist/dashboard/assets/entry--yj84zk3.js +0 -4
- package/dist/dashboard/assets/entry--yj84zk3.js.gz +0 -0
- package/dist/dashboard/assets/entry-D4O2229X.js.gz +0 -0
- package/dist/dashboard/assets/entry-DKvr5Q9K.js +0 -1
- package/dist/dashboard/assets/entry-DKvr5Q9K.js.gz +0 -0
- package/dist/dashboard/assets/github-badge-zliLvBwr.js +0 -1
- package/dist/dashboard/assets/github-badge-zliLvBwr.js.gz +0 -0
- package/dist/dashboard/assets/index-CcD1eSJ6.js.gz +0 -0
- package/dist/dashboard/assets/inline-D1IlZZ8H.js +0 -1
- package/dist/dashboard/assets/inline-D1IlZZ8H.js.gz +0 -0
- package/dist/dashboard/assets/input-BpVZdrbc.js +0 -1
- package/dist/dashboard/assets/input-BpVZdrbc.js.gz +0 -0
- package/dist/dashboard/assets/layout-BioLW7gN.js +0 -1
- package/dist/dashboard/assets/layout-BioLW7gN.js.gz +0 -0
- package/dist/dashboard/assets/list-row-CwVcGAIc.js +0 -1
- package/dist/dashboard/assets/list-row-CwVcGAIc.js.gz +0 -0
- package/dist/dashboard/assets/live-yfEJFF9T.js.gz +0 -0
- package/dist/dashboard/assets/model-bans-CT-TxSNX.js.gz +0 -0
- package/dist/dashboard/assets/numbers-CFL4_Dqc.js +0 -1
- package/dist/dashboard/assets/numbers-CFL4_Dqc.js.gz +0 -0
- package/dist/dashboard/assets/routing-Cs6jl49L.js.gz +0 -0
- package/dist/dashboard/assets/select-XPJ-dIw3.js +0 -41
- package/dist/dashboard/assets/select-XPJ-dIw3.js.gz +0 -0
- package/dist/dashboard/assets/settings-CfcTcOyU.js.gz +0 -0
- package/dist/dashboard/assets/stack-C9_uUjaA.js +0 -1
- package/dist/dashboard/assets/stack-C9_uUjaA.js.gz +0 -0
- package/dist/dashboard/assets/state-DA0B95UQ.js +0 -1
- package/dist/dashboard/assets/state-DA0B95UQ.js.gz +0 -0
- package/dist/dashboard/assets/switch-Cittxy-x.js +0 -1
- package/dist/dashboard/assets/switch-Cittxy-x.js.gz +0 -0
- package/dist/dashboard/assets/toast-CNt_jzO4.js +0 -2
- package/dist/dashboard/assets/toast-CNt_jzO4.js.gz +0 -0
- package/dist/dashboard/assets/useMutation-BQKMcJ1H.js.gz +0 -0
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginPage-CytxSeGP.js","assets/jsx-runtime-CXUMngI_.js","assets/toast-CNt_jzO4.js","assets/app-C-Y4oZT0.js","assets/app-BbpSarVV.css","assets/log-in-BmRjy60c.js","assets/query-keys-D7wX2vM5.js","assets/input-BpVZdrbc.js","assets/eye-off-Bk5g2luF.js","assets/eye-C_hawfH4.js","assets/SetupPage-uEIXPyGO.js","assets/layout-BioLW7gN.js","assets/backup-file-gdKIlg8U.js","assets/BannedPage-ChqnTRpZ.js","assets/OverviewPage-CU7S1wJs.js","assets/model-bans-CT-TxSNX.js","assets/assert-BHfaei-X.js","assets/useMutation-BQKMcJ1H.js","assets/mutation-BkoLM5Ba.js","assets/fingerprint-pattern-BWuHtbW4.js","assets/check-D69FzdvC.js","assets/chevron-right-BXIy5l3h.js","assets/SortableList-DCY0TPTZ.js","assets/stack-C9_uUjaA.js","assets/copy-ngmQ9zcZ.js","assets/download-A0SW9OCW.js","assets/gauge-BbIMy7MB.js","assets/state-DA0B95UQ.js","assets/key-round-UkavsGxp.js","assets/clipboard-button-DOo6EU8O.js","assets/use-clipboard-B0Sy03fE.js","assets/dialog-BvQeBMfP.js","assets/use-presence-BSZEBx7U.js","assets/pencil-768ysRAr.js","assets/plus-DIdX_g-x.js","assets/refresh-cw-BqJFk4sU.js","assets/route-CNSNj9Zm.js","assets/search-JOKus9rb.js","assets/shield-check-DVS0Foqh.js","assets/settings-CfcTcOyU.js","assets/sparkles-BRaRUxAU.js","assets/trash-Cppn5c3R.js","assets/card-DEhRXXw4.js","assets/download-dRFo5_Wu.js","assets/tokens-DDxMbSRL.js","assets/badge-DpXT4Ixt.js","assets/select-XPJ-dIw3.js","assets/ModelPicker-oQ-SDXp8.js","assets/ProviderIcon-CmfzxpVM.js","assets/switch-Cittxy-x.js","assets/inline-D1IlZZ8H.js","assets/api-keys-BmDbsior.js","assets/cli-tools-B0wBq-RL.js","assets/quota-DZGyp0N5.js","assets/UsagePage-38JfiZ0H.js","assets/terminal-Bd4ee8TA.js","assets/drawer-CMwPXwQB.js","assets/circle-check-BU3v_mFW.js","assets/cog-CdWhsajs.js","assets/image-BPaouViG.js","assets/scaling-nWE4Cx8f.js","assets/wrench-B6E1oEuY.js","assets/use-reduced-motion-C4B0R6Sz.js","assets/numbers-CFL4_Dqc.js","assets/privacy-mode-GM8bej85.js","assets/use-timeout-BwcBBRrT.js","assets/banner-CSAAWLJv.js","assets/live-yfEJFF9T.js","assets/stream-retry-5QnVuSSo.js","assets/ProviderDetailPage-DLm2baot.js","assets/arrow-left-CpBxkoxI.js","assets/brain-Cwed_72z.js","assets/circle-alert-CntYHV5v.js","assets/layers-2-glBbjl.js","assets/power-off-Yjw9GMJh.js","assets/rotate-ccw-CufcqITi.js","assets/list-row-CwVcGAIc.js","assets/routing-Cs6jl49L.js","assets/HealthEventsModal-DeT-VXHd.js","assets/AccountCooldown-ChpdzxRH.js","assets/ProvidersPage-DOXfuzfL.js","assets/dialog-actions-B1axpEg7.js","assets/CombosPage-CisNZOUt.js","assets/arrow-right-Dl5yKnp8.js","assets/QuotaPage-Cn_fcUHE.js","assets/ProxyPage-wvk0ciQN.js","assets/SettingsPage-8-eVadhc.js","assets/CliToolsPage-BXUaRCQQ.js","assets/ToolIcon-K1ckcDKg.js","assets/CliToolDetailPage-Bb9CNuoh.js","assets/ConsoleLogPage-BOpI_LOH.js","assets/CustomizationPage-DAkdvJ4k.js","assets/StudioPage-DqK5E26W.js","assets/message-circle-CCxGwRvv.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{t as i}from"./index-CcD1eSJ6.js";import{a,o,r as s,t as c}from"./app-C-Y4oZT0.js";import{n as l,r as u,t as d}from"./terminal-Bd4ee8TA.js";import{_ as f,c as p,d as m,g as h,h as g,l as _,m as v,p as y,r as b,s as ee,t as x,u as te,v as ne,y as re}from"./toast-CNt_jzO4.js";import{t as ie}from"./dialog-BvQeBMfP.js";import{C as S,T as C,_ as ae,c as oe,d as se,f as ce,g as le,h as ue,l as de,m as fe,n as pe,p as me,r as he,s as ge,t as _e,v as w,w as ve}from"./assert-BHfaei-X.js";import{C as ye,D as be,E as xe,O as T,P as Se,S as Ce,_ as we,a as E,b as Te,c as Ee,d as De,f as Oe,g as ke,i as D,j as Ae,k as je,l as O,o as k,r as Me,t as A,v as j,w as Ne,y as Pe}from"./query-keys-D7wX2vM5.js";import{t as Fe}from"./mutation-BkoLM5Ba.js";import{t as M}from"./useMutation-BQKMcJ1H.js";import{t as Ie}from"./dialog-actions-B1axpEg7.js";var Le=e(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),Re=e(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),ze=e(`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`}]]),Be=e(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),Ve=e(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),He=e(`memory-stick`,[[`path`,{d:`M12 12v-2`,key:`fwoke6`}],[`path`,{d:`M12 18v-2`,key:`qj6yno`}],[`path`,{d:`M16 12v-2`,key:`heuere`}],[`path`,{d:`M16 18v-2`,key:`s1ct0w`}],[`path`,{d:`M2 11h1.5`,key:`15p63e`}],[`path`,{d:`M20 18v-2`,key:`12ehxp`}],[`path`,{d:`M20.5 11H22`,key:`khsy7a`}],[`path`,{d:`M4 18v-2`,key:`1c3oqr`}],[`path`,{d:`M8 12v-2`,key:`1mwtfd`}],[`path`,{d:`M8 18v-2`,key:`qcmpov`}],[`rect`,{x:`2`,y:`6`,width:`20`,height:`10`,rx:`2`,key:`1qcswk`}]]),Ue=e(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),We=e(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),Ge=e(`palette`,[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`,key:`e79jfc`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`1okk4w`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`,key:`f64h9f`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`,key:`qy21gx`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`fotxhn`}]]),Ke=e(`rocket`,[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]),qe=e(`scroll-text`,[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]),Je=e(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]),Ye=e(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Xe=e(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),Ze=e(`timer`,[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`,key:`14vaq8`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`,key:`17fdiu`}],[`circle`,{cx:`12`,cy:`14`,r:`8`,key:`1e1u0o`}]]);function Qe(e){let t;if(e.then(e=>(t=e,e),T)?.catch?.(T),t!==void 0)return{data:t}}function $e(e){return{mutationKey:e.options.mutationKey,state:e.state,...e.options.scope&&{scope:e.options.scope},...e.meta&&{meta:e.meta}}}function et(e,t,n){let r=e.promise?.then(t).catch(e=>n?.(e)===!1?Promise.reject(e):Promise.reject(Error(`redacted`)));return r?.catch(T),r}function tt(e,t,n){return{dehydratedAt:Date.now(),state:{...e.state,...e.state.data!==void 0&&{data:t?t(e.state.data):e.state.data}},queryKey:e.queryKey,queryHash:e.queryHash,...e.state.status===`pending`&&{promise:et(e,t,n)},...e.meta&&{meta:e.meta},...e.queryType&&{queryType:e.queryType}}}function nt(e){return e.state.isPaused}function rt(e){return e.state.status===`success`}function it(e,t={}){let n=t.shouldDehydrateMutation??e.getDefaultOptions().dehydrate?.shouldDehydrateMutation??nt,r=e.getMutationCache().getAll().flatMap(e=>n(e)?[$e(e)]:[]),i=t.shouldDehydrateQuery??e.getDefaultOptions().dehydrate?.shouldDehydrateQuery??rt,a=t.shouldRedactErrors??e.getDefaultOptions().dehydrate?.shouldRedactErrors,o=t.serializeData??e.getDefaultOptions().dehydrate?.serializeData;return{mutations:r,queries:e.getQueryCache().getAll().flatMap(e=>i(e)?[tt(e,o,a)]:[])}}function at(e,t,n){let r=e.getMutationCache(),i=e.getQueryCache(),a=n?.defaultOptions?.deserializeData??e.getDefaultOptions().hydrate?.deserializeData;t.mutations?.forEach(({state:t,...i})=>{r.build(e,{...e.getDefaultOptions().hydrate?.mutations,...n?.defaultOptions?.mutations,...i},t)}),t.queries?.forEach(({queryKey:t,state:r,queryHash:o,meta:s,promise:c,dehydratedAt:l,queryType:u})=>{let d=c?Qe(c):void 0,f=r.data===void 0?d?.data:r.data,p=f===void 0?f:a?a(f):f,m=i.get(o),h=m?.state.status===`pending`,g=m?.state.fetchStatus===`fetching`;if(m){let e=d&&l!==void 0&&l>m.state.dataUpdatedAt;if(r.dataUpdatedAt>m.state.dataUpdatedAt||e){let{fetchStatus:e,...t}=r;m.setState({...t,data:p,...r.status===`pending`&&p!==void 0&&{status:`success`,dataUpdatedAt:l??Date.now(),...!g&&{fetchStatus:`idle`}}})}}else m=i.build(e,{...e.getDefaultOptions().hydrate?.queries,...n?.defaultOptions?.queries,queryKey:t,queryHash:o,meta:s,_type:u},{...r,data:p,fetchStatus:`idle`,status:r.status===`pending`&&p!==void 0?`success`:r.status,...r.status===`pending`&&p!==void 0&&{dataUpdatedAt:l??Date.now()}});c&&!d&&!h&&!g&&(l===void 0||l>m.state.dataUpdatedAt)&&m.fetch(void 0,{initialPromise:Promise.resolve(c).then(a)}).catch(T)})}var ot=class extends Te{#e;#t;#n;constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}build(e,t,n){let r=new Fe({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=st(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=st(e);if(typeof t==`string`){let n=this.#t.get(t);if(n){if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=st(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}return!0}runNext(e){let t=st(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){j.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>xe(t,e))}findAll(e={}){return this.getAll().filter(t=>xe(e,t))}notify(e){j.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return j.batch(()=>Promise.all(e.map(e=>e.continue().catch(T))))}};function st(e){return e.options.scope?.id}var ct=class extends Te{#e;constructor(e={}){super(),this.config=e,this.#e=new Map}build(e,t,n){let r=t.queryKey,i=t.queryHash??Ne(r,t),a=this.get(i);return a||(a=new Oe({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){j.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>be(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>be(e,t)):t}notify(e){j.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){j.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){j.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},lt=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new ct,this.#t=e.mutationCache||new ot,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=Pe.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=we.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(Ae(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=Ce(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return j.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;j.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return j.batch(()=>{let r=n.findAll(e),i=new Set(r);return r.forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,predicate:e=>i.has(e)},t)})}cancelQueries(e,t={}){let n={revert:!0,...t},r=j.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(T).catch(T)}invalidateQueries(e,t={}){return j.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=j.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(T)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(T)}async query(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t),r=n.isStaleByTime(Ae(t.staleTime,n))?await n.fetch(t):n.state.data,i=t.select;return i?i(r):r}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(Ae(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(T).catch(T)}infiniteQuery(e){return e._type=`infinite`,this.query(e)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(T).catch(T)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return we.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(ye(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{je(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(ye(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{je(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=Ne(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===Se&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},N=t(n(),1),ut=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,dt=/^[\\/]{2}/;function ft(e,t){return t+e.replace(/\\/g,`/`)}var pt=`popstate`;function mt(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function ht(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return vt(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:I(t)}return bt(t,n,null,e)}function P(e,t){if(e===!1||e==null)throw Error(t)}function F(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function gt(){return Math.random().toString(36).substring(2,10)}function _t(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function vt(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?yt(t):t,state:n,key:t&&t.key||r||gt(),mask:i}}function I({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function yt(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function bt(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=mt(e)?e:vt(h.location,e,t);n&&n(r,e),l=u()+1;let d=_t(r,l),f=h.createHref(r.mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=mt(e)?e:vt(h.location,e,t);n&&n(r,e),l=u();let i=_t(r,l),d=h.createHref(r.mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return xt(i,e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(pt,d),c=e,()=>{i.removeEventListener(pt,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function xt(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),P(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:I(t);return i=i.replace(/ $/,`%20`),!n&&dt.test(i)&&(i=r+i),new URL(i,r)}function St(e,t,n=`/`){return Ct(e,t,n,!1)}function Ct(e,t,n,r,i){let a=L((typeof t==`string`?yt(t):t).pathname||`/`,n);if(a==null)return null;let o=i??wt(e),s=null,c=Vt(a);for(let e=0;s==null&&e<o.length;++e)s=Lt(o[e],c,r);return s}function wt(e){let t=Tt(e);return Dt(t),t}function Tt(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;P(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=R([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(P(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Tt(e.children,t,u,l,o)),(e.path!=null||e.index)&&t.push({path:l,score:Ft(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=Bt(e.relativePath,e.caseSensitive,t===u.length-1);return{...e,matcher:n,compiledParams:r}})})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of Et(e.path))a(e,t,!0,n)}),t}function Et(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=Et(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function Dt(e){e.sort((e,t)=>e.score===t.score?It(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var Ot=/^:[\w-]+$/,kt=3,At=2,jt=1,Mt=10,Nt=-2,Pt=e=>e===`*`;function Ft(e,t){let n=e.split(`/`),r=n.length;return n.some(Pt)&&(r+=Nt),t&&(r+=At),n.filter(e=>!Pt(e)).reduce((e,t)=>e+(Ot.test(t)?kt:t===``?jt:Mt),r)}function It(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function Lt(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u={path:s.relativePath,caseSensitive:s.caseSensitive,end:c},d=s.matcher&&s.compiledParams?zt(u,l,s.matcher,s.compiledParams):Rt(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=Rt({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:R([a,d.pathname]),pathnameBase:Yt(R([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=R([a,d.pathnameBase]))}return o}function Rt(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=Bt(e.path,e.caseSensitive,e.end);return zt(e,t,n,r)}function zt(e,t,n,r){let i=t.match(n);if(!i)return null;let a=i[0],o=z(a,1),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=z(a.slice(0,a.length-e.length),1)}let i=s[r];return e[t]=n&&!i?void 0:(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function Bt(e,t=!1,n=!0){F(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function Vt(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return F(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function L(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function Ht(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?yt(e):e,a;return n?(n=Jt(n),a=n.startsWith(`/`)||n.startsWith(`\\`)?Ut(n.substring(1),`/`):Ut(n,t)):a=t,{pathname:a,search:Xt(r),hash:Zt(i)}}function Ut(e,t){let n=z(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function Wt(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function Gt(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function Kt(e){let t=Gt(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function qt(e,t,n,r=!1){let i;typeof e==`string`?i=yt(e):(i={...e},P(!i.pathname||!i.pathname.includes(`?`),Wt(`?`,`pathname`,`search`,i)),P(!i.pathname||!i.pathname.includes(`#`),Wt(`#`,`pathname`,`hash`,i)),P(!i.search||!i.search.includes(`#`),Wt(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=Ht(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var Jt=e=>e.replace(/[\\/]{2,}/g,`/`),R=e=>Jt(e.join(`/`));function z(e,t=0){let n=e.length;for(;n>t&&e.charCodeAt(n-1)===47;)n--;return n===e.length?e:e.slice(0,n)}var Yt=e=>z(e).replace(/^\/*/,`/`),Xt=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,Zt=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,Qt=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function $t(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function en(e){return R(e.map(e=>e.route.path).filter(Boolean))||`/`}var tn=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function nn(e,t){let n=e;if(typeof n!=`string`||!ut.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(tn)try{let e=new URL(window.location.href),r=dt.test(n)?new URL(ft(n,e.protocol)):new URL(n),a=L(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{F(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var rn=new URL(`http://localhost`);function an(e){if(e.createURL)return e.createURL(`/`);try{return new URL(e.createHref(`/`),rn)}catch{return rn}}function on(e,t){return e.origin===t.origin&&(e.origin!==`null`||e.protocol===t.protocol&&e.host===t.host)}function sn(e,t){if(e.startsWith(`//`))return!0;let n=t.protocol.toLowerCase();return e.toLowerCase().startsWith(n)?t.host===``||e.slice(n.length).startsWith(`//`):!1}function cn(e,t,n,r){let i=null;try{i=e==null?null:new URL(e,n)}catch{}let a=new URL(t,n),o=i!=null&&!on(i,n),s=!on(a,n);if(r===`reject`){if(o||s)throw Error(`External navigation is not allowed`)}else if(s&&(i==null||!sn(e,i)||!on(i,a)))throw Error(`External navigation is not allowed`)}var ln=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(ln);var un=[`GET`,...ln];new Set(un);var dn=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function fn(e){try{return dn.includes(new URL(e).protocol)}catch{return!1}}var B=N.createContext(null);B.displayName=`DataRouter`;var pn=N.createContext(null);pn.displayName=`DataRouterState`;var mn=N.createContext(!1);function hn(){return N.useContext(mn)}var gn=N.createContext({isTransitioning:!1});gn.displayName=`ViewTransition`;var _n=N.createContext(new Map);_n.displayName=`Fetchers`;var vn=N.createContext(null);vn.displayName=`Await`;var V=N.createContext(null);V.displayName=`Navigation`;var yn=N.createContext(null);yn.displayName=`Location`;var H=N.createContext({outlet:null,matches:[],isDataRoute:!1});H.displayName=`Route`;var bn=N.createContext(null);bn.displayName=`RouteError`;var xn=`REACT_ROUTER_ERROR`,Sn=`REDIRECT`,Cn=`ROUTE_ERROR_RESPONSE`;function wn(e){if(e.startsWith(`${xn}:${Sn}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function Tn(e){if(e.startsWith(`${xn}:${Cn}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new Qt(t.status,t.statusText,t.data)}catch{}}function En(e,{relative:t}={}){P(U(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=N.useContext(V),{hash:i,pathname:a,search:o}=jn(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:R([n,a])),r.createHref({pathname:s,search:o,hash:i})}function U(){return N.useContext(yn)!=null}function W(){return P(U(),`useLocation() may be used only in the context of a <Router> component.`),N.useContext(yn).location}var Dn=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function On(e){N.useContext(V).static||N.useLayoutEffect(e)}function G(){let{isDataRoute:e}=N.useContext(H);return e?Jn():kn()}function kn(){P(U(),`useNavigate() may be used only in the context of a <Router> component.`);let e=N.useContext(B),{basename:t,navigator:n}=N.useContext(V),{matches:r}=N.useContext(H),{pathname:i}=W(),a=JSON.stringify(Kt(r)),o=N.useRef(!1);return On(()=>{o.current=!0}),N.useCallback((r,s={})=>{if(F(o.current,Dn),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=qt(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:R([t,c.pathname])),cn(typeof r==`string`?r:I(r),n.createHref(c),an(n),`reject`),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}N.createContext(null);function An(){let{matches:e}=N.useContext(H);return e[e.length-1]?.params??{}}function jn(e,{relative:t}={}){let{matches:n}=N.useContext(H),{pathname:r}=W(),i=JSON.stringify(Kt(n));return N.useMemo(()=>qt(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Mn(e,t){return Nn(e,t)}function Nn(e,t,n){P(U(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=N.useContext(V),{matches:i}=N.useContext(H),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;Xn(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
3
|
-
|
|
4
|
-
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=W(),d;if(t){let e=typeof t==`string`?yt(t):t;P(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):St(e,{pathname:p});F(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),F(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let h=Bn(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:R([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:R([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?N.createElement(yn.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function Pn(){let e=qn(),t=$t(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=N.createElement(N.Fragment,null,N.createElement(`p`,null,`💿 Hey developer 👋`),N.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,N.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,N.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),N.createElement(N.Fragment,null,N.createElement(`h2`,null,`Unexpected Application Error!`),N.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?N.createElement(`pre`,{style:i},n):null,o)}var Fn=N.createElement(Pn,null),In=class extends N.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Tn(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:N.createElement(H.Provider,{value:this.props.routeContext},N.createElement(bn.Provider,{value:e,children:this.props.component}));return this.context?N.createElement(Rn,{error:e},t):t}};In.contextType=mn;var Ln=new WeakMap;function Rn({children:e,error:t}){let{basename:n,navigator:r}=N.useContext(V);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=wn(t.digest);if(e){let i=Ln.get(t);if(i)throw i;let a=nn(e.location,n),o=a.absoluteURL||a.to;if(cn(e.location,o,an(r),`allow-explicit`),fn(o))throw Error(`Invalid redirect location`);if(tn&&!Ln.get(t)){if(a.isExternal||e.reloadDocument)window.location.href=o;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:e.replace}));throw Ln.set(t,n),n}}return N.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${o}`})}}return e}function zn({routeContext:e,match:t,children:n}){let r=N.useContext(B);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),N.createElement(H.Provider,{value:e},n)}function Bn(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);P(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},pattern:en(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||Fn,o&&(s<0&&c===0?(Xn(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?N.createElement(n.route.Component,null):n.route.element?n.route.element:e,N.createElement(zn,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?N.createElement(In,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function Vn(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Hn(e){let t=N.useContext(B);return P(t,Vn(e)),t}function Un(e){let t=N.useContext(pn);return P(t,Vn(e)),t}function Wn(e){let t=N.useContext(H);return P(t,Vn(e)),t}function Gn(e){let t=Wn(e),n=t.matches[t.matches.length-1];return P(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Kn(){return Gn(`useRouteId`)}function qn(){let e=N.useContext(bn),t=Un(`useRouteError`),n=Gn(`useRouteError`);return e===void 0?t.errors?.[n]:e}function Jn(){let{router:e}=Hn(`useNavigate`),t=Gn(`useNavigate`),n=N.useRef(!1);return On(()=>{n.current=!0}),N.useCallback(async(r,i={})=>{F(n.current,Dn),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var Yn={};function Xn(e,t,n){!t&&!Yn[e]&&(Yn[e]=!0,F(!1,n))}N.memo(Zn);function Zn({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return Nn(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function Qn({to:e,replace:t,state:n,relative:r}){P(U(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i,navigator:a}=N.useContext(V);F(!i,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:o}=N.useContext(H),{pathname:s}=W(),c=G(),l=qt(e,Kt(o),s,r===`path`);cn(typeof e==`string`?e:I(e),a.createHref(l),an(a),`reject`);let u=JSON.stringify(l);return N.useEffect(()=>{c(JSON.parse(u),{replace:t,state:n,relative:r})},[c,u,r,t,n]),null}function K(e){P(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function $n({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){P(!U(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=N.useMemo(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=yt(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,h=N.useMemo(()=>{let e=L(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return F(h!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),h==null?null:N.createElement(V.Provider,{value:c},N.createElement(yn.Provider,{children:t,value:h}))}function er({children:e,location:t}){return Mn(tr(e),t)}N.Component;function tr(e,t=[]){let n=[];return N.Children.forEach(e,(e,r)=>{if(!N.isValidElement(e))return;let i=[...t,r];if(e.type===N.Fragment){n.push.apply(n,tr(e.props.children,i));return}P(e.type===K,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),P(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let a={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(a.children=tr(e.props.children,i)),n.push(a)}),n}var nr=`get`,rr=`application/x-www-form-urlencoded`;function ir(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function ar(e){return ir(e)&&e.tagName.toLowerCase()===`button`}function or(e){return ir(e)&&e.tagName.toLowerCase()===`form`}function sr(e){return ir(e)&&e.tagName.toLowerCase()===`input`}function cr(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function lr(e,t){return e.button===0&&(!t||t===`_self`)&&!cr(e)}function ur(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function dr(e,t){let n=ur(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var fr=null;function pr(){if(fr===null)try{new FormData(document.createElement(`form`),0),fr=!1}catch{fr=!0}return fr}var mr=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function hr(e){return e!=null&&!mr.has(e)?(F(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${rr}"`),null):e}function gr(e,t){let n,r,i,a,o;if(or(e)){let o=e.getAttribute(`action`);r=o?L(o,t):null,n=e.getAttribute(`method`)||nr,i=hr(e.getAttribute(`enctype`))||rr,a=new FormData(e)}else if(ar(e)||sr(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?L(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||nr,i=hr(e.getAttribute(`formenctype`))||hr(o.getAttribute(`enctype`))||rr,a=new FormData(o,e),!pr()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(ir(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=nr,r=null,i=rr,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function _r(e,t){if(e===!1||e==null)throw Error(t)}function vr(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return i.pathname=n?i.pathname.endsWith(`/`)?`${i.pathname}_.${r}`:`${i.pathname}.${r}`:i.pathname===`/`?`_root.${r}`:t&&L(i.pathname,t)===`/`?`${z(t)}/_root.${r}`:`${z(i.pathname)}.${r}`,i}async function yr(e,t){if(e.id in t)return t[e.id];try{let n=await i(()=>import(e.module),[]);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function br(e){return e!=null&&typeof e.page==`string`}function xr(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function Sr(e,t,n){return Dr((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await yr(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(xr).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Cr(e,t,n,r,i,a){let o=(e,t)=>!n[t]||e.route.id!==n[t].route.id,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function wr(e,t,{includeHydrateFallback:n}={}){return Tr(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function Tr(e){return[...new Set(e)]}function Er(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Dr(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!br(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Er(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Or(){let e=N.useContext(B);return _r(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function kr(){let e=N.useContext(pn);return _r(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Ar=N.createContext(void 0);Ar.displayName=`FrameworkContext`;function jr(){let e=N.useContext(Ar);return _r(e,`You must render this element inside a <HydratedRouter> element`),e}function Mr(e,t){let n=N.useContext(Ar),[r,i]=N.useState(!1),[a,o]=N.useState(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=N.useRef(null);N.useEffect(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return f.current&&e.observe(f.current),()=>{e.disconnect()}}},[e]),N.useEffect(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let p=()=>{i(!0)},m=()=>{i(!1),o(!1)};return n?e===`intent`?[a,f,{onFocus:Nr(s,p),onBlur:Nr(c,m),onMouseEnter:Nr(l,p),onMouseLeave:Nr(u,m),onTouchStart:Nr(d,p)}]:[a,f,{}]:[!1,f,{}]}function Nr(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Pr({page:e,...t}){let n=hn(),{nonce:r}=jr(),{router:i}=Or(),a=N.useMemo(()=>St(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),n?N.createElement(Ir,{page:e,matches:a,...t}):N.createElement(Lr,{page:e,matches:a,...t})):null}function Fr(e){let{manifest:t,routeModules:n}=jr(),[r,i]=N.useState([]);return N.useEffect(()=>{let r=!1;return Sr(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Ir({page:e,matches:t,...n}){let r=W(),{future:i}=jr(),{basename:a}=Or(),o=N.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=vr(e,a,i.v8_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.v8_trailingSlashAwareDataRequests,e,r,t]);return N.createElement(N.Fragment,null,o.map(e=>N.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function Lr({page:e,matches:t,...n}){let r=W(),{future:i,manifest:a,routeModules:o}=jr(),{basename:s}=Or(),{loaderData:c,matches:l}=kr(),u=N.useMemo(()=>Cr(e,t,l,a,r,`data`),[e,t,l,a,r]),d=N.useMemo(()=>Cr(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=N.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,l=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];t&&t.hasLoader&&(!u.some(t=>t.route.id===e.route.id)&&e.route.id in c&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?l=!0:n.add(e.route.id))}),n.size===0)return[];let d=vr(e,s,i.v8_trailingSlashAwareDataRequests,`data`);return l&&n.size>0&&d.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[d.pathname+d.search]},[s,i.v8_trailingSlashAwareDataRequests,c,r,a,u,t,e,o]),p=N.useMemo(()=>wr(d,a),[d,a]),m=Fr(d);return N.createElement(N.Fragment,null,f.map(e=>N.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>N.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>N.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Rr(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}N.Component;var zr=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{zr&&(window.__reactRouterVersion=`7.18.3`)}catch{}function Br({basename:e,children:t,useTransitions:n,window:r}){let i=N.useRef();i.current??=ht({window:r,v5Compat:!0});let a=i.current,[o,s]=N.useState({action:a.action,location:a.location}),c=N.useCallback(e=>{n===!1?s(e):N.startTransition(()=>s(e))},[n]);return N.useLayoutEffect(()=>a.listen(c),[a,c]),N.createElement($n,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}var Vr=N.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,mask:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m){let{basename:h,navigator:g,useTransitions:_}=N.useContext(V),v=typeof l==`string`&&ut.test(l),y=nn(l,h);l=y.to;let b=En(l,{relative:r}),ee=W(),x=null;if(o){let e=qt(o,[],ee.mask?ee.mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:R([h,e.pathname])),x=g.createHref(e)}let[te,ne,re]=Mr(n,p),ie=Kr(l,{replace:a,mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,defaultShouldRevalidate:f,useTransitions:_});function S(t){e&&e(t),t.defaultPrevented||ie(t)}let C=!(y.isExternal||i),ae=N.createElement(`a`,{...p,...re,href:(C?x:void 0)||y.absoluteURL||b,onClick:C?S:e,ref:Rr(m,ne),target:c,"data-discover":!v&&t===`render`?`true`:void 0});return te&&!v?N.createElement(N.Fragment,null,ae,N.createElement(Pr,{page:b})):ae});Vr.displayName=`Link`;var Hr=N.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=jn(a,{relative:c.relative}),d=W(),f=N.useContext(pn),{navigator:p,basename:m}=N.useContext(V),h=f!=null&&Qr(u)&&o===!0,g=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,_=d.pathname,v=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(_=_.toLowerCase(),v=v?v.toLowerCase():null,g=g.toLowerCase()),v&&m&&(v=L(v,m)||v);let y=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,b=_===g||!r&&_.startsWith(g)&&_.charAt(y)===`/`,ee=v!=null&&(v===g||!r&&v.startsWith(g)&&v.charAt(g.length)===`/`),x={isActive:b,isPending:ee,isTransitioning:h},te=b?e:void 0,ne;ne=typeof n==`function`?n(x):[n,b?`active`:null,ee?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let re=typeof i==`function`?i(x):i;return N.createElement(Vr,{...c,"aria-current":te,className:ne,ref:l,style:re,to:a,viewTransition:o},typeof s==`function`?s(x):s)});Hr.displayName=`NavLink`;var Ur=N.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=nr,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m)=>{let{useTransitions:h}=N.useContext(V),g=Xr(),_=Zr(s,{relative:l}),v=o.toLowerCase()===`get`?`get`:`post`,y=typeof s==`string`&&ut.test(s);return N.createElement(`form`,{ref:m,method:v,action:_,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,p=()=>g(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f});h&&n!==!1?N.startTransition(()=>p()):p()},...p,"data-discover":!y&&e===`render`?`true`:void 0})});Ur.displayName=`Form`;function Wr(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Gr(e){let t=N.useContext(B);return P(t,Wr(e)),t}function Kr(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let u=G(),d=W(),f=jn(e,{relative:o});return N.useCallback(p=>{if(lr(p,t)){p.preventDefault();let t=n===void 0?I(d)===I(f):n,m=()=>u(e,{replace:t,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c});l?N.startTransition(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}function qr(e){F(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=N.useRef(ur(e)),n=N.useRef(!1),r=W(),i=N.useMemo(()=>dr(r.search,n.current?null:t.current),[r.search]),a=G();return[i,N.useCallback((e,t)=>{let r=ur(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var Jr=0,Yr=()=>`__${String(++Jr)}__`;function Xr(){let{router:e}=Gr(`useSubmit`),{basename:t}=N.useContext(V),n=Kn(),r=e.fetch,i=e.navigate;return N.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=gr(e,t);if(a.navigate===!1){let e=a.fetcherKey||Yr();await r(e,n,a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync})}else await i(a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function Zr(e,{relative:t}={}){let{basename:n}=N.useContext(V),r=N.useContext(H);P(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...jn(e||`.`,{relative:t})},o=W();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:R([n,a.pathname])),I(a)}function Qr(e,{relative:t}={}){let n=N.useContext(gn);P(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Gr(`useViewTransitionState`),i=jn(e,{relative:t});if(!n.isTransitioning)return!1;let a=L(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=L(n.nextLocation.pathname,r)||n.nextLocation.pathname;return Rt(i.pathname,o)!=null||Rt(i.pathname,a)!=null}var $r=t(o(),1),ei=a(),ti=`cartethyia.customization`,q=`media`,ni=`background`,ri=1,ii=`/console-backgrounds.jpg`;function ai(){let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=indexedDB.open(ti,ri);return r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(q)||e.createObjectStore(q)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Could not open the media database.`)),e}function oi(e){let{promise:t,resolve:n,reject:r}=Promise.withResolvers();return e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??Error(`The media database rejected the request.`)),t}function si(e,t){let{promise:n,resolve:r,reject:i}=Promise.withResolvers();return e.oncomplete=()=>r(),e.onerror=()=>i(e.error??Error(t)),n}async function ci(){let e=await ai();try{let t=await oi(e.transaction(q,`readonly`).objectStore(q).get(ni));if(!t||!t.blob)return null;let n=t;return{blob:n.blob,kind:n.kind,url:URL.createObjectURL(n.blob)}}finally{e.close()}}async function li(e,t){let n=await ai();try{let r=n.transaction(q,`readwrite`);r.objectStore(q).put({blob:e,kind:t},ni),await si(r,`Could not store the background.`)}finally{n.close()}}async function ui(){let e=await ai();try{let t=e.transaction(q,`readwrite`);t.objectStore(q).delete(ni),await si(t,`Could not remove the background.`)}finally{e.close()}}var di=2560,fi=.85;async function pi(e){let t=await createImageBitmap(e).catch(()=>null);if(!t)return e;try{let n=Math.max(t.width,t.height),r=Math.min(1,di/n),i=document.createElement(`canvas`);i.width=Math.max(1,Math.round(t.width*r)),i.height=Math.max(1,Math.round(t.height*r));let a=i.getContext(`2d`);return a?(a.drawImage(t,0,0,i.width,i.height),await gi(i)??e):e}finally{t.close()}}var mi=4294967296,hi=268435456;function gi(e){let{promise:t,resolve:n}=Promise.withResolvers();return e.toBlob(e=>n(e),`image/webp`,fi),t}function _i(e){return e.type.startsWith(`image/`)?`image`:e.type.startsWith(`video/`)?`video`:null}var vi=[`none`,`frosted`,`vibrancy`,`heavy`],J={backgroundSet:!1,backgroundEnabled:!0,backgroundRevision:0,backgroundOpacity:20,backgroundScale:100,backgroundX:0,backgroundY:0,backgroundBlur:5,blurCards:`frosted`,blurChrome:`frosted`,blurCardsAmount:45,blurCardsDepth:20,blurChromeAmount:25,blurChromeDepth:10,blurCardsEnabled:!0,blurChromeEnabled:!0,emptyOutline:!1},yi=`cartethyia.customization`,bi=`cartethyia-customization-change`,xi=[`cards`,`chrome`];function Si(e){return typeof e==`string`&&vi.includes(e)}function Y(e,t,n,r){let i=typeof e==`number`?e:Number(e);return Number.isFinite(i)?Math.min(n,Math.max(t,i)):r}function Ci(e){let t=typeof e==`object`&&e&&!Array.isArray(e)?e:{};return{backgroundSet:t.backgroundSet===!0,backgroundRevision:Y(t.backgroundRevision,0,2**53-1,0),backgroundEnabled:typeof t.backgroundEnabled==`boolean`?t.backgroundEnabled:J.backgroundEnabled,backgroundOpacity:Y(t.backgroundOpacity,0,100,J.backgroundOpacity),backgroundScale:Y(t.backgroundScale,100,180,J.backgroundScale),backgroundX:Y(t.backgroundX,-100,100,J.backgroundX),backgroundY:Y(t.backgroundY,-100,100,J.backgroundY),backgroundBlur:Y(t.backgroundBlur,0,100,J.backgroundBlur),blurCards:Si(t.blurCards)?t.blurCards:J.blurCards,blurChrome:Si(t.blurChrome)?t.blurChrome:J.blurChrome,blurCardsAmount:Y(t.blurCardsAmount,0,100,J.blurCardsAmount),blurChromeAmount:Y(t.blurChromeAmount,0,100,J.blurChromeAmount),blurCardsDepth:Y(t.blurCardsDepth,0,100,J.blurCardsDepth),blurChromeDepth:Y(t.blurChromeDepth,0,100,J.blurChromeDepth),blurCardsEnabled:t.blurCardsEnabled!==!1,blurChromeEnabled:t.blurChromeEnabled!==!1,emptyOutline:t.emptyOutline===!0}}var wi=null;function Ti(){if(wi)return wi;if(typeof window>`u`)return J;try{wi=Ci(JSON.parse(window.localStorage.getItem(yi)??`null`))}catch{wi={...J}}return wi}function Ei(e){if(typeof document>`u`)return;let t=document.documentElement;t.dataset.blurCards=e.blurCards,t.dataset.blurChrome=e.blurChrome,t.style.setProperty(`--blur-cards`,`${e.blurCardsAmount}`),t.style.setProperty(`--blur-chrome`,`${e.blurChromeAmount}`),t.style.setProperty(`--blur-cards-depth`,`${e.blurCardsDepth}`),t.style.setProperty(`--blur-chrome-depth`,`${e.blurChromeDepth}`),t.dataset.blurCardsOn=e.blurCardsEnabled?`true`:`false`,t.dataset.blurChromeOn=e.blurChromeEnabled?`true`:`false`,t.dataset.emptyOutline=e.emptyOutline?`true`:`false`,t.dataset.bgActive=e.backgroundEnabled?`true`:`false`,t.style.setProperty(`--bg-opacity`,(e.backgroundOpacity/100).toFixed(2)),t.style.setProperty(`--bg-scale`,(e.backgroundScale/100).toFixed(2)),t.style.setProperty(`--bg-x`,`${e.backgroundX}%`),t.style.setProperty(`--bg-y`,`${e.backgroundY}%`),t.style.setProperty(`--bg-blur`,`${Math.round(e.backgroundBlur*.4)}px`)}function Di(e){try{window.localStorage.setItem(yi,JSON.stringify(e))}catch{}}function Oi(e){let t=Ci({...Ti(),...e});return wi=t,typeof window<`u`&&(Di(t),Ei(t),window.dispatchEvent(new CustomEvent(bi))),t}function ki(){let[e,t]=(0,N.useState)(Ti);return(0,N.useEffect)(()=>{let e=()=>t(Ti());return window.addEventListener(bi,e),window.addEventListener(`storage`,e),()=>{window.removeEventListener(bi,e),window.removeEventListener(`storage`,e)}},[]),[e,e=>t(Oi(e))]}var Ai=xi,X=r(),ji=`(max-width: 767px)`,Mi=`(prefers-reduced-motion: reduce)`;function Ni(e){let[t,n]=(0,N.useState)(()=>typeof window<`u`&&window.matchMedia(e).matches);return(0,N.useEffect)(()=>{let t=window.matchMedia(e),r=()=>n(t.matches);return r(),t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[e]),t}function Pi(){let[e,t]=(0,N.useState)(()=>typeof document>`u`||!document.hidden);return(0,N.useEffect)(()=>{let e=()=>t(!document.hidden);return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]),e}function Fi(){let[e]=ki(),[t,n]=(0,N.useState)(null),r=Ni(ji),i=Ni(Mi),a=Pi();(0,N.useEffect)(()=>{if(!e.backgroundSet){n(e=>(e&&URL.revokeObjectURL(e.url),{blob:new Blob,kind:`image`,url:ii}));return}let t=!1,r=null;return ci().then(e=>{if(t){e&&URL.revokeObjectURL(e.url);return}r=e,n(e)}).catch(()=>{t||n(null)}),()=>{t=!0,r&&URL.revokeObjectURL(r.url)}},[e.backgroundSet,e.backgroundRevision]);let o=(0,N.useRef)(null),s=t?.kind===`video`&&!r&&!i&&a;return(0,N.useEffect)(()=>{let e=o.current;if(e){if(s){e.play().catch(()=>{});return}e.pause()}},[s]),!t||!e.backgroundEnabled?null:(0,X.jsx)(`div`,{className:`custom-background`,"data-kind":t.kind,"data-playing":s?`true`:`false`,"aria-hidden":`true`,children:t.kind===`video`?(0,X.jsx)(`video`,{ref:o,className:`custom-background-media`,src:t.url,autoPlay:s,loop:!0,muted:!0,playsInline:!0,preload:r?`metadata`:`auto`}):(0,X.jsx)(`img`,{className:`custom-background-media`,src:t.url,alt:``})})}function Ii({open:e,onClose:t,onConfirm:n,title:r,message:i,confirmLabel:a=`Confirm`,cancelLabel:o=`Cancel`,danger:s}){let[c,l]=(0,N.useState)(null),[u,d]=(0,N.useState)(!1);return(0,N.useEffect)(()=>{e&&(l(null),d(!1))},[e]),(0,X.jsx)(ie,{open:e,onClose:t,title:r,description:i,children:(0,X.jsxs)(`div`,{className:`flex flex-col gap-8 py-2 px-0`,children:[(0,X.jsx)(`p`,{className:`text-body text-text-secondary leading-normal`,children:i}),c?(0,X.jsx)(`p`,{role:`alert`,className:`text-caption text-red`,children:c}):null,(0,X.jsxs)(Ie,{children:[(0,X.jsx)(b,{variant:`secondary`,size:`sm`,onClick:t,disabled:u,children:o}),(0,X.jsx)(b,{variant:s?`danger`:`primary`,size:`sm`,onClick:()=>{u||(l(null),d(!0),Promise.resolve().then(()=>n()).then(()=>t()).catch(e=>{l(O(e,`Action failed. Please try again.`)),d(!1)}))},disabled:u,children:u?`Working…`:a})]})]})})}var Li=`cartethyia.query-cache`,Z=`client`,Ri=`default`,zi=1;function Bi(){let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=indexedDB.open(Li,zi);return r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Z)||e.createObjectStore(Z)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Could not open the query cache.`)),e}function Vi(e){let{promise:t,resolve:n,reject:r}=Promise.withResolvers();return e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??Error(`The query cache rejected the request.`)),t}function Hi(e,t){let{promise:n,resolve:r,reject:i}=Promise.withResolvers();return e.oncomplete=()=>r(),e.onerror=()=>i(e.error??Error(t)),n}function Ui(e){if(typeof e!=`object`||!e||!(`version`in e)||!(`state`in e))return!1;let{version:t,state:n}=e;return t===1&&typeof n==`object`&&!!n}async function Wi(e){try{let t=await Bi();try{let n=t.transaction(Z,`readwrite`);n.objectStore(Z).put({version:1,state:e},Ri),await Hi(n,`Could not store the query cache.`)}finally{t.close()}}catch{}}async function Gi(){try{let e=await Bi();try{let t=await Vi(e.transaction(Z,`readonly`).objectStore(Z).get(Ri));return Ui(t)?t.state:void 0}finally{e.close()}}catch{return}}async function Ki(){try{let e=await Bi();try{let t=e.transaction(Z,`readwrite`);t.objectStore(Z).delete(Ri),await Hi(t,`Could not remove the query cache.`)}finally{e.close()}}catch{}}var Q=new lt({defaultOptions:{queries:D,mutations:Me}});function qi(e){let[t,n,r]=e.queryKey;return t===`console`?n===`session`?!0:n===`providers`?r===void 0||e.queryKey[3]===`models`:n===`settings`?r===`runtime`:n===`cli-tools`&&r===`registry`:!1}async function Ji(){let e=await Gi();e!==void 0&&at(Q,e)}function Yi(){Ki()}function Xi(){let e,t=Q.getQueryCache().subscribe(t=>{t.type===`updated`&&(t.action.type===`success`||t.action.type===`error`)&&e===void 0&&(e=setTimeout(()=>{e=void 0,Wi(it(Q,{shouldDehydrateQuery:qi}))},2e3))});return()=>{e!==void 0&&clearTimeout(e),t()}}function Zi(e){let[t,n]=(e.trim().replace(/^v/i,``).split(`+`,1)[0]??``).split(`-`,2);if(t===void 0||!/^\d+\.\d+\.\d+$/.test(t))return null;let r=t.split(`.`).map(Number);if(r.length!==3||r.some(e=>!Number.isSafeInteger(e)||e<0))return null;let i=n===void 0||n.length===0?[]:n.split(`.`).map(e=>/^\d+$/.test(e)?Number(e):e);return i.some(e=>typeof e==`number`&&(!Number.isSafeInteger(e)||e<0))?null:{core:[r[0]??0,r[1]??0,r[2]??0],prerelease:i}}function Qi(e,t){if(e===void 0||t===void 0)return!1;let n=Zi(e),r=Zi(t);return n===null||r===null?t.trim()!==e.trim():$i(r,n)>0}function $i(e,t){for(let n=0;n<e.core.length;n+=1){let r=e.core[n]??0,i=t.core[n]??0;if(r!==i)return r>i?1:-1}if(e.prerelease.length===0&&t.prerelease.length>0)return 1;if(e.prerelease.length>0&&t.prerelease.length===0)return-1;for(let n=0;n<Math.max(e.prerelease.length,t.prerelease.length);n+=1){let r=e.prerelease[n],i=t.prerelease[n];if(r===void 0)return-1;if(i===void 0)return 1;if(r!==i)return typeof r==`number`&&typeof i==`string`?-1:typeof r==`string`&&typeof i==`number`||r>i?1:-1}return 0}var ea=5e3,ta=new WeakMap,na={"/":[{queryKey:A.settings.runtime,read:e=>k(`/settings/runtime`,{signal:e})},{queryKey:A.apiKeys.all,read:e=>k(`/api-keys`,{signal:e}).then(_e)}],"/providers":[{queryKey:A.providers.all,read:e=>k(`/providers`,{signal:e}).then(se)}],"/proxy":[{queryKey:A.network.pools,read:e=>k(`/network/pools`,{signal:e}).then(oe)}]};function ra(e,t){let n=na[t];if(n===void 0)return Promise.resolve();let r=Date.now(),i=ta.get(e);if(i!==void 0){if(i>r)return Promise.resolve();ta.delete(e)}return Promise.allSettled(n.map(t=>e.fetchQuery({queryKey:t.queryKey,queryFn:e=>t.read(w(e)),...D}))).then(t=>{if(t.some(e=>e.status===`rejected`&&!ke(e.reason))){ta.set(e,Date.now()+ea);return}ta.delete(e)})}var ia=3e3,aa=20;function oa(e){if(typeof e!=`object`||!e)return;let t=e;if(!(typeof t.id!=`string`||typeof t.title!=`string`||typeof t.message!=`string`||typeof t.createdAt!=`string`||t.kind!==`memory-high`&&t.kind!==`memory-growth`&&t.kind!==`update-available`||t.level!==`warning`&&t.level!==`info`))return{id:t.id,kind:t.kind,title:t.title,message:t.message,createdAt:t.createdAt,level:t.level,...t.href===`https://github.com/risunCodex/Cartethyia/releases`?{href:t.href}:{}}}function sa(){let[e,t]=(0,N.useState)([]);return(0,N.useEffect)(()=>{let e=!0,n,r,i=()=>{e&&(n=new EventSource(`/console/api/notifications/stream`),n.addEventListener(`notification`,n=>{let r;try{r=JSON.parse(n.data)}catch{return}let i=oa(r);i&&e&&t(e=>[i,...e.filter(e=>e.id!==i.id)].slice(0,aa))}),n.onerror=()=>{n?.close(),n=void 0,e&&r===void 0&&(r=setTimeout(()=>{r=void 0,i()},ia))})};return i(),()=>{e=!1,n?.close(),clearTimeout(r)}},[]),e}function ca(){return S({queryKey:A.session.current,queryFn:()=>Ee(),staleTime:6e4,gcTime:3e5,retry:!1,refetchOnWindowFocus:!1})}function la(){return S({queryKey:A.system.health,queryFn:e=>k(`/system/health`,{signal:w(e)}).then(ce),...D,refetchInterval:E.status})}function ua(){return S({queryKey:A.releases.githubLatest,queryFn:e=>k(`/updates/release`,{signal:w(e)}).then(he),...D,staleTime:18e5,refetchInterval:18e5,retry:!1})}function da(e){return S({queryKey:A.usageAnalytics.summary(e),queryFn:t=>k(`/system/usage/summary?period=${encodeURIComponent(e)}`,{signal:w(t)}).then(ae),...D,refetchInterval:E.status})}function fa(e){return S({queryKey:A.usageAnalytics.chart(e),queryFn:t=>k(`/system/usage/chart?period=${encodeURIComponent(e)}`,{signal:w(t)}).then(fe),...D,refetchInterval:E.status})}function pa(e,t){return S({queryKey:A.usageAnalytics.by(e,t),queryFn:n=>k(`/system/usage/by-${t}?period=${encodeURIComponent(e)}`,{signal:w(n)}).then(me),...D,refetchInterval:E.status})}function ma(e,t=50,n){let r=n==null?``:`&httpStatus=${encodeURIComponent(String(n))}`;return S({queryKey:A.usageAnalytics.requests(e,t,n),queryFn:n=>k(`/system/usage/requests?period=${encodeURIComponent(e)}&limit=${encodeURIComponent(String(t))}${r}`,{signal:w(n)}).then(le),...D,placeholderData:e=>e,refetchInterval:E.live})}function ha(e){return S({queryKey:A.usageAnalytics.requestDetail(e??`_`),queryFn:t=>{if(!e)throw{status:400,code:`invalid_request`,message:`Request is required`};return k(`/system/usage/requests/${encodeURIComponent(e)}`,{signal:w(t)}).then(ue)},enabled:e!==null,...D})}function ga(e){return S({queryKey:A.audit.list(e??{}),queryFn:t=>{let n=new URLSearchParams;e?.action&&n.set(`action`,e.action),e?.actor&&n.set(`actor`,e.actor),e?.cursor&&n.set(`cursor`,e.cursor),e?.limit&&n.set(`limit`,String(e.limit));let r=n.toString()?`?${n.toString()}`:``;return k(`/audit${r}`,{signal:w(t)}).then(pe)},...D})}function _a(){return S({queryKey:A.providers.all,queryFn:e=>k(`/providers`,{signal:w(e)}).then(se),...D,gcTime:6e5,refetchInterval:E.catalog})}function va(e){return S({queryKey:A.providers.detail(e??``),queryFn:t=>k(`/providers/${encodeURIComponent(e??``)}`,{signal:w(t)}).then(de),enabled:!!e,...D})}function ya(e){return S({queryKey:A.providers.models(e),queryFn:t=>{if(!e)throw{status:400,code:`invalid_request`,message:`Provider is required`};return k(`/providers/${encodeURIComponent(e)}/models`,{signal:w(t)}).then(ge)},...D,staleTime:3e5,gcTime:6e5,enabled:!!e})}function ba(){let e=C();return M({mutationFn:({providerId:e,modelIds:t,wireFamily:n,metadata:r})=>k(`/providers/${encodeURIComponent(e)}/models`,{method:`POST`,body:JSON.stringify({modelIds:t,...n?{wireFamily:n}:{},...r?{metadata:r}:{}})}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:A.providers.models(n.providerId)}),x.success(`Models registered`,`${n.modelIds.length} model(s) added to ${n.providerId}`)},onError:e=>{x.error(`Failed to register models`,O(e))}})}function xa(){let e=C();return M({mutationFn:({providerId:e,request:t})=>k(`/providers/${encodeURIComponent(e)}/models/probe`,{method:`POST`,body:JSON.stringify(t)}),onSettled:async(t,n,r)=>{await Na(e,r.providerId)}})}function Sa(){return M({mutationFn:e=>k(`/providers/connection-test`,{method:`POST`,body:JSON.stringify(e)})})}function Ca(){let e=C();return M({mutationFn:({providerId:e,request:t})=>k(`/providers/${encodeURIComponent(e)}/accounts/probe`,{method:`POST`,body:JSON.stringify(t)}),onSettled:async(t,n,r)=>{await Na(e,r.providerId)}})}function wa(){let e=C();return M({mutationFn:({providerId:e,request:t})=>k(`/providers/${encodeURIComponent(e)}/models`,{method:`PATCH`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:A.providers.models(n.providerId)})}})}function Ta(){let e=C();return M({mutationFn:({providerId:e,modelId:t,route:n,metadata:r})=>k(`/providers/${encodeURIComponent(e)}/models`,{method:`PATCH`,body:JSON.stringify({modelId:t,route:n,enabled:!0,metadata:r})}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:A.providers.models(n.providerId)}),x.success(`Model updated`,`${n.modelId} limits and capabilities saved`)},onError:e=>{x.error(`Failed to update model`,O(e))}})}function Ea(){let e=C();return M({mutationFn:({providerId:e,request:t})=>k(`/providers/${encodeURIComponent(e)}/models`,{method:`DELETE`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:A.providers.models(n.providerId)})}})}function Da(e){return S({queryKey:A.providers.accounts(e),queryFn:t=>k(`/providers/${encodeURIComponent(e??``)}/accounts`,{signal:w(t)}),enabled:!!e,...D,staleTime:3e4,gcTime:6e5})}function Oa(){let e=C();return M({mutationFn:({providerId:e,request:t})=>k(`/providers/${encodeURIComponent(e)}/accounts`,{method:`POST`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:A.providers.all})])}})}function ka(){let e=C();return M({mutationFn:({providerId:e,accounts:t})=>k(`/providers/${encodeURIComponent(e)}/accounts/batch`,{method:`POST`,body:JSON.stringify({accounts:t})}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:A.providers.all})])}})}function Aa(){let e=C();return M({mutationFn:({providerId:e,accountId:t,request:n})=>k(`/providers/${encodeURIComponent(e)}/accounts/${encodeURIComponent(t)}`,{method:`PATCH`,body:JSON.stringify(n)}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:A.providers.all})])}})}function ja(e,t){return S({queryKey:A.providers.healthEvents(e,t),queryFn:n=>k(`/providers/${encodeURIComponent(e??``)}/accounts/${encodeURIComponent(t??``)}/health-events`,{signal:w(n)}),enabled:!!e&&!!t,...D,refetchInterval:E.status})}async function Ma(e,t){await e.invalidateQueries({predicate:e=>{let n=e.queryKey;return n[0]===`console`&&n[1]===`providers`&&n[2]===t&&n[3]===`accounts`&&n[5]===`health-events`}})}async function Na(e,t){await Promise.all([e.invalidateQueries({queryKey:A.providers.accounts(t)}),Ma(e,t),e.invalidateQueries({queryKey:A.providers.all})])}function Pa(){let e=C();return M({mutationFn:({providerId:e,accountId:t})=>k(`/providers/${encodeURIComponent(e)}/accounts/${encodeURIComponent(t)}/recover`,{method:`POST`,body:`{}`}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:A.providers.healthEvents(n.providerId,n.accountId)}),e.invalidateQueries({queryKey:A.providers.all})]),x.success(`Account recovered`)},onError:e=>{x.error(`Could not recover the account.`,O(e))}})}function Fa(){return M({mutationFn:({providerId:e,accountIds:t})=>k(`/providers/${encodeURIComponent(e)}/accounts/export`,{method:`POST`,body:JSON.stringify({accountIds:t})})})}function Ia(){return M({mutationFn:({providerId:e,accountLabel:t,parameters:n})=>k(`/providers/${encodeURIComponent(e)}/oauth/authorize`,{method:`POST`,body:JSON.stringify({...t?{accountLabel:t}:{},...n&&Object.keys(n).length>0?{parameters:n}:{}})})})}function La(){let e=C();return M({mutationFn:({providerId:e,code:t,state:n})=>k(`/providers/${encodeURIComponent(e)}/oauth/callback?${new URLSearchParams({code:t,state:n}).toString()}`),onSuccess:async(t,n)=>{await Na(e,n.providerId)}})}function Ra(){return M({mutationFn:({providerId:e,accountLabel:t,parameters:n})=>k(`/providers/${encodeURIComponent(e)}/oauth/device/start`,{method:`POST`,body:JSON.stringify({...t?{accountLabel:t}:{},...n&&Object.keys(n).length>0?{parameters:n}:{}})})})}function za(){let e=C();return M({mutationFn:({providerId:e,credential:t,fields:n,accountLabel:r})=>k(`/providers/${encodeURIComponent(e)}/oauth/import`,{method:`POST`,body:JSON.stringify({credential:t,...n&&Object.keys(n).length>0?{fields:n}:{},...r?{accountLabel:r}:{}})}),onSuccess:async(t,n)=>{await Na(e,n.providerId),await e.invalidateQueries({queryKey:A.quota.all})}})}function Ba(){let e=C();return M({mutationFn:({providerId:e,deviceAuthId:t})=>k(`/providers/${encodeURIComponent(e)}/oauth/device/poll`,{method:`POST`,body:JSON.stringify({deviceAuthId:t})}),onSuccess:async(t,n)=>{t.status===`complete`&&await Promise.all([e.invalidateQueries({queryKey:A.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:A.providers.healthEvents(n.providerId,t.accountId)}),e.invalidateQueries({queryKey:A.quota.all}),Na(e,n.providerId)])}})}function Va(){let e=C();return M({mutationFn:e=>k(`/providers`,{method:`POST`,body:JSON.stringify(e)}),onSuccess:async t=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.all}),e.invalidateQueries({queryKey:A.modelRouting.all})]),x.success(`Provider created`,t.label??t.providerId)},onError:e=>{x.error(`Failed to create provider`,O(e))}})}function Ha(){let e=C();return M({mutationFn:({providerId:e,request:t})=>k(`/providers/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),onSuccess:async(t,{providerId:n})=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.all}),e.invalidateQueries({queryKey:A.providers.detail(n)})]),x.success(`Provider updated`,n)},onError:e=>{x.error(`Failed to update provider`,O(e))}})}function Ua(){let e=C();return M({mutationFn:({providerId:e,enabled:t})=>k(`/providers/platform/global/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),onSuccess:async(t,{providerId:n})=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.all}),e.invalidateQueries({queryKey:A.providers.detail(n)})])}})}function Wa(e={}){let t=C();return M({mutationFn:e=>k(`/providers/${encodeURIComponent(e)}/models/sync`,{method:`POST`,body:`{}`}),onSuccess:async(n,r)=>{await t.invalidateQueries({queryKey:A.providers.models(r)}),e.silent||x.success(`Models fetched`,n.synced>0?`${n.synced} new model${n.synced===1?``:`s`} added`:`No new models found`)},onError:t=>{e.silent||x.error(`Failed to fetch models`,O(t))}})}function Ga(){let e=C();return M({mutationFn:e=>k(`/providers/${encodeURIComponent(e)}`,{method:`DELETE`}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.all}),e.invalidateQueries({queryKey:A.quota.all}),e.invalidateQueries({queryKey:A.modelRouting.all})]),x.success(`Provider deleted`,n)},onError:e=>{x.error(`Failed to delete provider`,O(e))}})}var Ka={name:`cartethyia`,version:`2.5.1`,description:`A powerful, self-hosted reverse proxy for OpenAI- and Anthropic-compatible AI clients, powered by native Bun and Elysia. It serves both protocols from a single server, routes every model across any configured provider, and translates requests and responses in real time — streaming and prompt caching included. Underneath it runs a full delivery engine: per-account health tracking, quota and cooldown enforcement, automatic failover across pools and providers, usage accounting, and telemetry. Point OpenCode, Cline, Claude Code, Codex, or any compatible client at Cartethyia and it keeps its native protocol while the gateway absorbs every provider-specific difference behind it. Runs on embedded SQLite or external PostgreSQL with optional Redis coordination, ships as a global CLI with a system-tray console, and needs only Bun 1.4+ alongside Node.js/npm.`,license:`GPL-3.0-only`,type:`module`,packageManager:`bun@1.4.0`,repository:{type:`git`,url:`git+https://github.com/risunCodex/Cartethyia.git`},homepage:`https://github.com/risunCodex/Cartethyia#readme`,bugs:{url:`https://github.com/risunCodex/Cartethyia/issues`},keywords:[`ai`,`gateway`,`llm`,`bun`,`self-hosted`],bin:{cartethyia:`scripts/cli/bin/cartethyia.cjs`,carte:`scripts/cli/bin/carte.cjs`},files:[`scripts/cli/`,`src/`,`migrations/`,`dist/dashboard/`,`.env.example`,`README.md`],workspaces:[`dashboard`],engines:{bun:`>=1.4.0`},scripts:{dev:`bun run dev:stack`,"dev:watch":`bun run scripts/dev/supervisor.ts`,test:`bun run scripts/ci/run.ts`,build:`bun run scripts/binary/build.ts`,prepack:`bun run dashboard:build`,setup:`bun run scripts/cli/command/setup.ts`,start:`bun run scripts/cli/main.ts start`,doctor:`bun run scripts/cli/command/doctor.ts`,"probe:egress":`bun run scripts/operations/probe-egress.ts`,restart:`bun run scripts/binary/restart.ts`,"build:aot":`bun run scripts/binary/aot.ts`,"dev:stack":`concurrently -n BACKEND,DASHBOARD -c cyan,magenta --kill-others-on-fail "bun run dev:backend" "bun run dashboard:dev"`,typecheck:`tsc --noEmit`,"test:watch":`bun run scripts/ci/run.ts --watch`,"test-db:up":`docker compose -f docker-compose.test.yml up -d --wait postgres-test`,"dev:backend":`bun run --hot src/main.ts`,"dev:console-auth":`bun run scripts/qa/console-session.ts`,"dev:visual-baseline":`bun run scripts/qa/visual-baseline.ts`,"build:binary":`bun run scripts/binary/compile.ts`,"test:backend":`bun run scripts/ci/run.ts --scope backend`,"test-db:down":`docker compose -f docker-compose.test.yml down`,"dashboard:dev":`bun run --cwd dashboard dev`,"test-db:check":`bun run scripts/ci/db-check.ts`,"dashboard:test":`bun run scripts/ci/run.ts --scope dashboard`,"test-db:reset":`docker compose -f docker-compose.test.yml down -v && docker compose -f docker-compose.test.yml up -d --wait postgres-test`,"dashboard:build":`bun run --cwd dashboard build`,"dashboard:typecheck":`bun run --cwd dashboard typecheck`,"check:migrations":`bun run scripts/ci/check-migrations.ts`},dependencies:{"drizzle-orm":`0.45.2`,elysia:`^2.0.0-beta.16`,enquirer:`^2.4.1`,ioredis:`6.0.0`,jose:`^6.2.12`,jsonrepair:`^3.15.0`,pg:`8.23.0`,pino:`^10.3.1`,"pino-pretty":`^13.1.3`,protobufjs:`^7.6.5`,"socks-proxy-agent":`^10.1.0`,systray2:`2.1.4`,typebox:`1.3.27`,ws:`8.22.0`},devDependencies:{"@types/pg":`8.11.10`,"@types/ws":`8.18.1`,"bun-types":`1.4.0`,concurrently:`^10.0.5`,"drizzle-kit":`^0.31.11`,typescript:`5.9.2`}}.version,qa=`v${Ka.replace(/\.0$/,``)} (Jinhsi)`,Ja=[{label:`Main`,items:[{label:`Overview`,path:`/`,icon:Be},{label:`Usage`,path:`/usage`,icon:u},{label:`Providers`,path:`/providers`,icon:Je},{label:`Model Lab`,path:`/model-lab`,icon:ne}]},{label:`Control`,items:[{label:`Combos & Routes`,path:`/combos`,icon:ze},{label:`Quota Management`,path:`/quota`,icon:Xe},{label:`Proxy & Requests`,path:`/proxy`,icon:l},{label:`CLI Tools`,path:`/cli-tools`,icon:d}]},{label:`Tools`,items:[{label:`Coming soon`,path:`#tools-coming-soon-1`,icon:f,disabled:!0},{label:`Coming soon`,path:`#tools-coming-soon-2`,icon:f,children:Array.from({length:5},(e,t)=>({label:`Coming soon ${t+1}`,path:`#tools-coming-soon-${t+3}`,icon:f,disabled:!0}))}]},{label:`System`,items:[{label:`Customization`,path:`/customization`,icon:Ge},{label:`Console Log`,path:`/console-log`,icon:qe},{label:`Settings`,path:`/settings`,icon:Ye}]}],Ya={"/":{title:`Overview`,sub:`Gateway health, capacity, and live metrics`,icon:Be},"/usage":{title:`Usage & Metrics`,sub:`Token economics, requests, and cost breakdown`,icon:u},"/providers":{title:`Provider Catalog`,sub:`Upstream credentials, models, and latency`,icon:Je},"/combos":{title:`Combos & Routing`,sub:`Failover policies, model aliases, and weighted routes`,icon:ze},"/quota":{title:`Quota Management`,sub:`Rate limits, leases, and tenant quotas`,icon:Xe},"/proxy":{title:`Proxy & Requests`,sub:`Network pools, SOCKS5/HTTP egress, and dispatch`,icon:l},"/customization":{title:`Customization`,sub:`Background, transparency, and blur`,icon:Ge},"/model-lab":{title:`Model Lab`,sub:`Chat a routed model without leaving the console`,icon:ne},"/console-log":{title:`Console Log`,sub:`Live server logs and audit trail`,icon:qe},"/cli-tools":{title:`CLI Tools`,sub:`Claude Code CLI, OpenCode, and local developer tool integrations`,icon:d},"/settings":{title:`Settings`,sub:`Account security, runtime preferences, and state recovery`,icon:Ye}},Xa={title:`Console`,sub:`Cartethyia AI Gateway Administration`,icon:Be};function Za(e,t){let n=/^\/providers\/([^/]+)\/?$/.exec(e);if(n?.[1]){let e=t.find(e=>e.providerId===n[1]);return{title:e?.label||e?.displayName||n[1],sub:`Routing, accounts, models, and health`,icon:Je}}let r=/^\/cli-tools\/([^/]+)\/?$/.exec(e);return r?.[1]?{title:`CLI Tool`,sub:`${r[1]} — mappings, endpoints, and downloadable config`,icon:d}:Ya[e]??Xa}function Qa(){try{return la()}catch{return{data:void 0,isError:!1,isFetching:!1,isPending:!1}}}function $a(){let[e,t]=(0,N.useState)(()=>_()),n=p(e);return(0,N.useEffect)(()=>{let e=()=>t(_());return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),(0,N.useEffect)(()=>{ee(e)},[e]),(0,X.jsx)(`button`,{type:`button`,onClick:()=>{let e=n?`light`:`dark`;t(e),te(e)},"aria-label":`Toggle theme`,"aria-pressed":n,className:`topbar-icon-button`,title:n?`Switch to light mode`:`Switch to dark mode`,children:(0,X.jsx)(`span`,{className:`grid place-items-center`,children:n?(0,X.jsx)(v,{size:17}):(0,X.jsx)(g,{size:17})},n?`sun`:`moon`)})}var eo=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}),to=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`,timeZone:`UTC`});function no(e){if(!Number.isFinite(e)||e<0)return`Unavailable`;let t=Math.floor(e);if(t<60)return`${t}s`;let n=Math.floor(t/60),r=n%60,i=Math.floor(n/60),a=i%24,o=Math.floor(i/24);return o>0?`${o}d ${a}h ${r}m`:i>0?`${i}h ${r}m`:`${n}m`}function ro(e){if(!Number.isFinite(e)||e<0)return`Unavailable`;let t=e>=1024**3?{divisor:1024**3,label:`GiB`}:{divisor:1024**2,label:`MiB`};return`${(e/t.divisor).toFixed(1)} ${t.label}`}function io({icon:e,label:t,value:n,detail:r,title:i}){return(0,X.jsxs)(`div`,{className:`min-w-0 rounded-control border border-inner-border bg-surface-2 p-3`,title:i,children:[(0,X.jsxs)(`dt`,{className:`flex items-center gap-2 text-micro font-medium text-text-tertiary`,children:[(0,X.jsx)(e,{size:13,strokeWidth:1.8,className:`shrink-0`,"aria-hidden":`true`}),(0,X.jsx)(`span`,{children:t})]}),(0,X.jsx)(`dd`,{className:`mt-1 truncate font-mono text-caption font-semibold tabular-nums text-text-primary`,children:n}),r?(0,X.jsx)(`dd`,{className:`mt-1 text-micro text-text-secondary`,children:r}):null]})}function ao({health:e}){let[t,n]=(0,N.useState)(!1),[r,i]=(0,N.useState)(()=>new Date),a=(0,N.useRef)(null),o=(0,N.useRef)(null),s=sa();(0,N.useEffect)(()=>{if(!t)return;i(new Date);let e=window.setInterval(()=>i(new Date),1e3);return()=>window.clearInterval(e)},[t]),(0,N.useEffect)(()=>{if(!t)return;let e=e=>{let t=e.target;o.current&&!o.current.contains(t)&&a.current&&!a.current.contains(t)&&n(!1)},r=e=>{e.key===`Escape`&&n(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,r),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,r)}},[t]);let c=e?e.status===`healthy`?`All systems operational`:e.status===`degraded`?`Gateway degraded`:`Gateway unhealthy`:`System health unavailable`,l=e?e.status===`healthy`?`Postgres & Redis admission connected.`:e.status===`degraded`?`Check connection logs.`:`Gateway is reporting an unhealthy status.`:`Live gateway metrics are not available.`,u=e&&[Number.isFinite(e.memory_percent)?`${e.memory_percent.toFixed(1)}% of system RAM`:void 0,e.database_in_process?`In-process DB included`:void 0].filter(Boolean).join(` · `)||void 0,d=e?Number.isFinite(e.cpu_percent)?Number.isFinite(e.cpu_cores)&&e.cpu_cores>0?`1-min load · ${e.cpu_cores} cores`:`Normalized 1-min load`:`Not reported on this platform`:void 0;return(0,X.jsxs)(`div`,{className:`relative`,children:[(0,X.jsxs)(`button`,{ref:a,type:`button`,className:`topbar-icon-button`,"aria-label":`Notifications`,"aria-expanded":t,"aria-haspopup":`dialog`,onClick:()=>n(e=>!e),children:[(0,X.jsx)(Le,{size:17}),s.length>0?(0,X.jsx)(`span`,{"aria-label":`${s.length} notifications`,className:`absolute right-1.5 top-1.5 size-2 rounded-full bg-accent`}):null]}),t?(0,$r.createPortal)((0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{"aria-hidden":`true`,className:`fixed inset-0 z-floating bg-overlay backdrop-blur-dialog`,onClick:()=>n(!1)}),(0,X.jsxs)(`div`,{ref:o,role:`dialog`,"aria-label":`Notifications`,className:`app-topbar-popover popout-enter glass rounded-sidebar border border-inner-border bg-popover-bg p-5 shadow-popout z-popover`,children:[(0,X.jsxs)(`div`,{className:`mb-3 flex shrink-0 items-center justify-between`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-3 font-bold text-body-lg`,children:[(0,X.jsx)(`span`,{className:`w-13 h-13 rounded-pill bg-accent-soft text-accent grid place-items-center`,children:(0,X.jsx)(Le,{size:13})}),(0,X.jsx)(`span`,{children:`Notifications`})]}),(0,X.jsx)(`button`,{type:`button`,"aria-label":`Close notifications`,onClick:()=>n(!1),className:`cursor-pointer border-none bg-transparent p-2 text-caption text-text-tertiary`,children:(0,X.jsx)(y,{size:14})})]}),(0,X.jsxs)(`div`,{className:`scroll-region min-h-0 flex-1 flex flex-col gap-3`,children:[s.length>0?(0,X.jsx)(`section`,{"aria-label":`Notifications`,className:`flex flex-col gap-2`,children:s.map(e=>(0,X.jsxs)(`article`,{className:`flex items-start gap-3 rounded-card border p-4 ${e.level===`warning`?`border-orange-soft bg-orange-soft`:`border-accent/25 bg-accent-soft`}`,children:[(0,X.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`span`,{className:`block text-caption font-semibold text-text-primary`,children:e.title}),(0,X.jsx)(`span`,{className:`mt-1 block text-badge text-text-secondary`,children:e.message})]}),e.href?(0,X.jsx)(`a`,{className:`shrink-0 text-badge font-semibold text-accent`,href:e.href,target:`_blank`,rel:`noreferrer`,children:`Release`}):null]},e.id))}):(0,X.jsx)(`div`,{className:`rounded-card border border-inner-border bg-surface-2 p-4 text-badge text-text-secondary`,children:`No active memory or update alerts.`}),(0,X.jsxs)(`div`,{className:`flex items-start gap-3 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 grid w-12 h-12 shrink-0 place-items-center rounded-control bg-surface-1 text-text-secondary`,children:(0,X.jsx)(Je,{size:16,"aria-hidden":`true`})}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`p`,{className:`font-semibold text-caption`,children:c}),(0,X.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:l})]})]}),(0,X.jsxs)(`dl`,{"aria-label":`Runtime metrics`,className:`grid grid-cols-2 gap-2`,children:[(0,X.jsx)(io,{icon:re,label:`Local time`,value:eo.format(r)}),(0,X.jsx)(io,{icon:f,label:`UTC`,value:to.format(r)}),(0,X.jsx)(io,{icon:Ze,label:`Uptime`,value:e?no(e.uptime_seconds):`Unavailable`,detail:e&&Number.isFinite(e.uptime_seconds)&&e.uptime_seconds>=0?`Gateway process running`:void 0}),(0,X.jsx)(io,{icon:He,label:`Process RSS`,value:e?ro(e.memory_bytes):`Unavailable`,detail:u,title:`Process resident set size; percentage is share of system RAM.`}),(0,X.jsx)(io,{icon:ze,label:`CPU load`,value:e&&Number.isFinite(e.cpu_percent)?`${e.cpu_percent.toFixed(1)}%`:`Unavailable`,detail:d,title:`One-minute load average normalized by the number of CPU cores.`}),(0,X.jsx)(io,{icon:We,label:`Runtime`,value:e?.platform?.trim()||`Unavailable`,detail:e?.platform?.trim()?`Gateway host platform`:void 0,title:e?.platform?.trim()||`Runtime platform unavailable`})]}),(0,X.jsxs)(`div`,{className:`flex items-start gap-3 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 grid w-12 h-12 shrink-0 place-items-center rounded-control bg-surface-1 text-text-secondary`,children:(0,X.jsx)(Ke,{size:16,"aria-hidden":`true`})}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`p`,{className:`font-semibold text-caption`,children:qa}),(0,X.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:`High-performance AI Gateway & Protocol Orchestrator.`})]})]})]})]})]}),document.body):null]})}function oo({group:e,pathname:t,onIntent:n}){return(0,X.jsxs)(`div`,{className:`nav-group-section`,children:[(0,X.jsx)(`p`,{className:`nav-group-title`,children:e.label}),(0,X.jsx)(so,{items:e.items,pathname:t,onIntent:n})]})}function so({items:e,pathname:t,onIntent:n}){let r=(0,N.useRef)(null),[i,a]=(0,N.useState)({top:0,height:0,opacity:0}),[o,s]=(0,N.useState)(()=>new Set);return(0,N.useLayoutEffect)(()=>{let e=r.current;if(!e)return;let t=e.querySelector(`[data-active="true"]`);if(!t){a(e=>({...e,opacity:0}));return}let n=e.getBoundingClientRect(),i=t.getBoundingClientRect();a({top:i.top-n.top,height:i.height,opacity:1})},[t,e]),(0,X.jsxs)(`div`,{ref:r,className:`nav-items-container`,children:[(0,X.jsx)(`div`,{className:`sidebar-active-indicator`,style:{transform:`translateY(${i.top}px)`,height:`${i.height}px`,opacity:i.opacity},"aria-hidden":`true`}),e.map(e=>{if(e.children!==void 0){let t=o.has(e.path??e.label);return(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`button`,{type:`button`,className:`nav-link-item w-full`,"aria-expanded":t,onClick:()=>s(t=>{let n=new Set(t),r=e.path??e.label;return n.has(r)?n.delete(r):n.add(r),n}),children:[(0,X.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,X.jsx)(`span`,{children:e.label}),(0,X.jsx)(Re,{size:14,className:`ml-auto shrink-0 transition-transform ${t?`rotate-180`:``}`,"aria-hidden":`true`})]}),t?(0,X.jsx)(`div`,{className:`ml-6 border-l border-inner-border pl-2`,children:e.children.map(e=>(0,X.jsxs)(`button`,{type:`button`,className:`nav-link-item w-full cursor-not-allowed opacity-55`,disabled:!0,title:`Coming soon`,children:[(0,X.jsx)(e.icon,{size:15,className:`nav-link-icon`}),(0,X.jsx)(`span`,{children:e.label}),(0,X.jsx)(`span`,{className:`nav-link-badge`,children:`Soon`})]},e.path??e.label))}):null]},e.path??e.label)}if(e.disabled)return(0,X.jsxs)(`button`,{type:`button`,className:`nav-link-item w-full cursor-not-allowed opacity-55`,disabled:!0,"aria-label":`${e.label} — unavailable`,title:`Coming soon`,children:[(0,X.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,X.jsx)(`span`,{children:e.label}),(0,X.jsx)(`span`,{className:`nav-link-badge`,children:`Soon`})]},e.path??e.label);if(e.path===void 0)return null;let r=e.path,i=r===`/`?t===`/`:t===r||t.startsWith(`${r}/`);return(0,X.jsxs)(Hr,{to:r,end:r===`/`,"data-active":i?`true`:void 0,className:`nav-link-item ${i?`active`:``}`,onMouseEnter:()=>n(r),onFocus:()=>n(r),children:[(0,X.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,X.jsx)(`span`,{children:e.label}),e.badge?(0,X.jsx)(`span`,{className:`nav-link-badge`,children:e.badge}):null]},r)})]})}function co({user:e,children:t}){let n=G(),r=W(),[i,a]=(0,N.useState)(!1),[o,l]=(0,N.useState)(!1),[u,d]=(0,N.useState)(!1),f=Qa(),p=ua(),m=f.data?.version??Ka,h=p.data?.tag_name?.replace(/^v/,``),g=Qi(m,h),_=_a(),v=e=>{ra(Q,e)};(0,N.useEffect)(()=>{a(!1)},[r.pathname]),(0,N.useEffect)(()=>{let e=()=>a(!1);return window.addEventListener(`cartethyia:overlay-open`,e),()=>window.removeEventListener(`cartethyia:overlay-open`,e)},[]),(0,N.useLayoutEffect)(()=>{window.scrollTo(0,0)},[r.pathname]);let y=async()=>{l(!0);try{await k(`/auth/logout`,{method:`POST`})}finally{Q.clear(),Yi(),n(`/login`,{replace:!0})}};(0,N.useEffect)(()=>(document.documentElement.dataset.glassEnabled=`true`,Ei(Ti()),()=>{delete document.documentElement.dataset.glassEnabled}),[]);let b=Za(r.pathname,_.data??[]);return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{className:`app-bg`,"aria-hidden":`true`}),(0,X.jsx)(`div`,{className:`app-shell-frame`,children:(0,X.jsxs)(`div`,{className:`app-shell-root`,"data-drawer":i?`open`:void 0,"data-page-scroll":r.pathname===`/console-log`?`contained`:void 0,onClick:e=>{i&&e.target.closest(`.app-main-column`)&&a(!1)},children:[(0,X.jsxs)(`aside`,{className:`glass app-sidebar ${i?`is-open`:``}`,"aria-label":`Dashboard navigation`,children:[(0,X.jsxs)(`div`,{className:`brand-header`,children:[(0,X.jsx)(`div`,{"aria-hidden":`true`,className:`brand-icon overflow-hidden p-0`,children:(0,X.jsx)(`img`,{src:`/assets/brand/sidebar_ico.jpg`,alt:`Cartethyia`,onError:e=>{e.currentTarget.onerror=null,e.currentTarget.src=`/assets/brand/sidebar_ico.jpg`},className:`w-full h-full object-cover block`})}),(0,X.jsxs)(`div`,{className:`brand-meta`,children:[(0,X.jsx)(`div`,{className:`brand-name`,children:(0,X.jsx)(`span`,{children:`Cartethyia`})}),(0,X.jsxs)(`div`,{className:`brand-version-badge`,children:[(0,X.jsx)(`a`,{href:s,target:`_blank`,rel:`noreferrer`,className:`brand-version-link`,children:qa}),g?(0,X.jsxs)(`a`,{href:p.data?.html_url??c,target:`_blank`,rel:`noreferrer`,className:`brand-update-badge`,title:h===void 0?`A newer Cartethyia release is available on GitHub`:`Update available on GitHub: v${h}`,children:[(0,X.jsx)(Ke,{size:9,className:`shrink-0`,"aria-hidden":`true`}),h===void 0?`update`:`Update v${h}`]}):null]})]})]}),(0,X.jsx)(`nav`,{className:`flex-1 overflow-y-auto py-2 px-0`,children:Ja.map(e=>(0,X.jsx)(oo,{group:e,pathname:r.pathname,onIntent:v},e.label))}),(0,X.jsx)(`div`,{className:`sidebar-user-card`,children:(0,X.jsxs)(`div`,{className:`user-card-content`,children:[(0,X.jsx)(`div`,{className:`user-avatar`,"aria-hidden":`true`,children:(e.displayName??e.email).slice(0,2).toUpperCase()}),(0,X.jsxs)(`div`,{className:`user-info`,children:[(0,X.jsx)(`p`,{className:`user-name`,children:e.displayName||`Admin`}),(0,X.jsx)(`p`,{className:`user-role`,children:e.email})]}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>d(!0),disabled:o,"aria-label":`Sign out`,title:`Sign out`,className:`topbar-icon-button w-15 h-15 rounded-inset`,children:(0,X.jsx)(Ve,{size:14})})]})})]}),(0,X.jsxs)(`div`,{className:`app-main-column`,children:[(0,X.jsx)(Fi,{}),(0,X.jsxs)(`header`,{className:`glass app-topbar`,children:[(0,X.jsx)(`button`,{type:`button`,"aria-label":`Open navigation`,className:`topbar-menu-btn`,onClick:()=>a(!0),children:(0,X.jsx)(Ue,{size:18})}),(0,X.jsxs)(`div`,{className:`topbar-meta`,children:[(0,X.jsxs)(`h1`,{className:`topbar-title`,children:[(0,X.jsx)(b.icon,{className:`topbar-title-icon`,size:16,"aria-hidden":`true`}),b.title]}),(0,X.jsx)(`p`,{className:`topbar-subtitle`,children:b.sub})]}),(0,X.jsxs)(`div`,{className:`topbar-actions`,children:[(0,X.jsx)($a,{}),(0,X.jsx)(ao,{health:f.data})]})]}),(0,X.jsx)(`main`,{className:`route-enter w-full min-w-0`,children:t})]})]})}),(0,X.jsx)(Ii,{open:u,onClose:()=>d(!1),onConfirm:y,title:`Sign out?`,message:`You will need to sign in again to open the console.`,confirmLabel:`Sign out`,danger:!0})]})}var lo=class extends N.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error(`[console] route render failed:`,e,t.componentStack)}componentDidUpdate(e){e.resetKey!==this.props.resetKey&&this.state.error!==null&&this.setState({error:null})}render(){return this.state.error===null?this.props.children:(0,X.jsx)(`main`,{className:`auth-viewport`,children:(0,X.jsxs)(`div`,{className:`card-solid auth-window border border-red-soft`,children:[(0,X.jsxs)(`div`,{className:`auth-header`,children:[(0,X.jsx)(`h1`,{className:`auth-title`,children:`Console view failed`}),(0,X.jsx)(`p`,{className:`auth-desc`,children:`This view could not be rendered.`})]}),(0,X.jsxs)(`div`,{className:`rounded-panel border border-inner-border bg-surface-2 p-7 leading-normal text-caption text-text-secondary`,children:[(0,X.jsx)(`strong`,{className:`block text-text-primary mb-2`,children:`Rendering error`}),(0,X.jsx)(`span`,{className:`select-text break-words`,children:this.state.error.message})]}),(0,X.jsx)(`button`,{type:`button`,className:`btn btn-primary inline-flex w-full items-center justify-center rounded-control bg-accent font-semibold text-accent-foreground mt-3 h-20 text-caption`,onClick:()=>window.location.reload(),children:`Reload console`})]})})}},uo=3e5;function fo(e){return`cartethyia:lazy-retry:${e}`}function po(e,t){if(e===null)return!0;let n=Number(e);return!Number.isFinite(n)||t-n>uo}function mo(){try{return typeof sessionStorage>`u`?void 0:sessionStorage}catch{return}}function $(e,t,n={}){let r=n.storage??mo(),i=n.reload??(()=>{window.location.reload()}),a=n.now??(()=>Date.now()),o=fo(t);return(0,N.lazy)(async()=>{try{let t=await e();try{r?.removeItem(o)}catch{}return t}catch(e){let t=null;try{t=r?.getItem(o)??null}catch{t=null}if(po(t,a())){try{r?.setItem(o,String(a()))}catch{}return i(),new Promise(()=>{})}throw e}})}function ho(){return(0,X.jsxs)(`div`,{role:`status`,"aria-label":`Loading console`,className:`min-h-dvh flex flex-col items-center justify-center gap-6 text-text-tertiary`,children:[(0,X.jsx)(h,{size:22,className:`animate-spin`,"aria-hidden":`true`}),(0,X.jsx)(`p`,{className:`text-caption`,children:`Loading console…`})]})}var go=$(()=>i(()=>import(`./LoginPage-CytxSeGP.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),`login`),_o=$(()=>i(()=>import(`./SetupPage-uEIXPyGO.js`),__vite__mapDeps([10,1,2,3,4,6,7,8,9,11,12])),`setup`),vo=$(()=>i(()=>import(`./BannedPage-ChqnTRpZ.js`),__vite__mapDeps([13,1])),`banned`),yo=$(()=>i(()=>import(`./OverviewPage-CU7S1wJs.js`),__vite__mapDeps([14,1,15,16,6,17,18,19,20,21,22,2,3,4,23,24,25,8,9,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,7,46,47,48,49,50,51,52,11,53])),`overview`),bo=$(()=>i(()=>import(`./UsagePage-38JfiZ0H.js`),__vite__mapDeps([54,1,55,56,3,4,2,32,15,16,6,17,18,20,57,58,24,25,8,9,59,27,5,36,60,61,62,42,43,44,63,46,23,50,11,64,65,66,67,68])),`usage`),xo=$(()=>i(()=>import(`./ProviderDetailPage-DLm2baot.js`),__vite__mapDeps([69,1,55,70,71,19,20,72,57,2,3,4,58,24,25,8,9,26,59,27,28,73,31,32,33,34,74,35,75,37,41,61,16,6,42,43,44,63,45,7,46,48,49,23,50,53,76,77,17,18,78,11,64,79,65,66])),`provider-detail`),So=$(()=>i(()=>import(`./ProvidersPage-DOXfuzfL.js`),__vite__mapDeps([80,1,2,3,4,8,9,27,31,32,34,41,6,81,42,45,7,46,20,48,49,23,50,76,64,79])),`providers`),Co=$(()=>i(()=>import(`./CombosPage-CisNZOUt.js`),__vite__mapDeps([82,1,83,22,2,3,4,23,24,27,73,31,32,33,34,36,37,41,6,81,42,30,7,8,9,46,20,47,16,44,45,48,50,76,77,17,18,65])),`combos`),wo=$(()=>i(()=>import(`./QuotaPage-Cn_fcUHE.js`),__vite__mapDeps([84,1,55,20,21,2,3,4,8,27,31,32,35,75,41,6,42,45,46,48,49,23,50,11,53,78,16,17,18])),`quota`),To=$(()=>i(()=>import(`./ProxyPage-wvk0ciQN.js`),__vite__mapDeps([85,1,55,2,3,4,25,8,9,26,27,31,32,33,34,74,75,38,41,16,6,17,18,42,43,63,45,7,46,20,49,23,50,11,64,67,68])),`proxy`),Eo=$(()=>i(()=>import(`./SettingsPage-8-eVadhc.js`),__vite__mapDeps([86,1,2,3,4,25,9,27,31,32,39,16,6,17,18,41,42,43,7,8,46,20,49,23,66,12])),`settings`),Do=$(()=>i(()=>import(`./CliToolsPage-BXUaRCQQ.js`),__vite__mapDeps([87,1,55,27,2,3,4,42,45,23,50,52,16,6,17,18,88,11])),`cli-tools`),Oo=$(()=>i(()=>import(`./CliToolDetailPage-Bb9CNuoh.js`),__vite__mapDeps([89,1,70,57,2,3,4,25,27,36,37,6,42,43,45,7,8,9,46,20,47,31,32,16,44,48,49,23,50,51,17,18,52,88])),`cli-tool-detail`),ko=$(()=>i(()=>import(`./ConsoleLogPage-BOpI_LOH.js`),__vite__mapDeps([90,1,2,3,4,27,35,37,38,41,6,42,63,68,45,7,8,9,11])),`console-log`),Ao=$(()=>i(()=>import(`./CustomizationPage-DAkdvJ4k.js`),__vite__mapDeps([91,1,2,3,4,59,73,75,42,49,23,50])),`customization`),jo=$(()=>i(()=>import(`./StudioPage-DqK5E26W.js`),__vite__mapDeps([92,1,56,3,4,2,32,71,20,72,24,25,26,93,31,33,75,61,42,7,8,9,46,47,36,37,16,6,44,45,48,51,17,18])),`studio`);function Mo(){let e=G(),t=W();return(0,N.useEffect)(()=>(De(n=>{if(Q.clear(),Yi(),n===`banned`){e(`/banned`,{replace:!0});return}e(`/login?returnTo=${encodeURIComponent(t.pathname)}`,{replace:!0})}),()=>De(void 0)),[e,t.pathname]),null}function No(){let e=W();return(0,X.jsx)(lo,{resetKey:`${e.pathname}${e.search}`,children:(0,X.jsx)(N.Suspense,{fallback:(0,X.jsx)(ho,{}),children:(0,X.jsxs)(er,{children:[(0,X.jsx)(K,{path:`/login`,element:(0,X.jsx)(go,{})}),(0,X.jsx)(K,{path:`/setup`,element:(0,X.jsx)(_o,{})}),(0,X.jsx)(K,{path:`/banned`,element:(0,X.jsx)(vo,{})}),(0,X.jsx)(K,{path:`/*`,element:(0,X.jsx)(Po,{})})]})})})}function Po(){let[e,t]=(0,N.useState)({kind:`loading`}),n=W(),r=G(),[i]=(0,N.useState)(()=>n.pathname);return(0,N.useEffect)(()=>{let e=new AbortController;return Q.fetchQuery({queryKey:A.session.current,queryFn:()=>Ee(),staleTime:6e4}).then(n=>{if(!e.signal.aborted){if(n){Q.setQueryData(A.session.current,n),t({kind:`ready`,user:n}),n.isFirstBoot&&i!==`/setup`&&r(`/setup`,{replace:!0});return}Q.removeQueries({queryKey:A.session.current}),k(`/auth/first-boot`,{signal:e.signal}).then(n=>{e.signal.aborted||t({kind:`unauthenticated`,needsSetup:n.requires_setup})}).catch(()=>{e.signal.aborted||t({kind:`unauthenticated`,needsSetup:!1})})}}).catch(n=>{e.signal.aborted||(typeof n==`object`&&n&&`status`in n&&n.status===403?t({kind:`blocked`}):t({kind:`unauthenticated`,needsSetup:!1}))}),()=>e.abort()},[i,r]),e.kind===`loading`?null:e.kind===`blocked`?(0,X.jsx)(Qn,{to:`/banned`,replace:!0}):e.kind===`unauthenticated`?(0,X.jsx)(Qn,{to:e.needsSetup?`/setup`:`/login?returnTo=${encodeURIComponent(n.pathname)}`,replace:!0}):(0,X.jsx)(co,{user:e.user,children:(0,X.jsx)(lo,{resetKey:n.pathname,children:(0,X.jsxs)(er,{children:[(0,X.jsx)(K,{path:`/`,element:(0,X.jsx)(yo,{})}),(0,X.jsx)(K,{path:`/usage`,element:(0,X.jsx)(bo,{})}),(0,X.jsx)(K,{path:`/providers`,element:(0,X.jsx)(So,{})}),(0,X.jsx)(K,{path:`/providers/:providerId`,element:(0,X.jsx)(xo,{})}),(0,X.jsx)(K,{path:`/combos`,element:(0,X.jsx)(Co,{})}),(0,X.jsx)(K,{path:`/quota`,element:(0,X.jsx)(wo,{})}),(0,X.jsx)(K,{path:`/proxy`,element:(0,X.jsx)(To,{})}),(0,X.jsx)(K,{path:`/console-log`,element:(0,X.jsx)(ko,{})}),(0,X.jsx)(K,{path:`/customization`,element:(0,X.jsx)(Ao,{})}),(0,X.jsx)(K,{path:`/model-lab`,element:(0,X.jsx)(jo,{})}),(0,X.jsx)(K,{path:`/cli-tools`,element:(0,X.jsx)(Do,{})}),(0,X.jsx)(K,{path:`/cli-tools/:toolId`,element:(0,X.jsx)(Oo,{})}),(0,X.jsx)(K,{path:`/settings`,element:(0,X.jsx)(Eo,{})}),(0,X.jsx)(K,{path:`*`,element:(0,X.jsx)(Qn,{to:`/`,replace:!0})})]})})})}function Fo(){return(0,X.jsx)(ve,{client:Q,children:(0,X.jsxs)(Br,{basename:`/console`,children:[(0,X.jsx)(Mo,{}),(0,X.jsx)(No,{}),(0,X.jsx)(m,{position:`top-right`,offset:{top:`6rem`,right:`1rem`},mobileOffset:{top:`6rem`,left:`1rem`,right:`1rem`},visibleToasts:2,richColors:!0,duration:5e3,toastOptions:{className:`toast-surface select-text`,descriptionClassName:`select-text`,classNames:{title:`select-text`},style:{background:`var(--glass-bg-2)`,border:`1px solid var(--glass-border-2)`,color:`var(--text-primary)`,fontSize:`12.5px`,userSelect:`text`},actionButtonStyle:{background:`var(--accent)`,color:`var(--accent-foreground)`},cancelButtonStyle:{background:`var(--surface-muted)`,color:`var(--text-primary)`}}})]})})}function Io(e){document.title=`Cartethyia Console`,Ji().finally(()=>{Xi(),(0,ei.createRoot)(e).render((0,X.jsx)(N.StrictMode,{children:(0,X.jsx)(Fo,{})}))})}export{qr as $,ca as A,Oi as B,Wa as C,Ha as D,Ta as E,da as F,ui as G,mi as H,Q as I,pi as J,_i as K,Ii as L,fa as M,ha as N,Aa as O,ma as P,An as Q,Ai as R,Ra as S,Ua as T,hi as U,ki as V,ii as W,Vr as X,li as Y,G as Z,_a as _,Oa as a,Re as at,wa as b,Ea as c,Ba as d,Ze as et,Ca as f,ya as g,va as h,Va as i,Be as it,pa as j,ga as k,Fa as l,Da as m,Io as mountConsole,ja as n,Je as nt,ka as o,xa as p,ci as q,La as r,qe as rt,Ga as s,Ka as t,Xe as tt,za as u,Pa as v,Sa as w,Ia as x,ba as y,J as z};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{a as i}from"./app-C-Y4oZT0.js";import{n as a,t as o}from"./brain-Cwed_72z.js";import{t as s}from"./chevron-right-BXIy5l3h.js";import{t as c}from"./circle-check-BU3v_mFW.js";import{_ as l,c as u,d,h as ee,l as f,m as te,n as ne,p as re,r as p,s as ie,t as m,u as ae,v as h,y as oe}from"./toast-CNt_jzO4.js";import{t as g}from"./eye-C_hawfH4.js";import{n as se,t as ce}from"./github-badge-zliLvBwr.js";import{n as le,r as ue,t as de}from"./state-DA0B95UQ.js";import{t as fe}from"./key-round-UkavsGxp.js";import{n as pe,r as me,t as _}from"./clipboard-button-DOo6EU8O.js";import{t as he}from"./scaling-nWE4Cx8f.js";import{t as v}from"./wrench-B6E1oEuY.js";import{n as y,t as b}from"./card-DEhRXXw4.js";import{n as ge}from"./download-dRFo5_Wu.js";import{a as x,l as S,m as C,o as w,s as T}from"./tokens-DDxMbSRL.js";import{a as E}from"./numbers-CFL4_Dqc.js";import{t as D}from"./stream-retry-5QnVuSSo.js";var O=e(`chart-column`,[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M18 17V9`,key:`2bz60n`}],[`path`,{d:`M13 17V5`,key:`1frdt8`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]]),_e=e(`heart`,[[`path`,{d:`M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5`,key:`mvr1a0`}]]),k=t(n(),1),A=i();function j(e){if(e===`link_expired_or_used`)return`This enrollment link has expired or has already been used.`;if(e===`key_unavailable`)return`The shared access template is no longer available.`;if(e===`link_not_found`)return`This enrollment link is unavailable.`;if(e===`link_disabled`)return`This share link's API key is paused. Ask whoever shared this link to re-enable it.`;if(e===`link_expired`)return`This share link has expired.`;if(e===`link_revoked`)return`This share link has been revoked.`}function M(e,t){let n=e.error;return j(typeof n==`string`?n:n?.code)??(typeof n==`string`?n:n?.message)??e.message??t}function N(e){let t=e.error;return(typeof t==`string`?t:t?.code)??null}function ve(e,t){let n=t?.streamEvent,[r,i]=(0,k.useState)({data:null,error:null,code:null,loading:!0});return(0,k.useEffect)(()=>{let t=!0,r=new AbortController,a,o,s=e=>{i({data:e,error:null,code:null,loading:!1})};if(n===void 0)return fetch(e,{signal:r.signal,credentials:`same-origin`,cache:`no-store`,referrerPolicy:`no-referrer`}).then(async e=>{let n=await e.json();if(t){if(!e.ok){i({data:null,error:M(n,`This enrollment link is unavailable.`),code:N(n),loading:!1});return}s(n)}}).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||t&&i({data:null,error:`Unable to reach the Cartethyia gateway.`,code:null,loading:!1})}),()=>{t=!1,r.abort()};let c=!1,l=()=>{if(!t)return;let r=new EventSource(e);a=r,r.addEventListener(n,e=>{if(t)try{s(JSON.parse(e.data))}catch{}}),r.addEventListener(`error`,()=>{r.close(),t&&(c||(c=!0,i(e=>e.data===null?{...e,loading:!1}:e)),o=setTimeout(l,D))})};return l(),()=>{t=!1,a?.close(),clearTimeout(o)}},[e,n]),r}var P=r(),F=`max-h-168 w-full min-w-0 overflow-x-auto overflow-y-auto touch-pan-x touch-pan-y [&_thead_th]:sticky [&_thead_th]:top-0 [&_thead_th]:z-card [&_thead_th]:bg-surface-2`,I=`w-full border-collapse text-caption [&_th]:border-b [&_th]:border-inner-border [&_th]:px-5 [&_th]:py-3 [&_th]:text-left [&_th]:font-mono [&_th]:text-micro [&_th]:font-bold [&_th]:uppercase [&_th]:tracking-label [&_th]:text-text-tertiary [&_td]:border-b [&_td]:border-surface-muted [&_td]:px-5 [&_td]:py-4 [&_td]:text-text-secondary [&_tr:last-child_td]:border-b-0 [&_code]:overflow-hidden [&_code]:text-ellipsis [&_code]:whitespace-nowrap`,L=(0,k.createContext)({data:null,loading:!0,unit:x,cycleUnit:()=>void 0}),R=`cartethyia:share-token-unit`;function z(){try{let e=window.localStorage.getItem(R);if(e===null)return x;if(e===`auto`)return-1;let t=Number(e);return Number.isInteger(t)&&t>=0&&t<=x?t:x}catch{return x}}function B(e){return e===-1?0:e>=x?-1:e+1}function V(e){return e===-1?`auto`:e>=x?`raw`:w[e]?.suffix??`auto`}function ye({path:e,children:t}){let n=ve(e,{streamEvent:`stats`}),[r,i]=(0,k.useState)(()=>typeof window>`u`?x:z()),a=(0,k.useCallback)(()=>{i(e=>{let t=B(e);try{window.localStorage.setItem(R,t===-1?`auto`:String(t))}catch{}return t})},[]);return(0,P.jsx)(L.Provider,{value:{data:n.data,loading:n.loading,unit:r,cycleUnit:a},children:t})}function H(){let{unit:e,cycleUnit:t}=(0,k.useContext)(L),n=V(e),r=V(B(e));return(0,P.jsxs)(`button`,{type:`button`,className:`ml-auto inline-flex min-h-6 items-center gap-1 rounded-chip border border-inner-border bg-surface-2 px-2 text-text-secondary font-mono text-micro font-bold uppercase tracking-[0.04em] cursor-pointer hover:border-accent hover:text-text-primary`,"aria-label":`Token unit: currently ${n}, switch to ${r}`,title:`Show ${r}`,onClick:t,children:[(0,P.jsx)(he,{size:11,"aria-hidden":`true`}),n]})}function be({policy:e}){let{data:t}=(0,k.useContext)(L);return(0,P.jsx)(Y,{policy:e,stats:t})}function xe(){let{data:e,loading:t}=(0,k.useContext)(L);return(0,P.jsx)(Q,{stats:e,loading:t})}function U(){let{unit:e}=(0,k.useContext)(L);return(0,k.useCallback)(t=>C(t,e),[e])}function W(e){return Number.isFinite(e)?Math.max(0,Math.round(e)).toLocaleString():`—`}function G(e){return e===null||!Number.isFinite(e)||e<=0?`—`:`${Number(e.toFixed(1))} t/s`}function K(e){return e===null||!Number.isFinite(e)||e<=0?`—`:e>=1e3?`${Number((e/1e3).toFixed(1))}s`:`${Math.round(e)}ms`}function q(e){if(!e)return`—`;let t=new Date(e).getTime();if(!Number.isFinite(t))return`—`;let n=Math.max(0,Math.round((Date.now()-t)/1e3));if(n<60)return`just now`;let r=Math.round(n/60);if(r<60)return`${r} min ago`;let i=Math.round(r/60);return i<24?`${i} h ago`:new Date(e).toLocaleDateString()}function J(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:00`}function Y({policy:e,stats:t}){let n=U(),r=[{label:`Lifetime`,used:t?.totals?.totalTokens??0,limit:e.oneTimeLimit},{label:`Daily`,used:t?.totals?.todayTokens??0,limit:e.dailyLimit},{label:`Monthly`,used:t?.totals?.monthTokens??0,limit:e.monthlyLimit}],i=t?.recipients;return(0,P.jsxs)(`div`,{className:`mt-5 flex flex-col gap-6 border-t border-inner-border pt-9`,children:[r.map(e=>{let t=e.limit!==null&&e.limit>0,r=t?Math.min(1,e.used/e.limit):1;return(0,P.jsxs)(`div`,{className:`flex items-center gap-6 max-sm:flex-col max-sm:items-stretch max-sm:gap-3`,children:[(0,P.jsx)(`span`,{className:`w-39 shrink-0 text-text-secondary font-mono text-micro uppercase tracking-label max-sm:w-auto`,children:e.label}),(0,P.jsx)(`div`,{className:`relative h-4 flex-1 overflow-hidden rounded-tiny bg-teal max-sm:flex-none`,title:t?`${n(e.used)} of ${n(e.limit)} used`:`${n(e.used)} used (no limit set)`,children:t?(0,P.jsx)(`div`,{className:`h-full rounded-tiny bg-red transition-[width] duration-200`,style:{width:`${Math.round(r*100)}%`}}):null}),(0,P.jsxs)(`span`,{className:`whitespace-nowrap text-text-secondary font-mono text-micro [&>strong]:text-text-primary [&>strong]:font-semibold max-sm:self-start`,children:[(0,P.jsx)(`strong`,{children:n(e.used)}),t?` / ${n(e.limit)}`:` used`]})]},e.label)}),(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,P.jsxs)(`span`,{className:`inline-flex min-h-14 items-center gap-3.5 rounded-pill border border-inner-border bg-surface-2 px-5 py-2.5 text-text-secondary font-mono text-badge leading-[1.3]`,children:[`RPM `,e.requestsPerMinute??`unlimited`]}),(0,P.jsxs)(`span`,{className:`inline-flex min-h-14 items-center gap-3.5 rounded-pill border border-inner-border bg-surface-2 px-5 py-2.5 text-text-secondary font-mono text-badge leading-[1.3]`,children:[`Concurrent `,e.maxConcurrentRequests??`unlimited`]}),i?(0,P.jsxs)(`span`,{className:`inline-flex min-h-14 items-center gap-3.5 rounded-pill border border-inner-border bg-surface-2 px-5 py-2.5 text-text-secondary font-mono text-badge leading-[1.3]`,children:[i.active,` / `,i.total,` recipients active`]}):null,(0,P.jsx)(H,{})]})]})}function X({hourly:e}){let t=U(),n=Math.max(1,...e.map(e=>e.requests)),r=e.length*10,[i,a]=(0,k.useState)(null),o=(t,n)=>{let r=t.getBoundingClientRect();if(r.width===0||e.length===0)return null;let i=Math.floor((n-r.left)/r.width*e.length);return i>=0&&i<e.length?i:null},s=i===null?void 0:e[i];return(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`div`,{className:`mb-2 flex min-h-9 items-baseline gap-4 text-text-tertiary font-mono text-badge [&>strong]:text-text-primary [&>strong]:font-head [&>strong]:text-body-lg [&>strong]:font-semibold`,"aria-live":`polite`,children:s?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`strong`,{children:t(s.tokens)}),(0,P.jsxs)(`span`,{children:[J(s.hour),` · `,W(s.requests),` req`]})]}):(0,P.jsx)(`span`,{children:`drag a bar`})}),(0,P.jsx)(`div`,{className:`cursor-crosshair touch-none`,onPointerEnter:e=>a(o(e.currentTarget,e.clientX)),onPointerMove:e=>a(o(e.currentTarget,e.clientX)),onPointerLeave:()=>a(null),children:(0,P.jsx)(`svg`,{className:`h-22 w-full`,viewBox:`0 0 ${r} 44`,preserveAspectRatio:`none`,role:`img`,"aria-label":`Requests per hour over the last 24 hours`,children:e.map((e,r)=>{let a=Math.round(e.requests/n*40);return(0,P.jsx)(`rect`,{className:`${e.requests===0?`fill-track`:`fill-teal`}${r===i?` fill-text-primary`:``}`,x:r*10+1,y:44-Math.max(2,a),width:7,height:Math.max(2,a),rx:1.5,children:(0,P.jsx)(`title`,{children:`${t(e.tokens)} tokens · ${W(e.requests)} requests`})},e.hour)})})}),(0,P.jsxs)(`div`,{className:`mt-1.5 flex justify-between text-text-tertiary font-mono text-micro`,children:[(0,P.jsx)(`span`,{children:e.length?J(e[0].hour):``}),(0,P.jsx)(`span`,{children:`last 24h`}),(0,P.jsx)(`span`,{children:e.length?J(e[e.length-1].hour):``})]})]})}function Z({value:e,max:t,label:n}){let r=t>0?Math.min(1,e/t):0;return(0,P.jsxs)(`div`,{className:`flex min-w-55 items-center gap-4 max-sm:min-w-32`,children:[(0,P.jsx)(`div`,{className:`h-3 min-w-0 flex-1 overflow-hidden rounded-tiny bg-surface-muted`,children:(0,P.jsx)(`div`,{className:`h-full rounded-tiny bg-teal`,style:{width:`${Math.round(r*100)}%`}})}),(0,P.jsx)(`span`,{className:`min-w-8 text-right font-mono text-micro text-text-secondary`,children:n})]})}function Q({stats:e,loading:t}){let[n,r]=(0,k.useState)(!1),i=U(),a=e?.totals,o=e?.models??[],c=e?.clientIps??[],u=Math.max(1,...o.map(e=>e.tokens)),d=Math.max(1,...c.map(e=>e.requests));return(0,P.jsxs)(b,{surface:`muted`,className:`min-w-0 border-glass-border-2 bg-glass-bg p-5 backdrop-blur-md backdrop-saturate-150`,children:[(0,P.jsxs)(`button`,{type:`button`,className:`group flex w-full cursor-pointer items-center gap-3 bg-transparent p-0 text-left`,"aria-expanded":n,onClick:()=>r(e=>!e),children:[(0,P.jsx)(s,{size:14,className:`shrink-0 text-text-secondary transition-transform duration-200${n?` rotate-90`:``}`,"aria-hidden":`true`}),(0,P.jsx)(`span`,{className:`text-text-secondary font-mono text-badge font-bold tracking-label transition-colors duration-150 group-hover:text-text-primary`,children:`STATS & ACTIVITY`}),(0,P.jsxs)(`span`,{className:`ml-auto flex flex-wrap items-center gap-2 text-text-tertiary font-mono text-micro max-medium:hidden`,children:[(0,P.jsxs)(`span`,{children:[c.length,` IPs`]}),(0,P.jsx)(`span`,{children:`·`}),(0,P.jsxs)(`span`,{children:[o.length,` models`]}),(0,P.jsx)(`span`,{children:`·`}),(0,P.jsxs)(`span`,{children:[W(a?.requests??0),` req`]})]})]}),n?(0,P.jsx)(`div`,{className:`mt-5 flex flex-col gap-5`,children:t&&!e?(0,P.jsx)(`p`,{className:`py-9 text-center text-text-tertiary text-caption`,children:`Loading activity…`}):e?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-4 gap-5 max-wide:grid-cols-2 max-narrow:grid-cols-1`,children:[(0,P.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-panel border border-inner-border bg-surface-2 px-7 py-6`,children:[(0,P.jsx)(`span`,{className:`text-text-tertiary font-mono text-micro uppercase tracking-label`,children:`Requests`}),(0,P.jsx)(`span`,{className:`font-head text-display font-semibold tracking-tight`,children:W(a?.requests??0)}),(0,P.jsxs)(`span`,{className:`text-text-secondary text-micro`,children:[W(a?.errors??0),` errors`]})]}),(0,P.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-panel border border-inner-border bg-surface-2 px-7 py-6`,children:[(0,P.jsx)(`span`,{className:`text-text-tertiary font-mono text-micro uppercase tracking-label`,children:`Tokens`}),(0,P.jsx)(`span`,{className:`font-head text-display font-semibold tracking-tight`,children:i(a?.totalTokens??0)}),(0,P.jsx)(`span`,{className:`text-text-secondary text-micro`,children:`all time`})]}),(0,P.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-panel border border-inner-border bg-surface-2 px-7 py-6`,children:[(0,P.jsx)(`span`,{className:`text-text-tertiary font-mono text-micro uppercase tracking-label`,children:`Last hour`}),(0,P.jsx)(`span`,{className:`font-head text-display font-semibold tracking-tight`,children:W(a?.lastHourRequests??0)}),(0,P.jsx)(`span`,{className:`text-text-secondary text-micro`,children:`requests in 60 min`})]}),(0,P.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-panel border border-inner-border bg-surface-2 px-7 py-6`,children:[(0,P.jsx)(`span`,{className:`text-text-tertiary font-mono text-micro uppercase tracking-label`,children:`Models`}),(0,P.jsx)(`span`,{className:`font-head text-display font-semibold tracking-tight`,children:o.length}),(0,P.jsx)(`span`,{className:`text-text-secondary text-micro`,children:`in use`})]})]}),(0,P.jsx)(X,{hourly:e.hourly}),(0,P.jsxs)(`section`,{"aria-label":`Top models`,children:[(0,P.jsx)(`div`,{className:`flex items-center justify-between gap-6`,children:(0,P.jsxs)(`h3`,{className:`inline-flex items-center gap-3 text-text-secondary font-mono text-badge font-bold tracking-label transition-colors duration-150`,children:[(0,P.jsx)(O,{size:13,"aria-hidden":`true`}),` TOP MODELS`]})}),o.length===0?(0,P.jsx)(`p`,{className:`py-9 text-center text-text-tertiary text-caption`,children:`No model traffic yet.`}):(0,P.jsx)(`div`,{className:F,children:(0,P.jsxs)(`table`,{className:I,children:[(0,P.jsx)(`thead`,{children:(0,P.jsxs)(`tr`,{children:[(0,P.jsx)(`th`,{scope:`col`,"aria-label":`Rank`}),(0,P.jsx)(`th`,{scope:`col`,children:`Model`}),(0,P.jsx)(`th`,{scope:`col`,className:`text-right`,children:`Req`}),(0,P.jsx)(`th`,{scope:`col`,className:`text-right`,title:`Average output tokens per second`,children:`Avg t/s`}),(0,P.jsx)(`th`,{scope:`col`,className:`text-right`,title:`Average time to first token`,children:`TTFT`}),(0,P.jsx)(`th`,{scope:`col`,children:`Tokens`})]})}),(0,P.jsx)(`tbody`,{children:o.map((e,t)=>(0,P.jsxs)(`tr`,{children:[(0,P.jsx)(`td`,{className:`w-13 font-mono text-micro text-text-tertiary`,children:t+1}),(0,P.jsx)(`td`,{children:(0,P.jsx)(`span`,{className:`flex min-w-0 flex-col gap-1 [&_code]:overflow-hidden [&_code]:text-ellipsis [&_code]:whitespace-nowrap [&_code]:text-text-primary [&_code]:text-caption [&_span]:font-mono [&_span]:text-micro [&_span]:text-text-tertiary`,children:(0,P.jsx)(`code`,{title:e.modelId,children:e.modelId})})}),(0,P.jsx)(`td`,{className:`text-right`,children:W(e.requests)}),(0,P.jsx)(`td`,{className:`text-right`,children:G(e.avgTokensPerSec)}),(0,P.jsx)(`td`,{className:`text-right`,children:K(e.avgTtfbMs)}),(0,P.jsx)(`td`,{children:(0,P.jsx)(Z,{value:e.tokens,max:u,label:i(e.tokens)})})]},e.modelId))})]})})]}),(0,P.jsxs)(`section`,{"aria-label":`Client IPs`,children:[(0,P.jsx)(`div`,{className:`flex items-center justify-between gap-6`,children:(0,P.jsxs)(`h3`,{className:`inline-flex items-center gap-3 text-text-secondary font-mono text-badge font-bold tracking-label transition-colors duration-150`,children:[(0,P.jsx)(l,{size:13,"aria-hidden":`true`}),` CLIENT IPS`]})}),c.length===0?(0,P.jsx)(`p`,{className:`py-9 text-center text-text-tertiary text-caption`,children:`No client addresses recorded yet.`}):(0,P.jsx)(`div`,{className:F,children:(0,P.jsxs)(`table`,{className:I,children:[(0,P.jsx)(`thead`,{children:(0,P.jsxs)(`tr`,{children:[(0,P.jsx)(`th`,{scope:`col`,children:`Address`}),(0,P.jsx)(`th`,{scope:`col`,children:`Client`}),(0,P.jsx)(`th`,{scope:`col`,className:`text-right`,children:`Req`}),(0,P.jsx)(`th`,{scope:`col`,children:`Tokens`}),(0,P.jsx)(`th`,{scope:`col`,children:`Last seen`})]})}),(0,P.jsx)(`tbody`,{children:c.map(e=>(0,P.jsxs)(`tr`,{children:[(0,P.jsx)(`td`,{children:(0,P.jsx)(`code`,{children:e.ip})}),(0,P.jsx)(`td`,{children:e.clientType?(0,P.jsx)(`span`,{className:`inline-block max-w-full overflow-hidden text-ellipsis whitespace-nowrap rounded-pill border border-inner-border bg-surface-2 px-3 py-px font-mono text-micro text-text-secondary`,children:e.clientType}):(0,P.jsx)(`span`,{className:`inline-block max-w-full overflow-hidden text-ellipsis whitespace-nowrap rounded-pill border border-inner-border bg-surface-2 px-3 py-px font-mono text-micro italic text-text-tertiary`,children:`unknown`})}),(0,P.jsx)(`td`,{className:`text-right`,children:W(e.requests)}),(0,P.jsx)(`td`,{children:(0,P.jsx)(Z,{value:e.requests,max:d,label:i(e.tokens)})}),(0,P.jsx)(`td`,{children:q(e.lastSeenAt)})]},e.ip))})]})})]})]}):(0,P.jsx)(`p`,{className:`py-9 text-center text-text-tertiary text-caption`,children:`Activity is unavailable right now.`})}):null]})}var Se=`cartethyia-share-keys`,$=`issued-keys`,Ce=1;function we(){return new Promise((e,t)=>{if(typeof indexedDB>`u`){t(Error(`IndexedDB is unavailable`));return}let n=indexedDB.open(Se,Ce);n.onupgradeneeded=()=>{n.result.objectStoreNames.contains($)||n.result.createObjectStore($)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error??Error(`Could not open share-key storage`))})}function Te(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.key==`string`&&typeof t.keyId==`string`&&typeof t.keyPrefix==`string`&&typeof t.createdAt==`string`}async function Ee(e){let t=await we();return await new Promise((n,r)=>{let i=t.transaction($,`readonly`).objectStore($).get(e);i.onsuccess=()=>n(Te(i.result)?i.result:null),i.onerror=()=>r(i.error??Error(`Could not read share-key storage`))})}async function De(e,t){let n=await we();await new Promise((r,i)=>{let a=n.transaction($,`readwrite`);a.objectStore($).put(t,e),a.oncomplete=()=>r(),a.onerror=()=>i(a.error??Error(`Could not save share key in this browser`)),a.onabort=()=>i(a.error??Error(`Could not save share key in this browser`))})}async function Oe(e){let t=await we();await new Promise((n,r)=>{let i=t.transaction($,`readwrite`);i.objectStore($).delete(e),i.oncomplete=()=>n(),i.onerror=()=>r(i.error??Error(`Could not clear share-key storage`)),i.onabort=()=>r(i.error??Error(`Could not clear share-key storage`))})}function ke(e){return typeof e.error==`string`?e.error:e.error?.message??e.message??`Unable to generate an API key.`}function Ae(e){let t=e.replace(/\/$/,``);return t.slice(t.lastIndexOf(`/`)+1)}var je=20;function Me({id:e,label:t,info:n,canProbe:r,probing:i,onProbe:s,result:u}){let d=(n?.capabilities?.input??[]).some(e=>e===`image`||e===`vision`);return(0,P.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2.5 rounded-control border border-inner-border bg-surface-2 p-3`,children:[(0,P.jsxs)(`div`,{className:`flex min-w-0 items-start gap-2`,children:[(0,P.jsx)(`span`,{className:`inline-flex size-13 shrink-0 items-center justify-center rounded-lg bg-teal-soft text-teal`,"aria-hidden":`true`,children:(0,P.jsx)(a,{size:14})}),(0,P.jsx)(`span`,{className:`min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap font-mono text-caption font-semibold leading-[1.35] text-text-primary`,title:e,children:t})]}),(0,P.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 text-text-secondary text-badge`,children:[(0,P.jsxs)(`span`,{className:`inline-flex gap-1 [&>span]:inline-flex`,children:[n?.reasoning?(0,P.jsx)(`span`,{title:`Reasoning`,"aria-label":`Reasoning`,className:`text-purple`,children:(0,P.jsx)(o,{size:12})}):null,d?(0,P.jsx)(`span`,{title:`Vision`,"aria-label":`Vision`,className:`text-status-info`,children:(0,P.jsx)(g,{size:12})}):null,n?.toolCall?(0,P.jsx)(`span`,{title:`Tool calling`,"aria-label":`Tool calling`,className:`text-orange`,children:(0,P.jsx)(v,{size:12})}):null,n?.webSearch?(0,P.jsx)(`span`,{title:`Web search`,"aria-label":`Web search`,className:`text-teal`,children:(0,P.jsx)(l,{size:12})}):null]}),(0,P.jsxs)(`span`,{className:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`,children:[n?.contextLength==null?(0,P.jsx)(`span`,{title:T,className:`cursor-help`,children:`n/a ctx`}):`${S(n.contextLength)} ctx`,` · `,n?.maxOutputTokens==null?(0,P.jsx)(`span`,{title:T,className:`cursor-help`,children:`n/a out`}):`${S(n.maxOutputTokens)} out`]})]}),u?.ok?(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4 font-mono text-badge text-text-secondary [&>strong]:font-sans [&>strong]:text-green`,role:`status`,children:[(0,P.jsx)(`strong`,{children:`OK`}),(0,P.jsxs)(`span`,{children:[`TTFT `,E(u.ttftMs)]}),(0,P.jsxs)(`span`,{children:[`Done `,E(u.totalMs)]})]}):null,(0,P.jsxs)(`div`,{className:`mt-auto grid min-w-0 grid-cols-2 items-center gap-4 [&>*]:w-full [&>*]:min-w-0 [&_.btn]:w-full [&_.btn]:min-w-0`,children:[r?(0,P.jsx)(p,{variant:`secondary`,size:`sm`,icon:u?.ok?(0,P.jsx)(`span`,{className:`inline-flex text-green`,children:(0,P.jsx)(c,{size:13})}):(0,P.jsx)(h,{size:13}),loading:i,disabled:i,onClick:()=>s(e),title:u?.ok?`Last test passed in ${E(u.totalMs)} — click to re-test`:u?`Last test failed${u.status===null?``:` with HTTP ${u.status}`} — click to re-test`:`Test this model using the shared API key`,children:i?`Testing…`:u?.ok?`Done ${E(u.totalMs)}`:u?`Failed${u.status===null?``:` ${u.status}`}`:`Test`}):null,(0,P.jsx)(_,{value:e,size:`sm`,variant:`secondary`,label:`Copy`,copiedLabel:`Copied`,"aria-label":`Copy ${e}`,title:`Copy ${e}`})]})]})}function Ne(){let e=typeof window>`u`?`/share`:window.location.pathname.replace(/\/$/,``),t=`${e}/data`,n=`${e}/issue`,r=typeof window>`u`?``:Ae(e),i=typeof window>`u`?``:window.location.origin,o=ve(t),[s,c]=(0,k.useState)(null),[d,h]=(0,k.useState)(null),[g,he]=(0,k.useState)(``),[v,x]=(0,k.useState)(null),[S,C]=(0,k.useState)(!1),[w,T]=(0,k.useState)(null),[E,D]=(0,k.useState)(()=>new Set),[O,A]=(0,k.useState)(()=>new Map),j=(0,k.useRef)(new Map),[M,N]=(0,k.useState)(!1),F=(0,k.useRef)(null),I=(0,k.useRef)(null);ne({open:M,mounted:M,panelRef:F,onClose:()=>N(!1)});let[L,R]=(0,k.useState)(()=>f(`dark`)),[z,B]=(0,k.useState)(!1),[V,H]=(0,k.useState)(`raw`);(0,k.useEffect)(()=>{let e=()=>B(window.scrollY>24);return e(),window.addEventListener(`scroll`,e,{passive:!0}),()=>window.removeEventListener(`scroll`,e)},[]),(0,k.useEffect)(()=>{document.title=`Cartethyia — Shared access`,R(f(`dark`)),ie(f(`dark`))},[]);let U=o.data?.kind===`enroll`?o.data:null;(0,k.useEffect)(()=>{let e=!0;if(c(null),h(null),x(null),!r||!U){o.error&&Oe(r).catch(()=>void 0);return}return Ee(r).then(t=>{e&&t&&(h(t),c(null))}).catch(()=>{e&&x(`This browser could not read the stored key. Issue a new key only if this enrollment permits one.`)}),()=>{e=!1}},[r,U,o.error]);let W=async()=>{C(!0),T(null),x(null);try{let e=await fetch(n,{method:`POST`,credentials:`same-origin`,cache:`no-store`,referrerPolicy:`no-referrer`,headers:{"content-type":`application/json`},body:JSON.stringify(g.trim()?{nameHint:g.trim().slice(0,je)}:{})}),t=await e.json();if(!e.ok){T(ke(t));return}let i=t;if(h(null),c(i),!r)return;try{await De(r,{key:i.key,keyId:i.keyId,keyPrefix:i.keyPrefix,createdAt:i.createdAt}),h({key:i.key,keyId:i.keyId,keyPrefix:i.keyPrefix,createdAt:i.createdAt}),c(null)}catch{x(`Your key was issued, but this browser could not save it. Copy it now: refreshing will not restore it.`)}}catch{T(`Unable to reach the Cartethyia gateway. Please try again.`)}finally{C(!1)}},G=d??s,K=o.data,q=K?.kind===`handoff`?!!K.key:!!G?.key,J=()=>{let e=I.current;e&&(e.scrollIntoView({behavior:`smooth`,block:`center`}),e.focus({preventScroll:!0}))},Y=async e=>{let t=K?.kind===`handoff`?K.key:(d??s)?.key;if(E.has(e))return;if(!t){m.error(`Create your API key first`,`Generate a key in the API key panel before testing a model.`),J();return}let n=new AbortController;j.current.set(e,n),D(t=>new Set(t).add(e));let r=performance.now(),a=null;try{let o=await fetch(`${i}/v1/chat/completions`,{method:`POST`,headers:{Authorization:`Bearer ${t}`,"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify({model:e,messages:[{role:`user`,content:`Reply with exactly: OK`}],stream:!0,max_tokens:16}),cache:`no-store`,referrerPolicy:`no-referrer`,signal:n.signal});if(!o.ok||!o.body){A(t=>new Map(t).set(e,{ok:!1,status:o.status})),m.error(`Model probe failed`,`Request failed with HTTP ${o.status}`);return}let s=o.body.getReader();try{for(;;){let e=await s.read();if(e.value&&e.value.byteLength>0&&a===null&&(a=performance.now()),e.done)break}}finally{s.releaseLock()}let c=Math.round(performance.now()-r),l=Math.round((a??performance.now())-r);A(t=>new Map(t).set(e,{ok:!0,ttftMs:l,totalMs:c})),m.success(`Model test complete`,`${e} · TTFT ${l} ms · Done ${c} ms`)}catch(t){t instanceof DOMException&&t.name===`AbortError`||(A(t=>new Map(t).set(e,{ok:!1,status:null})),m.error(`Model probe failed`,t instanceof Error?t.message:`The request could not be completed.`))}finally{j.current.get(e)===n&&j.current.delete(e),D(t=>{let n=new Set(t);return n.delete(e),n})}};(0,k.useEffect)(()=>()=>{for(let e of j.current.values())e.abort()},[]);let X=!!U?.canIssue&&!G,Z=K?.kind===`handoff`?K.key:null,Q=new Map;for(let e of K?.models??[]){let t=e.indexOf(`/`),n=t>0?e.slice(0,t):`Other`,r=Q.get(n)??[];r.push(e),Q.set(n,r)}return(0,P.jsx)(ye,{path:`${e}/stats/stream`,children:(0,P.jsxs)(`div`,{className:`min-h-screen text-text-primary font-sans`,children:[(0,P.jsx)(`div`,{className:`share-backdrop`,"aria-hidden":`true`}),(0,P.jsx)(`header`,{className:`share-header`,"data-scrolled":z,children:(0,P.jsxs)(`div`,{className:`share-header-inner`,"data-scrolled":z,children:[(0,P.jsxs)(`a`,{className:`inline-flex items-center gap-5 font-head text-lead tracking-[-0.03em] text-text-primary no-underline`,href:`/`,children:[(0,P.jsx)(`span`,{className:`grid size-17 place-items-center overflow-hidden rounded-control border border-inner-border bg-accent-soft text-accent`,"aria-hidden":`true`,children:(0,P.jsx)(`img`,{className:`block size-full object-cover`,src:`/assets/brand/favicon.jpg`,alt:``,width:34,height:34})}),(0,P.jsx)(`b`,{children:`Cartethyia`})]}),(0,P.jsxs)(`div`,{className:`inline-flex items-center gap-4 max-narrow:gap-3`,children:[(0,P.jsx)(ce,{className:`max-narrow:[&_.github-badge-metric]:hidden max-narrow:[&_.github-badge]:px-2.5`}),(0,P.jsx)(`button`,{type:`button`,className:`grid size-17 cursor-pointer place-items-center rounded-pill border border-inner-border bg-surface-2 text-text-secondary hover:border-border-strong hover:text-text-primary focus-visible:outline-2 focus-visible:outline-focus-ring focus-visible:outline-offset-2`,onClick:()=>{let e=u(L)?`light`:`dark`;R(e),ae(e)},"aria-label":`Toggle theme`,"aria-pressed":u(L),title:u(L)?`Switch to light mode`:`Switch to dark mode`,children:u(L)?(0,P.jsx)(te,{size:15}):(0,P.jsx)(ee,{size:15})}),(0,P.jsxs)(`a`,{href:`/`,className:`inline-flex min-h-17 items-center gap-3 rounded-pill border border-inner-border bg-surface-2 px-6 text-badge font-semibold text-text-secondary no-underline hover:border-border-strong hover:text-text-primary max-narrow:px-5`,children:[(0,P.jsx)(se,{size:13,"aria-hidden":`true`}),` Home`]})]})]})}),(0,P.jsx)(`main`,{className:`relative z-1 mx-auto flex w-full max-w-480 flex-col gap-8 px-12 pb-24 pt-40 max-narrow:gap-6 max-narrow:px-6 max-narrow:pb-16 max-narrow:pt-36`,children:o.loading?(0,P.jsx)(b,{surface:`muted`,className:`min-w-0 border-glass-border-2 bg-glass-bg backdrop-blur-md backdrop-saturate-150 p-5`,children:(0,P.jsx)(y,{children:(0,P.jsx)(ue,{label:`Loading enrollment policy…`})})}):o.error?(0,P.jsx)(b,{surface:`muted`,className:`min-w-0 border-glass-border-2 bg-glass-bg backdrop-blur-md backdrop-saturate-150 p-5`,children:(0,P.jsx)(y,{children:(0,P.jsx)(le,{title:o.code===`link_disabled`?`Key paused`:`Link not available`,message:o.error,onRetry:()=>window.location.reload()})})}):K?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(b,{surface:`muted`,className:`min-w-0 border-glass-border-2 bg-glass-bg backdrop-blur-md backdrop-saturate-150 p-7 max-sm:p-5`,children:[(0,P.jsxs)(`p`,{className:`inline-flex items-center gap-3 text-text-secondary font-mono text-micro font-bold tracking-label leading-normal`,children:[K.kind===`handoff`?(0,P.jsx)(fe,{size:13,"aria-hidden":`true`}):(0,P.jsx)(me,{size:13,"aria-hidden":`true`}),K.kind===`handoff`?`SHARED ACCESS / KEY`:`SHARED ACCESS / ENROLLMENT`]}),(0,P.jsx)(`h1`,{children:K.name||`Shared API access`}),K.kind===`handoff`?(0,P.jsx)(`p`,{className:`mt-2.5 text-text-secondary text-body leading-[1.55]`,children:`The API key for this gateway, provided through a share link. It is subject to the limits below.`}):null,(0,P.jsx)(`div`,{className:`mt-5 flex flex-wrap items-center gap-2`,children:K.expiresAt?(0,P.jsxs)(`span`,{className:`inline-flex min-h-7 items-center gap-1.5 rounded-chip border border-inner-border bg-surface-2 px-2.5 py-1 text-text-secondary font-mono text-micro leading-[1.3]`,children:[(0,P.jsx)(oe,{size:12,"aria-hidden":`true`}),`Link expires `,new Date(K.expiresAt).toLocaleString()]}):null}),(0,P.jsx)(be,{policy:K})]}),(0,P.jsxs)(`div`,{className:`grid grid-cols-2 gap-8 max-md:grid-cols-1`,children:[(0,P.jsxs)(b,{surface:`muted`,className:`flex min-w-0 flex-col items-start gap-6 border-glass-border-2 bg-glass-bg backdrop-blur-md backdrop-saturate-150 p-5`,children:[(0,P.jsxs)(`h2`,{className:`inline-flex items-center gap-3 text-text-secondary font-mono text-micro font-bold tracking-label leading-normal`,children:[(0,P.jsx)(l,{size:13,"aria-hidden":`true`}),` BASE URL`]}),(0,P.jsxs)(`div`,{className:`flex w-full min-w-0 items-center gap-4 [&>code]:block [&>code]:min-w-0 [&>code]:flex-1 [&>code]:overflow-hidden [&>code]:text-ellipsis [&>code]:whitespace-nowrap [&>code]:rounded-inset [&>code]:border [&>code]:border-inner-border [&>code]:bg-code-surface [&>code]:p-5 [&>code]:text-text-primary [&>code]:font-mono [&>code]:text-caption [&>code]:leading-normal [&>button]:shrink-0`,children:[(0,P.jsxs)(`code`,{children:[i,`/v1`]}),(0,P.jsx)(_,{value:`${i}/v1`,size:`sm`,variant:`secondary`,label:`Copy URL`,copiedLabel:`Copied`,"aria-label":`Copy Base URL`})]}),(0,P.jsx)(`p`,{className:`text-caption leading-[1.55] text-text-secondary`,children:`Point your SDK, Opencode, Claude Code, Droid, and any other CLI`}),K.sharePopup.enabled?(0,P.jsxs)(`button`,{type:`button`,className:`flex w-full min-w-0 cursor-pointer items-center gap-6 rounded-panel border border-orange/30 bg-gradient-to-br from-orange-soft to-surface-2 p-6 text-left text-text-primary transition-transform duration-150 ease-spring hover:-translate-y-px hover:border-orange`,onClick:()=>N(!0),"aria-haspopup":`dialog`,"aria-label":`Open popup`,children:[(0,P.jsx)(`span`,{className:`grid size-19 flex-none place-items-center rounded-control bg-orange-soft text-orange`,"aria-hidden":`true`,children:(0,P.jsx)(_e,{size:16})}),(0,P.jsx)(`span`,{className:`grid min-w-0 gap-1.5`,children:(0,P.jsx)(`strong`,{className:`text-caption`,children:K.sharePopup.title||`More information`})}),(0,P.jsx)(`span`,{className:`ml-auto text-lead text-orange`,"aria-hidden":`true`,children:`↗`})]}):null]}),(0,P.jsx)(`div`,{ref:I,tabIndex:-1,children:(0,P.jsxs)(b,{surface:`muted`,className:`flex min-w-0 flex-col items-start gap-6 border-glass-border-2 bg-glass-bg backdrop-blur-md backdrop-saturate-150 p-5`,children:[(0,P.jsxs)(`h2`,{className:`inline-flex items-center gap-3 text-text-secondary font-mono text-micro font-bold tracking-label leading-normal`,children:[(0,P.jsx)(fe,{size:13,"aria-hidden":`true`}),` YOUR API KEY`]}),K.kind===`handoff`?Z?(0,P.jsxs)(`div`,{className:`flex w-full min-w-0 flex-col gap-5`,role:`status`,children:[(0,P.jsx)(`p`,{className:`font-mono text-micro font-bold tracking-label text-orange`,children:`REVEALED BY THE LINK OWNER`}),(0,P.jsx)(`code`,{className:`block min-w-0 flex-1 overflow-hidden rounded-inset border border-inner-border bg-code-surface p-5 font-mono text-caption leading-normal text-text-primary [overflow-wrap:anywhere] [user-select:all]`,children:Z}),(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-5 [&>span]:font-mono [&>span]:text-micro [&>span]:text-text-tertiary`,children:[(0,P.jsx)(_,{value:Z,size:`sm`,variant:`primary`,label:`Copy key`,copiedLabel:`Copied`}),(0,P.jsx)(p,{variant:`secondary`,size:`sm`,onClick:()=>ge(`cartethyia-api-key.txt`,`Cartethyia API key\n\n${Z}\n\nKeep this secret.\n`,`text/plain;charset=utf-8`),children:`Save this key`}),(0,P.jsxs)(`span`,{children:[`Prefix `,K.keyPrefix??`—`]})]}),(0,P.jsx)(`p`,{className:`text-caption leading-[1.55] text-text-secondary`,children:`This link reveals the key itself, so anyone holding the URL can read it. Keep the URL private; the link owner regenerates it to replace this key.`})]}):(0,P.jsx)(`p`,{className:`text-caption leading-normal text-text-secondary`,children:`This link can no longer reveal its key. Ask the link owner to regenerate it.`}):G?(0,P.jsxs)(`div`,{className:`flex w-full min-w-0 flex-col gap-5`,role:`status`,children:[(0,P.jsx)(`p`,{className:`font-mono text-micro font-bold tracking-[0.06em] text-orange`,children:`GENERATED ONCE · COPY AND KEEP IT`}),(0,P.jsx)(`code`,{className:`block min-w-0 flex-1 overflow-hidden rounded-inset border border-inner-border bg-code-surface p-5 font-mono text-caption leading-normal text-text-primary [overflow-wrap:anywhere] [user-select:all]`,children:G.key}),(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-5 [&>span]:font-mono [&>span]:text-micro [&>span]:text-text-tertiary`,children:[(0,P.jsx)(_,{value:G.key,size:`sm`,variant:`primary`,label:`Copy key`,copiedLabel:`Copied`}),(0,P.jsx)(p,{variant:`secondary`,size:`sm`,onClick:()=>ge(`cartethyia-api-key.txt`,`Cartethyia API key\n\n${G.key}\n\nKeep this secret.\n`,`text/plain;charset=utf-8`),children:`Save this key`}),(0,P.jsxs)(`span`,{children:[`Key ID `,G.keyId.slice(0,12),`…`]})]}),(0,P.jsx)(`p`,{className:`text-caption leading-[1.55] text-text-secondary`,children:`Saved in this browser while this enrollment link remains valid. It is not shown again from another browser, and an expired, revoked, or unavailable link does not restore a local copy.`})]}):(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`p`,{className:`text-caption leading-normal text-text-secondary`,children:X?`Issue a personal key to use the shared endpoint.`:`No key is available in this browser.`}),X?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`label`,{className:`flex w-full flex-col gap-1.5 text-text-secondary text-micro font-bold [&>input]:w-full [&>input]:min-h-11 [&>input]:rounded-control [&>input]:border [&>input]:border-inner-border [&>input]:bg-surface-1 [&>input]:px-3 [&>input]:text-text-primary [&>input]:text-body [&>input]:font-medium [&>input]:focus-visible:outline-2 [&>input]:focus-visible:outline-focus-ring [&>input]:focus-visible:outline-offset-2`,children:[(0,P.jsx)(`span`,{children:`Your name`}),(0,P.jsx)(`input`,{type:`text`,value:g,required:!0,maxLength:je,autoComplete:`nickname`,onChange:e=>he(e.target.value)}),(0,P.jsx)(`span`,{className:`text-text-tertiary text-micro font-normal leading-normal`,children:`Shown on your key (best kept to ~5 letters) — the gateway appends its own code.`})]}),(0,P.jsx)(`p`,{className:`-mt-3 text-text-tertiary text-micro font-normal leading-normal`,children:`Enter your name to generate a personal key.`}),(0,P.jsx)(p,{variant:`primary`,size:`sm`,loading:S,disabled:S||!g.trim(),onClick:()=>void W(),children:S?`Generating…`:`Generate API Key`})]}):null]}),K.kind===`enroll`&&!X&&!G?(0,P.jsx)(`p`,{role:`status`,className:`w-full rounded-inset border border-orange-soft bg-orange-soft px-5 py-4 text-badge leading-normal text-orange`,children:w??`This enrollment link is not currently accepting key requests.`}):null,w&&X?(0,P.jsx)(`p`,{role:`alert`,className:`form-error`,children:w}):null,v?(0,P.jsx)(`p`,{role:`alert`,className:`form-error`,children:v}):null]})})]}),M&&K.sharePopup.enabled?(0,P.jsx)(`div`,{className:`fixed inset-0 z-drawer grid place-items-center overflow-y-auto bg-black/70 p-10 backdrop-blur max-sm:place-items-end max-sm:p-5`,role:`presentation`,onClick:e=>{e.target===e.currentTarget&&N(!1)},children:(0,P.jsxs)(`section`,{ref:F,tabIndex:-1,className:`relative grid max-h-[min(calc(var(--spacing)*340),calc(100dvh-var(--spacing)*20))] w-full max-w-380 grid-cols-2 overflow-auto rounded-hero border border-glass-border-2 bg-surface-1 shadow-popout max-sm:max-h-[calc(100dvh-var(--spacing)*10)] max-sm:w-full max-sm:max-w-240 max-sm:grid-cols-1 max-sm:rounded-card`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`share-support-title`,children:[(0,P.jsx)(`button`,{type:`button`,className:`absolute top-6 right-6 z-card grid size-18 place-items-center rounded-pill border border-inner-border bg-surface-1 text-text-secondary focus-visible:outline-2 focus-visible:outline-focus-ring focus-visible:outline-offset-2`,onClick:()=>N(!1),"aria-label":`Close popup`,children:(0,P.jsx)(re,{size:18,"aria-hidden":`true`})}),K.sharePopup.hasImage?(0,P.jsx)(`img`,{className:`h-full min-h-180 w-full object-cover max-sm:h-auto max-sm:max-h-[min(52dvh,calc(var(--spacing)*210))] max-sm:min-h-0 max-sm:object-contain`,src:`/share/${r}/popup-image`,alt:``}):(0,P.jsx)(`div`,{className:`grid h-full min-h-180 w-full place-items-center bg-gradient-to-br from-orange-soft to-surface-2 text-7xl text-orange max-sm:h-[clamp(calc(var(--spacing)*85),34dvh,calc(var(--spacing)*130))] max-sm:min-h-85 max-sm:max-h-130`,"aria-hidden":`true`,children:(0,P.jsx)(`span`,{children:`♡`})}),(0,P.jsxs)(`div`,{className:`flex flex-col justify-center gap-7 p-[clamp(calc(var(--spacing)*12),5vw,calc(var(--spacing)*22))] max-sm:gap-6 max-sm:p-11`,children:[(0,P.jsx)(`h2`,{id:`share-support-title`,className:`pr-10 font-head text-display leading-tight tracking-tight wrap-anywhere`,children:K.sharePopup.title||`More information`}),K.sharePopup.body?(0,P.jsx)(`p`,{id:`share-support-message`,className:`text-body leading-loose whitespace-pre-wrap text-text-secondary wrap-anywhere`,children:K.sharePopup.body}):null,(0,P.jsx)(`div`,{className:`mt-4 flex flex-wrap items-center gap-5 [&>*]:flex-auto`,children:(0,P.jsx)(`button`,{type:`button`,className:`inline-flex min-h-21 items-center justify-center rounded-pill border border-inner-border bg-surface-2 px-8 text-caption font-bold text-text-primary no-underline hover:brightness-110 focus-visible:outline-2 focus-visible:outline-focus-ring focus-visible:outline-offset-2`,onClick:()=>N(!1),children:`Close`})})]})]})}):null,K.notes.title||K.notes.subtitle||K.notes.body?(0,P.jsxs)(b,{surface:`muted`,className:`min-w-0 border-glass-border-2 bg-glass-bg backdrop-blur-md backdrop-saturate-150 p-5`,children:[(0,P.jsxs)(`h2`,{className:`inline-flex items-center gap-3 text-text-secondary font-mono text-micro font-bold tracking-label leading-normal`,children:[(0,P.jsx)(pe,{size:13,"aria-hidden":`true`}),` NOTES`]}),K.notes.title?(0,P.jsx)(`h3`,{className:`mt-5 font-head text-title font-semibold`,children:K.notes.title}):null,K.notes.subtitle?(0,P.jsx)(`p`,{className:`mt-3 text-caption font-semibold text-text-secondary`,children:K.notes.subtitle}):null,K.notes.body?(0,P.jsx)(`p`,{className:`mt-5 text-body leading-loose whitespace-pre-wrap text-text-secondary`,children:K.notes.body}):null]}):null,(0,P.jsx)(xe,{}),(0,P.jsxs)(b,{surface:`muted`,className:`min-w-0 border-glass-border-2 bg-glass-bg backdrop-blur-md backdrop-saturate-150 p-5`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between gap-6`,children:[(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`p`,{className:`inline-flex items-center gap-3 text-text-secondary font-mono text-micro font-bold tracking-label leading-normal`,children:[(0,P.jsx)(a,{size:13,"aria-hidden":`true`}),` MODEL ACCESS`]}),(0,P.jsx)(`h2`,{className:`mt-3 font-head text-lead font-semibold tracking-tight`,children:`Allowed models`})]}),(0,P.jsxs)(`div`,{className:`inline-flex items-center gap-4`,children:[(0,P.jsxs)(`div`,{className:`inline-flex rounded-pill border border-inner-border bg-surface-2 p-1`,role:`tablist`,"aria-label":`Allowed model layout`,children:[(0,P.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":V===`raw`,className:`min-h-13 cursor-pointer rounded-pill border-0 bg-transparent px-5 font-mono text-micro font-bold tracking-label text-text-secondary uppercase hover:text-text-primary${V===`raw`?` bg-accent text-accent-foreground`:``}`,onClick:()=>H(`raw`),children:`Raw`}),(0,P.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":V===`grouped`,className:`min-h-13 cursor-pointer rounded-pill border-0 bg-transparent px-5 font-mono text-micro font-bold tracking-label text-text-secondary uppercase hover:text-text-primary${V===`grouped`?` bg-accent text-accent-foreground`:``}`,onClick:()=>H(`grouped`),children:`Grouped`})]}),K.models.length?(0,P.jsx)(_,{value:K.models.join(`, `),size:`sm`,variant:`secondary`,label:`Copy all`,copiedLabel:`Copied`,"aria-label":`Copy all granted models`}):null]})]}),Q.size?V===`raw`?(0,P.jsx)(`div`,{className:`mt-8 grid grid-cols-3 gap-4 max-wide:grid-cols-2 max-narrow:grid-cols-1`,children:K.models.map(e=>(0,P.jsx)(Me,{id:e,label:e,info:K.modelInfo?.[e],canProbe:q,probing:E.has(e),onProbe:Y,result:O.get(e)},e))}):(0,P.jsx)(`div`,{className:`mt-8 grid grid-cols-2 gap-6 min-extra-wide:grid-cols-3 max-medium:grid-cols-1`,children:[...Q].sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>(0,P.jsxs)(`section`,{className:`min-w-0 overflow-hidden rounded-panel border border-inner-border bg-surface-2`,"aria-label":`${e} models`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between gap-6 border-b border-inner-border px-6 py-5`,children:[(0,P.jsx)(`h3`,{className:`font-mono text-badge font-bold text-text-primary wrap-anywhere`,children:e}),(0,P.jsx)(`span`,{className:`rounded-pill bg-accent-soft px-4 py-1 font-mono text-micro font-bold text-accent`,children:t.length})]}),(0,P.jsx)(`div`,{className:`mt-0 grid max-h-150 grid-cols-1 gap-3 overflow-y-auto p-4`,children:t.map(t=>(0,P.jsx)(Me,{id:t,label:e===`Other`?t:t.slice(e.length+1),info:K.modelInfo?.[t],canProbe:q,probing:E.has(t),onProbe:Y,result:O.get(t)},t))})]},e))}):(0,P.jsx)(`p`,{className:`mt-8 rounded-control border border-inner-border bg-surface-2 p-7 text-caption text-text-secondary`,children:`Model access follows the share template policy.`}),K.modelPrefix?(0,P.jsxs)(`p`,{className:`mt-6 text-badge leading-normal text-text-secondary wrap-anywhere`,children:[`Required model prefix: `,K.modelPrefix]}):null]})]}):(0,P.jsx)(b,{surface:`muted`,className:`min-w-0 border-glass-border-2 bg-glass-bg backdrop-blur-md backdrop-saturate-150 p-5`,children:(0,P.jsx)(y,{children:(0,P.jsx)(de,{title:`No enrollment data`,message:`This enrollment link did not return usable policy data.`})})})})]})})}var Pe=document.getElementById(`root`);if(Pe===null)throw Error(`Share root element is missing`);(0,A.createRoot)(Pe).render((0,P.jsxs)(k.StrictMode,{children:[(0,P.jsx)(Ne,{}),(0,P.jsx)(d,{position:`top-right`,offset:{top:`1rem`,right:`1rem`},mobileOffset:{top:`1rem`,left:`1rem`,right:`1rem`},visibleToasts:2,toastOptions:{className:`toast-surface select-text`,style:{background:`var(--glass-bg-2)`,border:`1px solid var(--glass-border-2)`,color:`var(--text-primary)`,fontSize:`12.5px`},classNames:{title:`select-text`,description:`select-text`},actionButtonStyle:{background:`var(--accent)`,color:`var(--accent-foreground)`},cancelButtonStyle:{background:`var(--surface-muted)`,color:`var(--text-primary)`}}})]}));
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{i,n as a,r as o}from"./app-C-Y4oZT0.js";var s=e(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),c=t(n(),1),l=r(),u=`https://img.shields.io`;function d(e,t){let n=new URLSearchParams({style:`flat-square`,labelColor:`0b1220`,color:t});return`${u}/github/${e}/${a}?${n.toString()}`}function f({size:e=16}){return(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z`})})}function p({size:e=15}){return(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`M0 0v16h16V0H0Zm13 13h-2V5H8v8H3V3h10v10Z`})})}function m({size:e=15}){return(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`m15.5 6.3-.02-.06-2.14-5.58a.56.56 0 0 0-.22-.26.57.57 0 0 0-.65.03.57.57 0 0 0-.19.29l-1.45 4.42H5.17L3.72.72A.57.57 0 0 0 3.53.43a.57.57 0 0 0-.65-.03.56.56 0 0 0-.22.26L.52 6.24l-.02.06a3.97 3.97 0 0 0 1.32 4.59l.01.01.02.02 3.25 2.44 1.61 1.22.98.74a.67.67 0 0 0 .81 0l.98-.74 1.61-1.22 3.26-2.45.01-.01a3.97 3.97 0 0 0 1.32-4.59Z`})})}function h({size:e=15}){return(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`M13.55 3.02A12.6 12.6 0 0 0 10.5 2.1a8.9 8.9 0 0 0-.4.83 11.7 11.7 0 0 0-3.2 0 8.6 8.6 0 0 0-.41-.83 12.6 12.6 0 0 0-3.05.92C1.3 5.75.85 8.4 1.07 11.01a12.7 12.7 0 0 0 3.74 1.9c.3-.41.57-.85.8-1.31-.44-.17-.86-.37-1.26-.6l.31-.24a9 9 0 0 0 7.68 0l.31.24c-.4.23-.82.43-1.26.6.23.46.5.9.8 1.31a12.7 12.7 0 0 0 3.74-1.9c.26-3.03-.44-5.66-1.98-7.99ZM5.68 9.4c-.73 0-1.33-.67-1.33-1.49s.59-1.49 1.33-1.49c.74 0 1.34.68 1.33 1.49 0 .82-.59 1.49-1.33 1.49Zm4.64 0c-.73 0-1.33-.67-1.33-1.49s.59-1.49 1.33-1.49c.74 0 1.34.68 1.33 1.49 0 .82-.59 1.49-1.33 1.49Z`})})}function g({id:e,size:t}){return e===`npm`?(0,l.jsx)(p,{size:t}):e===`gitlab`?(0,l.jsx)(m,{size:t}):e===`discord`?(0,l.jsx)(h,{size:t}):(0,l.jsx)(f,{size:t})}function _({className:e=``}){let[t,n]=(0,c.useState)(!1),r=(0,c.useRef)(null),a=(0,c.useId)(),s=(0,c.useCallback)(()=>n(!1),[]);return(0,c.useEffect)(()=>{if(!t)return;let e=e=>{r.current!==null&&!r.current.contains(e.target)&&s()},n=e=>{e.key===`Escape`&&s()};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,n)}},[t,s]),(0,l.jsx)(`div`,{className:e,ref:r,children:(0,l.jsxs)(`div`,{className:`github-split`,children:[(0,l.jsxs)(`a`,{className:`github-badge`,href:o,target:`_blank`,rel:`noreferrer`,"aria-label":`Cartethyia on GitHub`,children:[(0,l.jsx)(f,{size:15}),(0,l.jsx)(`img`,{className:`github-badge-metric`,src:d(`stars`,`2ea043`),alt:`GitHub stars`,height:20,loading:`lazy`,decoding:`async`}),(0,l.jsx)(`img`,{className:`github-badge-metric`,src:d(`forks`,`1f6feb`),alt:`GitHub forks`,height:20,loading:`lazy`,decoding:`async`})]}),(0,l.jsx)(`button`,{type:`button`,className:`github-split-toggle`,"aria-haspopup":`menu`,"aria-expanded":t,"aria-controls":a,"aria-label":`More ways to get Cartethyia`,onClick:()=>n(e=>!e),children:(0,l.jsx)(`svg`,{width:12,height:12,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`M8 11 3 5h10l-5 6Z`})})}),t?(0,l.jsx)(`div`,{className:`github-split-menu`,id:a,role:`menu`,"aria-label":`Source and package links`,children:i.map(e=>(0,l.jsxs)(`a`,{className:`github-split-item`,href:e.href,target:`_blank`,rel:`noreferrer`,role:`menuitem`,onClick:s,children:[(0,l.jsx)(g,{id:e.id,size:14}),(0,l.jsxs)(`span`,{className:`github-split-item-text`,children:[(0,l.jsx)(`span`,{className:`github-split-item-label`,children:e.label}),(0,l.jsx)(`span`,{className:`github-split-item-hint`,children:e.hint})]})]},e.id))}):null]})})}export{s as n,_ as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-CXUMngI_.js";import{a as t}from"./toast-CNt_jzO4.js";import{r as n}from"./stack-C9_uUjaA.js";var r=e(),i={center:`items-center`,start:`items-start`,end:`items-end`,"flex-start":`items-start`,"flex-end":`items-end`,baseline:`items-baseline`,stretch:`items-stretch`},a={center:`justify-center`,start:`justify-start`,end:`justify-end`,"flex-start":`justify-start`,"flex-end":`justify-end`,"space-between":`justify-between`,"space-around":`justify-around`,"space-evenly":`justify-evenly`};function o({children:e,gap:t=3,gapRaw:n,align:i=`center`,justify:a,wrap:o=!0,style:c,className:l=``}){return(0,r.jsx)(s,{gap:t,gapRaw:n,align:i,justify:a,wrap:o,style:c,className:l,children:e})}function s({children:e,gap:o=4,gapRaw:s,align:c=`center`,justify:l,wrap:u=!1,style:d,className:f=``}){let p=n(o,4);return(0,r.jsx)(`div`,{className:t(`flex flex-row`,i[c??``]??``,a[l??``]??``,u&&`flex-wrap`,s===void 0?p:null,f),style:s===void 0?d:{gap:s,...d},children:e})}export{s as n,o as t};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e,r as t,t as n}from"./jsx-runtime-CXUMngI_.js";import{a as r}from"./toast-CNt_jzO4.js";import{t as i}from"./eye-off-Bk5g2luF.js";import{t as a}from"./eye-C_hawfH4.js";var o=e(t(),1),s=n(),c=`w-full rounded-control border border-inner-border bg-surface-2 text-text-primary px-6 py-4 text-body outline-none transition-[border-color,box-shadow] duration-(--dur-micro) ease-spring focus:border-accent focus:shadow-focus`,l=(0,o.forwardRef)(({label:e,hint:t,error:n,id:l,type:u,className:d=``,showPasswordToggle:f,...p},m)=>{let h=u===`password`,g=h||f,[_,v]=(0,o.useState)(!1);return(0,s.jsxs)(`div`,{className:`form-group flex w-full flex-col gap-3`,children:[e?(0,s.jsxs)(`label`,{htmlFor:l,className:`form-label flex items-center justify-between text-caption font-semibold text-text-primary`,children:[(0,s.jsx)(`span`,{children:e}),t?(0,s.jsx)(`span`,{className:`form-hint text-badge font-normal text-text-tertiary`,children:t}):null]}):null,(0,s.jsxs)(`div`,{className:`relative flex items-center w-full`,children:[(0,s.jsx)(`input`,{ref:m,id:l,type:h?_?`text`:`password`:u,className:r(`form-input`,c,g&&`pr-18`,d),...p}),g?(0,s.jsx)(`button`,{type:`button`,onClick:()=>v(e=>!e),"aria-label":_?`Hide password`:`Show password`,"aria-pressed":_,className:`absolute right-5 bg-transparent border-none text-text-tertiary cursor-pointer p-1 inline-flex items-center justify-center`,children:_?(0,s.jsx)(i,{size:16}):(0,s.jsx)(a,{size:16})}):null]}),n?(0,s.jsx)(`p`,{className:`form-error mt-2 text-badge text-red`,role:`alert`,children:n}):null]})});l.displayName=`Input`;var u=(0,o.forwardRef)(({className:e,...t},n)=>(0,s.jsx)(`input`,{ref:n,type:`file`,className:r(`form-file-input box-border min-w-0 h-16 flex-auto cursor-pointer rounded-control border border-inner-border bg-surface-2 py-0 pl-0 pr-2 font-sans text-badge text-text-secondary transition-colors duration-(--dur-micro) ease-standard enabled:hover:border-border-strong focus-visible:outline-2 focus-visible:outline-focus-ring focus-visible:outline-offset-1 disabled:cursor-not-allowed disabled:opacity-60`,`file:h-full file:mr-4 file:px-5 file:py-0 file:rounded-l-control file:rounded-r-none file:border-0 file:border-r file:border-inner-border file:bg-surface-1 file:font-sans file:text-badge file:font-semibold file:text-text-primary file:cursor-pointer disabled:file:cursor-not-allowed file:hover:bg-surface-hover`,e),...t}));u.displayName=`FileInput`;var d=(0,o.forwardRef)(({label:e,hint:t,error:n,id:i,className:a=``,...o},l)=>(0,s.jsxs)(`div`,{className:`form-group flex w-full flex-col gap-3`,children:[e?(0,s.jsxs)(`label`,{htmlFor:i,className:`form-label flex items-center justify-between text-caption font-semibold text-text-primary`,children:[(0,s.jsx)(`span`,{children:e}),t?(0,s.jsx)(`span`,{className:`form-hint text-badge font-normal text-text-tertiary`,children:t}):null]}):null,(0,s.jsx)(`textarea`,{ref:l,id:i,className:r(`form-textarea`,c,a),...o}),n?(0,s.jsx)(`p`,{className:`form-error mt-2 text-badge text-red`,role:`alert`,children:n}):null]}));d.displayName=`Textarea`;export{l as n,d as r,u as t};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-CXUMngI_.js";import{a as t}from"./toast-CNt_jzO4.js";var n=e();function r({eyebrow:e,title:r,description:i,action:a,icon:o,level:s=2}){let c=!!(e||r||i),l=s===1?`h1`:s===3?`h3`:`h2`;return(0,n.jsxs)(`div`,{className:t(`section-header flex items-center justify-between gap-6 max-small:flex-col max-small:items-start max-small:gap-4`,c?void 0:`justify-end`),children:[c?(0,n.jsxs)(`div`,{className:`section-header-text min-w-0`,children:[e?(0,n.jsx)(`p`,{className:`text-badge font-bold uppercase tracking-label text-text-tertiary mb-1`,children:e}):null,r?(0,n.jsx)(l,{className:`font-head text-title font-bold tracking-[-0.02em] text-text-primary`,children:r}):null,i?(0,n.jsx)(`p`,{className:`mt-1 text-caption text-text-secondary`,children:i}):null]}):null,o?(0,n.jsx)(`div`,{className:`card-header-icon grid size-14 shrink-0 place-items-center rounded-pill bg-accent-soft text-accent [&_svg]:size-7.5`,children:o}):null,a?(0,n.jsx)(`div`,{className:`section-header-action max-small:w-full max-small:[&_button]:w-full`,children:a}):null]})}function i({label:e,value:r,detail:i,icon:a,tone:o,status:s,valueColor:c,action:l,size:u=`default`}){let d={teal:`text-teal`,purple:`text-accent`,green:`text-green`,orange:`text-orange`,red:`text-red`,accent:`text-accent`}[o||(s===`cooldown`?`orange`:s===`disabled`?`red`:`accent`)]??`text-accent`;return(0,n.jsxs)(`div`,{className:t(`stat-card min-w-0 border border-inner-border rounded-card bg-surface-2`,u===`roomy`?`p-9`:`p-6`),children:[(0,n.jsxs)(`div`,{className:t(`flex items-center justify-between gap-4 font-bold uppercase tracking-label`,u===`roomy`?`text-caption`:`text-micro`,d),children:[(0,n.jsxs)(`span`,{className:`inline-flex items-center gap-4 min-w-0`,children:[a,(0,n.jsx)(`span`,{children:e})]}),l?(0,n.jsx)(`span`,{className:`shrink-0`,children:l}):null]}),(0,n.jsx)(`p`,{className:t(`font-mono tabular-nums font-bold leading-[1.15] mb-0`,u===`roomy`?`text-hero mt-4`:`text-display mt-1`),style:c?{color:c}:void 0,children:r}),(0,n.jsx)(`span`,{className:t(`stat-card-detail line-clamp-2 wrap-anywhere text-text-secondary`,u===`roomy`?`mt-2 text-body`:`text-badge`),children:i})]})}function a({headers:e,children:r,maxHeight:i,onScroll:a,sortKey:o,sortDirection:s,onSort:c,scrollRegion:l=!1,dense:u=!1}){return(0,n.jsx)(`div`,{className:t(`data-table-container`,l&&`scroll-region`),style:i?{maxHeight:i,overflowY:`auto`}:void 0,onScroll:a,children:(0,n.jsxs)(`table`,{className:t(`data-table text-caption`,u&&`text-badge [&_th]:px-4 [&_th]:py-2.5 [&_td]:px-4 [&_td]:py-2.5 [&_th]:text-text-secondary [&_th]:font-semibold [&_th]:normal-case [&_th]:tracking-normal [&_td]:tabular-nums`),children:[(0,n.jsx)(`thead`,{children:(0,n.jsx)(`tr`,{children:e.map(e=>{let r=typeof e==`string`?e:e.key,i=typeof e==`string`?e:e.label,a=typeof e!=`string`&&e.sortable===!0&&c!==void 0,l=o===r;return(0,n.jsx)(`th`,{scope:`col`,"aria-sort":l?s===`asc`?`ascending`:`descending`:void 0,children:a?(0,n.jsxs)(`button`,{type:`button`,onClick:()=>c(r),title:`Sort by ${i}`,className:`inline-flex items-center gap-2 cursor-pointer`,children:[(0,n.jsx)(`span`,{children:i}),(0,n.jsx)(`span`,{"aria-hidden":`true`,className:t(`text-micro`,l?`opacity-100`:`opacity-[0.35]`),children:l?s===`asc`?`▲`:`▼`:`△`})]}):i},r)})})}),(0,n.jsx)(`tbody`,{children:r})]})})}export{r as n,i as r,a as t};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-CXUMngI_.js";import{a as t}from"./toast-CNt_jzO4.js";var n=e();function r({children:e,leading:r,actions:i,density:a=`default`,className:o=``,...s}){return(0,n.jsxs)(`div`,{className:t(`list-row flex items-center gap-6 rounded-control border border-inner-border bg-surface-2 min-w-0 px-7 py-5`,a===`compact`&&`list-row-compact px-5 py-3 rounded-inset gap-4`,o),...s,children:[r?(0,n.jsx)(`div`,{className:`list-row-leading shrink-0`,children:r}):null,(0,n.jsx)(`div`,{className:`list-row-body flex-1 min-w-0 flex flex-col gap-2`,children:e}),i?(0,n.jsx)(`div`,{className:`list-row-actions flex items-center gap-2 shrink-0 flex-wrap`,children:i}):null]})}export{r as t};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e){if(e==null||!Number.isFinite(e))return`—`;if(e<0)return`${Math.round(e)} B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;let i=r===0?0:1;return`${n.toFixed(i)} ${t[r]}`}function t(e){return e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(1)}s`}function n(e){return e==null||!Number.isFinite(e)?`—`:e<1e3?`${Math.round(e)} ms`:`${(e/1e3).toFixed(1)} s`}function r(e,t){return e==null||!Number.isFinite(e)?`—`:Math.round(e).toLocaleString(t)}function i(e,t){return e==null||!Number.isFinite(e)?`—`:e.toLocaleString(t,{maximumFractionDigits:2})}export{t as a,r as i,i as n,n as r,e as t};
|
|
Binary file
|
|
Binary file
|