waygate-open 1.6.16 → 1.6.18

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.
@@ -1 +0,0 @@
1
- .landing .scene{--scene-bg:linear-gradient(168deg, #0a0919 0%, #120e2a 46%, #070611 100%);z-index:0;pointer-events:none;perspective:var(--prism-persp);perspective-origin:50% 46%;background:var(--scene-bg);position:fixed;inset:0;overflow:clip}.landing .rig{transform-style:preserve-3d;transform-origin:50% 46%;will-change:transform;transform:translate3d(calc(var(--cam-x) * .4 + var(--look-x) * 26px), calc(var(--cam-y) * .34 + var(--look-y) * 18px), calc(var(--cam-z) * .2)) rotateX(calc(var(--cam-rx) * .45)) rotateY(calc(var(--cam-ry) * .6)) rotateZ(calc(var(--cam-rz) * .5));position:absolute;inset:0}.landing .rig>*{position:absolute}.landing .tilt{transform-style:preserve-3d;transform-origin:50% 46%;position:absolute;inset:0;transform:rotateX(-7deg)rotate(1.6deg)}.landing .stage{left:var(--prism-anchor-x);top:var(--prism-anchor-y);width:0;height:0;transform-style:preserve-3d;animation:prism-turn var(--prism-turn) linear infinite;position:absolute}@keyframes prism-turn{0%{transform:rotateY(0)}to{transform:rotateY(360deg)}}.landing .pl{width:var(--w);height:var(--h);margin-left:calc(var(--w) * -.5);margin-top:calc(var(--h) * -.5);--tint:var(--iris);opacity:var(--o);backface-visibility:visible;transform:rotateY(var(--a)) translateZ(var(--r)) translateY(var(--y)) rotateZ(var(--z,0deg)) rotateX(var(--x,0deg));background:radial-gradient(36% 24% at 8% 3%, rgba(255, 255, 255, var(--hot,.2)), transparent 68%), linear-gradient(146deg, color-mix(in srgb, var(--bg-surface-3) 58%, transparent) 0%, color-mix(in srgb, var(--bg-code) 44%, transparent) 32%, color-mix(in srgb, var(--bg-page) 30%, transparent) 66%, color-mix(in srgb, var(--bg-page) 10%, transparent) 100%), linear-gradient(170deg, color-mix(in srgb, var(--tint) 18%, transparent) 0%, color-mix(in srgb, var(--tint) 5%, transparent) 36%, transparent 64%);box-shadow:inset 0 1px 0 rgba(255, 255, 255, var(--e,.5)), inset 1px 0 0 rgba(255, 255, 255, calc(var(--e,.5) * .38)), inset -1px 0 0 color-mix(in srgb, var(--tint) 34%, transparent), inset 0 -1px 0 color-mix(in srgb, var(--tint) 16%, transparent), inset 0 0 0 1px color-mix(in srgb, var(--tint) 18%, transparent), 0 0 40px -20px color-mix(in srgb, var(--tint) 48%, transparent);border-radius:2px;position:absolute;top:0;left:0}.landing .pl.soft{filter:blur(var(--dof,var(--prism-dof-mid)))}.landing .pl:before{content:"";background:linear-gradient(180deg, rgba(255, 255, 255, calc(var(--e,.5) * .13)), transparent 28%), linear-gradient(0deg, color-mix(in srgb, var(--tint) 16%, transparent), transparent 20%);position:absolute;inset:0}.landing .pl:after{content:"";mix-blend-mode:screen;background:linear-gradient(112deg, transparent 40%, #ffffff4d 47%, color-mix(in srgb, var(--glow-ice) 62%, transparent) 50%, #ffffff4d 53%, transparent 60%);opacity:0;animation:p-sheen var(--sheen-dur,16s) var(--ease-in-out) infinite;animation-delay:var(--sheen-delay,0s);background-size:300% 100%;position:absolute;inset:0}@keyframes p-sheen{0%{opacity:0;background-position:135% 0}14%{opacity:.85}52%{opacity:0;background-position:-35% 0}to{opacity:0;background-position:-35% 0}}.landing .core{left:var(--prism-anchor-x);top:var(--prism-anchor-y);mix-blend-mode:screen;background:linear-gradient(180deg, transparent 0%, color-mix(in srgb, var(--glow-pale) 38%, transparent) 24%, color-mix(in srgb, var(--glow-white) 92%, transparent) 50%, color-mix(in srgb, var(--glow-frost) 55%, transparent) 62%, color-mix(in srgb, var(--glow-violet) 22%, transparent) 78%, transparent 100%);filter:blur(5px);opacity:.8;width:4px;height:54%;transform:translateY(-50%) translate3d(calc(var(--cam-x) * .3 + var(--look-x) * 14px), calc(var(--cam-y) * .26 + var(--look-y) * 10px), 0);position:absolute}.landing .core:after{content:"";mix-blend-mode:screen;background:radial-gradient(closest-side, color-mix(in srgb, var(--glow-violet) 50%, transparent), color-mix(in srgb, var(--brand-500) 18%, transparent) 44%, transparent 74%);filter:blur(26px);width:720px;height:720px;animation:core-breathe 9s var(--ease-in-out) infinite;margin:-360px 0 0 -360px;position:absolute;top:50%;left:50%}@keyframes core-breathe{0%,to{opacity:.74;transform:scale(1)}50%{opacity:1;transform:scale(1.09)}}.landing .nucleus{left:var(--prism-anchor-x);top:var(--prism-anchor-y);mix-blend-mode:screen;width:15px;height:15px;box-shadow:0 0 22px 7px color-mix(in srgb, var(--glow-cyan) 78%, transparent), 0 0 84px 26px color-mix(in srgb, var(--brand-500) 42%, transparent), 0 0 190px 70px color-mix(in srgb, var(--accent-cyan) 16%, transparent);animation:nucleus-breathe 6.4s var(--ease-in-out) infinite;transform:translate3d(calc(var(--cam-x) * .34 + var(--look-x) * 18px), calc(var(--cam-y) * .3 + var(--look-y) * 12px), 0);background:#fff;border-radius:50%;margin:-7.5px 0 0 -7.5px;position:absolute}@keyframes nucleus-breathe{0%,to{opacity:.82}50%{opacity:1}}.landing .beam{mix-blend-mode:screen;filter:blur(52px);will-change:transform;position:absolute}.landing .beam.b1{background:linear-gradient(180deg, transparent, color-mix(in srgb, var(--glow-cyan) 20%, transparent) 46%, transparent);width:300px;height:170%;transform:rotate(18deg) translate3d(calc(var(--cam-x) * .5), calc(var(--cam-y) * .4), 0);animation:beam-drift 34s var(--ease-in-out) infinite alternate;top:-30%;left:44%}.landing .beam.b2{background:linear-gradient(180deg, transparent, color-mix(in srgb, var(--iris) 26%, transparent) 50%, transparent);width:200px;height:170%;transform:rotate(-13deg) translate3d(calc(var(--cam-x) * .62), calc(var(--cam-y) * .5), 0);animation:beam-drift 46s var(--ease-in-out) infinite alternate-reverse;top:-34%;right:14%}@keyframes beam-drift{to{opacity:.55}}.landing .dust{position:absolute;inset:-10%}.landing .dust i{opacity:0;animation:dust-in 3.2s var(--ease-out) forwards;background:#dce6ff;border-radius:50%;position:absolute}@keyframes dust-in{to{opacity:.22}}.landing .dust.d2 i{background:#cfe6ff}.landing .dust.d1 i{background:#fff}.landing .fog{mix-blend-mode:screen;background:radial-gradient(116% 72% at 50% 46%, transparent 26%, var(--fog-far) 100%);opacity:calc(.14 + var(--fog) * .72);position:absolute;inset:0}.landing .dimmer{background:var(--scene-bg);opacity:calc(1 - var(--scene-dim));pointer-events:none;position:absolute;inset:0}.landing .vignette{background:radial-gradient(124% 90% at 50% 46%, transparent 34%, color-mix(in srgb, var(--bg-band) 56%, transparent) 76%, var(--bg-band) 100%), linear-gradient(94deg, color-mix(in srgb, var(--bg-band) 84%, transparent) 0%, color-mix(in srgb, var(--bg-band) 58%, transparent) 28%, color-mix(in srgb, var(--bg-band) 20%, transparent) 50%, transparent 72%);position:absolute;inset:0}.landing .noise{opacity:.034;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}@media (prefers-reduced-motion:reduce){.landing .stage,.landing .core:after,.landing .nucleus,.landing .beam{animation:none!important}.landing .pl:after{opacity:.34;background-position:46% 0;animation:none!important}.landing .dust i{opacity:.18;animation:none!important}}@media (max-width:900px){.landing .scene{perspective:2000px}.landing .stage,.landing .core,.landing .nucleus{top:31%;left:72%}.landing .tilt{transform-origin:72% 31%}.landing .pl{opacity:calc(var(--o) * .4)}.landing .pl.soft{display:none}.landing .core{opacity:.38}.landing .nucleus{opacity:.5}}.landing,.landing *,.landing :before,.landing :after{box-sizing:border-box}html.relay-landing{scroll-behavior:smooth;-webkit-text-size-adjust:100%}@media (prefers-reduced-motion:reduce){html.relay-landing{scroll-behavior:auto}}.landing{background:var(--bg-page);color:var(--text-secondary);font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;overflow-x:hidden}.landing h1,.landing h2,.landing h3,.landing h4{font-family:var(--font-display);color:var(--text-primary);margin:0;font-weight:700}.landing p{margin:0}.landing a{color:inherit;text-decoration:none}.landing button{font:inherit;color:inherit}.landing code,.landing kbd{font-family:var(--font-mono);font-size:.92em}html.relay-landing ::-webkit-scrollbar{width:10px;height:10px}html.relay-landing ::-webkit-scrollbar-track{background:0 0}html.relay-landing ::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--iris) 22%, transparent);background-clip:content-box;border:2px solid #0000;border-radius:6px}.landing ::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--iris) 38%, transparent);background-clip:content-box}.landing .shell{z-index:1;position:relative}.landing .wrap{width:100%;max-width:var(--maxw);padding-inline:var(--gutter);margin:0 auto}.landing .nav{z-index:40;align-items:center;gap:var(--space-6);padding:18px var(--gutter);transition:background var(--d-panel) var(--ease-out), border-color var(--d-panel) var(--ease-out), backdrop-filter var(--d-panel) var(--ease-out), padding var(--d-panel) var(--ease-out);border-bottom:1px solid #0000;display:flex;position:fixed;top:0;left:0;right:0}.landing .nav.stuck{background:color-mix(in srgb, var(--bg-page) 72%, transparent);border-bottom-color:var(--border-subtle);-webkit-backdrop-filter:blur(16px)saturate(140%);padding-block:12px}.landing .nav .brand{align-items:center;gap:11px;display:flex}.landing .nav .brand b{font-family:var(--font-display);letter-spacing:var(--track-tight);color:var(--text-primary);font-size:15px;font-weight:700}.landing .nav .brand span{font-family:var(--font-mono);letter-spacing:var(--track-eyebrow);color:var(--text-ghost);text-transform:uppercase;font-size:9.5px}.landing .nav-links{align-items:center;gap:26px;margin-left:auto;display:flex}.landing .nav-links a{color:var(--text-muted);transition:color var(--d-hover) var(--ease-out);font-size:13px;position:relative}.landing .nav-links a:hover{color:var(--text-primary)}.landing .nav-links a:after{content:"";background:var(--gradient-brand);transform-origin:0;height:1px;transition:transform var(--d-panel) var(--ease-out);position:absolute;bottom:-5px;left:0;right:0;transform:scaleX(0)}.landing .nav-links a:hover:after{transform:scaleX(1)}.landing .nav-menu-toggle,.landing .mobile-nav{display:none}@media (max-width:860px){.landing .nav-links{display:none}.landing .nav-menu-toggle{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--bg-surface) 66%, transparent);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;justify-content:center;align-items:center;padding:0;display:inline-flex}.landing .nav-menu-toggle:hover{color:var(--text-primary);border-color:var(--border-strong)}.landing .nav-menu-toggle:focus-visible{color:var(--brand-400);box-shadow:0 0 0 3px var(--brand-tint);outline:none}.landing .mobile-nav{top:calc(100% + 8px);left:var(--gutter);right:var(--gutter);border:1px solid var(--border-default);border-radius:var(--radius-md);background:color-mix(in srgb, var(--bg-elevated) 94%, transparent);box-shadow:var(--shadow-float);-webkit-backdrop-filter:blur(16px)saturate(140%);backdrop-filter:blur(16px)saturate(140%);gap:4px;padding:8px;display:grid;position:absolute}.landing .mobile-nav[aria-hidden=true]{display:none}.landing .mobile-nav a{border-radius:var(--radius-sm);color:var(--text-secondary);padding:11px 12px;font-size:13px}.landing .mobile-nav a:hover,.landing .mobile-nav a:focus-visible{color:var(--text-primary);background:var(--brand-tint);outline:none}}.landing .display-1{font-size:var(--fs-display-1);line-height:var(--lh-display);letter-spacing:var(--track-display);font-weight:700}.landing .display-2{font-size:var(--fs-display-2);letter-spacing:var(--track-display);font-weight:700;line-height:1.14}.landing .display-3{font-size:var(--fs-display-3);line-height:var(--lh-title);letter-spacing:var(--track-tight);font-weight:600}.landing .lead{font-size:var(--fs-lead);color:var(--text-muted);max-width:62ch;line-height:1.7}.landing .eyebrow{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--c,var(--accent-cyan));align-items:center;gap:12px;display:inline-flex}.landing .eyebrow:before{content:"";opacity:.5;background:currentColor;width:26px;height:1px}.landing .eyebrow .idx{color:var(--text-ghost)}.landing .mono{font-family:var(--font-mono)}.landing .dim{color:var(--text-ghost)}.landing .btn{border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;height:44px;transition:transform var(--d-tap) var(--ease-out), box-shadow var(--d-hover) var(--ease-out), border-color var(--d-hover) var(--ease-out), background var(--d-hover) var(--ease-out);border:1px solid #0000;align-items:center;gap:9px;padding:0 22px;font-size:14px;font-weight:500;display:inline-flex}.landing .btn:active{transform:translateY(1px)}.landing .btn-primary{background:var(--brand-500);color:#fff;box-shadow:0 8px 26px -8px color-mix(in srgb, var(--brand-500) 70%, transparent)}.landing .btn-primary:hover{background:var(--brand-hover);box-shadow:0 12px 34px -8px color-mix(in srgb, var(--brand-500) 90%, transparent)}.landing .btn-ghost{background:var(--wash-3);color:var(--text-secondary);border-color:var(--border-default)}.landing .btn-ghost:hover{border-color:var(--border-strong);color:var(--text-primary);background:var(--wash-6)}.landing .btn-sm{height:34px;padding:0 15px;font-size:12.5px}.landing .glass{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-xl);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);box-shadow:var(--shadow-float);position:relative;overflow:hidden}.landing .glass:before{content:"";pointer-events:none;background:var(--edge-light);position:absolute;inset:0}.landing .glass-soft{background:var(--glass-bg-soft);-webkit-backdrop-filter:blur(calc(var(--glass-blur) * .6));box-shadow:none}.landing .section{padding-block:clamp(62px,8.4vh,122px);position:relative}.landing .section:before,.landing .strip:before{content:"";z-index:-1;pointer-events:none;background:linear-gradient(180deg, transparent 0%, color-mix(in srgb, var(--bg-band) 84%, transparent) 6%, color-mix(in srgb, var(--bg-band) 88%, transparent) 50%, color-mix(in srgb, var(--bg-band) 84%, transparent) 94%, transparent 100%);position:absolute;inset:0}.landing .sec-head{gap:var(--space-6) var(--space-8);margin-bottom:var(--space-8);grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:end;display:grid}.landing .sec-head .lead{padding-bottom:6px}@media (max-width:900px){.landing .sec-head{grid-template-columns:1fr;align-items:start}}.landing .rule{background:var(--border-subtle);border:0;height:1px;margin:0}.landing .reveal{opacity:0;transition:opacity .9s var(--ease-out), transform .9s var(--ease-out);transition-delay:calc(var(--i,0) * 80ms);transform:translateY(22px)}.landing .reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.landing .reveal{opacity:1!important;transform:none!important}}.landing .rail{z-index:30;flex-direction:column;align-items:center;gap:9px;display:flex;position:fixed;top:50%;right:22px;transform:translateY(-50%)}.landing .rail i{background:var(--border-default);transform-origin:50% 0;width:1px;height:26px;display:block}.landing .rail i.on{background:var(--gradient-brand);box-shadow:0 0 12px 1px color-mix(in srgb, var(--brand-500) 60%, transparent)}@media (max-width:1180px){.landing .rail{display:none}}.landing .code{background:var(--bg-code);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);font-family:var(--font-mono);color:var(--text-tertiary);white-space:pre;padding:18px 20px;font-size:12.5px;line-height:1.9;position:relative;overflow-x:auto;-webkit-mask-image:none}.landing .code .c{color:var(--text-faint)}.landing .code .k{color:var(--accent-cyan)}.landing .code .s{color:var(--signal-live)}.landing .code .v{color:var(--brand-400)}.landing .code .fn{color:var(--text-primary);font-weight:500}.landing .footer{z-index:1;border-top:1px solid var(--border-subtle);background:var(--bg-band);color:var(--text-ghost);padding-block:40px;font-size:12.5px;position:relative}.landing .footer .row{flex-wrap:wrap;align-items:center;gap:14px 28px;display:flex}.landing .footer .row .sp{margin-left:auto}.landing .grid-2{gap:var(--space-5);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.landing .grid-3{gap:var(--space-5);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.landing .grid-4{gap:var(--space-5);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}@media (max-width:1100px){.landing .grid-3,.landing .grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:720px){.landing .grid-2,.landing .grid-3,.landing .grid-4{grid-template-columns:1fr}}.landing .card{background:var(--bg-surface-grad);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);position:relative}.landing .card-2{background:var(--bg-surface-2-grad)}.landing .dot{background:currentColor;border-radius:50%;flex:0 0 7px;width:7px;height:7px;display:inline-block;box-shadow:0 0 10px 1px}.landing .dot-live{animation:dot-pulse 2.6s var(--ease-in-out) infinite}@keyframes dot-pulse{0%,to{box-shadow:0 0 10px 1px}50%{box-shadow:0 0 16px 3px}}.landing .pill{height:22px;font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-tertiary);background:var(--wash-3);border:1px solid var(--border-default);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:0 9px;font-size:11.5px;display:inline-flex}.landing .pill-live{color:var(--signal-live);border-color:var(--signal-live-track);background:color-mix(in srgb, var(--signal-live) 7%, transparent)}.landing .pill-amber{color:var(--warn-amber);border-color:var(--warn-amber-line);background:color-mix(in srgb, var(--warn-amber) 7%, transparent)}.landing .pill-brand{color:var(--brand-400);border-color:color-mix(in srgb, var(--iris) 28%, transparent);background:var(--brand-tint)}.landing .num{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;letter-spacing:var(--track-display);font-weight:700}.landing .unit{color:var(--text-faint);letter-spacing:0;margin-left:3px;font-size:.42em;font-weight:600}@media (prefers-reduced-motion:reduce){.landing .dot-live,.landing .grad-text{animation:none!important}}.landing [id]{scroll-margin-top:104px}.landing .progress{z-index:60;pointer-events:none;height:2px;position:fixed;top:0;left:0;right:0}.landing .progress i{height:100%;transform:scaleX(var(--scroll-p,0));transform-origin:0;background:var(--gradient-brand);box-shadow:0 0 14px 1px color-mix(in srgb, var(--brand-500) 55%, transparent);will-change:transform;display:block}.landing .hero{padding-block:clamp(140px,16vh,196px) clamp(56px,8vh,96px);position:relative}.landing .hero-grid{grid-template-columns:minmax(0,1.55fr) minmax(0,.85fr);align-items:start;gap:clamp(28px,3.6vw,64px);display:grid}.landing .hero-inner{max-width:940px}.landing .hero-side{padding-top:clamp(34px,4.4vh,58px)}@media (max-width:1080px){.landing .hero-grid{grid-template-columns:1fr}.landing .hero-side{display:none}}.landing .hero-badge{background:color-mix(in srgb, var(--signal-live) 7%, transparent);border:1px solid var(--signal-live-track);color:var(--signal-live);font-size:12.5px;font-family:var(--font-mono);letter-spacing:.01em;border-radius:999px;align-items:center;gap:9px;margin-bottom:32px;padding:7px 15px;display:inline-flex}.landing .hero-badge .n{font-variant-numeric:tabular-nums}.landing .hero-title{position:relative}.landing .hero-h1{margin:0}.landing .hero-h1 .mk{font-family:var(--font-mono);letter-spacing:-.03em;font-weight:700}.landing .hero-flip{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.26;filter:blur(.8px);width:100%;height:clamp(44px,5.6vh,72px);position:absolute;top:100%;left:0;overflow:hidden;-webkit-mask-image:linear-gradient(#0000006b 0%,#0000001a 40%,#0000 82%);mask-image:linear-gradient(#0000006b 0%,#0000001a 40%,#0000 82%)}.landing .hero-flip>.hero-h1{transform-origin:50% 100%;width:100%;position:absolute;bottom:100%;left:0;transform:scaleY(-1)}.landing .hero-flip .grad-text{background-position:30% 0;animation:none}.landing .hero-sub{max-width:600px;font-size:var(--fs-lead);color:var(--text-muted);margin-top:clamp(62px,7.6vh,92px);line-height:1.78}.landing .hero-acts{flex-wrap:wrap;gap:14px;margin-top:38px;display:flex}.landing .trust{color:var(--text-faint);font-size:12.5px;font-family:var(--font-mono);letter-spacing:.01em;flex-wrap:wrap;gap:12px 26px;margin-top:28px;display:flex}.landing .trust span{align-items:center;gap:8px;display:inline-flex}.landing .trust span:before{content:"";background:var(--brand-400);opacity:.8;flex:0 0 5px;width:5px;height:5px;transform:rotate(45deg)}.landing .rv-line{display:block;overflow:hidden}.landing .rv-line>span{transition:transform 1.15s var(--ease-out);transition-delay:calc(var(--i,0) * .11s);display:block;transform:translateY(106%)}.landing .reveal.in .rv-line>span{transform:none}@media (prefers-reduced-motion:reduce){.landing .rv-line>span{transform:none!important}}.landing .scroll-cue{left:var(--gutter);font-family:var(--font-mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--text-ghost);opacity:max(0, calc(1 - var(--scroll-p) * 22));align-items:center;gap:12px;font-size:9.5px;transition:opacity .2s linear;display:flex;position:absolute;bottom:34px}.landing .scroll-cue .tick{background:linear-gradient(180deg, var(--border-strong), transparent);width:1px;height:40px;position:relative;overflow:hidden}.landing .scroll-cue .tick:after{content:"";background:var(--accent-cyan);width:1px;height:14px;box-shadow:0 0 8px 1px var(--glow-cyan-mid);animation:cue-run 2.4s var(--ease-in-out) infinite;position:absolute;left:0}@keyframes cue-run{0%{opacity:0;top:-14px}25%{opacity:1}75%{opacity:1}to{opacity:0;top:40px}}@media (max-width:900px){.landing .scroll-cue{display:none}}.landing .access{border-radius:var(--radius-xl);background:linear-gradient(180deg, color-mix(in srgb, var(--bg-section-b) 96%, transparent) 0%, color-mix(in srgb, var(--bg-section-a) 94%, transparent) 100%);padding:20px 22px 22px}.landing .access-h{justify-content:space-between;align-items:center;gap:12px;display:flex}.landing .access-url{background:color-mix(in srgb, var(--bg-band) 62%, transparent);border:1px solid var(--border-default);border-radius:var(--radius-md);align-items:center;gap:12px;margin-top:14px;padding:11px 12px 11px 14px;display:flex}.landing .access-url code{min-width:0;font-family:var(--font-mono);color:var(--accent-cyan);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12.5px;overflow:hidden}.landing .access-url .copy{height:26px;font-family:var(--font-mono);color:var(--text-muted);cursor:pointer;background:var(--wash-4);border:1px solid var(--border-default);border-radius:var(--radius-xs);transition:color var(--d-hover) var(--ease-out), border-color var(--d-hover) var(--ease-out);flex:none;padding:0 10px;font-size:11px}.landing .access-url .copy:hover{color:var(--text-primary);border-color:var(--border-strong)}.landing .access-note{color:var(--text-ghost);margin-top:12px;font-size:12px;line-height:1.7}.landing .kv{margin:18px 0 0;padding:0}.landing .kv>div{border-top:1px solid var(--border-subtle);justify-content:space-between;align-items:baseline;gap:12px;padding:9px 0;display:flex}.landing .kv>div:last-child{border-bottom:1px solid var(--border-subtle)}.landing .kv dt{color:var(--text-muted);font-size:12.5px}.landing .kv dd{font-family:var(--font-mono);color:var(--text-secondary);font-variant-numeric:tabular-nums;margin:0;font-size:12.5px}.landing .panel-wrap{border-radius:var(--radius-2xl);grid-template-columns:minmax(0,1.3fr) minmax(0,.9fr);margin-top:clamp(52px,7vh,88px);display:grid}.landing .panel-left{min-width:0}.landing .winbar{border-bottom:1px solid var(--border-subtle);background:color-mix(in srgb, var(--bg-page) 40%, transparent);align-items:center;gap:8px;padding:12px 14px 12px 18px;display:flex}.landing .winbar>i{border-radius:50%;width:10px;height:10px;display:block}.landing .winbar .fname{font-family:var(--font-mono);color:var(--text-faint);margin-left:10px;font-size:11.5px}.landing .winbar .wtag{border-radius:var(--radius-xs);font-family:var(--font-mono);letter-spacing:.1em;color:var(--text-ghost);background:var(--wash-4);border:1px solid var(--border-subtle);padding:2px 6px;font-size:9.5px}.landing .winbar .wsp{flex:1}.landing .winbar .wbtn{cursor:pointer;height:24px;font-family:var(--font-mono);color:var(--text-muted);background:var(--wash-4);border:1px solid var(--border-subtle);border-radius:var(--radius-xs);transition:color var(--d-hover) var(--ease-out), border-color var(--d-hover) var(--ease-out);padding:0 10px;font-size:10.5px}.landing .winbar .wbtn:hover{color:var(--text-primary);border-color:var(--border-strong)}.landing .panel-code{font-family:var(--font-mono);padding:12px 0 16px;font-size:12.5px;line-height:1.9}.landing .cl{grid-template-columns:46px minmax(0,1fr);padding-right:20px;display:grid}.landing .cl>i{text-align:right;color:var(--text-faint);-webkit-user-select:none;user-select:none;padding-right:16px;font-style:normal}.landing .cl>span{white-space:pre;color:var(--text-tertiary);overflow-x:auto}.landing .cl.hl{background:color-mix(in srgb, var(--brand-500) 8.5%, transparent);box-shadow:inset 2px 0 0 var(--brand-500)}.landing .cl.hl>i{opacity:.72;color:var(--brand-400)}.landing .panel-code .k{color:var(--accent-cyan)}.landing .panel-code .s{color:var(--signal-live)}.landing .panel-code .c{color:var(--text-faint)}.landing .panel-code .fn{color:var(--text-primary);font-weight:500}.landing .panel-right{border-left:1px solid var(--border-subtle);background:color-mix(in srgb, var(--bg-page) 40%, transparent);padding:16px 20px 20px}.landing .pr-head{justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:12px;display:flex}.landing .panel-right h4{font-family:var(--font-mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--text-ghost);font-size:10.5px;font-weight:500}.landing .pr-count{font-family:var(--font-mono);color:var(--text-ghost);font-size:10.5px}.landing .conn{border-top:1px solid var(--border-subtle);align-items:center;gap:10px;padding:12px 0;font-size:12.5px;display:flex}.landing .conn .cname{min-width:0;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.landing .conn .dev{color:var(--text-ghost);font-size:10.5px;font-family:var(--font-mono)}.landing .conn .lat{text-align:right;font-family:var(--font-mono);color:var(--text-faint);font-variant-numeric:tabular-nums;flex:0 0 40px;font-size:10.5px}.landing .panel-metrics{border-top:1px solid var(--border-subtle);grid-template-columns:repeat(3,1fr);gap:14px;margin-top:16px;padding-top:16px;display:grid}.landing .panel-metrics .k{color:var(--text-ghost);margin-bottom:7px;font-size:10.5px}.landing .panel-metrics .v{color:var(--text-primary);font-size:19px}@media (max-width:900px){.landing .panel-wrap{grid-template-columns:1fr}.landing .panel-right{border-left:none;border-top:1px solid var(--border-subtle)}.landing .winbar .wtag,.landing .winbar .wbtn{display:none}}.landing .strip{padding-block:clamp(34px,5vh,52px);position:relative}.landing .strip .cap{color:var(--text-muted);margin-bottom:20px;font-size:13.5px}.landing .strip .cap b{color:var(--text-secondary);font-weight:600}.landing .logos{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px 30px;display:flex}.landing .logos span{font-family:var(--font-display);color:var(--text-faint);letter-spacing:.01em;transition:color var(--d-panel) var(--ease-out);font-size:16px;font-weight:600}.landing .logos span:hover{color:var(--text-tertiary)}.landing .logos span.cn{font-family:var(--font-body);color:var(--text-muted);font-size:15px;font-weight:500}.landing .split{grid-template-columns:440px minmax(0,1fr);align-items:start;gap:clamp(40px,5vw,76px);display:grid}.landing .split-l{position:sticky;top:124px}.landing .split-l .display-2{margin:20px 0 18px;font-size:clamp(26px,2.6vw,40px)}.landing .split-l p{color:var(--text-muted);font-size:14px;line-height:1.8}@media (max-width:980px){.landing .split{grid-template-columns:1fr;gap:32px}.landing .split-l{position:static}}.landing .linelist{margin:0;padding:0;list-style:none}.landing .linelist li{border-top:1px solid var(--border-subtle);gap:20px;padding:28px 0;display:flex}.landing .linelist li:last-child{border-bottom:1px solid var(--border-subtle)}.landing .linelist li:first-child{border-top-color:var(--border-default)}.landing .ll-ico{border-radius:var(--radius-md);background:var(--bg-surface-2-grad);border:1px solid var(--border-default);flex:0 0 40px;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.landing .ll-tx b{color:var(--text-primary);margin-bottom:8px;font-size:15.5px;font-weight:600;display:block}.landing .ll-tx i{color:var(--text-tertiary);font-size:13.5px;font-style:normal;line-height:1.75}.landing .steps{grid-template-columns:repeat(3,1fr);margin:0;padding:0;list-style:none;display:grid}.landing .steps li{padding-right:44px;position:relative}.landing .steps li:before{content:"";background:linear-gradient(90deg, color-mix(in srgb, var(--iris) 34%, transparent) 0%, color-mix(in srgb, var(--iris) 34%, transparent) 36%, var(--glow-cyan-core) 50%, color-mix(in srgb, var(--accent-cyan) 30%, transparent) 64%, color-mix(in srgb, var(--accent-cyan) 30%, transparent) 100%);height:1px;animation:4.6s linear infinite step-flow;animation-delay:calc(var(--i,0) * .55s);background-size:280% 100%;position:absolute;top:23px;left:56px;right:12px}.landing .steps li:after{content:"";background:color-mix(in srgb, var(--iris) 70%, transparent);border-radius:50%;width:5px;height:5px;position:absolute;top:20.5px;left:56px}.landing .steps li:last-child:before,.landing .steps li:last-child:after{display:none}@keyframes step-flow{0%{background-position:140% 0}to{background-position:-140% 0}}.landing .st-n{z-index:1;border-radius:var(--radius-lg);width:46px;height:46px;font-family:var(--font-mono);color:var(--brand-400);background:var(--bg-surface-2-grad);border:1px solid var(--border-default);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;font-size:14px;display:flex;position:relative}.landing .steps h3{color:var(--text-primary);margin:22px 0 10px;font-size:16px;font-weight:600}.landing .steps p{color:var(--text-muted);font-size:13.5px;line-height:1.75}.landing .steps .cmd{font-family:var(--font-mono);color:var(--accent-cyan);background:var(--bg-code);border:1px solid var(--border-default);border-radius:var(--radius-sm);white-space:nowrap;margin-top:16px;padding:10px 12px;font-size:11.5px;overflow-x:auto}@media (max-width:900px){.landing .steps{grid-template-columns:1fr;gap:34px}.landing .steps li{padding-right:0}.landing .steps li:before,.landing .steps li:after{display:none}}.landing .term{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:color-mix(in srgb, var(--bg-band) 66%, transparent);margin-top:clamp(38px,5vh,62px);overflow:hidden}.landing .term-bar{border-bottom:1px solid var(--border-subtle);background:color-mix(in srgb, var(--bg-page) 52%, transparent);font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-faint);align-items:center;gap:9px;padding:12px 18px;font-size:11px;display:flex}.landing .term-tag{color:var(--text-ghost);margin-left:auto}.landing .term-body{font-family:var(--font-mono);padding:15px 20px 17px;font-size:12.5px;line-height:2.05}.landing .tl{color:var(--text-tertiary)}.landing .tl .pr{color:var(--brand-400);margin-right:9px}.landing .tl.out{color:var(--text-muted)}.landing .tl.ok,.landing .tl .hl{color:var(--signal-live)}@media (max-width:720px){.landing .term-body{font-size:11.5px;line-height:1.95}.landing .tl{word-break:break-all}}.landing .cfg{flex-direction:column;padding:22px;display:flex}.landing .cfg h3{margin-bottom:7px;font-size:16px;font-weight:600}.landing .cfg .sub{color:var(--text-faint);font-size:11.5px;font-family:var(--font-mono);white-space:nowrap;text-overflow:ellipsis;margin-bottom:18px;overflow:hidden}.landing .cfg .code{white-space:pre-wrap;overflow-wrap:anywhere;flex:1;font-size:12px;line-height:1.8}.landing .specbar{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);grid-template-columns:repeat(4,1fr);margin-top:22px;display:grid;overflow:hidden}.landing .specbar>div{border-right:1px solid var(--border-subtle);padding:17px 20px}.landing .specbar>div:last-child{border-right:none}.landing .specbar .k{color:var(--text-muted);margin-bottom:9px;font-size:11.5px}.landing .specbar .v{font-family:var(--font-mono);color:var(--text-primary);font-size:14px}@media (max-width:720px){.landing .specbar{grid-template-columns:repeat(2,1fr)}.landing .specbar>div:nth-child(2){border-right:none}.landing .specbar>div:nth-child(-n+2){border-bottom:1px solid var(--border-subtle)}}.landing .cfg-note{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);margin-top:18px;padding:16px 20px}.landing .cfg-note-row{border-bottom:1px solid var(--border-subtle);grid-template-columns:132px 1fr;align-items:baseline;gap:6px 14px;padding:9px 0;display:grid}.landing .cfg-note-row .k{color:var(--text-muted);font-size:12.5px}.landing .cfg-note-row code{font-family:var(--font-mono);color:var(--text-primary);font-size:12.5px}.landing .cfg-note-row .v{color:var(--text-tertiary);grid-column:2;font-size:12px}.landing .cfg-note-row .v b{color:var(--text-primary);font-weight:600}.landing .cfg-note-foot{color:var(--text-tertiary);margin-top:12px;font-size:12px;line-height:1.7}.landing .cfg-note-foot:first-of-type{margin-top:14px}.landing .cfg-note-foot code{font-family:var(--font-mono);color:var(--text-primary);overflow-wrap:anywhere;font-size:11.5px}.landing .cfg-note-foot b{color:var(--text-secondary);font-weight:600}@media (max-width:720px){.landing .cfg-note-row{grid-template-columns:1fr}.landing .cfg-note-row .v{grid-column:1}}.landing .band{background:linear-gradient(180deg, transparent 0%, color-mix(in srgb, var(--bg-page) 62%, transparent) 18%, color-mix(in srgb, var(--bg-page) 62%, transparent) 82%, transparent 100%);position:relative}.landing .status-strip{text-align:center;grid-template-columns:repeat(4,1fr);display:grid}.landing .status-strip>div{padding:6px 12px;position:relative}.landing .status-strip>div+div:before{content:"";background:var(--border-subtle);width:1px;position:absolute;top:12%;bottom:12%;left:0}.landing .status-strip .v{color:var(--text-primary);font-size:clamp(34px,4vw,54px);line-height:1}.landing .status-strip .v.live{color:var(--signal-live)}.landing .status-strip .k{color:var(--text-muted);margin-top:14px;font-size:12.5px}@media (max-width:720px){.landing .status-strip{grid-template-columns:repeat(2,1fr);gap:30px 0}.landing .status-strip>div:nth-child(odd):before{display:none}}.landing .cta{text-align:center;padding-block:clamp(96px,15vh,172px);position:relative}.landing .cta:before{content:"";background:radial-gradient(58% 66% at 50% 50%, color-mix(in srgb, var(--bg-band) 88%, transparent) 0%, color-mix(in srgb, var(--bg-band) 55%, transparent) 46%, transparent 76%);pointer-events:none;position:absolute;inset:0}.landing .cta>.wrap{position:relative}.landing .cta h2{max-width:720px;margin:0 auto}.landing .cta .cmdbox{background:color-mix(in srgb, var(--bg-band) 70%, transparent);border:1px solid var(--border-strong);border-radius:var(--radius-lg);font-family:var(--font-mono);color:var(--signal-live);box-shadow:0 0 0 1px color-mix(in srgb, var(--signal-live) 6%, transparent), 0 24px 60px -34px color-mix(in srgb, var(--signal-live) 50%, transparent);align-items:center;gap:12px;margin:32px auto 26px;padding:15px 28px;font-size:15px;display:inline-flex}.landing .cta .cmdbox .pr{color:var(--text-ghost)}.landing .cmdbox .typing:after{content:"";vertical-align:-2px;background:var(--accent-cyan);width:7px;height:1em;margin-left:3px;animation:1s step-end infinite caret;display:inline-block}@keyframes caret{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.landing .cmdbox .typing:after{animation:none}}.landing .cta p.note{color:var(--text-muted);max-width:620px;margin:0 auto;font-size:14px;line-height:1.8}.landing .cta .acts{flex-wrap:wrap;justify-content:center;gap:14px;margin-top:32px;display:flex}.landing .cta .trust{justify-content:center}.landing .footer{padding-block:72px 40px}.landing .foot-top{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr);gap:44px;display:grid}.landing .foot-brand p{color:var(--text-muted);max-width:340px;margin:20px 0 22px;font-size:13.5px;line-height:1.85}.landing .foot-col h5{color:var(--text-muted);font-size:11.5px;font-weight:500;font-family:var(--font-mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;margin-bottom:18px}.landing .foot-col a{color:var(--text-faint);transition:color var(--d-hover) var(--ease-out);font-size:13px;line-height:2.2;display:block}.landing .foot-col a:hover{color:var(--text-secondary)}.landing .foot-bar{border-top:1px solid var(--border-subtle);color:var(--text-ghost);flex-wrap:wrap;justify-content:space-between;gap:10px 28px;margin-top:56px;padding-top:24px;font-size:12px;display:flex}@media (max-width:900px){.landing .foot-top{grid-template-columns:1fr 1fr}.landing .foot-brand{grid-column:1/-1}}.landing .rail{align-items:flex-end}.landing .rail a{flex-direction:row-reverse;align-items:center;gap:9px;display:flex}.landing .rail a b{font-family:var(--font-mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:#0000;white-space:nowrap;transition:color var(--d-panel) var(--ease-out);font-size:9.5px}.landing .rail a:hover b,.landing .rail a.on b{color:var(--text-faint)}.landing .rail a i{transition:background var(--d-panel) var(--ease-out), box-shadow var(--d-panel) var(--ease-out)}html.relay-landing{overflow-x:hidden}.landing{overflow-x:visible}.landing .nav{height:auto;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0}.landing .nav:before,.landing .nav:after{content:none}.landing .section{padding-inline:0}.landing .section:after{content:none}.landing .eyebrow{margin-bottom:0;font-weight:400}.landing .pill{font-weight:400}.landing .note{background:0 0;border:0;padding:0;display:block}.landing .btn:hover{transform:none}.btn-primary:hover{box-shadow:0 6px 20px -4px color-mix(in srgb, var(--brand-500) 55%, transparent), inset 0 1px 0 #ffffff2e;border-color:color-mix(in srgb, var(--brand-400) 60%, transparent)}.btn-quiet:hover{border-color:var(--border-strong);box-shadow:0 3px 12px -4px #0000004d}.landing h5{margin:revert}.landing .glass{-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);backdrop-filter:blur(var(--glass-blur)) saturate(150%)}.landing .glass-soft{-webkit-backdrop-filter:blur(calc(var(--glass-blur) * .6));backdrop-filter:blur(calc(var(--glass-blur) * .6))}.landing .nav.stuck{-webkit-backdrop-filter:blur(16px)saturate(140%);backdrop-filter:blur(16px)saturate(140%)}.landing .nav{justify-content:normal}.landing .nav-links{color:var(--text-secondary)}.landing .hero>.wrap{z-index:auto;position:static}.landing .note{border-radius:0;gap:normal}.landing .btn{justify-content:normal}
@@ -1 +0,0 @@
1
- import{B as e,N as t,_ as n,i as r,it as i,r as a,tt as o}from"./vendor-befEYGHM.js";import{O as s,_ as c,a as l,c as u,g as d,j as f,k as p,p as m,r as h,v as g,x as _}from"./index-nQeRK3kW.js";import{a as v,c as y,i as b,n as x,r as S,s as C,t as w}from"./Select-G6AhT0TA.js";import{r as T}from"./PageSkeleton-DG-Dj4_9.js";import{n as E,t as D}from"./sharedWindow-FDfq75PI.js";import{t as O}from"./useFx-xcrp_LHB.js";import{n as k,r as A,t as j}from"./ClientMetricTip-C2VuiT4-.js";var M=i(),N=o();function P({navigate:i}){let[o,P]=(0,M.useState)(()=>D()??`today`),F=f(()=>u.overview(o),[o],{cacheKey:`overview:${o}`});O(`overview-${o}-${F.data?`ready`:`pending`}`);let I=F.data,L={today:(()=>{let e=new Date;return e.getHours()*60+e.getMinutes()||1})(),"1h":60,"24h":1440,"7d":10080,"30d":43200},R=I?L[I.window]:null,z=I&&R?I.metrics.requests/R:null,B=I&&R?I.metrics.totalTokens/R:null,V=e=>{if(!I||I.byClient.length===0)return;let t=[...I.byClient].sort((t,n)=>(n[e]??0)-(t[e]??0));return(0,N.jsx)(j,{rows:t,metric:e,windowLabel:s[I.window],total:e===`credits`?I.metrics.creditsUsed:I.metrics.requests,totalCount:t.length})};return(0,N.jsxs)(`div`,{className:`view on`,children:[(0,N.jsx)(C,{title:`概览`,status:I?(0,N.jsxs)(y,{tone:`live`,dot:!0,children:[`本机日志聚合 · `,g(I.generatedAt)]}):null,actions:(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(w,{value:o,options:p,onChange:e=>{E(e),P(e)},width:148}),(0,N.jsxs)(`button`,{type:`button`,className:`btn btn-primary btn-sm`,onClick:()=>i(`keys`),children:[(0,N.jsx)(n,{size:14}),`新建密钥`]})]})}),(0,N.jsx)(`div`,{className:`view-body stack`,children:F.initial&&F.loading?(0,N.jsx)(T,{}):F.error?(0,N.jsx)(v,{children:(0,N.jsx)(x,{kind:`error`,title:`概览数据没取到`,detail:S(F.error),onRetry:F.reload})}):I?(0,N.jsxs)(N.Fragment,{children:[I.alerts.channelReject.count>=I.alerts.channelReject.threshold?(0,N.jsxs)(h,{tone:`warn`,children:[(0,N.jsx)(a,{size:14,"aria-hidden":!0}),`最近 1 小时出现 `,(0,N.jsxs)(`b`,{children:[I.alerts.channelReject.count,` 次`]}),`上游渠道校验拒绝(11128): 请求的 system 提示命中了上游的第三方客户端指纹。本服务会自动改写模板行、被拒时降级重试, 连续失败说明出现了新的指纹变体。请到「请求日志」筛 note 含 upstream_11128 的行排查。`]}):null,I.alerts.credentialInvalid?.count!=null&&I.alerts.credentialInvalid.count>=I.alerts.credentialInvalid.threshold?(0,N.jsxs)(h,{tone:`error`,actions:(0,N.jsx)(`a`,{href:`#/clients`,className:`btn btn-quiet btn-sm`,children:`去提供商管理`}),children:[(0,N.jsx)(a,{size:14,"aria-hidden":!0}),`最近 1 小时出现 `,(0,N.jsxs)(`b`,{children:[I.alerts.credentialInvalid.count,` 次`]}),`上游访问密钥失效: 所有请求将以 502 失败,直到换新为止。`]}):null,(0,N.jsx)(A,{metrics:I.metrics}),(0,N.jsxs)(`div`,{className:`metric-row`,children:[(0,N.jsx)(b,{label:`已消耗积分`,value:m(I.metrics.creditsUsed),detail:I.metrics.creditsUnknownCount>0?`上游实扣 · 另 ${d(I.metrics.creditsUnknownCount)} 条上游未回报,未计入`:`上游实扣 · 全部请求均已回报`,tone:`amber`,icon:(0,N.jsx)(e,{size:14}),tip:V(`credits`),tipPos:`down`}),(0,N.jsx)(b,{label:`平均 RPM`,value:z===null?`—`:d(Math.round(z)),detail:`每分钟请求 · ${s[I.window]}`,tone:`violet`,icon:(0,N.jsx)(t,{size:14}),tip:V(`requests`),tipPos:`down`}),(0,N.jsx)(b,{label:`平均 TPM`,value:B===null?`—`:_(Math.round(B)),detail:`每分钟 tokens · ${s[I.window]}`,tone:`green`,icon:(0,N.jsx)(r,{size:14}),tip:V(`tokens`),tipPos:`down`})]}),(0,N.jsx)(v,{title:`提供商用量摘要`,aside:(0,N.jsxs)(y,{children:[I.byClient.length,` 个提供商 · 按 Token 排序`]}),children:I.byClient.length>0?(0,N.jsx)(`div`,{className:`tbl-scroll`,children:(0,N.jsxs)(`table`,{className:`tbl`,children:[(0,N.jsxs)(`caption`,{className:`sr-only`,children:[`提供商用量摘要,共 `,I.byClient.length,` 个提供商`]}),(0,N.jsx)(`thead`,{children:(0,N.jsxs)(`tr`,{children:[(0,N.jsx)(`th`,{scope:`col`,children:`提供商`}),(0,N.jsx)(`th`,{scope:`col`,className:`r`,children:`请求次数`}),(0,N.jsx)(`th`,{scope:`col`,className:`r`,children:`Token 消耗`}),(0,N.jsx)(`th`,{scope:`col`,className:`r`,children:`消耗积分`}),(0,N.jsx)(`th`,{scope:`col`,className:`r`,children:`Token 占比`}),(0,N.jsx)(`th`,{scope:`col`,children:`分布`})]})}),(0,N.jsx)(`tbody`,{children:[...I.byClient].sort((e,t)=>(t.tokens??0)-(e.tokens??0)).slice(0,6).map(e=>(0,N.jsxs)(`tr`,{children:[(0,N.jsx)(`td`,{className:`td-strong`,children:(0,N.jsx)(l,{content:(0,N.jsx)(k,{row:e}),children:(0,N.jsx)(`span`,{children:e.client??`未归属`})})}),(0,N.jsx)(`td`,{className:`r td-mono`,children:d(e.requests)}),(0,N.jsx)(`td`,{className:`r td-mono`,children:_(e.tokens??0)}),(0,N.jsx)(`td`,{className:`r td-mono`,children:m(e.credits)}),(0,N.jsx)(`td`,{className:`r td-mono`,children:c(e.share)}),(0,N.jsx)(`td`,{children:(0,N.jsx)(`div`,{className:`ov-bar-track`,children:(0,N.jsx)(`div`,{className:`ov-bar-fill`,style:{width:`${Math.max(2,Math.round((e.share??0)*100))}%`}})})})]},e.clientId??e.client??`unknown`))})]})}):(0,N.jsxs)(`div`,{className:`empty-note`,style:{padding:`24px 0`},children:[s[I.window],`没有提供商消耗记录。`]})}),(0,N.jsxs)(v,{title:`模型用量摘要`,aside:(0,N.jsxs)(y,{children:[I.byModel.length,` 个模型 · 按 Token 排序`]}),children:[I.byModel.length>0?(0,N.jsx)(`div`,{className:`tbl-scroll`,children:(0,N.jsxs)(`table`,{className:`tbl`,children:[(0,N.jsxs)(`caption`,{className:`sr-only`,children:[`模型用量摘要,共 `,I.byModel.length,` 个模型`]}),(0,N.jsx)(`thead`,{children:(0,N.jsxs)(`tr`,{children:[(0,N.jsx)(`th`,{scope:`col`,children:`模型`}),(0,N.jsx)(`th`,{scope:`col`,className:`r`,children:`请求次数`}),(0,N.jsx)(`th`,{scope:`col`,className:`r`,children:`Token 消耗`}),(0,N.jsx)(`th`,{scope:`col`,className:`r`,children:`消耗积分`}),(0,N.jsx)(`th`,{scope:`col`,className:`r`,children:`Token 占比`}),(0,N.jsx)(`th`,{scope:`col`,children:`分布`})]})}),(0,N.jsx)(`tbody`,{children:[...I.byModel].sort((e,t)=>(t.tokens??0)-(e.tokens??0)).slice(0,8).map(e=>{let t=e.displayName??e.model??`未知`;return(0,N.jsxs)(`tr`,{children:[(0,N.jsx)(`td`,{className:`td-strong`,children:t}),(0,N.jsx)(`td`,{className:`r td-mono`,children:d(e.requests)}),(0,N.jsx)(`td`,{className:`r td-mono`,children:_(e.tokens??0)}),(0,N.jsx)(`td`,{className:`r td-mono`,children:m(e.credits)}),(0,N.jsx)(`td`,{className:`r td-mono`,children:c(e.share)}),(0,N.jsx)(`td`,{children:(0,N.jsx)(`div`,{className:`ov-bar-track`,children:(0,N.jsx)(`div`,{className:`ov-bar-fill`,style:{width:`${Math.max(2,Math.round((e.share??0)*100))}%`}})})})]},e.model??t)})})]})}):(0,N.jsxs)(`div`,{className:`empty-note`,style:{padding:`24px 0`},children:[s[I.window],`没有模型消耗记录。`]}),(0,N.jsx)(`div`,{className:`footer-note`,children:`这一页只留结论。详细构成去「积分与用量」,逐条请求去「请求日志」。`})]}),(0,N.jsx)(`div`,{className:`footer-note`,style:{marginTop:0},children:I.provenance.note})]}):null})]})}export{P as OverviewPage};
@@ -1 +0,0 @@
1
- import{A as e,E as t,it as n,r,tt as i}from"./vendor-befEYGHM.js";import{O as a,_ as o,a as s,c,g as l,j as u,k as d,p as f,u as p,v as m,x as h}from"./index-nQeRK3kW.js";import{a as g,c as _,n as v,o as y,r as b,s as x,t as S}from"./Select-G6AhT0TA.js";import{a as C}from"./PageSkeleton-DG-Dj4_9.js";import{n as w,t as T}from"./sharedWindow-FDfq75PI.js";import{t as E}from"./useFx-xcrp_LHB.js";import{n as D,r as O,t as k}from"./ClientMetricTip-C2VuiT4-.js";var A=n(),j=i(),M={tokens:`消耗 tokens`,requests:`请求次数`};function N({points:e,metric:t,avg:n}){let[r,i]=(0,A.useState)(null),[a,o]=(0,A.useState)(null),s=(0,A.useRef)(null),c=(0,A.useRef)(null),[u,d]=(0,A.useState)(null);(0,A.useLayoutEffect)(()=>{let t=c.current,n=s.current;if(!t||!n||r===null||e.length===0){d(null);return}let i=()=>{let i=(r+.5)/e.length*n.clientWidth,a=n.getBoundingClientRect(),o=t.getBoundingClientRect(),s=i-(o.left-a.left);d(Math.max(12,Math.min(s,o.width-12)))};return i(),window.addEventListener(`resize`,i),()=>window.removeEventListener(`resize`,i)},[r,t,e.length]);let f=(0,A.useMemo)(()=>e.map((n,r)=>{let i=r>0?e[r-1]:null,a=i?t===`tokens`?n.tokens-i.tokens:n.requests-i.requests:null,o=/T\d{2}$/.test(n.bucket),s=(n.models??[]).slice(0,5).map(e=>`${e.model} ${h(e.tokens)} tokens`).join(`、`),c=a===null?``:` · 较${o?`上一小时`:`昨日`} ${a>0?`增加`:a<0?`减少`:`持平`}${a===0?``:` ${l(Math.abs(a))}`}`;return`${p(n.bucket)} · ${l(n.requests)} 次请求 · ${h(n.tokens)} tokens`+(n.errors>0?` · ${l(n.errors)} 次失败`:``)+(s?` · 模型:${s}`:``)+c}),[e,t]);if(e.length===0)return(0,j.jsx)(`div`,{className:`empty-note`,style:{padding:`24px 0`},children:`该窗口内没有请求记录。`});let m=e.map(e=>t===`tokens`?e.tokens:e.requests),g=Math.max(1,...m),_=l,v=n===null?null:Math.round(Math.min(1,Math.max(0,n/g))*1e4)/1e4,y=Math.ceil(e.length/5),b=a??e.length-1,x=t=>{let n=e.length-1,r;if(t.key===`ArrowRight`)r=Math.min(n,b+1);else if(t.key===`ArrowLeft`)r=Math.max(0,b-1);else if(t.key===`Home`)r=0;else if(t.key===`End`)r=n;else return;t.preventDefault(),o(r),i(r),(s.current?.querySelector(`[data-idx="${r}"]`)??void 0)?.focus()},S=r===null?null:e[r],C=S?/T\d{2}$/.test(S.bucket):!1,w=S&&r!==null&&r>0?e[r-1]:null,T=S&&w?t===`tokens`?S.tokens-w.tokens:S.requests-w.requests:null;return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{className:`avgline`,style:{"--avg":v??0},children:[v===null?null:(0,j.jsxs)(`span`,{className:`avg-row`,children:[(0,j.jsxs)(`span`,{className:`avg-tag`,children:[`日均 `,_(n)]}),(0,j.jsx)(`i`,{className:`avg-rule`})]}),(0,j.jsxs)(`div`,{className:`bars30 js-grow`,ref:s,onKeyDown:x,onMouseLeave:()=>i(null),children:[(0,j.jsxs)(`span`,{className:`grid`,"aria-hidden":`true`,children:[(0,j.jsx)(`i`,{className:`base`}),(0,j.jsx)(`i`,{className:`mid`}),(0,j.jsx)(`i`,{className:`q1`})]}),e.map((n,a)=>{let o=t===`tokens`?n.tokens:n.requests,s=a===e.length-1?`today`:o>=g?`peak`:``,c=n.errors>0,l=f[a];return(0,j.jsx)(`div`,{"data-idx":a,className:`bcol${a===r?` on`:``}`,role:`img`,"aria-label":l,tabIndex:a===b?0:-1,onMouseEnter:()=>i(a),onFocus:()=>i(a),onBlur:()=>i(e=>e===a?null:e),children:(0,j.jsx)(`div`,{className:`b ${s}`.trim()+(c?` err`:``),style:{height:`${Math.max(2,Math.round(o/g*100))}%`},children:c?(0,j.jsx)(`span`,{className:`err-dot`,"aria-hidden":`true`}):null})},n.bucket)}),S?(()=>{let n=r!==null&&e.length>0?(r+.5)/e.length*100:50;return(0,j.jsxs)(`div`,{ref:c,className:`bar-tip${n<12?` tip-left`:n>88?` tip-right`:``}`,style:{"--tip-x":`${n}%`,"--tip-arrow":u===null?void 0:`${u}px`},"aria-hidden":`true`,children:[(0,j.jsxs)(`div`,{className:`bt-head`,children:[(0,j.jsx)(`b`,{children:p(S.bucket)}),r===e.length-1?(0,j.jsx)(`span`,{className:`bt-tag`,children:`最新`}):null]}),(0,j.jsxs)(`div`,{className:`bt-row${t===`tokens`?` hot`:``}`,children:[(0,j.jsx)(`span`,{children:`消耗 tokens`}),(0,j.jsx)(`i`,{children:h(S.tokens)})]}),(S.models??[]).length>0?(0,j.jsx)(`div`,{className:`bt-models`,children:(S.models??[]).map(e=>(0,j.jsxs)(`div`,{className:`bt-model`,children:[(0,j.jsx)(`span`,{className:`bt-model-name`,children:e.model}),(0,j.jsxs)(`i`,{children:[h(e.tokens),(0,j.jsx)(`em`,{children:` · ${S.tokens>0?Math.round(e.tokens/S.tokens*100):0}%`})]})]},e.model))}):null,(0,j.jsxs)(`div`,{className:`bt-row${t===`requests`?` hot`:``}`,children:[(0,j.jsx)(`span`,{children:`请求次数`}),(0,j.jsx)(`i`,{children:l(S.requests)})]}),S.errors>0?(0,j.jsxs)(`div`,{className:`bt-row bt-err`,children:[(0,j.jsx)(`span`,{children:`失败`}),(0,j.jsxs)(`i`,{children:[l(S.errors),(0,j.jsxs)(`em`,{children:[` `,`(`,l(S.requests)===`--`||S.requests===0?`—`:`${(S.errors/S.requests*100).toFixed(1)}%`,`)`]})]})]}):null,T===null?null:(0,j.jsxs)(`div`,{className:`bt-delta${T>0?` up`:T<0?` down`:` flat`}`,children:[`较`,C?`上一小时`:`昨日`,T>0?` ▲`:T<0?` ▼`:` — `,T>0||T<0?l(Math.abs(T)):`持平`]})]})})():null]})]}),(0,j.jsx)(`div`,{className:`axis`,children:e.map((t,n)=>(0,j.jsx)(`span`,{children:n%y===0||n===e.length-1?p(t.bucket):``},t.bucket))})]})}function P({items:e,windowLabel:t}){if(e.length===0)return(0,j.jsxs)(`div`,{className:`empty-note`,children:[t,`没有可拆分的请求。`]});let n=Math.max(1,...e.map(e=>e.value)),r=e=>e?void 0:{fontFamily:`var(--font-body)`};return(0,j.jsx)(`div`,{className:`dist js-stagger js-grow`,children:e.map(e=>(0,j.jsxs)(`div`,{className:`d-row`,children:[e.tip?(0,j.jsx)(s,{content:e.tip,children:(0,j.jsx)(`span`,{className:`d-name`,style:r(e.mono),children:e.label})}):(0,j.jsx)(`span`,{className:`d-name`,style:r(e.mono),children:e.label}),(0,j.jsxs)(`span`,{className:`d-val`,children:[e.format===`credits`?f(e.value):l(e.value),` · `,e.trailing]}),(0,j.jsx)(`span`,{className:`d-track`,children:(0,j.jsx)(`i`,{style:{width:`${Math.max(2,Math.round(e.value/n*100))}%`}})})]},e.key))})}function F({items:e,windowLabel:t}){return e.length===0?(0,j.jsxs)(`div`,{className:`empty-note`,style:{padding:`8px 0`},children:[t,`没有按模型的消耗记录。`]}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`div`,{className:`tbl-scroll`,children:(0,j.jsxs)(`table`,{className:`tbl`,children:[(0,j.jsxs)(`caption`,{className:`sr-only`,children:[`按模型的 token 消耗明细,共 `,e.length,` 个模型`]}),(0,j.jsx)(`thead`,{children:(0,j.jsxs)(`tr`,{children:[(0,j.jsx)(`th`,{scope:`col`,children:`模型`}),(0,j.jsx)(`th`,{scope:`col`,className:`r`,children:`请求次数`}),(0,j.jsx)(`th`,{scope:`col`,className:`r`,children:`Token 消耗`}),(0,j.jsx)(`th`,{scope:`col`,className:`r`,children:`Token 占比`}),(0,j.jsx)(`th`,{scope:`col`,className:`r`,children:`消耗积分`}),(0,j.jsx)(`th`,{scope:`col`,className:`r`,children:`平均单次 Token`})]})}),(0,j.jsx)(`tbody`,{children:e.map(e=>{let t=e.displayName??e.model??`未知模型`;return(0,j.jsxs)(`tr`,{children:[(0,j.jsxs)(`td`,{className:`td-strong`,children:[t,e.tag?(0,j.jsx)(`span`,{className:`mu-tag`,children:e.tag}):null,e.multiplier==null?(0,j.jsx)(s,{content:`接口与本地快照都缺此模型倍率 —— 该行积分按中性倍率估算,不是上游真实计费`,children:(0,j.jsx)(`span`,{className:`mu-unknown`,children:`倍率未知`})}):null]}),(0,j.jsx)(`td`,{className:`r td-mono`,children:l(e.requests)}),(0,j.jsx)(`td`,{className:`r td-mono`,children:h(e.tokens??0)}),(0,j.jsx)(`td`,{className:`r td-mono`,children:o(e.share)}),(0,j.jsx)(`td`,{className:`r td-mono`,children:e.credits===null?(0,j.jsx)(s,{content:e.creditsUnknownCount?`本窗口 ${l(e.creditsUnknownCount)} 条请求上游均未回报单次费用(该上游只在账本给累计值)。真实消耗见上方「积分账本」。`:`上游未回报单次费用。真实消耗见上方「积分账本」。`,children:(0,j.jsx)(`span`,{className:`cred-unknown`,children:`--`})}):f(e.credits)}),(0,j.jsx)(`td`,{className:`r td-mono`,children:e.requests>0?h(Math.round((e.tokens??0)/e.requests)):`--`})]},e.model??t)})})]})}),(0,j.jsxs)(`div`,{className:`footer-note`,children:[`平均单次 = Token 消耗 ÷ 请求次数。接口不提供按模型的耗时,「较昨日」与「本计费周期」也无对应字段 —— 这三样一律留空而不是补一个看着合理的数。`,(0,j.jsx)(`br`,{}),`标着`,(0,j.jsx)(`b`,{children:`「倍率未知」`}),`的行,是 /v3/config 接口与本地快照都没有的模型:`,(0,j.jsx)(`b`,{children:`该行积分是按中性倍率估算的,不是上游真实计费`}),`。`]})]})}var I={ok:`额度接口正常`,quota_endpoint_not_configured:`未配置额度端点`,quota_endpoint_error:`额度端点拉取失败`};function L({quota:n,provenance:i,windowLabel:a}){let o=n.available&&n.remain!==null;return(0,j.jsxs)(g,{title:`配额数据来源`,aside:(0,j.jsx)(_,{tone:n.available?`live`:`amber`,dot:!0,children:I[n.reason]}),children:[(0,j.jsxs)(`div`,{className:`src-grid`,children:[(0,j.jsxs)(`div`,{className:`src-col`,children:[(0,j.jsxs)(`div`,{className:`src-head`,children:[(0,j.jsx)(t,{size:13,"aria-hidden":!0}),`来自上游额度接口`,(0,j.jsx)(`span`,{className:`tag tag-live`,children:`官方口径`})]}),(0,j.jsxs)(`ul`,{children:[(0,j.jsxs)(`li`,{children:[(0,j.jsx)(`b`,{children:`剩余积分`}),(0,j.jsx)(`i`,{children:`quota.remain`})]}),(0,j.jsxs)(`li`,{children:[(0,j.jsx)(`b`,{children:`总量`}),(0,j.jsx)(`i`,{children:`quota.total`})]}),(0,j.jsxs)(`li`,{children:[(0,j.jsx)(`b`,{children:`重置时间`}),(0,j.jsx)(`i`,{children:`quota.resetAt`})]})]}),(0,j.jsx)(`div`,{className:`src-state`,children:o?n.stale?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(r,{size:13,"aria-hidden":!0}),`上次拉取失败,当前显示的是上一次成功值(不会清空)。`]}):`已接入,随配额端点轮询刷新。`:(0,j.jsxs)(j.Fragment,{children:[`未接入 —— 上面三项显示 `,(0,j.jsx)(`i`,{children:`--`}),`。服务端不做估算,前端更不会替它编一个。`]})})]}),(0,j.jsxs)(`div`,{className:`src-col`,children:[(0,j.jsxs)(`div`,{className:`src-head`,children:[(0,j.jsx)(e,{size:13,"aria-hidden":!0}),`本机按请求累计`,(0,j.jsx)(`span`,{className:`tag tag-off`,children:`非官方口径`})]}),(0,j.jsxs)(`ul`,{children:[(0,j.jsxs)(`li`,{children:[(0,j.jsx)(`b`,{children:`已消耗积分`}),(0,j.jsx)(`i`,{children:`仅统计经本服务转发的请求,按上游实扣累加(官方客户端直连不计入)`})]}),(0,j.jsxs)(`li`,{children:[(0,j.jsxs)(`b`,{children:[a,`趋势`]}),(0,j.jsx)(`i`,{children:`本机日志按天聚合`})]}),(0,j.jsxs)(`li`,{children:[(0,j.jsx)(`b`,{children:`按模型 / 按提供商消耗`}),(0,j.jsx)(`i`,{children:`同一次聚合的一体两面`})]})]}),(0,j.jsx)(`div`,{className:`src-state`,children:`这些数即时产生,不等额度接口 —— 也正是它和「剩余积分」会对不齐的原因。`})]})]}),n.message?(0,j.jsx)(`div`,{className:`footer-note`,children:n.message}):null,(0,j.jsx)(`div`,{className:`footer-note`,children:i.note}),(0,j.jsxs)(`div`,{className:`footer-note`,children:[`官方额度接口按 `,(0,j.jsx)(`span`,{className:`code-chip`,children:`quota.pollSeconds`}),`(默认 `,(0,j.jsx)(`b`,{children:`30 秒`}),`)轮询, 所以「剩余积分」最多滞后 30 秒;本机累计的消耗是即时的。 两者最多相差 `,(0,j.jsx)(`b`,{children:`30 秒内的消耗量`}),` —— 这是取样时刻不同,不是账对不上。 来源标记:已消耗积分 `,(0,j.jsx)(`span`,{className:`code-chip`,children:i.creditsUsed}),` · `,`剩余积分 `,(0,j.jsx)(`span`,{className:`code-chip`,children:i.quotaRemain}),`。`]})]})}var R=`today`,z={today:null,"1h":null,"24h":null,"7d":7,"30d":30};function B(){let[e,t]=(0,A.useState)(()=>T()??R),n=u(()=>c.overview(e),[e],{cacheKey:`overview:${e}`});E(`usage-${e}-${n.data?`ready`:`pending`}`);let[r,i]=(0,A.useState)(`tokens`),s=n.data,p=z[e],I=s&&p?s.metrics.creditsUsed/p:null,B=s&&p?s.metrics.requests/p:null,V=s&&p?s.metrics.totalTokens/p:null,H=s?[...s.byModel].sort((e,t)=>(t.tokens??0)-(e.tokens??0)):[],U=s?[...s.byClient].sort((e,t)=>(t.tokens??0)-(e.tokens??0)):[],W=s&&s.quota.available&&s.quota.remain!==null&&I!==null&&I>0?Math.floor(s.quota.remain/I):null,G=s?s.quota.available?I===null||I<=0?`${a[s.window]}无消耗记录`:`按日均 ${f(I)} 积分估算`:`需要额度接口`:void 0,K=e=>{if(!s||s.byClient.length===0)return;let t=[...s.byClient].sort((t,n)=>(n[e]??0)-(t[e]??0));return(0,j.jsx)(k,{rows:t,metric:e,windowLabel:a[s.window],total:e===`credits`?s.metrics.creditsUsed:e===`tokens`?s.metrics.totalTokens:s.metrics.requests,totalCount:t.length})};return(0,j.jsxs)(`div`,{className:`view on`,children:[(0,j.jsx)(x,{title:`积分与用量`,status:s?(0,j.jsxs)(_,{tone:`live`,dot:!0,children:[a[s.window],` · `,m(s.generatedAt)]}):null,actions:(0,j.jsx)(S,{value:e,options:d,onChange:e=>{w(e),t(e)},width:148})}),(0,j.jsx)(`div`,{className:`view-body stack`,children:n.initial&&n.loading?(0,j.jsx)(C,{}):n.error?(0,j.jsx)(g,{children:(0,j.jsx)(v,{kind:`error`,title:`用量数据没取到`,detail:b(n.error),onRetry:n.reload})}):s?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(O,{metrics:s.metrics}),(0,j.jsx)(y,{items:[{label:`${a[s.window]}消耗`,value:f(s.metrics.creditsUsed),detail:`经本服务转发 · 上游实扣累计`,tip:K(`credits`),tipPos:`down`},{label:`${a[s.window]}请求`,value:l(s.metrics.requests),detail:`${l(s.metrics.activeClients)} 个密钥活跃`,tip:K(`requests`),tipPos:`down`},...I===null?[{label:`本窗口总 tokens`,value:h(s.metrics.totalTokens),detail:`输入 ${h(s.metrics.promptTokens)} · 输出 ${h(s.metrics.completionTokens)}`,tip:K(`tokens`),tipPos:`down`}]:[{label:`日均消耗`,value:f(I),detail:`${a[s.window]}消耗 ÷ ${p} 天`,tip:K(`credits`),tipPos:`down`},{label:`按当前速度可用天数`,value:W===null?`—`:l(W),detail:G,tone:s.quota.available?void 0:`amber`}]]}),(0,j.jsx)(g,{title:`${a[s.window]}趋势`,aside:(0,j.jsxs)(`span`,{className:`panel-aside-row`,children:[(0,j.jsx)(`span`,{className:`seg-tabs`,role:`group`,"aria-label":`趋势口径`,children:[`tokens`,`requests`].map(e=>(0,j.jsx)(`button`,{type:`button`,className:r===e?`on`:``,"aria-pressed":r===e,onClick:()=>i(e),children:e===`tokens`?`Token`:`请求数`},e))}),(0,j.jsxs)(_,{children:[`单位:`,M[r],` `,e===`1h`||e===`24h`||e===`today`?`/ 小时`:`/ 天`]})]}),padded:!1,children:(0,j.jsx)(`div`,{style:{padding:`0 20px 18px`},children:(0,j.jsx)(N,{points:s.trend,metric:r,avg:r===`tokens`?V:B})})}),(0,j.jsx)(g,{title:`按模型消耗明细`,aside:(0,j.jsx)(_,{children:`按 Token 排序`}),padded:!1,children:(0,j.jsx)(`div`,{style:{padding:`0 20px 18px`},children:(0,j.jsx)(F,{items:H,windowLabel:a[s.window]})})}),(0,j.jsxs)(g,{title:`按提供商消耗`,aside:(0,j.jsx)(_,{children:`按 Token 排序`}),children:[(0,j.jsx)(P,{windowLabel:a[s.window],items:U.map(e=>({key:e.clientId??`—`,label:e.client??`未识别`,value:e.tokens??0,format:`int`,trailing:`${o(e.share)} · ${f(e.credits)} 积分 · ${l(e.requests)} 次`,tip:(0,j.jsx)(D,{row:e})}))}),(0,j.jsx)(`div`,{className:`footer-note`,children:`「未识别」是正常的识别分支,不是错误 —— 没绑定密钥又没匹配到特征时归到这里。`})]}),(0,j.jsx)(L,{quota:s.quota,provenance:s.provenance,windowLabel:a[s.window]})]}):null})]})}export{B as UsagePage};