ccgauge 0.1.0 → 0.2.0
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +55 -55
- package/.next/standalone/.next/app-path-routes-manifest.json +8 -8
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +3 -3
- package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/blocks/route.js +1 -1
- package/.next/standalone/.next/server/app/api/blocks/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/pricing/route.js +1 -1
- package/.next/standalone/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/scan/route.js +1 -1
- package/.next/standalone/.next/server/app/api/scan/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/usage/route.js +1 -1
- package/.next/standalone/.next/server/app/api/usage/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/models/page.js +2 -2
- package/.next/standalone/.next/server/app/models/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/models/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/page.js +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/[id]/page.js +2 -2
- package/.next/standalone/.next/server/app/projects/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page.js +2 -2
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/sessions/[id]/page.js +2 -2
- package/.next/standalone/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/sessions/page.js +2 -2
- package/.next/standalone/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/usage/page.js +2 -2
- package/.next/standalone/.next/server/app/usage/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/usage/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +8 -8
- package/.next/standalone/.next/server/chunks/116.js +1 -1
- package/.next/standalone/.next/server/chunks/144.js +21 -0
- package/.next/standalone/.next/server/chunks/328.js +1 -0
- package/.next/standalone/.next/server/chunks/508.js +1 -0
- package/.next/standalone/.next/server/chunks/930.js +2 -2
- package/.next/standalone/.next/server/functions-config-manifest.json +4 -4
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/static/chunks/327-e20abd872315fef4.js +1 -0
- package/.next/standalone/.next/static/chunks/app/_not-found/{page-7673b5ac2a6b0f9e.js → page-41dcfc1f77804c54.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/layout-b79aa5837ed28479.js +1 -0
- package/.next/standalone/.next/static/chunks/app/models/{page-5e67aa3f2cf52ce0.js → page-f5bc9e42fd99f1fa.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/{page-a10e61d14cef6873.js → page-bebe32a605b907bc.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/projects/[id]/page-d11fdad7ed247804.js +1 -0
- package/.next/standalone/.next/static/chunks/app/projects/page-234a446af5011898.js +1 -0
- package/.next/standalone/.next/static/chunks/app/sessions/[id]/page-d11fdad7ed247804.js +1 -0
- package/.next/standalone/.next/static/chunks/app/sessions/page-234a446af5011898.js +1 -0
- package/.next/standalone/.next/static/chunks/app/settings/page-a9922bc0df226b45.js +1 -0
- package/.next/standalone/.next/static/chunks/app/usage/page-8841853999af6b39.js +1 -0
- package/.next/standalone/.next/static/chunks/main-app-f109f05b87bf48c1.js +1 -0
- package/.next/standalone/.next/static/css/1853d325765daf80.css +3 -0
- package/.next/standalone/package.json +2 -2
- package/.next/standalone/server.js +1 -1
- package/README.md +24 -56
- package/README.zh-CN.md +23 -55
- package/bin/cli.mjs +6 -6
- package/package.json +2 -2
- package/.next/standalone/.next/server/chunks/204.js +0 -21
- package/.next/standalone/.next/server/chunks/212.js +0 -1
- package/.next/standalone/.next/static/chunks/327-bd5c008a8d095a96.js +0 -1
- package/.next/standalone/.next/static/chunks/app/layout-39d16cd1c7e3ab9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/projects/[id]/page-7a8f3918f5e04708.js +0 -1
- package/.next/standalone/.next/static/chunks/app/projects/page-316e2d12f1d2d345.js +0 -1
- package/.next/standalone/.next/static/chunks/app/sessions/[id]/page-7a8f3918f5e04708.js +0 -1
- package/.next/standalone/.next/static/chunks/app/sessions/page-316e2d12f1d2d345.js +0 -1
- package/.next/standalone/.next/static/chunks/app/settings/page-60f64e8f728d39ce.js +0 -1
- package/.next/standalone/.next/static/chunks/app/usage/page-ebd4b1f44eb68921.js +0 -1
- package/.next/standalone/.next/static/chunks/main-app-7bfaffb06750059f.js +0 -1
- package/.next/standalone/.next/static/css/e24bab5baa9273ba.css +0 -3
- /package/.next/standalone/.next/static/{Eha40QJ9Gc01FvsqQomro → kSxC61RuI0if1xBcXSx-q}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{Eha40QJ9Gc01FvsqQomro → kSxC61RuI0if1xBcXSx-q}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[327],{22106:(e,t,s)=>{s.d(t,{BC:()=>g,P6:()=>p,PJ:()=>m,R8:()=>l,az:()=>c,cn:()=>i,jh:()=>a,l7:()=>r,om:()=>u,r6:()=>d});var o=s(53125),n=s(15269);function i(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,n.QP)((0,o.$)(t))}function a(e){return Number.isFinite(e)?e>=1e9?(e/1e9).toFixed(2)+"B":e>=1e6?(e/1e6).toFixed(2)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":new Intl.NumberFormat("en-US",{maximumFractionDigits:0}).format(e):"0"}function c(e,t){var s,o;return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:null!=(s=null==t?void 0:t.minFrac)?s:2,maximumFractionDigits:null!=(o=null==t?void 0:t.maxFrac)?o:2}).format(e)}function r(e){return 0===e?"$0":e<.01?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:4,maximumFractionDigits:6}).format(e):c(e)}function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Number.isFinite(e)?"".concat((100*e).toFixed(t),"%"):"0%"}function u(e){let t="string"==typeof e||"number"==typeof e?new Date(e):e,s=Date.now()-t.getTime();if(s<0)return"just now";let o=Math.floor(s/1e3);if(o<60)return"".concat(o,"s ago");let n=Math.floor(o/60);if(n<60)return"".concat(n,"m ago");let i=Math.floor(n/60);if(i<24)return"".concat(i,"h ago");let a=Math.floor(i/24);if(a<7)return"".concat(a,"d ago");let c=Math.floor(a/7);if(c<5)return"".concat(c,"w ago");let r=Math.floor(a/30);return r<12?"".concat(r,"mo ago"):"".concat(Math.floor(a/365),"y ago")}function d(e){let t="string"==typeof e||"number"==typeof e?new Date(e):e;if(Number.isNaN(t.getTime()))return"";let s=t.getFullYear(),o=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return"".concat(s,"-").concat(o,"-").concat(n," ").concat(i,":").concat(a)}function m(e){if(!e)return"(unknown)";let t=e.replace(/\/+$/,"").split("/");return t[t.length-1]||e}function g(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return e?e.replace(/-/g,"").slice(0,t):""}function p(e){if(!e)return"(unknown)";let t=e.replace(/-(\d{8})$/,"").replace(/^(vertex_ai|bedrock|anthropic)\//,""),s=(t=t.replace(/^claude-/,"")).split("-");if(s.length>=2){let e=s[0],t=s.slice(1).join(".");return h(e)+" "+t}return h(t.replace(/-/g," "))}function h(e){return e.replace(/\b\w/g,e=>e.toUpperCase())}},46522:(e,t,s)=>{s.d(t,{Xn:()=>n,YZ:()=>o,nA:()=>a});let o=["en","zh"],n="en",i={en:{"brand.tagline":"claude code dashboard","nav.overview":"Overview","nav.usage":"Usage","nav.sessions":"Sessions","nav.projects":"Projects","nav.models":"Models","nav.settings":"Settings","nav.localBadge":"local","common.requests":"requests","common.tokens":"tokens","common.cost":"Cost","common.savedViaCache":"Saved {amount} via cache","common.savedTodayViaCache":"Saved {amount} today","common.live":"live","common.allModels":"All","common.allProjects":"All","common.unknown":"(unknown)","common.session":"Session","common.sessions":"sessions","common.projects":"projects","common.req":"req","common.day":"day","common.days":"days","common.activity":"activity","common.fallbackPrice":"fallback price","common.thinking":"thinking","common.lastActivity":"last activity","common.empty.title":"No usage data yet","common.empty.desc":"Open Claude Code, send a message, then refresh.","common.refresh":"Refresh","common.search":"Search…","common.searchPlaceholder":"Search model, project, session, tool…","common.exportCsv":"Export CSV","common.rows":"{count} rows","common.prev":"‹ Prev","common.next":"Next ›","common.first":"\xab","common.last":"\xbb","common.pageOf":"Page {page} of {total}","common.allSessions":"← All sessions","common.allProjectsLink":"← All projects","common.noMatchingRows":"No matching rows","range.today":"Today","range.7d":"7d","range.30d":"30d","range.90d":"90d","range.all":"All","gran.hour":"Hour","gran.day":"Day","gran.week":"Week","gran.month":"Month","overview.title":"Overview","overview.subtitle":"{count} requests across {files} files \xb7 scan in {ms}ms","overview.subtitle.empty":"Scanned {dirs} directory(ies). Open Claude Code, send a message, then refresh.","overview.empty.title":"No usage data yet","overview.kpi.tokensToday":"Tokens today","overview.kpi.costToday":"Cost today","overview.kpi.thisMonth":"This month","overview.kpi.cacheHit":"Cache hit rate","overview.kpi.topModel":"Top model","overview.kpi.activeSessions":"Sessions today","overview.kpi.activeSessions.hint":"{count} project(s)","overview.kpi.thisMonth.hint":"{tokens} tokens \xb7 {req} req","overview.kpi.tokensToday.hint":"{count} requests","overview.kpi.topModel.hint":"{pct} of cost this month","overview.kpi.cacheHit.hint":"Saved {amount} today","overview.delta.title":"vs yesterday","overview.trend.title":"Token usage trend","overview.trend.desc":"Last 30 days \xb7 stacked by token type","overview.trend.activeDays":"{n} day with activity","overview.trend.activeDays.plural":"{n} days with activity","overview.costByModel.title":"Cost by model","overview.costByModel.desc":"This month, sorted by spend","block.title":"Active 5h block","block.remaining":"remaining","block.elapsed":"{pct}% elapsed","block.tokensSuffix":"tokens","block.spentSoFar":"Spent so far","block.burnPerMin":"Burn / min","block.projectedTotal":"Projected total","block.requests":"Requests","block.empty":"No active block","block.emptyDesc":"Send a message in Claude Code to start one.","chart.legend.input":"Input","chart.legend.output":"Output","chart.legend.cacheRead":"Cache read","chart.legend.cacheWrite":"Cache write","chart.tooltip.total":"Total","chart.tooltip.cost":"Cost","chart.tooltip.requests":"Requests","chart.empty":"No data in this range","chart.empty.short":"No data","usage.title":"Usage","usage.subtitle":"{count} requests in selected range","usage.kpi.totalTokens":"Total tokens","usage.kpi.totalCost":"Total cost","usage.kpi.cacheSaved":"Cache saved","usage.kpi.cacheHit":"Cache hit","usage.trend":"Trend","usage.trend.gran":"Granularity: {gran}","usage.requests.title":"Requests","usage.requests.desc":"Detailed request log; click a header to sort","usage.col.time":"Time","usage.col.model":"Model","usage.col.project":"Project","usage.col.session":"Session","usage.col.input":"Input","usage.col.output":"Output","usage.col.cacheRead":"Cache R","usage.col.cacheWrite":"Cache W","usage.col.cost":"Cost","usage.col.tools":"Tools","filter.modelLabel":"Model","filter.projectLabel":"Project","filter.modelAll":"Model: All","filter.projectAll":"Project: All","filter.modelSingle":"Model: {value}","filter.projectSingle":"Project: {value}","filter.modelMulti":"Model: {count}","filter.projectMulti":"Project: {count}","filter.clearAll":"Clear all","filter.noOptions":"No options","sessions.title":"Sessions","sessions.subtitle":"{count} sessions \xb7 sorted by most recent activity","sessions.col.session":"Session","sessions.col.project":"Project","sessions.col.models":"Model(s)","sessions.col.requests":"Requests","sessions.col.tokens":"Tokens","sessions.col.cost":"Cost","sessions.col.duration":"Duration","sessions.col.lastActivity":"Last activity","sessions.untitled":"Session {hash}","sessions.empty":"No sessions yet","session.kpi.requests":"Requests","session.kpi.totalTokens":"Total tokens","session.kpi.cost":"Cost","session.kpi.duration":"Duration","session.timeline.title":"Message timeline","session.timeline.desc":"In order; newest at the bottom","session.perMessage.title":"Per-message tokens","session.modelsInSession":"Models in this session","session.modelLine":"{requests} req \xb7 {tokens} tokens","session.token.in":"in","session.token.out":"out","session.token.cacheR":"cache r","session.token.cacheW":"cache w","projects.title":"Projects","projects.subtitle":"{count} projects \xb7 sorted by spend","projects.empty":"No projects yet","projects.stat.sessions":"Sessions","projects.stat.requests":"Requests","projects.stat.tokens":"Tokens","project.activity":"Activity (last 30 days)","project.sessions.title":"Sessions ({count})","models.title":"Models","models.subtitle":"{count} model(s) used in total","models.empty":"No model usage yet","models.share.cost":"Cost share","models.share.tokens":"Tokens share","models.share.cacheHit":"Cache hit","models.field.requests":"Requests","models.field.savedByCache":"Saved by cache","models.field.input1M":"Input / 1M","models.field.output1M":"Output / 1M","models.field.cacheRead1M":"Cache read / 1M","models.field.pctOfTotal":"{pct} of total spend \xb7 {tokens} tokens","models.eachTrend":"Combined trend (last 30 days)","settings.title":"Settings","settings.subtitle":"Data sources, pricing, and behavior","settings.dataSources.title":"Data sources","settings.dataSources.desc":"ccdsb scans these locations for JSONL files","settings.dataSources.active":"active","settings.dataSources.notPresent":"not present","settings.dataSources.envHint":"Override with {env1} or {env2} environment variables (the dashboard appends {appendix}).","settings.rescan":"Rescan now","settings.rescanning":"Rescanning…","settings.scanStats.title":"Scan stats","settings.scanStats.files":"Files scanned","settings.scanStats.records":"Records parsed","settings.scanStats.assistant":"Assistant records (deduped)","settings.scanStats.duration":"Scan duration","settings.pricing.title":"Pricing table","settings.pricing.desc":"USD per 1M tokens \xb7 built-in snapshot, fuzzy match for date-suffixed model names","settings.pricing.col.model":"Model","settings.pricing.col.input":"Input","settings.pricing.col.output":"Output","settings.pricing.col.write5m":"Cache write 5m","settings.pricing.col.write1h":"Cache write 1h","settings.pricing.col.read":"Cache read","settings.preferences.title":"Preferences","settings.preferences.language":"Language","settings.preferences.theme":"Theme","settings.theme.light":"Light","settings.theme.dark":"Dark","settings.theme.system":"System","settings.about.title":"About","settings.about.subtitle":"Version {version} \xb7 MIT licensed","settings.about.line1":"Fully local: data never leaves your machine; no telemetry, no network calls.","settings.about.line2":"Read-only: ccdsb only reads JSONL files, never writes back to ~/.claude.","settings.about.line3":'Cache: scan results are memoized for 5s; click "Rescan" to force a fresh read.',"settings.about.line4":"Stop with Ctrl+C in the terminal that started ccdsb.","lang.label":"Language","lang.en":"English","lang.zh":"中文","theme.label":"Theme"},zh:{"brand.tagline":"Claude Code 用量看板","nav.overview":"概览","nav.usage":"用量","nav.sessions":"会话","nav.projects":"项目","nav.models":"模型","nav.settings":"设置","nav.localBadge":"本地","common.requests":"次请求","common.tokens":"tokens","common.cost":"花费","common.savedViaCache":"通过缓存节省 {amount}","common.savedTodayViaCache":"今日缓存节省 {amount}","common.live":"进行中","common.allModels":"全部","common.allProjects":"全部","common.unknown":"(未知)","common.session":"会话","common.sessions":"个会话","common.projects":"个项目","common.req":"请求","common.day":"天","common.days":"天","common.activity":"活跃","common.fallbackPrice":"使用兜底单价","common.thinking":"思考","common.lastActivity":"最近活跃","common.empty.title":"暂无用量数据","common.empty.desc":"打开 Claude Code 发送一条消息后刷新本页。","common.refresh":"刷新","common.search":"搜索…","common.searchPlaceholder":"搜索模型 / 项目 / 会话 / 工具…","common.exportCsv":"导出 CSV","common.rows":"{count} 行","common.prev":"‹ 上一页","common.next":"下一页 ›","common.first":"\xab","common.last":"\xbb","common.pageOf":"第 {page} / {total} 页","common.allSessions":"← 返回会话列表","common.allProjectsLink":"← 返回项目列表","common.noMatchingRows":"没有匹配的记录","range.today":"今天","range.7d":"7 天","range.30d":"30 天","range.90d":"90 天","range.all":"全部","gran.hour":"小时","gran.day":"天","gran.week":"周","gran.month":"月","overview.title":"概览","overview.subtitle":"{count} 次请求,覆盖 {files} 个文件 \xb7 扫描耗时 {ms}ms","overview.subtitle.empty":"已扫描 {dirs} 个目录。打开 Claude Code 发一条消息后刷新本页。","overview.empty.title":"暂无用量数据","overview.kpi.tokensToday":"今日 tokens","overview.kpi.costToday":"今日花费","overview.kpi.thisMonth":"本月累计","overview.kpi.cacheHit":"缓存命中率","overview.kpi.topModel":"主力模型","overview.kpi.activeSessions":"今日会话","overview.kpi.activeSessions.hint":"涉及 {count} 个项目","overview.kpi.thisMonth.hint":"{tokens} tokens \xb7 {req} 次请求","overview.kpi.tokensToday.hint":"{count} 次请求","overview.kpi.topModel.hint":"本月成本占比 {pct}","overview.kpi.cacheHit.hint":"今日缓存节省 {amount}","overview.delta.title":"相比昨日","overview.trend.title":"Token 用量趋势","overview.trend.desc":"近 30 天 \xb7 按 token 类型堆叠","overview.trend.activeDays":"{n} 天有数据","overview.trend.activeDays.plural":"{n} 天有数据","overview.costByModel.title":"按模型成本分布","overview.costByModel.desc":"本月,按花费排序","block.title":"当前 5h block","block.remaining":"剩余","block.elapsed":"已用 {pct}%","block.tokensSuffix":"tokens","block.spentSoFar":"已花费","block.burnPerMin":"每分钟消耗","block.projectedTotal":"预计总花费","block.requests":"请求数","block.empty":"当前无活跃 block","block.emptyDesc":"在 Claude Code 中发送消息会启动一个新 block。","chart.legend.input":"输入","chart.legend.output":"输出","chart.legend.cacheRead":"缓存读取","chart.legend.cacheWrite":"缓存写入","chart.tooltip.total":"合计","chart.tooltip.cost":"花费","chart.tooltip.requests":"请求数","chart.empty":"区间内无数据","chart.empty.short":"暂无数据","usage.title":"用量明细","usage.subtitle":"当前筛选范围内 {count} 次请求","usage.kpi.totalTokens":"总 tokens","usage.kpi.totalCost":"总花费","usage.kpi.cacheSaved":"缓存节省","usage.kpi.cacheHit":"缓存命中","usage.trend":"趋势","usage.trend.gran":"粒度:{gran}","usage.requests.title":"请求列表","usage.requests.desc":"逐条请求记录;点击表头排序","usage.col.time":"时间","usage.col.model":"模型","usage.col.project":"项目","usage.col.session":"会话","usage.col.input":"输入","usage.col.output":"输出","usage.col.cacheRead":"缓存读","usage.col.cacheWrite":"缓存写","usage.col.cost":"花费","usage.col.tools":"工具","filter.modelLabel":"模型","filter.projectLabel":"项目","filter.modelAll":"模型:全部","filter.projectAll":"项目:全部","filter.modelSingle":"模型:{value}","filter.projectSingle":"项目:{value}","filter.modelMulti":"模型:{count} 个","filter.projectMulti":"项目:{count} 个","filter.clearAll":"清除筛选","filter.noOptions":"没有可选项","sessions.title":"会话","sessions.subtitle":"共 {count} 个会话 \xb7 按最近活跃排序","sessions.col.session":"会话","sessions.col.project":"项目","sessions.col.models":"模型","sessions.col.requests":"请求数","sessions.col.tokens":"Tokens","sessions.col.cost":"花费","sessions.col.duration":"时长","sessions.col.lastActivity":"最近活跃","sessions.untitled":"会话 {hash}","sessions.empty":"暂无会话","session.kpi.requests":"请求数","session.kpi.totalTokens":"总 tokens","session.kpi.cost":"花费","session.kpi.duration":"时长","session.timeline.title":"消息时间线","session.timeline.desc":"按时间正序,最新的在最下方","session.perMessage.title":"逐条消息 tokens","session.modelsInSession":"本会话使用的模型","session.modelLine":"{requests} 次 \xb7 {tokens} tokens","session.token.in":"输入","session.token.out":"输出","session.token.cacheR":"缓存读","session.token.cacheW":"缓存写","projects.title":"项目","projects.subtitle":"共 {count} 个项目 \xb7 按花费排序","projects.empty":"暂无项目","projects.stat.sessions":"会话","projects.stat.requests":"请求","projects.stat.tokens":"Tokens","project.activity":"活跃情况(近 30 天)","project.sessions.title":"会话({count})","models.title":"模型","models.subtitle":"共使用过 {count} 个模型","models.empty":"暂无模型用量","models.share.cost":"成本占比","models.share.tokens":"Tokens 占比","models.share.cacheHit":"缓存命中","models.field.requests":"请求数","models.field.savedByCache":"缓存节省","models.field.input1M":"输入 / 1M","models.field.output1M":"输出 / 1M","models.field.cacheRead1M":"缓存读 / 1M","models.field.pctOfTotal":"占总花费 {pct} \xb7 {tokens} tokens","models.eachTrend":"整体趋势(近 30 天)","settings.title":"设置","settings.subtitle":"数据源、价格表与行为偏好","settings.dataSources.title":"数据源","settings.dataSources.desc":"ccdsb 会扫描以下路径的 JSONL 文件","settings.dataSources.active":"已启用","settings.dataSources.notPresent":"不存在","settings.dataSources.envHint":"可以通过环境变量 {env1} 或 {env2} 自定义路径(看板会自动追加 {appendix})。","settings.rescan":"立即重新扫描","settings.rescanning":"扫描中…","settings.scanStats.title":"扫描统计","settings.scanStats.files":"扫描文件数","settings.scanStats.records":"解析记录数","settings.scanStats.assistant":"去重后 assistant 记录","settings.scanStats.duration":"扫描耗时","settings.pricing.title":"价格表","settings.pricing.desc":"美元 / 1M tokens \xb7 内置快照,对带日期后缀的模型名做 fuzzy 匹配","settings.pricing.col.model":"模型","settings.pricing.col.input":"输入","settings.pricing.col.output":"输出","settings.pricing.col.write5m":"缓存写入 5 分钟","settings.pricing.col.write1h":"缓存写入 1 小时","settings.pricing.col.read":"缓存读取","settings.preferences.title":"偏好设置","settings.preferences.language":"语言","settings.preferences.theme":"主题","settings.theme.light":"亮色","settings.theme.dark":"暗色","settings.theme.system":"跟随系统","settings.about.title":"关于","settings.about.subtitle":"版本 {version} \xb7 MIT 协议","settings.about.line1":"完全本地:数据从不离开你的机器,没有任何遥测、没有任何网络调用。","settings.about.line2":"只读:ccdsb 只读取 JSONL,绝不会写回 ~/.claude。","settings.about.line3":'缓存:扫描结果会缓存 5 秒;点击"重新扫描"可强制刷新。',"settings.about.line4":"在启动 ccdsb 的终端按 Ctrl+C 即可停止。","lang.label":"语言","lang.en":"English","lang.zh":"中文","theme.label":"主题"}};function a(e,t,s){var o;let n=null==(o=i[e])?void 0:o[t];if(void 0===n&&(n=i.en[t]),void 0===n&&(n=t),s)for(let[e,t]of Object.entries(s))n=n.replace(RegExp("\\{".concat(e,"\\}"),"g"),String(t));return n}},68244:(e,t,s)=>{s.d(t,{CY:()=>u,s9:()=>d,kj:()=>m});var o=s(50692),n=s(92616),i=s(5317),a=s(46522);let c="ccdsb_locale",r=(0,n.createContext)({locale:a.Xn,setLocale:()=>{},t:e=>e}),l="ccdsb.locale";function u(e){let{initialLocale:t,children:s}=e,u=(0,i.useRouter)();(0,n.useEffect)(()=>{try{let e=localStorage.getItem(l);e&&e!==t&&("en"===e||"zh"===e)&&(document.cookie="".concat(c,"=").concat(e,"; path=/; max-age=").concat(31536e3,"; SameSite=Lax"),u.refresh())}catch(e){}},[]);let d=(0,n.useCallback)(e=>{try{localStorage.setItem(l,e)}catch(e){}document.cookie="".concat(c,"=").concat(e,"; path=/; max-age=").concat(31536e3,"; SameSite=Lax"),u.refresh()},[u]),m=(0,n.useCallback)((e,s)=>(0,a.nA)(t,e,s),[t]),g=(0,n.useMemo)(()=>({locale:t,setLocale:d,t:m}),[t,d,m]);return(0,o.jsx)(r.Provider,{value:g,children:s})}function d(){return(0,n.useContext)(r)}function m(){return(0,n.useContext)(r).t}}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{13478:(e,t,s)=>{"use strict";s.d(t,{LanguageSwitcher:()=>o});var r=s(50692),a=s(92616),n=s(68244),i=s(46522),c=s(22106);let l={en:"EN",zh:"中"},d={en:"English",zh:"中文"};function o(){let{locale:e,setLocale:t,t:s}=(0,n.s9)(),[o,h]=(0,a.useState)(!1),m=(0,a.useRef)(null);return(0,a.useEffect)(()=>{function e(e){m.current&&!m.current.contains(e.target)&&h(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,r.jsxs)("div",{ref:m,className:"relative",children:[(0,r.jsx)("button",{onClick:()=>h(!o),className:"btn-ghost px-2 py-1 text-xs font-medium",title:s("lang.label"),"aria-label":s("lang.label"),children:l[e]}),o&&(0,r.jsx)("div",{className:"absolute right-0 mt-1 min-w-[8rem] card border-border-hi shadow-lg p-1 z-30",children:i.YZ.map(s=>(0,r.jsxs)("button",{onClick:()=>{t(s),h(!1)},className:(0,c.cn)("w-full text-left px-2.5 py-1.5 text-sm rounded hover:bg-bg-surface-hi flex items-center gap-2",e===s&&"text-text-primary"),children:[(0,r.jsx)("span",{className:(0,c.cn)("w-3.5 h-3.5 rounded-sm border flex items-center justify-center text-[10px]",e===s?"bg-brand border-brand text-white":"border-border-hi"),children:e===s?"✓":""}),(0,r.jsx)("span",{children:d[s]})]},s))})]})}},22349:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,61094,23)),Promise.resolve().then(s.bind(s,58135)),Promise.resolve().then(s.bind(s,69582))},34107:(e,t,s)=>{"use strict";s.d(t,{N:()=>o,D:()=>h});var r=s(50692),a=s(92616);let n="ccdsb_theme",i=(0,a.createContext)({theme:"system",resolved:"dark",setTheme:()=>{}}),c="ccdsb.theme";function l(e){return"light"===e?"light":"dark"===e?"dark":window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"}function d(e){if("undefined"==typeof document)return;let t=document.documentElement,s=l(e);t.classList.remove("theme-light","theme-dark"),t.classList.add("light"===s?"theme-light":"theme-dark"),t.setAttribute("data-theme",s)}function o(e){let{initialTheme:t,children:s}=e,[o,h]=(0,a.useState)(t),[m,u]=(0,a.useState)(()=>"system"===t?"dark":t);(0,a.useEffect)(()=>{try{let e=localStorage.getItem(c);if("light"===e||"dark"===e||"system"===e){e!==t&&(document.cookie="".concat(n,"=").concat(e,"; path=/; max-age=").concat(31536e3,"; SameSite=Lax")),h(e);let s=l(e);u(s),d(e)}else{let e=l(t);u(e),d(t)}}catch(e){u(l(t)),d(t)}},[]),(0,a.useEffect)(()=>{if("system"!==o)return;let e=window.matchMedia("(prefers-color-scheme: light)"),t=()=>{u(e.matches?"light":"dark"),d("system")};return e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[o]);let x=(0,a.useCallback)(e=>{try{localStorage.setItem(c,e)}catch(e){}document.cookie="".concat(n,"=").concat(e,"; path=/; max-age=").concat(31536e3,"; SameSite=Lax"),h(e),u(l(e)),d(e)},[]);return(0,r.jsx)(i.Provider,{value:{theme:o,resolved:m,setTheme:x},children:s})}function h(){return(0,a.useContext)(i)}},58135:(e,t,s)=>{"use strict";s.d(t,{Nav:()=>m});var r=s(50692),a=s(4256),n=s.n(a),i=s(5317),c=s(22106),l=s(68244),d=s(13478),o=s(92029);let h=[{href:"/",tk:"nav.overview",exact:!0},{href:"/usage",tk:"nav.usage"},{href:"/sessions",tk:"nav.sessions"},{href:"/projects",tk:"nav.projects"},{href:"/models",tk:"nav.models"},{href:"/settings",tk:"nav.settings"}];function m(){let e=(0,i.usePathname)(),t=(0,l.kj)();return(0,r.jsx)("header",{className:"sticky top-0 z-30 border-b border-border bg-bg-base/80 backdrop-blur",children:(0,r.jsxs)("div",{className:"max-w-7xl mx-auto px-6 h-14 flex items-center gap-4",children:[(0,r.jsxs)(n(),{href:"/",className:"flex items-center gap-2 font-semibold tracking-tight whitespace-nowrap",children:[(0,r.jsx)("span",{className:"inline-flex items-center justify-center w-7 h-7 rounded-button bg-brand text-white text-xs font-bold",children:"cc"}),(0,r.jsx)("span",{children:"ccdsb"}),(0,r.jsx)("span",{className:"text-xs text-text-tertiary font-normal hidden md:inline",children:t("brand.tagline")})]}),(0,r.jsx)("nav",{className:"flex-1 flex items-center gap-1",children:h.map(s=>{let a=s.exact?e===s.href:e===s.href||e.startsWith(s.href+"/");return(0,r.jsx)(n(),{href:s.href,className:(0,c.cn)("px-3 py-1.5 text-sm rounded-button font-medium transition-colors",a?"text-text-primary bg-bg-surface-hi":"text-text-secondary hover:text-text-primary hover:bg-bg-surface"),children:t(s.tk)},s.href)})}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[(0,r.jsx)("span",{className:"pill bg-bg-surface-hi text-text-tertiary text-[10px] uppercase tracking-wide",children:t("nav.localBadge")}),(0,r.jsx)(d.LanguageSwitcher,{}),(0,r.jsx)(o.ThemeSwitcher,{})]})]})})}},61094:()=>{},69582:(e,t,s)=>{"use strict";s.d(t,{Providers:()=>i});var r=s(50692),a=s(68244),n=s(34107);function i(e){let{locale:t,theme:s,children:i}=e;return(0,r.jsx)(a.CY,{initialLocale:t,children:(0,r.jsx)(n.N,{initialTheme:s,children:i})})}},92029:(e,t,s)=>{"use strict";s.d(t,{ThemeSwitcher:()=>d});var r=s(50692),a=s(92616),n=s(34107),i=s(68244),c=s(22106);let l={light:"☀",dark:"☾",system:"◐"};function d(){let{theme:e,resolved:t,setTheme:s}=(0,n.D)(),{t:d}=(0,i.s9)(),[o,h]=(0,a.useState)(!1),m=(0,a.useRef)(null);(0,a.useEffect)(()=>{function e(e){m.current&&!m.current.contains(e.target)&&h(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let u=[{value:"light",label:d("settings.theme.light")},{value:"dark",label:d("settings.theme.dark")},{value:"system",label:d("settings.theme.system")}];return(0,r.jsxs)("div",{ref:m,className:"relative",children:[(0,r.jsx)("button",{onClick:()=>h(!o),className:"btn-ghost px-2 py-1 text-base leading-none",title:"".concat(d("theme.label"),": ").concat(e," (").concat(t,")"),"aria-label":d("theme.label"),children:(0,r.jsx)("span",{"aria-hidden":!0,children:l[e]})}),o&&(0,r.jsx)("div",{className:"absolute right-0 mt-1 min-w-[8rem] card border-border-hi shadow-lg p-1 z-30",children:u.map(t=>(0,r.jsxs)("button",{onClick:()=>{s(t.value),h(!1)},className:(0,c.cn)("w-full text-left px-2.5 py-1.5 text-sm rounded hover:bg-bg-surface-hi flex items-center gap-2",e===t.value&&"text-text-primary"),children:[(0,r.jsx)("span",{className:"w-4 text-center","aria-hidden":!0,children:l[t.value]}),(0,r.jsx)("span",{children:t.label})]},t.value))})]})}}},e=>{e.O(0,[969,653,256,327,623,338,358],()=>e(e.s=22349)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[801,824],{21087:(e,t,a)=>{Promise.resolve().then(a.bind(a,30833)),Promise.resolve().then(a.t.bind(a,4256,23))},30833:(e,t,a)=>{"use strict";a.d(t,{TokenStackChart:()=>m});var s=a(50692),r=a(9606),c=a(59970),i=a(2292),n=a(12399),l=a(59164),o=a(2039),d=a(64384),h=a(22106),x=a(68244);let u={input:"rgb(var(--chart-input))",output:"rgb(var(--chart-output))",cacheRead:"rgb(var(--chart-cache-read))",cacheCreation:"rgb(var(--chart-cache-create))"};function m(e){let{data:t,height:a="h-72"}=e,m=(0,x.kj)();return t.length?(0,s.jsxs)("div",{className:"".concat(a," w-full"),children:[(0,s.jsx)(r.u,{width:"100%",height:"100%",children:(0,s.jsxs)(c.E,{data:t,margin:{top:12,right:8,bottom:4,left:8},children:[(0,s.jsx)(i.d,{stroke:"rgb(var(--chart-grid))",strokeDasharray:"3 3",vertical:!1}),(0,s.jsx)(n.W,{dataKey:"label",tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},interval:"preserveStartEnd",minTickGap:32}),(0,s.jsx)(l.h,{tickFormatter:e=>(0,h.jh)(Number(e)),tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},width:56}),(0,s.jsx)(o.m,{content:(0,s.jsx)(j,{}),cursor:{fill:"rgb(var(--text-primary) / 0.04)"}}),(0,s.jsx)(d.y,{dataKey:"input",stackId:"a",fill:u.input,isAnimationActive:!1}),(0,s.jsx)(d.y,{dataKey:"cacheCreation",stackId:"a",fill:u.cacheCreation,isAnimationActive:!1}),(0,s.jsx)(d.y,{dataKey:"cacheRead",stackId:"a",fill:u.cacheRead,isAnimationActive:!1}),(0,s.jsx)(d.y,{dataKey:"output",stackId:"a",fill:u.output,radius:[3,3,0,0],isAnimationActive:!1})]})}),(0,s.jsxs)("div",{className:"flex items-center flex-wrap justify-center gap-4 text-xs text-text-secondary mt-2",children:[(0,s.jsx)(p,{color:u.input,label:m("chart.legend.input")}),(0,s.jsx)(p,{color:u.cacheCreation,label:m("chart.legend.cacheWrite")}),(0,s.jsx)(p,{color:u.cacheRead,label:m("chart.legend.cacheRead")}),(0,s.jsx)(p,{color:u.output,label:m("chart.legend.output")})]})]}):(0,s.jsx)("div",{className:"".concat(a," flex items-center justify-center text-text-tertiary text-sm"),children:m("chart.empty")})}function p(e){let{color:t,label:a}=e;return(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,s.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm",style:{background:t}}),(0,s.jsx)("span",{children:a})]})}function j(e){let t=(0,x.kj)();if(!e.active||!e.payload||!e.payload.length)return null;let a=e.payload[0].payload,r=a.input+a.output+a.cacheRead+a.cacheCreation;return(0,s.jsxs)("div",{className:"card border-border-hi shadow-lg p-3 text-xs min-w-[200px]",children:[(0,s.jsx)("div",{className:"font-medium text-text-primary mb-2",children:e.label}),(0,s.jsxs)("div",{className:"space-y-1",children:[(0,s.jsx)(b,{color:u.input,label:t("chart.legend.input"),value:a.input}),(0,s.jsx)(b,{color:u.cacheCreation,label:t("chart.legend.cacheWrite"),value:a.cacheCreation}),(0,s.jsx)(b,{color:u.cacheRead,label:t("chart.legend.cacheRead"),value:a.cacheRead}),(0,s.jsx)(b,{color:u.output,label:t("chart.legend.output"),value:a.output})]}),(0,s.jsxs)("div",{className:"mt-2 pt-2 border-t border-border flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.total")}),(0,s.jsx)("span",{className:"num-mono text-text-primary",children:(0,h.jh)(r)})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,s.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.cost")}),(0,s.jsx)("span",{className:"num-mono text-brand",children:(0,h.az)(a.cost)})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,s.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.requests")}),(0,s.jsx)("span",{className:"num-mono text-text-primary",children:a.requests})]})]})}function b(e){let{color:t,label:a,value:r}=e;return(0,s.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-text-secondary",children:[(0,s.jsx)("span",{className:"w-2 h-2 rounded-sm",style:{background:t}}),a]}),(0,s.jsx)("span",{className:"num-mono text-text-primary",children:(0,h.jh)(r)})]})}}},e=>{e.O(0,[653,946,256,327,623,338,358],()=>e(e.s=21087)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[893,898],{77265:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,4256,23))}},e=>{e.O(0,[256,623,338,358],()=>e(e.s=77265)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[801,824],{21087:(e,t,a)=>{Promise.resolve().then(a.bind(a,30833)),Promise.resolve().then(a.t.bind(a,4256,23))},30833:(e,t,a)=>{"use strict";a.d(t,{TokenStackChart:()=>m});var s=a(50692),r=a(9606),c=a(59970),i=a(2292),n=a(12399),l=a(59164),o=a(2039),d=a(64384),h=a(22106),x=a(68244);let u={input:"rgb(var(--chart-input))",output:"rgb(var(--chart-output))",cacheRead:"rgb(var(--chart-cache-read))",cacheCreation:"rgb(var(--chart-cache-create))"};function m(e){let{data:t,height:a="h-72"}=e,m=(0,x.kj)();return t.length?(0,s.jsxs)("div",{className:"".concat(a," w-full"),children:[(0,s.jsx)(r.u,{width:"100%",height:"100%",children:(0,s.jsxs)(c.E,{data:t,margin:{top:12,right:8,bottom:4,left:8},children:[(0,s.jsx)(i.d,{stroke:"rgb(var(--chart-grid))",strokeDasharray:"3 3",vertical:!1}),(0,s.jsx)(n.W,{dataKey:"label",tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},interval:"preserveStartEnd",minTickGap:32}),(0,s.jsx)(l.h,{tickFormatter:e=>(0,h.jh)(Number(e)),tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},width:56}),(0,s.jsx)(o.m,{content:(0,s.jsx)(j,{}),cursor:{fill:"rgb(var(--text-primary) / 0.04)"}}),(0,s.jsx)(d.y,{dataKey:"input",stackId:"a",fill:u.input,isAnimationActive:!1}),(0,s.jsx)(d.y,{dataKey:"cacheCreation",stackId:"a",fill:u.cacheCreation,isAnimationActive:!1}),(0,s.jsx)(d.y,{dataKey:"cacheRead",stackId:"a",fill:u.cacheRead,isAnimationActive:!1}),(0,s.jsx)(d.y,{dataKey:"output",stackId:"a",fill:u.output,radius:[3,3,0,0],isAnimationActive:!1})]})}),(0,s.jsxs)("div",{className:"flex items-center flex-wrap justify-center gap-4 text-xs text-text-secondary mt-2",children:[(0,s.jsx)(p,{color:u.input,label:m("chart.legend.input")}),(0,s.jsx)(p,{color:u.cacheCreation,label:m("chart.legend.cacheWrite")}),(0,s.jsx)(p,{color:u.cacheRead,label:m("chart.legend.cacheRead")}),(0,s.jsx)(p,{color:u.output,label:m("chart.legend.output")})]})]}):(0,s.jsx)("div",{className:"".concat(a," flex items-center justify-center text-text-tertiary text-sm"),children:m("chart.empty")})}function p(e){let{color:t,label:a}=e;return(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,s.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm",style:{background:t}}),(0,s.jsx)("span",{children:a})]})}function j(e){let t=(0,x.kj)();if(!e.active||!e.payload||!e.payload.length)return null;let a=e.payload[0].payload,r=a.input+a.output+a.cacheRead+a.cacheCreation;return(0,s.jsxs)("div",{className:"card border-border-hi shadow-lg p-3 text-xs min-w-[200px]",children:[(0,s.jsx)("div",{className:"font-medium text-text-primary mb-2",children:e.label}),(0,s.jsxs)("div",{className:"space-y-1",children:[(0,s.jsx)(b,{color:u.input,label:t("chart.legend.input"),value:a.input}),(0,s.jsx)(b,{color:u.cacheCreation,label:t("chart.legend.cacheWrite"),value:a.cacheCreation}),(0,s.jsx)(b,{color:u.cacheRead,label:t("chart.legend.cacheRead"),value:a.cacheRead}),(0,s.jsx)(b,{color:u.output,label:t("chart.legend.output"),value:a.output})]}),(0,s.jsxs)("div",{className:"mt-2 pt-2 border-t border-border flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.total")}),(0,s.jsx)("span",{className:"num-mono text-text-primary",children:(0,h.jh)(r)})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,s.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.cost")}),(0,s.jsx)("span",{className:"num-mono text-brand",children:(0,h.az)(a.cost)})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,s.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.requests")}),(0,s.jsx)("span",{className:"num-mono text-text-primary",children:a.requests})]})]})}function b(e){let{color:t,label:a,value:r}=e;return(0,s.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-text-secondary",children:[(0,s.jsx)("span",{className:"w-2 h-2 rounded-sm",style:{background:t}}),a]}),(0,s.jsx)("span",{className:"num-mono text-text-primary",children:(0,h.jh)(r)})]})}}},e=>{e.O(0,[653,946,256,327,623,338,358],()=>e(e.s=21087)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[893,898],{77265:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,4256,23))}},e=>{e.O(0,[256,623,338,358],()=>e(e.s=77265)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[662],{13478:(e,t,n)=>{"use strict";n.d(t,{LanguageSwitcher:()=>d});var s=n(50692),a=n(92616),r=n(68244),c=n(46522),l=n(22106);let i={en:"EN",zh:"中"},o={en:"English",zh:"中文"};function d(){let{locale:e,setLocale:t,t:n}=(0,r.s9)(),[d,h]=(0,a.useState)(!1),u=(0,a.useRef)(null);return(0,a.useEffect)(()=>{function e(e){u.current&&!u.current.contains(e.target)&&h(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,s.jsxs)("div",{ref:u,className:"relative",children:[(0,s.jsx)("button",{onClick:()=>h(!d),className:"btn-ghost px-2 py-1 text-xs font-medium",title:n("lang.label"),"aria-label":n("lang.label"),children:i[e]}),d&&(0,s.jsx)("div",{className:"absolute right-0 mt-1 min-w-[8rem] card border-border-hi shadow-lg p-1 z-30",children:c.YZ.map(n=>(0,s.jsxs)("button",{onClick:()=>{t(n),h(!1)},className:(0,l.cn)("w-full text-left px-2.5 py-1.5 text-sm rounded hover:bg-bg-surface-hi flex items-center gap-2",e===n&&"text-text-primary"),children:[(0,s.jsx)("span",{className:(0,l.cn)("w-3.5 h-3.5 rounded-sm border flex items-center justify-center text-[10px]",e===n?"bg-brand border-brand text-white":"border-border-hi"),children:e===n?"✓":""}),(0,s.jsx)("span",{children:o[n]})]},n))})]})}},29797:(e,t,n)=>{"use strict";n.d(t,{ScanRefresh:()=>l});var s=n(50692),a=n(92616),r=n(5317),c=n(68244);function l(){let e=(0,c.kj)(),[t,n]=(0,a.useState)(!1),l=(0,r.useRouter)();async function i(){n(!0);try{await fetch("/api/scan",{method:"POST",cache:"no-store"}),l.refresh()}finally{n(!1)}}return(0,s.jsx)("button",{onClick:i,disabled:t,className:"btn",children:e(t?"settings.rescanning":"settings.rescan")})}},34107:(e,t,n)=>{"use strict";n.d(t,{N:()=>d,D:()=>h});var s=n(50692),a=n(92616);let r="ccdsb_theme",c=(0,a.createContext)({theme:"system",resolved:"dark",setTheme:()=>{}}),l="ccdsb.theme";function i(e){return"light"===e?"light":"dark"===e?"dark":window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"}function o(e){if("undefined"==typeof document)return;let t=document.documentElement,n=i(e);t.classList.remove("theme-light","theme-dark"),t.classList.add("light"===n?"theme-light":"theme-dark"),t.setAttribute("data-theme",n)}function d(e){let{initialTheme:t,children:n}=e,[d,h]=(0,a.useState)(t),[u,m]=(0,a.useState)(()=>"system"===t?"dark":t);(0,a.useEffect)(()=>{try{let e=localStorage.getItem(l);if("light"===e||"dark"===e||"system"===e){e!==t&&(document.cookie="".concat(r,"=").concat(e,"; path=/; max-age=").concat(31536e3,"; SameSite=Lax")),h(e);let n=i(e);m(n),o(e)}else{let e=i(t);m(e),o(t)}}catch(e){m(i(t)),o(t)}},[]),(0,a.useEffect)(()=>{if("system"!==d)return;let e=window.matchMedia("(prefers-color-scheme: light)"),t=()=>{m(e.matches?"light":"dark"),o("system")};return e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[d]);let g=(0,a.useCallback)(e=>{try{localStorage.setItem(l,e)}catch(e){}document.cookie="".concat(r,"=").concat(e,"; path=/; max-age=").concat(31536e3,"; SameSite=Lax"),h(e),m(i(e)),o(e)},[]);return(0,s.jsx)(c.Provider,{value:{theme:d,resolved:u,setTheme:g},children:n})}function h(){return(0,a.useContext)(c)}},76349:(e,t,n)=>{Promise.resolve().then(n.bind(n,13478)),Promise.resolve().then(n.bind(n,29797)),Promise.resolve().then(n.bind(n,92029))},92029:(e,t,n)=>{"use strict";n.d(t,{ThemeSwitcher:()=>o});var s=n(50692),a=n(92616),r=n(34107),c=n(68244),l=n(22106);let i={light:"☀",dark:"☾",system:"◐"};function o(){let{theme:e,resolved:t,setTheme:n}=(0,r.D)(),{t:o}=(0,c.s9)(),[d,h]=(0,a.useState)(!1),u=(0,a.useRef)(null);(0,a.useEffect)(()=>{function e(e){u.current&&!u.current.contains(e.target)&&h(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let m=[{value:"light",label:o("settings.theme.light")},{value:"dark",label:o("settings.theme.dark")},{value:"system",label:o("settings.theme.system")}];return(0,s.jsxs)("div",{ref:u,className:"relative",children:[(0,s.jsx)("button",{onClick:()=>h(!d),className:"btn-ghost px-2 py-1 text-base leading-none",title:"".concat(o("theme.label"),": ").concat(e," (").concat(t,")"),"aria-label":o("theme.label"),children:(0,s.jsx)("span",{"aria-hidden":!0,children:i[e]})}),d&&(0,s.jsx)("div",{className:"absolute right-0 mt-1 min-w-[8rem] card border-border-hi shadow-lg p-1 z-30",children:m.map(t=>(0,s.jsxs)("button",{onClick:()=>{n(t.value),h(!1)},className:(0,l.cn)("w-full text-left px-2.5 py-1.5 text-sm rounded hover:bg-bg-surface-hi flex items-center gap-2",e===t.value&&"text-text-primary"),children:[(0,s.jsx)("span",{className:"w-4 text-center","aria-hidden":!0,children:i[t.value]}),(0,s.jsx)("span",{children:t.label})]},t.value))})]})}}},e=>{e.O(0,[653,327,623,338,358],()=>e(e.s=76349)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[430],{15830:(e,t,a)=>{"use strict";a.d(t,{UsageTable:()=>l});var s=a(50692),r=a(92616),n=a(22106),c=a(68244);function l(e){let{rows:t}=e,a=(0,c.kj)(),[l,d]=(0,r.useState)(0),[x,u]=(0,r.useState)("timestamp"),[m,h]=(0,r.useState)("desc"),[p,b]=(0,r.useState)(""),g=(0,r.useMemo)(()=>{if(!p.trim())return t;let e=p.toLowerCase();return t.filter(t=>t.model.toLowerCase().includes(e)||t.cwd.toLowerCase().includes(e)||t.sessionId.toLowerCase().includes(e)||t.toolNames.some(t=>t.toLowerCase().includes(e)))},[t,p]),j=(0,r.useMemo)(()=>{let e=[...g];return e.sort((e,t)=>{let a="timestamp"===x?e.timestamp:e[x],s="timestamp"===x?t.timestamp:t[x];return a===s?0:"asc"===m?a<s?-1:1:a<s?1:-1}),e},[g,x,m]),f=Math.max(1,Math.ceil(j.length/25)),y=Math.min(l,f-1),v=j.slice(25*y,(y+1)*25);function k(e){x===e?h("asc"===m?"desc":"asc"):(u(e),h("desc"))}return(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"flex items-center justify-between gap-3 mb-3 flex-wrap",children:[(0,s.jsx)("input",{value:p,onChange:e=>{b(e.target.value),d(0)},placeholder:a("common.searchPlaceholder"),className:"px-3 py-1.5 text-sm rounded-button border border-border bg-bg-surface focus:outline-none focus:border-border-hi w-72 placeholder:text-text-tertiary text-text-primary"}),(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("span",{className:"text-xs text-text-tertiary tabular-nums",children:a("common.rows",{count:j.length.toLocaleString()})}),(0,s.jsx)("button",{onClick:function(){let e=["timestamp,model,project,session,input,output,cache_read,cache_create,cost,tools"];for(let t of j)e.push([t.timestamp,t.model,o(t.cwd),t.sessionId,t.inputTokens,t.outputTokens,t.cacheReadTokens,t.cacheCreationTokens,t.cost.toFixed(6),o(t.toolNames.join(";"))].join(","));let t=new Blob([e.join("\n")],{type:"text/csv"}),a=URL.createObjectURL(t),s=document.createElement("a");s.href=a,s.download="ccdsb-usage-".concat(new Date().toISOString().slice(0,10),".csv"),s.click(),URL.revokeObjectURL(a)},className:"btn",children:a("common.exportCsv")})]})]}),(0,s.jsx)("div",{className:"card overflow-hidden",children:(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)("table",{className:"w-full text-sm",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"border-b border-border bg-bg-surface-hi/30",children:[(0,s.jsx)(i,{sorted:"timestamp"===x,dir:m,onClick:()=>k("timestamp"),children:a("usage.col.time")}),(0,s.jsx)(i,{children:a("usage.col.model")}),(0,s.jsx)(i,{children:a("usage.col.project")}),(0,s.jsx)(i,{children:a("usage.col.session")}),(0,s.jsx)(i,{align:"right",sorted:"inputTokens"===x,dir:m,onClick:()=>k("inputTokens"),children:a("usage.col.input")}),(0,s.jsx)(i,{align:"right",sorted:"outputTokens"===x,dir:m,onClick:()=>k("outputTokens"),children:a("usage.col.output")}),(0,s.jsx)(i,{align:"right",sorted:"cacheReadTokens"===x,dir:m,onClick:()=>k("cacheReadTokens"),children:a("usage.col.cacheRead")}),(0,s.jsx)(i,{align:"right",sorted:"cacheCreationTokens"===x,dir:m,onClick:()=>k("cacheCreationTokens"),children:a("usage.col.cacheWrite")}),(0,s.jsx)(i,{align:"right",sorted:"cost"===x,dir:m,onClick:()=>k("cost"),children:a("usage.col.cost")}),(0,s.jsx)(i,{children:a("usage.col.tools")})]})}),(0,s.jsxs)("tbody",{children:[v.map(e=>(0,s.jsxs)("tr",{className:"border-b border-border last:border-b-0 hover:bg-bg-surface-hi/40",children:[(0,s.jsx)("td",{className:"px-3 py-2 num-mono text-text-secondary whitespace-nowrap",title:(0,n.r6)(e.timestamp),children:(0,n.om)(e.timestamp)}),(0,s.jsx)("td",{className:"px-3 py-2 text-text-primary whitespace-nowrap",children:(0,n.P6)(e.model)}),(0,s.jsx)("td",{className:"px-3 py-2 text-text-secondary truncate max-w-[160px]",title:e.cwd,children:(0,n.PJ)(e.cwd)}),(0,s.jsx)("td",{className:"px-3 py-2 num-mono text-text-tertiary text-xs",title:e.sessionId,children:(0,n.BC)(e.sessionId)}),(0,s.jsx)("td",{className:"px-3 py-2 num-mono text-right text-text-secondary",children:(0,n.jh)(e.inputTokens)}),(0,s.jsx)("td",{className:"px-3 py-2 num-mono text-right text-text-secondary",children:(0,n.jh)(e.outputTokens)}),(0,s.jsx)("td",{className:"px-3 py-2 num-mono text-right text-success",children:(0,n.jh)(e.cacheReadTokens)}),(0,s.jsx)("td",{className:"px-3 py-2 num-mono text-right text-text-secondary",children:(0,n.jh)(e.cacheCreationTokens)}),(0,s.jsx)("td",{className:"px-3 py-2 num-mono text-right text-text-primary font-medium",children:(0,n.l7)(e.cost)}),(0,s.jsx)("td",{className:"px-3 py-2 text-xs text-text-tertiary truncate max-w-[160px]",title:e.toolNames.join(", "),children:e.toolNames.length?e.toolNames.slice(0,3).join(", ")+(e.toolNames.length>3?"…":""):"—"})]},e.uuid)),0===v.length&&(0,s.jsx)("tr",{children:(0,s.jsx)("td",{colSpan:10,className:"px-3 py-8 text-center text-text-tertiary text-sm",children:a("common.noMatchingRows")})})]})]})})}),f>1&&(0,s.jsxs)("div",{className:"flex items-center justify-between mt-3 text-xs text-text-secondary",children:[(0,s.jsx)("span",{children:a("common.pageOf",{page:y+1,total:f})}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("button",{onClick:()=>d(0),disabled:0===y,className:"btn-ghost disabled:opacity-40",children:a("common.first")}),(0,s.jsx)("button",{onClick:()=>d(y-1),disabled:0===y,className:"btn-ghost disabled:opacity-40",children:a("common.prev")}),(0,s.jsx)("button",{onClick:()=>d(y+1),disabled:y>=f-1,className:"btn-ghost disabled:opacity-40",children:a("common.next")}),(0,s.jsx)("button",{onClick:()=>d(f-1),disabled:y>=f-1,className:"btn-ghost disabled:opacity-40",children:a("common.last")})]})]})]})}function i(e){let{children:t,align:a="left",sorted:r,dir:c,onClick:l}=e;return(0,s.jsx)("th",{className:(0,n.cn)("px-3 py-2 text-xs font-medium text-text-tertiary uppercase tracking-wide whitespace-nowrap","right"===a?"text-right":"text-left",l&&"cursor-pointer hover:text-text-primary select-none"),onClick:l,children:(0,s.jsxs)("span",{className:"inline-flex items-center gap-1",children:[t,r&&(0,s.jsx)("span",{className:"text-[10px]",children:"asc"===c?"▲":"▼"})]})})}function o(e){return e.includes(",")||e.includes('"')||e.includes("\n")?'"'.concat(e.replace(/"/g,'""'),'"'):e}},20315:(e,t,a)=>{"use strict";a.d(t,{GranularityPicker:()=>i});var s=a(50692),r=a(5317),n=a(22106),c=a(68244);let l=[{value:"hour",tk:"gran.hour"},{value:"day",tk:"gran.day"},{value:"week",tk:"gran.week"},{value:"month",tk:"gran.month"}];function i(e){let{defaultValue:t="day"}=e,a=(0,r.useRouter)(),i=(0,r.usePathname)(),o=(0,r.useSearchParams)(),d=(0,c.kj)(),x=o.get("gran")||t;return(0,s.jsx)("div",{className:"inline-flex rounded-button border border-border bg-bg-surface p-0.5",children:l.map(e=>(0,s.jsx)("button",{onClick:()=>(function(e){let t=new URLSearchParams(o.toString());t.set("gran",e),a.push("".concat(i,"?").concat(t.toString()))})(e.value),className:(0,n.cn)("px-2.5 py-1 text-xs font-medium rounded transition-colors",x===e.value?"bg-bg-surface-hi text-text-primary":"text-text-secondary hover:text-text-primary"),children:d(e.tk)},e.value))})}},30833:(e,t,a)=>{"use strict";a.d(t,{TokenStackChart:()=>h});var s=a(50692),r=a(9606),n=a(59970),c=a(2292),l=a(12399),i=a(59164),o=a(2039),d=a(64384),x=a(22106),u=a(68244);let m={input:"rgb(var(--chart-input))",output:"rgb(var(--chart-output))",cacheRead:"rgb(var(--chart-cache-read))",cacheCreation:"rgb(var(--chart-cache-create))"};function h(e){let{data:t,height:a="h-72"}=e,h=(0,u.kj)();return t.length?(0,s.jsxs)("div",{className:"".concat(a," w-full"),children:[(0,s.jsx)(r.u,{width:"100%",height:"100%",children:(0,s.jsxs)(n.E,{data:t,margin:{top:12,right:8,bottom:4,left:8},children:[(0,s.jsx)(c.d,{stroke:"rgb(var(--chart-grid))",strokeDasharray:"3 3",vertical:!1}),(0,s.jsx)(l.W,{dataKey:"label",tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},interval:"preserveStartEnd",minTickGap:32}),(0,s.jsx)(i.h,{tickFormatter:e=>(0,x.jh)(Number(e)),tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:{stroke:"rgb(var(--chart-grid))"},width:56}),(0,s.jsx)(o.m,{content:(0,s.jsx)(b,{}),cursor:{fill:"rgb(var(--text-primary) / 0.04)"}}),(0,s.jsx)(d.y,{dataKey:"input",stackId:"a",fill:m.input,isAnimationActive:!1}),(0,s.jsx)(d.y,{dataKey:"cacheCreation",stackId:"a",fill:m.cacheCreation,isAnimationActive:!1}),(0,s.jsx)(d.y,{dataKey:"cacheRead",stackId:"a",fill:m.cacheRead,isAnimationActive:!1}),(0,s.jsx)(d.y,{dataKey:"output",stackId:"a",fill:m.output,radius:[3,3,0,0],isAnimationActive:!1})]})}),(0,s.jsxs)("div",{className:"flex items-center flex-wrap justify-center gap-4 text-xs text-text-secondary mt-2",children:[(0,s.jsx)(p,{color:m.input,label:h("chart.legend.input")}),(0,s.jsx)(p,{color:m.cacheCreation,label:h("chart.legend.cacheWrite")}),(0,s.jsx)(p,{color:m.cacheRead,label:h("chart.legend.cacheRead")}),(0,s.jsx)(p,{color:m.output,label:h("chart.legend.output")})]})]}):(0,s.jsx)("div",{className:"".concat(a," flex items-center justify-center text-text-tertiary text-sm"),children:h("chart.empty")})}function p(e){let{color:t,label:a}=e;return(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,s.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm",style:{background:t}}),(0,s.jsx)("span",{children:a})]})}function b(e){let t=(0,u.kj)();if(!e.active||!e.payload||!e.payload.length)return null;let a=e.payload[0].payload,r=a.input+a.output+a.cacheRead+a.cacheCreation;return(0,s.jsxs)("div",{className:"card border-border-hi shadow-lg p-3 text-xs min-w-[200px]",children:[(0,s.jsx)("div",{className:"font-medium text-text-primary mb-2",children:e.label}),(0,s.jsxs)("div",{className:"space-y-1",children:[(0,s.jsx)(g,{color:m.input,label:t("chart.legend.input"),value:a.input}),(0,s.jsx)(g,{color:m.cacheCreation,label:t("chart.legend.cacheWrite"),value:a.cacheCreation}),(0,s.jsx)(g,{color:m.cacheRead,label:t("chart.legend.cacheRead"),value:a.cacheRead}),(0,s.jsx)(g,{color:m.output,label:t("chart.legend.output"),value:a.output})]}),(0,s.jsxs)("div",{className:"mt-2 pt-2 border-t border-border flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.total")}),(0,s.jsx)("span",{className:"num-mono text-text-primary",children:(0,x.jh)(r)})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,s.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.cost")}),(0,s.jsx)("span",{className:"num-mono text-brand",children:(0,x.az)(a.cost)})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,s.jsx)("span",{className:"text-text-secondary",children:t("chart.tooltip.requests")}),(0,s.jsx)("span",{className:"num-mono text-text-primary",children:a.requests})]})]})}function g(e){let{color:t,label:a,value:r}=e;return(0,s.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-text-secondary",children:[(0,s.jsx)("span",{className:"w-2 h-2 rounded-sm",style:{background:t}}),a]}),(0,s.jsx)("span",{className:"num-mono text-text-primary",children:(0,x.jh)(r)})]})}},48122:(e,t,a)=>{"use strict";a.d(t,{ModelFilter:()=>i,d:()=>o});var s=a(50692),r=a(5317),n=a(92616),c=a(22106),l=a(68244);function i(e){let{all:t,selected:a}=e;return(0,s.jsx)(o,{labelKey:"filter.modelLabel",labelAllKey:"filter.modelAll",labelSingleKey:"filter.modelSingle",labelMultiKey:"filter.modelMulti",all:t,selected:a,param:"models",render:c.P6})}function o(e){let t,{labelAllKey:a,labelSingleKey:i,labelMultiKey:o,all:d,selected:x,param:u,render:m}=e,h=(0,r.useRouter)(),p=(0,r.usePathname)(),b=(0,r.useSearchParams)(),g=(0,l.kj)(),[j,f]=(0,n.useState)(!1),y=(0,n.useRef)(null);return(0,n.useEffect)(()=>{function e(e){y.current&&!y.current.contains(e.target)&&f(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),t=0===x.length?g(a):1===x.length?g(i,{value:m?m(x[0]):x[0]}):g(o,{count:x.length}),(0,s.jsxs)("div",{ref:y,className:"relative",children:[(0,s.jsxs)("button",{onClick:()=>f(!j),className:"btn",children:[t,(0,s.jsx)("span",{className:"text-text-tertiary ml-1",children:"▾"})]}),j&&(0,s.jsxs)("div",{className:"absolute right-0 mt-1 w-64 max-h-80 overflow-y-auto card border-border-hi shadow-lg p-2 z-20",children:[x.length>0&&(0,s.jsx)("button",{onClick:function(){let e=new URLSearchParams(b.toString());e.delete(u),h.push("".concat(p,"?").concat(e.toString()))},className:"w-full text-left text-xs text-text-secondary px-2 py-1 hover:bg-bg-surface-hi rounded",children:g("filter.clearAll")}),0===d.length&&(0,s.jsx)("div",{className:"text-xs text-text-tertiary px-2 py-3 text-center",children:g("filter.noOptions")}),d.map(e=>{let t=x.includes(e);return(0,s.jsxs)("button",{onClick:()=>(function(e){let t=new URLSearchParams(b.toString()),a=new Set(x);a.has(e)?a.delete(e):a.add(e),0===a.size?t.delete(u):t.set(u,Array.from(a).join(",")),h.push("".concat(p,"?").concat(t.toString()))})(e),className:(0,c.cn)("w-full text-left text-sm px-2 py-1.5 hover:bg-bg-surface-hi rounded flex items-center gap-2",t&&"text-text-primary"),children:[(0,s.jsx)("span",{className:(0,c.cn)("w-3.5 h-3.5 rounded-sm border flex items-center justify-center text-[10px] flex-shrink-0",t?"bg-brand border-brand text-white":"border-border-hi"),children:t?"✓":""}),(0,s.jsx)("span",{className:"truncate",children:m?m(e):e})]},e)})]})]})}},60534:(e,t,a)=>{"use strict";a.d(t,{ProjectFilter:()=>c});var s=a(50692),r=a(48122),n=a(22106);function c(e){let{all:t,selected:a}=e;return(0,s.jsx)(r.d,{labelKey:"filter.projectLabel",labelAllKey:"filter.projectAll",labelSingleKey:"filter.projectSingle",labelMultiKey:"filter.projectMulti",all:t,selected:a,param:"projects",render:n.PJ})}},66445:(e,t,a)=>{Promise.resolve().then(a.bind(a,30833)),Promise.resolve().then(a.bind(a,20315)),Promise.resolve().then(a.bind(a,48122)),Promise.resolve().then(a.bind(a,60534)),Promise.resolve().then(a.bind(a,93462)),Promise.resolve().then(a.bind(a,15830))},93462:(e,t,a)=>{"use strict";a.d(t,{RangePicker:()=>i});var s=a(50692),r=a(5317),n=a(22106),c=a(68244);let l=[{value:"1d",tk:"range.today"},{value:"7d",tk:"range.7d"},{value:"30d",tk:"range.30d"},{value:"90d",tk:"range.90d"},{value:"all",tk:"range.all"}];function i(e){let{defaultValue:t="7d"}=e,a=(0,r.useRouter)(),i=(0,r.usePathname)(),o=(0,r.useSearchParams)(),d=(0,c.kj)(),x=o.get("range")||t;return(0,s.jsx)("div",{className:"inline-flex rounded-button border border-border bg-bg-surface p-0.5",children:l.map(e=>(0,s.jsx)("button",{onClick:()=>(function(e){let t=new URLSearchParams(o.toString());t.set("range",e),a.push("".concat(i,"?").concat(t.toString()))})(e.value),className:(0,n.cn)("px-2.5 py-1 text-xs font-medium rounded transition-colors",x===e.value?"bg-bg-surface-hi text-text-primary":"text-text-secondary hover:text-text-primary"),children:d(e.tk)},e.value))})}}},e=>{e.O(0,[653,946,327,623,338,358],()=>e(e.s=66445)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[358],{56118:()=>{},88952:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,2223,23)),Promise.resolve().then(n.t.bind(n,28996,23)),Promise.resolve().then(n.t.bind(n,37180,23)),Promise.resolve().then(n.t.bind(n,76669,23)),Promise.resolve().then(n.t.bind(n,71181,23)),Promise.resolve().then(n.t.bind(n,17001,23)),Promise.resolve().then(n.t.bind(n,77305,23)),Promise.resolve().then(n.t.bind(n,93424,23)),Promise.resolve().then(n.bind(n,49993))}},e=>{var s=s=>e(e.s=s);e.O(0,[623,338],()=>(s(14169),s(88952))),_N_E=e.O()}]);
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
|
|
2
|
-
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
|
|
3
|
-
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans),ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--font-mono),ui-monospace,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.card{border-radius:12px;border-width:1px;--tw-bg-opacity:1;background-color:rgb(var(--bg-surface)/var(--tw-bg-opacity,1))}.card-pad{padding:1.5rem}.label{font-size:.75rem;line-height:1rem;font-weight:500;text-transform:uppercase;letter-spacing:.025em;--tw-text-opacity:1;color:rgb(var(--text-tertiary)/var(--tw-text-opacity,1))}.num-hero{font-size:2.25rem;line-height:2.5rem;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);letter-spacing:-.025em}.num-hero,.num-mid{font-weight:600;--tw-numeric-spacing:tabular-nums;--tw-text-opacity:1;color:rgb(var(--text-primary)/var(--tw-text-opacity,1))}.num-mid{font-size:1.5rem;line-height:2rem;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.num-mono{font-family:var(--font-mono),ui-monospace,monospace;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.pill{display:inline-flex;align-items:center;border-radius:8px;padding:.125rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500}.pill-muted{padding:.125rem .5rem;font-size:.75rem;line-height:1rem;--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(var(--bg-surface-hi)/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(var(--text-secondary)/var(--tw-text-opacity,1))}.btn,.pill-muted{display:inline-flex;align-items:center;border-radius:8px;font-weight:500;border-width:1px;border-color:rgb(var(--border)/var(--tw-border-opacity,1))}.btn{justify-content:center;gap:.375rem;background-color:rgb(var(--bg-surface)/var(--tw-bg-opacity,1));padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn,.btn:hover{--tw-border-opacity:1;--tw-bg-opacity:1}.btn:hover{border-color:rgb(var(--border-hi)/var(--tw-border-opacity,1));background-color:rgb(var(--bg-surface-hi)/var(--tw-bg-opacity,1))}.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;border-radius:8px;padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(var(--text-secondary)/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-ghost:hover{--tw-bg-opacity:1;background-color:rgb(var(--bg-surface-hi)/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(var(--text-primary)/var(--tw-text-opacity,1))}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.right-0{right:0}.top-0{top:0}.z-20{z-index:20}.z-30{z-index:30}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.ml-1{margin-left:.25rem}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.\!block{display:block!important}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-full{height:100%}.max-h-80{max-height:20rem}.min-h-\[128px\]{min-height:128px}.min-h-\[180px\]{min-height:180px}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[120px\]{min-width:120px}.min-w-\[200px\]{min-width:200px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.max-w-7xl{max-width:80rem}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[280px\]{max-width:280px}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-button{border-radius:8px}.rounded-full{border-radius:9999px}.rounded-sm{border-radius:.125rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-border{--tw-border-opacity:1;border-color:rgb(var(--border)/var(--tw-border-opacity,1))}.border-border-hi{--tw-border-opacity:1;border-color:rgb(var(--border-hi)/var(--tw-border-opacity,1))}.border-brand{--tw-border-opacity:1;border-color:rgb(var(--brand)/var(--tw-border-opacity,1))}.border-brand\/30{border-color:rgb(var(--brand)/.3)}.border-success\/20{border-color:rgb(var(--success)/.2)}.border-success\/30{border-color:rgb(var(--success)/.3)}.border-warning\/20{border-color:rgb(var(--warning)/.2)}.border-warning\/30{border-color:rgb(var(--warning)/.3)}.bg-bg{--tw-bg-opacity:1;background-color:rgb(var(--bg-base)/var(--tw-bg-opacity,1))}.bg-bg-surface{--tw-bg-opacity:1;background-color:rgb(var(--bg-surface)/var(--tw-bg-opacity,1))}.bg-bg-surface-hi{--tw-bg-opacity:1;background-color:rgb(var(--bg-surface-hi)/var(--tw-bg-opacity,1))}.bg-bg-surface-hi\/30{background-color:rgb(var(--bg-surface-hi)/.3)}.bg-brand{--tw-bg-opacity:1;background-color:rgb(var(--brand)/var(--tw-bg-opacity,1))}.bg-chart-cache-create\/15{background-color:rgb(var(--chart-cache-create)/.15)}.bg-chart-input{--tw-bg-opacity:1;background-color:rgb(var(--chart-input)/var(--tw-bg-opacity,1))}.bg-danger{--tw-bg-opacity:1;background-color:rgb(var(--danger)/var(--tw-bg-opacity,1))}.bg-danger\/10{background-color:rgb(var(--danger)/.1)}.bg-success{--tw-bg-opacity:1;background-color:rgb(var(--success)/var(--tw-bg-opacity,1))}.bg-success\/10{background-color:rgb(var(--success)/.1)}.bg-warning{--tw-bg-opacity:1;background-color:rgb(var(--warning)/var(--tw-bg-opacity,1))}.bg-warning\/10{background-color:rgb(var(--warning)/.1)}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-brand{--tw-gradient-from:rgb(var(--brand)/1) var(--tw-gradient-from-position);--tw-gradient-to:rgb(var(--brand)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-brand-hover{--tw-gradient-to:rgb(var(--brand-hover)/1) var(--tw-gradient-to-position)}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:.75rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-snug{line-height:1.375}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-brand{--tw-text-opacity:1;color:rgb(var(--brand)/var(--tw-text-opacity,1))}.text-chart-cache-create{--tw-text-opacity:1;color:rgb(var(--chart-cache-create)/var(--tw-text-opacity,1))}.text-danger{--tw-text-opacity:1;color:rgb(var(--danger)/var(--tw-text-opacity,1))}.text-success{--tw-text-opacity:1;color:rgb(var(--success)/var(--tw-text-opacity,1))}.text-text-primary{--tw-text-opacity:1;color:rgb(var(--text-primary)/var(--tw-text-opacity,1))}.text-text-secondary{--tw-text-opacity:1;color:rgb(var(--text-secondary)/var(--tw-text-opacity,1))}.text-text-tertiary{--tw-text-opacity:1;color:rgb(var(--text-tertiary)/var(--tw-text-opacity,1))}.text-warning{--tw-text-opacity:1;color:rgb(var(--warning)/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme-dark,:root{--bg-base:10 10 10;--bg-surface:20 20 20;--bg-surface-hi:28 28 28;--border:38 38 38;--border-hi:64 64 64;--text-primary:250 250 250;--text-secondary:163 163 163;--text-tertiary:115 115 115;--brand:201 100 66;--brand-hover:216 121 89;--success:34 197 94;--warning:250 204 21;--danger:248 113 113;--chart-input:96 165 250;--chart-output:251 146 60;--chart-cache-read:52 211 153;--chart-cache-create:167 139 250;--chart-grid:38 38 38;--chart-axis:115 115 115}.theme-light{--bg-base:255 255 255;--bg-surface:250 250 250;--bg-surface-hi:244 244 245;--border:228 228 231;--border-hi:212 212 216;--text-primary:23 23 23;--text-secondary:82 82 91;--text-tertiary:161 161 170;--brand:194 65 12;--brand-hover:154 52 18;--success:22 163 74;--warning:217 119 6;--danger:220 38 38;--chart-input:37 99 235;--chart-output:234 88 12;--chart-cache-read:22 163 74;--chart-cache-create:124 58 237;--chart-grid:228 228 231;--chart-axis:113 113 122}:root{--font-sans:"Geist Sans","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;--font-mono:"Geist Mono","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}*{border-color:rgb(var(--border))}body,html{background:rgb(var(--bg-base));color:rgb(var(--text-primary));font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{min-height:100vh}::-moz-selection{background:rgb(var(--brand)/.3);color:rgb(var(--text-primary))}::selection{background:rgb(var(--brand)/.3);color:rgb(var(--text-primary))}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgb(var(--border-hi));border-radius:5px}::-webkit-scrollbar-thumb:hover{background:rgb(var(--text-tertiary))}.placeholder\:text-text-tertiary::-moz-placeholder{--tw-text-opacity:1;color:rgb(var(--text-tertiary)/var(--tw-text-opacity,1))}.placeholder\:text-text-tertiary::placeholder{--tw-text-opacity:1;color:rgb(var(--text-tertiary)/var(--tw-text-opacity,1))}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:border-border-hi:hover{--tw-border-opacity:1;border-color:rgb(var(--border-hi)/var(--tw-border-opacity,1))}.hover\:bg-bg-surface:hover{--tw-bg-opacity:1;background-color:rgb(var(--bg-surface)/var(--tw-bg-opacity,1))}.hover\:bg-bg-surface-hi:hover{--tw-bg-opacity:1;background-color:rgb(var(--bg-surface-hi)/var(--tw-bg-opacity,1))}.hover\:bg-bg-surface-hi\/30:hover{background-color:rgb(var(--bg-surface-hi)/.3)}.hover\:bg-bg-surface-hi\/40:hover{background-color:rgb(var(--bg-surface-hi)/.4)}.hover\:text-brand:hover{--tw-text-opacity:1;color:rgb(var(--brand)/var(--tw-text-opacity,1))}.hover\:text-text-primary:hover{--tw-text-opacity:1;color:rgb(var(--text-primary)/var(--tw-text-opacity,1))}.focus\:border-border-hi:focus{--tw-border-opacity:1;border-color:rgb(var(--border-hi)/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\:opacity-40:disabled{opacity:.4}.group:hover .group-hover\:text-brand{--tw-text-opacity:1;color:rgb(var(--brand)/var(--tw-text-opacity,1))}@media (min-width:768px){.md\:inline{display:inline}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}
|
|
File without changes
|
|
File without changes
|