@kaitranntt/ccs 7.66.1 → 7.67.0-dev.2

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.
Files changed (283) hide show
  1. package/README.md +3 -1
  2. package/dist/ccs.js +68 -35
  3. package/dist/ccs.js.map +1 -1
  4. package/dist/cliproxy/auth/auth-types.d.ts +29 -6
  5. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
  6. package/dist/cliproxy/auth/auth-types.js +58 -10
  7. package/dist/cliproxy/auth/auth-types.js.map +1 -1
  8. package/dist/cliproxy/auth/oauth-handler.d.ts +6 -1
  9. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  10. package/dist/cliproxy/auth/oauth-handler.js +165 -45
  11. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  12. package/dist/cliproxy/auth/oauth-process.d.ts +26 -1
  13. package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -1
  14. package/dist/cliproxy/auth/oauth-process.js +314 -49
  15. package/dist/cliproxy/auth/oauth-process.js.map +1 -1
  16. package/dist/cliproxy/auth/token-manager.d.ts +9 -0
  17. package/dist/cliproxy/auth/token-manager.d.ts.map +1 -1
  18. package/dist/cliproxy/auth/token-manager.js +104 -58
  19. package/dist/cliproxy/auth/token-manager.js.map +1 -1
  20. package/dist/cliproxy/auth-utils.d.ts +2 -1
  21. package/dist/cliproxy/auth-utils.d.ts.map +1 -1
  22. package/dist/cliproxy/auth-utils.js +32 -7
  23. package/dist/cliproxy/auth-utils.js.map +1 -1
  24. package/dist/cliproxy/catalog-cache.d.ts +9 -1
  25. package/dist/cliproxy/catalog-cache.d.ts.map +1 -1
  26. package/dist/cliproxy/catalog-cache.js +115 -29
  27. package/dist/cliproxy/catalog-cache.js.map +1 -1
  28. package/dist/cliproxy/codex-plan-compatibility.d.ts +0 -1
  29. package/dist/cliproxy/codex-plan-compatibility.d.ts.map +1 -1
  30. package/dist/cliproxy/codex-plan-compatibility.js +3 -7
  31. package/dist/cliproxy/codex-plan-compatibility.js.map +1 -1
  32. package/dist/cliproxy/config/generator.d.ts +2 -1
  33. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  34. package/dist/cliproxy/config/generator.js +11 -1
  35. package/dist/cliproxy/config/generator.js.map +1 -1
  36. package/dist/cliproxy/executor/index.d.ts +5 -0
  37. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  38. package/dist/cliproxy/executor/index.js +119 -16
  39. package/dist/cliproxy/executor/index.js.map +1 -1
  40. package/dist/cliproxy/index.d.ts +1 -1
  41. package/dist/cliproxy/index.d.ts.map +1 -1
  42. package/dist/cliproxy/index.js.map +1 -1
  43. package/dist/cliproxy/management-api-client.d.ts +9 -0
  44. package/dist/cliproxy/management-api-client.d.ts.map +1 -1
  45. package/dist/cliproxy/management-api-client.js +14 -0
  46. package/dist/cliproxy/management-api-client.js.map +1 -1
  47. package/dist/cliproxy/proxy-detector.d.ts.map +1 -1
  48. package/dist/cliproxy/proxy-detector.js +6 -2
  49. package/dist/cliproxy/proxy-detector.js.map +1 -1
  50. package/dist/cliproxy/quota-fetcher-gemini-cli.d.ts.map +1 -1
  51. package/dist/cliproxy/quota-fetcher-gemini-cli.js +14 -7
  52. package/dist/cliproxy/quota-fetcher-gemini-cli.js.map +1 -1
  53. package/dist/cliproxy/routing-strategy-http.d.ts +6 -0
  54. package/dist/cliproxy/routing-strategy-http.d.ts.map +1 -0
  55. package/dist/cliproxy/routing-strategy-http.js +115 -0
  56. package/dist/cliproxy/routing-strategy-http.js.map +1 -0
  57. package/dist/cliproxy/routing-strategy.d.ts +18 -0
  58. package/dist/cliproxy/routing-strategy.d.ts.map +1 -0
  59. package/dist/cliproxy/routing-strategy.js +123 -0
  60. package/dist/cliproxy/routing-strategy.js.map +1 -0
  61. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
  62. package/dist/cliproxy/services/variant-settings.js +43 -30
  63. package/dist/cliproxy/services/variant-settings.js.map +1 -1
  64. package/dist/cliproxy/startup-lock.d.ts.map +1 -1
  65. package/dist/cliproxy/startup-lock.js +5 -1
  66. package/dist/cliproxy/startup-lock.js.map +1 -1
  67. package/dist/cliproxy/tool-sanitization-proxy.d.ts +1 -0
  68. package/dist/cliproxy/tool-sanitization-proxy.d.ts.map +1 -1
  69. package/dist/cliproxy/tool-sanitization-proxy.js +6 -0
  70. package/dist/cliproxy/tool-sanitization-proxy.js.map +1 -1
  71. package/dist/cliproxy/types.d.ts +7 -0
  72. package/dist/cliproxy/types.d.ts.map +1 -1
  73. package/dist/cliproxy/types.js.map +1 -1
  74. package/dist/commands/cleanup-command.d.ts +1 -1
  75. package/dist/commands/cleanup-command.d.ts.map +1 -1
  76. package/dist/commands/cleanup-command.js +57 -34
  77. package/dist/commands/cleanup-command.js.map +1 -1
  78. package/dist/commands/cliproxy/catalog-subcommand.d.ts.map +1 -1
  79. package/dist/commands/cliproxy/catalog-subcommand.js +12 -38
  80. package/dist/commands/cliproxy/catalog-subcommand.js.map +1 -1
  81. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  82. package/dist/commands/cliproxy/help-subcommand.js +3 -0
  83. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  84. package/dist/commands/cliproxy/index.d.ts.map +1 -1
  85. package/dist/commands/cliproxy/index.js +14 -0
  86. package/dist/commands/cliproxy/index.js.map +1 -1
  87. package/dist/commands/cliproxy/routing-subcommand.d.ts +4 -0
  88. package/dist/commands/cliproxy/routing-subcommand.d.ts.map +1 -0
  89. package/dist/commands/cliproxy/routing-subcommand.js +68 -0
  90. package/dist/commands/cliproxy/routing-subcommand.js.map +1 -0
  91. package/dist/commands/command-catalog.d.ts +2 -2
  92. package/dist/commands/command-catalog.d.ts.map +1 -1
  93. package/dist/commands/command-catalog.js +3 -1
  94. package/dist/commands/command-catalog.js.map +1 -1
  95. package/dist/commands/completion-backend.d.ts.map +1 -1
  96. package/dist/commands/completion-backend.js +15 -1
  97. package/dist/commands/completion-backend.js.map +1 -1
  98. package/dist/commands/config-command.d.ts.map +1 -1
  99. package/dist/commands/config-command.js +23 -0
  100. package/dist/commands/config-command.js.map +1 -1
  101. package/dist/commands/docker/up-subcommand.js +1 -1
  102. package/dist/commands/docker/up-subcommand.js.map +1 -1
  103. package/dist/commands/help-command.d.ts.map +1 -1
  104. package/dist/commands/help-command.js +62 -1
  105. package/dist/commands/help-command.js.map +1 -1
  106. package/dist/config/unified-config-loader.d.ts +2 -1
  107. package/dist/config/unified-config-loader.d.ts.map +1 -1
  108. package/dist/config/unified-config-loader.js +37 -1
  109. package/dist/config/unified-config-loader.js.map +1 -1
  110. package/dist/config/unified-config-types.d.ts +29 -1
  111. package/dist/config/unified-config-types.d.ts.map +1 -1
  112. package/dist/config/unified-config-types.js +13 -1
  113. package/dist/config/unified-config-types.js.map +1 -1
  114. package/dist/copilot/copilot-executor.d.ts.map +1 -1
  115. package/dist/copilot/copilot-executor.js +5 -8
  116. package/dist/copilot/copilot-executor.js.map +1 -1
  117. package/dist/delegation/headless-executor.d.ts.map +1 -1
  118. package/dist/delegation/headless-executor.js +19 -16
  119. package/dist/delegation/headless-executor.js.map +1 -1
  120. package/dist/errors/error-handler.d.ts.map +1 -1
  121. package/dist/errors/error-handler.js +13 -0
  122. package/dist/errors/error-handler.js.map +1 -1
  123. package/dist/glmt/glmt-transformer.d.ts +1 -0
  124. package/dist/glmt/glmt-transformer.d.ts.map +1 -1
  125. package/dist/glmt/glmt-transformer.js +9 -0
  126. package/dist/glmt/glmt-transformer.js.map +1 -1
  127. package/dist/management/checks/image-analysis-check.d.ts.map +1 -1
  128. package/dist/management/checks/image-analysis-check.js +19 -1
  129. package/dist/management/checks/image-analysis-check.js.map +1 -1
  130. package/dist/management/recovery-manager.d.ts +6 -0
  131. package/dist/management/recovery-manager.d.ts.map +1 -1
  132. package/dist/management/recovery-manager.js +72 -2
  133. package/dist/management/recovery-manager.js.map +1 -1
  134. package/dist/services/logging/index.d.ts +7 -0
  135. package/dist/services/logging/index.d.ts.map +1 -0
  136. package/dist/services/logging/index.js +22 -0
  137. package/dist/services/logging/index.js.map +1 -0
  138. package/dist/services/logging/log-buffer.d.ts +5 -0
  139. package/dist/services/logging/log-buffer.d.ts.map +1 -0
  140. package/dist/services/logging/log-buffer.js +20 -0
  141. package/dist/services/logging/log-buffer.js.map +1 -0
  142. package/dist/services/logging/log-config.d.ts +4 -0
  143. package/dist/services/logging/log-config.d.ts.map +1 -0
  144. package/dist/services/logging/log-config.js +68 -0
  145. package/dist/services/logging/log-config.js.map +1 -0
  146. package/dist/services/logging/log-paths.d.ts +8 -0
  147. package/dist/services/logging/log-paths.d.ts.map +1 -0
  148. package/dist/services/logging/log-paths.js +66 -0
  149. package/dist/services/logging/log-paths.js.map +1 -0
  150. package/dist/services/logging/log-reader.d.ts +5 -0
  151. package/dist/services/logging/log-reader.d.ts.map +1 -0
  152. package/dist/services/logging/log-reader.js +124 -0
  153. package/dist/services/logging/log-reader.js.map +1 -0
  154. package/dist/services/logging/log-redaction.d.ts +2 -0
  155. package/dist/services/logging/log-redaction.d.ts.map +1 -0
  156. package/dist/services/logging/log-redaction.js +53 -0
  157. package/dist/services/logging/log-redaction.js.map +1 -0
  158. package/dist/services/logging/log-storage.d.ts +4 -0
  159. package/dist/services/logging/log-storage.d.ts.map +1 -0
  160. package/dist/services/logging/log-storage.js +109 -0
  161. package/dist/services/logging/log-storage.js.map +1 -0
  162. package/dist/services/logging/log-types.d.ts +30 -0
  163. package/dist/services/logging/log-types.d.ts.map +1 -0
  164. package/dist/services/logging/log-types.js +19 -0
  165. package/dist/services/logging/log-types.js.map +1 -0
  166. package/dist/services/logging/logger.d.ts +9 -0
  167. package/dist/services/logging/logger.d.ts.map +1 -0
  168. package/dist/services/logging/logger.js +46 -0
  169. package/dist/services/logging/logger.js.map +1 -0
  170. package/dist/ui/assets/{accounts-BjfPKR8m.js → accounts-ls0hXYZ9.js} +1 -1
  171. package/dist/ui/assets/{alert-dialog-Dh2NUFdm.js → alert-dialog-DJMw_zyc.js} +1 -1
  172. package/dist/ui/assets/{api-C-3mQCFf.js → api-Dz2nP1bN.js} +2 -2
  173. package/dist/ui/assets/{auth-section-Dp10_YyD.js → auth-section-BD8XqTiz.js} +1 -1
  174. package/dist/ui/assets/{backups-section-C0jF8MP1.js → backups-section-COOSGu9k.js} +1 -1
  175. package/dist/ui/assets/{channels-CkXuK5i7.js → channels-AGHzxMPw.js} +1 -1
  176. package/dist/ui/assets/{checkbox-tA5FH8Ol.js → checkbox-pojB3pE7.js} +1 -1
  177. package/dist/ui/assets/{claude-extension-Bg2ZkzMz.js → claude-extension-4b8gXOo_.js} +1 -1
  178. package/dist/ui/assets/cliproxy-BFEBo-pc.js +3 -0
  179. package/dist/ui/assets/{cliproxy-ai-providers-DBSXTTyw.js → cliproxy-ai-providers-BXE0HGLt.js} +6 -6
  180. package/dist/ui/assets/{cliproxy-control-panel-Da-sGGyI.js → cliproxy-control-panel-ZnCfRS9l.js} +1 -1
  181. package/dist/ui/assets/{codex-ooWKOPa2.js → codex-B9uBYmnm.js} +5 -5
  182. package/dist/ui/assets/{confirm-dialog-CKjwhn9j.js → confirm-dialog-DwPqRjyW.js} +1 -1
  183. package/dist/ui/assets/{copilot-GA7EPiK1.js → copilot-CSWApqyO.js} +2 -2
  184. package/dist/ui/assets/{cursor-B6c8CyHG.js → cursor-DYbVB4gp.js} +1 -1
  185. package/dist/ui/assets/{droid-CPRHOIX2.js → droid-BAovZe7o.js} +2 -2
  186. package/dist/ui/assets/{globalenv-section-Czgnw_GV.js → globalenv-section-CHHZbjD8.js} +1 -1
  187. package/dist/ui/assets/{health-CXLOMk8n.js → health-Jp7o0exN.js} +1 -1
  188. package/dist/ui/assets/icons-DfENUzBo.js +1 -0
  189. package/dist/ui/assets/{index-CvfzKRSH.js → index--j-jJwzV.js} +1 -1
  190. package/dist/ui/assets/{index-Boa5e-GY.js → index-C5iouJJ2.js} +1 -1
  191. package/dist/ui/assets/{index-D2v_-6AW.js → index-C5uQdep3.js} +1 -1
  192. package/dist/ui/assets/{index-BceMcbCR.js → index-CpkWv5tW.js} +1 -1
  193. package/dist/ui/assets/index-DFifef9c.css +1 -0
  194. package/dist/ui/assets/index-Du97tqVQ.js +69 -0
  195. package/dist/ui/assets/index-VluKB6dO.js +1 -0
  196. package/dist/ui/assets/logs-BDbHSujh.js +1 -0
  197. package/dist/ui/assets/{masked-input-B1_asiUI.js → masked-input-BcJDHDE6.js} +1 -1
  198. package/dist/ui/assets/proxy-status-widget-DQWsa532.js +1 -0
  199. package/dist/ui/assets/{raw-json-settings-editor-panel-DMbTkxWw.js → raw-json-settings-editor-panel-Cbn2O4rk.js} +1 -1
  200. package/dist/ui/assets/searchable-select-fldXYfY4.js +1 -0
  201. package/dist/ui/assets/{separator-CdaalG0K.js → separator-Dd3ktLxa.js} +1 -1
  202. package/dist/ui/assets/{shared-BiFB-et0.js → shared-CdAn8E3x.js} +1 -1
  203. package/dist/ui/assets/{table-BPwgFXLQ.js → table-CCf__Q_I.js} +1 -1
  204. package/dist/ui/assets/{tanstack-DWm6aJ-G.js → tanstack-CrmUhA7Z.js} +2 -2
  205. package/dist/ui/assets/updates-DfoGG8Jl.js +1 -0
  206. package/dist/ui/index.html +4 -4
  207. package/dist/utils/hooks/image-analyzer-hook-utils.d.ts +21 -0
  208. package/dist/utils/hooks/image-analyzer-hook-utils.d.ts.map +1 -0
  209. package/dist/utils/hooks/image-analyzer-hook-utils.js +81 -0
  210. package/dist/utils/hooks/image-analyzer-hook-utils.js.map +1 -0
  211. package/dist/utils/hooks/image-analyzer-profile-hook-injector.d.ts +1 -0
  212. package/dist/utils/hooks/image-analyzer-profile-hook-injector.d.ts.map +1 -1
  213. package/dist/utils/hooks/image-analyzer-profile-hook-injector.js +33 -12
  214. package/dist/utils/hooks/image-analyzer-profile-hook-injector.js.map +1 -1
  215. package/dist/utils/hooks/index.d.ts +1 -0
  216. package/dist/utils/hooks/index.d.ts.map +1 -1
  217. package/dist/utils/hooks/index.js +3 -1
  218. package/dist/utils/hooks/index.js.map +1 -1
  219. package/dist/utils/image-analysis/index.d.ts +1 -0
  220. package/dist/utils/image-analysis/index.d.ts.map +1 -1
  221. package/dist/utils/image-analysis/index.js +6 -1
  222. package/dist/utils/image-analysis/index.js.map +1 -1
  223. package/dist/utils/image-analysis/repair.d.ts +12 -0
  224. package/dist/utils/image-analysis/repair.d.ts.map +1 -0
  225. package/dist/utils/image-analysis/repair.js +105 -0
  226. package/dist/utils/image-analysis/repair.js.map +1 -0
  227. package/dist/utils/websearch/trace.d.ts.map +1 -1
  228. package/dist/utils/websearch/trace.js +7 -0
  229. package/dist/utils/websearch/trace.js.map +1 -1
  230. package/dist/web-server/index.d.ts.map +1 -1
  231. package/dist/web-server/index.js +15 -0
  232. package/dist/web-server/index.js.map +1 -1
  233. package/dist/web-server/middleware/request-logging-middleware.d.ts +3 -0
  234. package/dist/web-server/middleware/request-logging-middleware.d.ts.map +1 -0
  235. package/dist/web-server/middleware/request-logging-middleware.js +30 -0
  236. package/dist/web-server/middleware/request-logging-middleware.js.map +1 -0
  237. package/dist/web-server/routes/auth-routes.d.ts +10 -0
  238. package/dist/web-server/routes/auth-routes.d.ts.map +1 -1
  239. package/dist/web-server/routes/auth-routes.js +33 -6
  240. package/dist/web-server/routes/auth-routes.js.map +1 -1
  241. package/dist/web-server/routes/catalog-routes.js +7 -7
  242. package/dist/web-server/routes/catalog-routes.js.map +1 -1
  243. package/dist/web-server/routes/cliproxy-auth-routes.d.ts +8 -0
  244. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
  245. package/dist/web-server/routes/cliproxy-auth-routes.js +63 -74
  246. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
  247. package/dist/web-server/routes/cliproxy-routing-routes.d.ts +3 -0
  248. package/dist/web-server/routes/cliproxy-routing-routes.d.ts.map +1 -0
  249. package/dist/web-server/routes/cliproxy-routing-routes.js +34 -0
  250. package/dist/web-server/routes/cliproxy-routing-routes.js.map +1 -0
  251. package/dist/web-server/routes/image-analysis-routes.d.ts.map +1 -1
  252. package/dist/web-server/routes/image-analysis-routes.js +1 -10
  253. package/dist/web-server/routes/image-analysis-routes.js.map +1 -1
  254. package/dist/web-server/routes/index.d.ts.map +1 -1
  255. package/dist/web-server/routes/index.js +22 -0
  256. package/dist/web-server/routes/index.js.map +1 -1
  257. package/dist/web-server/routes/logs-routes.d.ts +3 -0
  258. package/dist/web-server/routes/logs-routes.d.ts.map +1 -0
  259. package/dist/web-server/routes/logs-routes.js +75 -0
  260. package/dist/web-server/routes/logs-routes.js.map +1 -0
  261. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  262. package/dist/web-server/routes/settings-routes.js +2 -0
  263. package/dist/web-server/routes/settings-routes.js.map +1 -1
  264. package/dist/web-server/services/logs-dashboard-service.d.ts +7 -0
  265. package/dist/web-server/services/logs-dashboard-service.d.ts.map +1 -0
  266. package/dist/web-server/services/logs-dashboard-service.js +33 -0
  267. package/dist/web-server/services/logs-dashboard-service.js.map +1 -0
  268. package/dist/web-server/usage/routes.d.ts.map +1 -1
  269. package/dist/web-server/usage/routes.js +11 -0
  270. package/dist/web-server/usage/routes.js.map +1 -1
  271. package/dist/web-server/websocket.d.ts.map +1 -1
  272. package/dist/web-server/websocket.js +23 -14
  273. package/dist/web-server/websocket.js.map +1 -1
  274. package/lib/hooks/image-analyzer-transformer.cjs +5 -0
  275. package/package.json +1 -1
  276. package/dist/ui/assets/cliproxy-1qRVSbVC.js +0 -3
  277. package/dist/ui/assets/icons-B9oTjo-t.js +0 -1
  278. package/dist/ui/assets/index-BMHPMj0j.js +0 -69
  279. package/dist/ui/assets/index-CknHGRYp.css +0 -1
  280. package/dist/ui/assets/index-v-DY6Zby.js +0 -1
  281. package/dist/ui/assets/proxy-status-widget-Ci1JpStj.js +0 -1
  282. package/dist/ui/assets/searchable-select-HbP2PXl3.js +0 -1
  283. package/dist/ui/assets/updates-l8Co9uve.js +0 -1
@@ -0,0 +1 @@
1
+ import{j as e}from"./radix-ui-Zb8sVEtn.js";import{r as f,c as pe}from"./react-vendor-CNOkPC89.js";import{u as M,a as ee,C as p,b as g,S as h,c,P as N,B as I,d as H,e as se,f as ge,g as te,h as je,i as ae,j as y,k as D,l as ye,m as Ne,n as we,o as be}from"./index-Du97tqVQ.js";import{a3 as ve,al as re,am as z,an as ne,a1 as le,aa as ke,G as Ce,ao as Se,R as De,$ as Q,U as Le,Z as ie,v as $e,ad as G,ap as Te,Y as Fe,C as Re,aq as Me,ar as Pe}from"./icons-DfENUzBo.js";import{a as Be,u as P}from"./tanstack-CrmUhA7Z.js";import{K as $,L as Y,f as k,H as Ae}from"./utils-CzKF5WmX.js";import{R as oe,A as Ue,C as qe,X as Ie,Y as V,T as ce,a as Z,P as Oe,b as Ke,c as Ee}from"./charts-BBPXh0Ar.js";import"./notifications-B2HqRBj7.js";import"./form-utils-Bcoyqxpq.js";import"./code-highlight-BRUf_pqB.js";function Ge({data:s,isLoading:t}){const{privacyMode:r}=M(),{t:n}=ee();if(t)return e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-4",children:[1,2,3,4,5].map(a=>e.jsx(p,{children:e.jsx(g,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(h,{className:"h-4 w-[100px]"}),e.jsx(h,{className:"h-8 w-[80px]"})]}),e.jsx(h,{className:"h-8 w-8 rounded-lg"})]})})},a))});const l=(s?.tokenBreakdown?.cacheCreation?.cost??0)+(s?.tokenBreakdown?.cacheRead?.cost??0),i=s?.totalCost?Math.round(l/s.totalCost*100):0,x=[{title:n("analyticsSummary.totalTokens"),value:s?.totalTokens??0,icon:ve,format:a=>R(a),color:"text-blue-600",bgColor:"bg-blue-100 dark:bg-blue-900/20",subtitle:n("analyticsSummary.totalTokensSubtitle",{input:R(s?.totalInputTokens??0),output:R(s?.totalOutputTokens??0)})},{title:n("analyticsSummary.totalCost"),value:s?.totalCost??0,icon:re,format:a=>`$${a.toFixed(2)}`,color:"text-green-600",bgColor:"bg-green-100 dark:bg-green-900/20",subtitle:n("analyticsSummary.totalCostSubtitle",{value:s?.averageCostPerDay?.toFixed(2)??"0.00"})},{title:n("analyticsSummary.cacheTokens"),value:s?.totalCacheTokens??0,icon:z,format:a=>R(a),color:"text-cyan-600",bgColor:"bg-cyan-100 dark:bg-cyan-900/20",subtitle:n("analyticsSummary.cacheTokensSubtitle",{cost:l.toFixed(2),percent:i})},{title:n("analyticsSummary.inputCost"),value:s?.tokenBreakdown?.input?.cost??0,icon:ne,format:a=>`$${a.toFixed(2)}`,color:"text-purple-600",bgColor:"bg-purple-100 dark:bg-purple-900/20",subtitle:n("analyticsSummary.tokensSubtitle",{value:R(s?.tokenBreakdown?.input?.tokens??0)})},{title:n("analyticsSummary.outputCost"),value:s?.tokenBreakdown?.output?.cost??0,icon:le,format:a=>`$${a.toFixed(2)}`,color:"text-orange-600",bgColor:"bg-orange-100 dark:bg-orange-900/20",subtitle:n("analyticsSummary.tokensSubtitle",{value:R(s?.tokenBreakdown?.output?.tokens??0)})}];return e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-4",children:x.map((a,o)=>{const d=a.icon;return e.jsx(p,{className:"hover:shadow-md transition-shadow",children:e.jsx(g,{className:"p-4",children:e.jsxs("div",{className:"flex items-center justify-between space-x-2",children:[e.jsxs("div",{className:"space-y-1 min-w-0",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground truncate",children:a.title}),e.jsx("p",{className:c("text-xl font-bold truncate",r&&N),children:a.format(a.value)}),a.subtitle&&e.jsx("p",{className:c("text-[10px] text-muted-foreground truncate",r&&N),children:a.subtitle})]}),e.jsx("div",{className:c("p-2 rounded-lg shrink-0",a.bgColor),children:e.jsx(d,{className:c("h-4 w-4",a.color)})})]})})},o)})})}function R(s){return s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(1)}K`:s.toLocaleString()}function We({model:s}){const{privacyMode:t}=M(),r=He(s.ioRatio);return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ke,{className:"h-4 w-4 text-primary shrink-0"}),e.jsx("h4",{className:"font-semibold leading-none truncate",title:s.model,children:s.model})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(I,{variant:"secondary",className:"text-[10px] h-5 px-1.5",children:[s.percentage.toFixed(1),"% usage"]}),e.jsxs(I,{variant:r.variant,className:"text-[10px] h-5 px-1.5",children:[s.ioRatio.toFixed(0),":1 I/O"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{className:"p-2 rounded-md bg-muted/50 border text-center",children:[e.jsxs("p",{className:c("text-lg font-bold",t&&N),children:["$",s.cost.toFixed(2)]}),e.jsx("p",{className:"text-[10px] text-muted-foreground uppercase tracking-wider",children:"Total Cost"})]}),e.jsxs("div",{className:"p-2 rounded-md bg-muted/50 border text-center",children:[e.jsx("p",{className:c("text-lg font-bold",t&&N),children:ze(s.tokens)}),e.jsx("p",{className:"text-[10px] text-muted-foreground uppercase tracking-wider",children:"Total Tokens"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h5",{className:"text-[11px] font-medium text-muted-foreground uppercase tracking-wider",children:"Token Breakdown"}),e.jsxs("div",{className:c("space-y-1",t&&N),children:[e.jsx(W,{label:"Input",tokens:s.inputTokens,cost:s.costBreakdown.input.cost,color:"#335c67",icon:ne}),e.jsx(W,{label:"Output",tokens:s.outputTokens,cost:s.costBreakdown.output.cost,color:"#fff3b0",icon:le}),e.jsx(W,{label:"Cache Write",tokens:s.cacheCreationTokens,cost:s.costBreakdown.cacheCreation.cost,color:"#e09f3e",icon:z}),e.jsx(W,{label:"Cache Read",tokens:s.cacheReadTokens,cost:s.costBreakdown.cacheRead.cost,color:"#9e2a2b",icon:z})]})]}),e.jsxs("div",{className:"p-2.5 rounded-md border bg-muted/20 space-y-1.5",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ce,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("span",{className:"text-xs font-medium",children:"Input/Output Ratio"})]}),e.jsx("p",{className:"text-[11px] text-muted-foreground leading-snug",children:r.description})]})]})}function W({label:s,tokens:t,cost:r,color:n,icon:l}){return t===0?null:e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("div",{className:"w-1 h-6 rounded-full shrink-0",style:{backgroundColor:n}}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"font-medium truncate",children:s}),e.jsxs("span",{className:"font-mono text-muted-foreground",children:["$",r.toFixed(3)]})]}),e.jsxs("div",{className:"flex items-center gap-1.5 text-muted-foreground",children:[e.jsx(l,{className:"h-3 w-3 shrink-0"}),e.jsx("span",{children:_e(t)})]})]})]})}function He(s){return s>=200?{variant:"destructive",description:"Extended thinking or large context loading. Expected for reasoning models."}:s>=50?{variant:"secondary",description:"More input than output. Typical for analysis tasks."}:s>=5?{variant:"outline",description:"Balanced input/output ratio for typical coding tasks."}:{variant:"default",description:"More output than input. Generation-heavy workload."}}function _e(s){return s.toLocaleString()}function ze(s){return s>=1e9?`${(s/1e9).toFixed(1)}B`:s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(1)}K`:s.toString()}const Ye="/api";function b(s){const t=s.getFullYear(),r=String(s.getMonth()+1).padStart(2,"0"),n=String(s.getDate()).padStart(2,"0");return`${t}${r}${n}`}const T={summary:s=>{const t=new URLSearchParams;return s?.startDate&&t.append("since",b(s.startDate)),s?.endDate&&t.append("until",b(s.endDate)),s?.profile&&t.append("profile",s.profile),L(`/usage/summary?${t}`)},trends:s=>{const t=new URLSearchParams;return s?.startDate&&t.append("since",b(s.startDate)),s?.endDate&&t.append("until",b(s.endDate)),s?.profile&&t.append("profile",s.profile),L(`/usage/daily?${t}`)},hourly:s=>{const t=new URLSearchParams;return s?.startDate&&t.append("since",b(s.startDate)),s?.endDate&&t.append("until",b(s.endDate)),L(`/usage/hourly?${t}`)},models:s=>{const t=new URLSearchParams;return s?.startDate&&t.append("since",b(s.startDate)),s?.endDate&&t.append("until",b(s.endDate)),s?.profile&&t.append("profile",s.profile),L(`/usage/models?${t}`)},sessions:s=>{const t=new URLSearchParams;return s?.startDate&&t.append("since",b(s.startDate)),s?.endDate&&t.append("until",b(s.endDate)),s?.profile&&t.append("profile",s.profile),s?.limit&&t.append("limit",s.limit.toString()),s?.offset&&t.append("offset",s.offset.toString()),L(`/usage/sessions?${t}`)},monthly:(s,t)=>{const r=new URLSearchParams;return s&&r.append("months",s.toString()),t&&r.append("profile",t),L(`/usage/monthly?${r}`)},refresh:async()=>{if(!(await fetch(`${Ye}/usage/refresh`,{method:"POST",headers:{"Content-Type":"application/json"}})).ok)throw new Error("Failed to refresh usage cache")},status:()=>L("/usage/status"),insights:s=>{const t=new URLSearchParams;return s?.startDate&&t.append("since",b(s.startDate)),s?.endDate&&t.append("until",b(s.endDate)),s?.profile&&t.append("profile",s.profile),L(`/usage/insights?${t}`)}};async function L(s){const r=await fetch(`/api${s}`,{headers:{"Content-Type":"application/json"}});if(!r.ok){const l=await r.json().catch(()=>({error:"Unknown error"}));throw new Error(l.error||r.statusText)}const n=await r.json();return n.data||n}function Qe(s){return P({queryKey:["usage","summary",s],queryFn:()=>T.summary(s),staleTime:60*1e3})}function Ve(s){return P({queryKey:["usage","trends",s],queryFn:()=>T.trends(s),staleTime:60*1e3})}function Ze(s){return P({queryKey:["usage","hourly",s],queryFn:()=>T.hourly(s),staleTime:60*1e3})}function Xe(s){return P({queryKey:["usage","models",s],queryFn:()=>T.models(s),staleTime:60*1e3})}function Je(){const s=Be();return f.useCallback(async()=>{await T.refresh(),await s.invalidateQueries({queryKey:["usage"]})},[s])}function es(){return P({queryKey:["usage","status"],queryFn:()=>T.status(),staleTime:10*1e3,refetchInterval:30*1e3})}function ss(s){return P({queryKey:["usage","sessions",s],queryFn:()=>T.sessions(s),staleTime:60*1e3})}function ts(){const[s,t]=f.useState({from:$(new Date,30),to:new Date}),[r,n]=f.useState(!1),[l,i]=f.useState(null),[x,a]=f.useState(null),[o,d]=f.useState("daily"),u=Je(),m=f.useCallback(async()=>{n(!0);try{await u()}finally{n(!1)}},[u]),j=f.useMemo(()=>({startDate:s?.from,endDate:s?.to}),[s?.from,s?.to]),{data:w,isLoading:v}=Qe(j),{data:C,isLoading:S}=Ve(j),{data:B,isLoading:A}=Ze(j),{data:U,isLoading:q}=Xe(j),{data:_,isLoading:O}=ss({...j,limit:3}),{data:K}=es(),de=f.useCallback(()=>{const F=new Date;t({from:$(F,1),to:F}),d("hourly")},[]),xe=f.useCallback(F=>{t(F),d("daily")},[]),ue=f.useMemo(()=>K?.lastFetch?Y(new Date(K.lastFetch),{addSuffix:!0}):null,[K?.lastFetch]),me=f.useCallback((F,fe)=>{const E=fe.currentTarget.getBoundingClientRect();a({x:E.left+E.width/2,y:E.top+E.height/2}),i(F)},[]),he=f.useCallback(()=>{i(null),a(null)},[]);return{dateRange:s,isRefreshing:r,viewMode:o,selectedModel:l,popoverPosition:x,summary:w,trends:C,hourlyData:B,models:U,sessions:_,status:K,isSummaryLoading:v,isTrendsLoading:S,isHourlyLoading:A,isModelsLoading:q,isSessionsLoading:O,isLoading:v||S||q||O,handleRefresh:m,handleTodayClick:de,handleDateRangeChange:xe,handleModelClick:me,handlePopoverClose:he,lastUpdatedText:ue}}function as({value:s,onChange:t,presets:r=[{label:"Last 7 days",range:{from:$(new Date,7),to:new Date}},{label:"Last 30 days",range:{from:$(new Date,30),to:new Date}},{label:"Last 90 days",range:{from:$(new Date,90),to:new Date}}],className:n}){const[l,i]=pe.useState(!1),x=a=>!s||!s.from||!s.to||!a.from||!a.to?!1:k(s.from,"yyyy-MM-dd")===k(a.from,"yyyy-MM-dd")&&k(s.to,"yyyy-MM-dd")===k(a.to,"yyyy-MM-dd");return e.jsxs("div",{className:c("flex flex-wrap items-center gap-2",n),children:[r.map(a=>e.jsx(H,{variant:x(a.range)?"default":"outline",size:"sm",onClick:()=>t(a.range),children:a.label},a.label)),e.jsxs(se,{open:l,onOpenChange:i,children:[e.jsx(ge,{asChild:!0,children:e.jsxs(H,{id:"date",variant:"outline",className:c("w-auto min-w-[200px] sm:min-w-[240px] justify-start text-left font-normal",!s&&"text-muted-foreground"),children:[e.jsx(Se,{className:"mr-2 h-4 w-4"}),s?.from?s.to?e.jsxs(e.Fragment,{children:[k(s.from,"LLL dd, y")," - ",k(s.to,"LLL dd, y")]}):k(s.from,"LLL dd, y"):e.jsx("span",{children:"Pick a date"})]})}),e.jsx(te,{className:"w-auto p-0",align:"end",children:e.jsx(je,{initialFocus:!0,mode:"range",defaultMonth:s?.from,selected:s,onSelect:t,numberOfMonths:2})})]})]})}function rs({dateRange:s,onDateRangeChange:t,onTodayClick:r,onRefresh:n,isRefreshing:l,lastUpdatedText:i,viewMode:x}){const{t:a}=ee();return e.jsxs("div",{className:"flex flex-col gap-3 shrink-0 xl:flex-row xl:items-center xl:justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl font-semibold",children:a("analytics.title")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:a("analytics.subtitle")})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 xl:justify-end",children:[e.jsx(H,{variant:x==="hourly"?"default":"outline",size:"sm",className:"h-8",onClick:r,children:"24H"}),e.jsx(as,{className:"flex-wrap",value:s,onChange:t,presets:[{label:"7D",range:{from:$(new Date,7),to:new Date}},{label:"30D",range:{from:$(new Date,30),to:new Date}},{label:a("analytics.month"),range:{from:Ae(new Date),to:new Date}},{label:a("analytics.allTime"),range:{from:void 0,to:new Date}}]}),i&&e.jsx("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:a("analytics.updated",{value:i})}),e.jsx(H,{variant:"outline",size:"sm",className:"gap-2 h-8",onClick:n,disabled:l,children:e.jsx(De,{className:`w-3.5 h-3.5 ${l?"animate-spin":""}`})})]})]})}function ns({data:s,isLoading:t,granularity:r="daily",className:n}){const{privacyMode:l}=M(),i=f.useMemo(()=>!s||s.length===0?[]:(r==="hourly"?s:[...s].reverse()).map(o=>{const d="hour"in o?o.hour:o.date;return{...o,dateFormatted:ls(d,r),costRounded:Number(o.cost.toFixed(4))}}),[s,r]);if(t)return e.jsx(h,{className:c("h-full w-full",n)});if(!s||s.length===0)return e.jsx("div",{className:c("h-full flex items-center justify-center",n),children:e.jsx("p",{className:"text-muted-foreground",children:r==="hourly"?"No usage data for today":"No usage data available"})});const x=({x:a,y:o,payload:d,isRight:u})=>{const m=u?`$${d.value}`:X(Number(d.value));return e.jsx("text",{x:a,y:o,dy:4,textAnchor:u?"start":"end",fontSize:12,fill:"currentColor",className:c("fill-muted-foreground",l&&"blur-[4px]"),children:m})};return e.jsx("div",{className:c("w-full h-full",n),children:e.jsx(oe,{width:"100%",height:"100%",children:e.jsxs(Ue,{data:i,margin:{top:5,right:30,left:20,bottom:5},children:[e.jsxs("defs",{children:[e.jsxs("linearGradient",{id:"tokenGradient",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"5%",stopColor:"#0080FF",stopOpacity:.8}),e.jsx("stop",{offset:"95%",stopColor:"#0080FF",stopOpacity:.1})]}),e.jsxs("linearGradient",{id:"costGradient",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"5%",stopColor:"#00C49F",stopOpacity:.8}),e.jsx("stop",{offset:"95%",stopColor:"#00C49F",stopOpacity:.1})]})]}),e.jsx(qe,{strokeDasharray:"3 3",className:"stroke-muted"}),e.jsx(Ie,{dataKey:"dateFormatted",tick:{fontSize:12},tickLine:!1,axisLine:{className:"stroke-muted"}}),e.jsx(V,{yAxisId:"left",orientation:"left",tick:a=>e.jsx(x,{...a,isRight:!1}),tickLine:!1,axisLine:{className:"stroke-muted"}}),e.jsx(V,{yAxisId:"right",orientation:"right",tick:a=>e.jsx(x,{...a,isRight:!0}),tickLine:!1,axisLine:{className:"stroke-muted"}}),e.jsx(ce,{content:({active:a,payload:o,label:d})=>{if(!a||!o||!o.length)return null;const u=o[0].payload;return e.jsxs("div",{className:"rounded-lg border bg-background p-3 shadow-lg",children:[e.jsx("p",{className:"font-medium mb-2",children:d}),o.map((m,j)=>e.jsxs("p",{className:c("text-sm",l&&N),style:{color:m.color},children:[m.name,":"," ",m.name==="Tokens"?X(Number(m.value)||0):`$${m.value}`]},j)),"requests"in u&&e.jsxs("p",{className:c("text-sm text-muted-foreground mt-1",l&&N),children:["Requests: ",u.requests]})]})}}),e.jsx(Z,{yAxisId:"left",type:"monotone",dataKey:"tokens",stroke:"#0080FF",strokeWidth:2,fillOpacity:1,fill:"url(#tokenGradient)",name:"Tokens"}),e.jsx(Z,{yAxisId:"right",type:"monotone",dataKey:"costRounded",stroke:"#00C49F",strokeWidth:2,fillOpacity:1,fill:"url(#costGradient)",name:"Cost"})]})})})}function ls(s,t){if(t==="hourly"){const[n,l]=s.split(" ");if(n&&l){const i=new Date(`${n}T${l}:00Z`);return k(i,"HH:mm")}return s}const r=new Date(s);return t==="monthly"?k(r,"MMM yyyy"):k(r,"MMM dd")}function X(s){return s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(1)}K`:s.toLocaleString()}function is({data:s,isLoading:t,className:r}){const{privacyMode:n}=M(),l=f.useMemo(()=>!s||s.length===0?[]:s.map(a=>({name:a.model,value:a.tokens,cost:a.cost,percentage:a.percentage,fill:ae(a.model)})),[s]);if(t)return e.jsx(h,{className:c("h-full min-h-[100px] w-full",r)});if(!s||s.length===0)return e.jsx("div",{className:c("h-full min-h-[100px] flex items-center justify-center",r),children:e.jsx("p",{className:"text-muted-foreground",children:"No model data available"})});const i=({active:a,payload:o})=>{if(!a||!o)return null;const d=o;if(!d.length)return null;const u=d[0].payload;return e.jsxs("div",{className:"rounded-lg border bg-background p-2 shadow-lg text-xs",children:[e.jsx("p",{className:"font-medium mb-1",children:u.name}),e.jsxs("p",{className:c("text-muted-foreground",n&&N),children:[os(u.value)," (",u.percentage.toFixed(1),"%)"]}),e.jsxs("p",{className:c("text-muted-foreground",n&&N),children:["$",u.cost.toFixed(4)]})]})},x=a=>a.percentage>5?`${a.percentage.toFixed(1)}%`:"";return e.jsx("div",{className:c("w-full h-full min-h-[100px]",r),children:e.jsx(oe,{width:"100%",height:"100%",children:e.jsxs(Oe,{children:[e.jsx(Ke,{data:l,cx:"50%",cy:"50%",labelLine:!1,label:x,innerRadius:50,outerRadius:70,paddingAngle:2,dataKey:"value",children:l.map((a,o)=>e.jsx(Ee,{fill:a.fill,strokeWidth:1},`cell-${o}`))}),e.jsx(ce,{content:i})]})})})}function os(s){return s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(1)}K`:s.toLocaleString()}function cs(s){if(!s)return"";const r=s.replace(/^\/|\/$/g,"").split("/").filter(n=>n.length>0);return r[r.length-1]||""}function ds({data:s,isLoading:t,className:r}){const{privacyMode:n}=M(),l=f.useMemo(()=>{if(!s?.sessions||s.sessions.length===0)return null;const i=s.sessions,x=s.total,a=i.reduce((w,v)=>w+(v.inputTokens+v.outputTokens),0),o=Math.round(a/i.length),u=i.reduce((w,v)=>w+v.cost,0)/i.length,m=i[0],j=m?Y(new Date(m.lastActivity),{addSuffix:!0}):"N/A";return{totalSessions:x,avgTokens:o,avgCost:u,lastActive:j,recentSessions:i.slice(0,3)}},[s]);return t?e.jsxs(p,{className:c("flex flex-col h-full min-h-0 overflow-hidden gap-0 py-0",r),children:[e.jsx(y,{className:"px-3 py-2",children:e.jsx(h,{className:"h-5 w-32"})}),e.jsx(g,{className:"px-3 pb-3 pt-0 flex-1",children:e.jsx(h,{className:"h-full w-full"})})]}):l?e.jsxs(p,{className:c("flex flex-col h-full min-h-0 overflow-hidden gap-0 py-0 shadow-sm",r),children:[e.jsx(y,{className:"px-3 py-2",children:e.jsxs(D,{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(Q,{className:"w-4 h-4"}),"Session Stats"]})}),e.jsxs(g,{className:"px-3 pb-3 pt-0 flex-1 min-h-0 flex flex-col gap-3",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{className:"p-2 rounded-md bg-muted/50 border text-center",children:[e.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-blue-600 dark:text-blue-400",children:[e.jsx(Le,{className:"w-4 h-4"}),e.jsx("span",{className:"text-xl font-bold",children:l.totalSessions})]}),e.jsx("p",{className:"text-[10px] text-muted-foreground uppercase tracking-wider mt-0.5",children:"Total Sessions"})]}),e.jsxs("div",{className:"p-2 rounded-md bg-muted/50 border text-center",children:[e.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-green-600 dark:text-green-400",children:[e.jsx(ie,{className:"w-4 h-4"}),e.jsxs("span",{className:c("text-xl font-bold",n&&N),children:["$",l.avgCost.toFixed(2)]})]}),e.jsx("p",{className:"text-[10px] text-muted-foreground uppercase tracking-wider mt-0.5",children:"Avg Cost/Session"})]})]}),e.jsxs("div",{className:"flex-1 min-h-0 space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-1 text-xs text-muted-foreground font-medium mb-1",children:[e.jsx($e,{className:"w-3 h-3"}),"Recent Activity"]}),e.jsx("div",{className:"space-y-1.5 max-h-full overflow-y-auto pr-1",children:l.recentSessions.map(i=>e.jsxs("div",{className:"flex items-center justify-between text-xs p-1.5 rounded bg-muted/30 hover:bg-muted/50 transition-colors",children:[e.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"font-medium truncate",title:i.projectPath,children:cs(i.projectPath)}),(i.target??"claude")!=="claude"&&e.jsx("span",{className:"shrink-0 px-1 py-0 text-[9px] font-medium rounded bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-300 uppercase",children:i.target})]}),e.jsx("span",{className:"text-[10px] text-muted-foreground",children:Y(new Date(i.lastActivity),{addSuffix:!0})})]}),e.jsxs("div",{className:c("text-right shrink-0 ml-2",n&&N),children:[e.jsxs("div",{className:"font-mono",children:["$",i.cost.toFixed(2)]}),e.jsxs("div",{className:"text-[10px] text-muted-foreground",children:[xs(i.inputTokens+i.outputTokens)," toks"]})]})]},i.sessionId))})]})]})]}):e.jsxs(p,{className:c("flex flex-col h-full min-h-0 overflow-hidden gap-0 py-0",r),children:[e.jsx(y,{className:"px-3 py-2",children:e.jsxs(D,{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(Q,{className:"w-4 h-4"}),"Session Stats"]})}),e.jsx(g,{className:"px-3 pb-3 pt-0 flex-1 flex items-center justify-center",children:e.jsx("p",{className:"text-sm text-muted-foreground text-center",children:"No session data available"})})]})}function xs(s){return s>=1e9?`${(s/1e9).toFixed(1)}B`:s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(1)}K`:s.toString()}function us({className:s,isLoading:t}){const{data:r,isLoading:n}=ye(),{data:l,isLoading:i,error:x}=Ne(r?.running);if(t||n||r?.running&&i)return e.jsxs(p,{className:c("flex flex-col h-full min-h-0 overflow-hidden gap-0 py-0",s),children:[e.jsx(y,{className:"px-3 py-2",children:e.jsxs(D,{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(G,{className:"h-4 w-4"}),"CLIProxy Stats"]})}),e.jsx(g,{className:"px-3 pb-3 pt-0 flex-1",children:e.jsxs("div",{className:"space-y-3",children:[e.jsx(h,{className:"h-4 w-[100px]"}),e.jsx(h,{className:"h-16 w-full"})]})})]});if(!r?.running)return e.jsxs(p,{className:c("flex flex-col h-full min-h-0 overflow-hidden gap-0 py-0 border-dashed",s),children:[e.jsx(y,{className:"px-3 py-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(D,{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(G,{className:"h-4 w-4 text-muted-foreground"}),"CLIProxy Stats"]}),e.jsx(I,{variant:"secondary",className:"text-[10px] h-5",children:"Offline"})]})}),e.jsx(g,{className:"px-3 pb-3 pt-0 flex-1 flex items-center justify-center",children:e.jsx("p",{className:"text-xs text-muted-foreground text-center",children:"Start a CLIProxy session (gemini, codex, agy) to collect stats."})})]});if(x)return e.jsxs(p,{className:c("flex flex-col h-full min-h-0 overflow-hidden gap-0 py-0 border-destructive/50",s),children:[e.jsx(y,{className:"px-3 py-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(D,{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(G,{className:"h-4 w-4"}),"CLIProxy Stats"]}),e.jsx(I,{variant:"destructive",className:"text-[10px] h-5",children:"Error"})]})}),e.jsx(g,{className:"px-3 pb-3 pt-0 flex-1",children:e.jsx("p",{className:"text-xs text-destructive",children:x.message})})]});const o=l?.totalRequests??0,d=l?.quotaExceededCount??0,u=o-d,m=o>0?Math.round(u/o*100):100,j=l?.tokens?.total??0,w=Object.entries(l?.requestsByModel??{}).sort((C,S)=>S[1]-C[1]).slice(0,4),v=w.length>0?w[0][1]:1;return e.jsxs(p,{className:c("flex flex-col h-full min-h-0 overflow-hidden gap-0 py-0",s),children:[e.jsx(y,{className:"px-3 py-2 border-b bg-muted/5",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(D,{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(G,{className:"h-4 w-4"}),"CLIProxy Stats"]}),e.jsxs(I,{variant:"outline",className:"text-[10px] h-5 text-green-600 border-green-200 bg-green-50 dark:bg-green-900/10 dark:border-green-800",children:[e.jsx(ie,{className:"h-3 w-3 mr-0.5"}),"Running"]})]})}),e.jsx(g,{className:"p-0 flex-1 min-h-0",children:e.jsx(we,{className:"h-full",children:e.jsxs("div",{className:"p-3 space-y-3",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 p-2 rounded-lg bg-muted/30",children:[e.jsxs("div",{className:"relative",children:[e.jsxs("svg",{className:"w-10 h-10 -rotate-90",viewBox:"0 0 36 36",children:[e.jsx("circle",{cx:"18",cy:"18",r:"14",fill:"none",stroke:"currentColor",strokeWidth:"3",className:"text-muted/30"}),e.jsx("circle",{cx:"18",cy:"18",r:"14",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeDasharray:`${m*.88} 88`,strokeLinecap:"round",className:m>=90?"text-green-500":"text-amber-500"})]}),e.jsxs("span",{className:"absolute inset-0 flex items-center justify-center text-[8px] font-bold",children:[m,"%"]})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-lg font-bold leading-none",children:J(o)}),e.jsx("div",{className:"text-[9px] text-muted-foreground mt-0.5",children:d>0?`${d} failed`:"All success"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 p-2 rounded-lg bg-muted/30",children:[e.jsx("div",{className:"p-1.5 rounded-md bg-purple-100 dark:bg-purple-900/20",children:e.jsx(Te,{className:"h-4 w-4 text-purple-600"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-lg font-bold leading-none",children:J(j)}),e.jsx("div",{className:"text-[9px] text-muted-foreground mt-0.5",children:"Total tokens"})]})]})]}),w.length>0&&e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] font-medium text-muted-foreground",children:[e.jsx(Fe,{className:"h-3 w-3"}),"Models Used"]}),e.jsx("div",{className:"space-y-1",children:w.map(([C,S])=>{const B=Math.round(S/v*100),A=ms(C);return e.jsxs("div",{className:"group",children:[e.jsxs("div",{className:"flex items-center justify-between text-[10px] mb-0.5",children:[e.jsx("span",{className:"truncate font-medium",title:C,children:A}),e.jsx("span",{className:"text-muted-foreground shrink-0 ml-2",children:S})]}),e.jsx("div",{className:"h-1 bg-muted/50 rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-accent/70 rounded-full transition-all",style:{width:`${B}%`}})})]},C)})})]})]})})})]})}function J(s){return s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(1)}K`:s.toLocaleString()}function ms(s){let t=s.replace(/^gemini-claude-/,"").replace(/^gemini-/,"").replace(/^claude-/,"").replace(/^anthropic\./,"").replace(/-thinking$/," Thinking");return t=t.split(/[-_]/).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" "),t.length>20&&(t=t.slice(0,18)+"..."),t}function hs(s){return s>=1e9?`${(s/1e9).toFixed(1)}B`:s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(0)}K`:s.toString()}function fs({models:s,isLoading:t,onModelClick:r,privacyMode:n}){return e.jsxs(p,{className:"flex flex-col h-full min-h-0 overflow-hidden gap-0 py-0 shadow-sm lg:col-span-4",children:[e.jsx(y,{className:"px-3 py-2",children:e.jsxs(D,{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(re,{className:"w-4 h-4"}),"Cost by Model"]})}),e.jsx(g,{className:"px-2 pb-2 pt-0 flex-1 min-h-0 overflow-y-auto",children:t?e.jsx(h,{className:"h-full w-full"}):e.jsxs("div",{className:"space-y-0.5",children:[[...s||[]].sort((l,i)=>i.cost-l.cost).map(l=>e.jsxs("button",{className:"group flex items-center text-xs w-full hover:bg-muted/50 rounded px-2 py-1.5 transition-colors cursor-pointer gap-3",onClick:i=>r(l,i),title:"Click for details",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0 w-[180px] shrink-0",children:[e.jsx("div",{className:"w-2 h-2 rounded-full shrink-0",style:{backgroundColor:ae(l.model)}}),e.jsx("span",{className:"font-medium truncate group-hover:underline underline-offset-2",children:l.model})]}),e.jsx(ps,{model:l}),e.jsx("span",{className:c("text-[10px] text-muted-foreground w-14 text-right shrink-0",n&&N),children:hs(l.tokens)}),e.jsxs("span",{className:c("font-mono font-medium w-16 text-right shrink-0",n&&N),children:["$",l.cost.toFixed(2)]}),e.jsx(Re,{className:"w-3 h-3 opacity-0 group-hover:opacity-50 transition-opacity shrink-0"})]},l.model)),e.jsx(gs,{})]})})]})}function ps({model:s}){const t={input:"#335c67",output:"#fff3b0",cacheWrite:"#e09f3e",cacheRead:"#9e2a2b"},r=n=>s.cost>0?n/s.cost*100:0;return e.jsx("div",{className:"flex-1 flex items-center gap-1 min-w-0",children:e.jsxs("div",{className:"flex-1 h-2 bg-muted rounded-full overflow-hidden flex",children:[e.jsx("div",{className:"h-full",style:{backgroundColor:t.input,width:`${r(s.costBreakdown.input.cost)}%`},title:`Input: $${s.costBreakdown.input.cost.toFixed(2)}`}),e.jsx("div",{className:"h-full",style:{backgroundColor:t.output,width:`${r(s.costBreakdown.output.cost)}%`},title:`Output: $${s.costBreakdown.output.cost.toFixed(2)}`}),e.jsx("div",{className:"h-full",style:{backgroundColor:t.cacheWrite,width:`${r(s.costBreakdown.cacheCreation.cost)}%`},title:`Cache Write: $${s.costBreakdown.cacheCreation.cost.toFixed(2)}`}),e.jsx("div",{className:"h-full",style:{backgroundColor:t.cacheRead,width:`${r(s.costBreakdown.cacheRead.cost)}%`},title:`Cache Read: $${s.costBreakdown.cacheRead.cost.toFixed(2)}`})]})})}function gs(){const s=[{color:"#335c67",label:"Input"},{color:"#fff3b0",label:"Output",hasBorder:!0},{color:"#e09f3e",label:"Cache Write"},{color:"#9e2a2b",label:"Cache Read"}];return e.jsx("div",{className:"flex items-center gap-3 pt-2 px-2 text-[10px] text-muted-foreground border-t mt-2",children:s.map(({color:t,label:r,hasBorder:n})=>e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("div",{className:c("w-2 h-2 rounded-full",n&&"border border-muted-foreground/30"),style:{backgroundColor:t}}),r]},r))})}function js({viewMode:s,trends:t,hourlyData:r,models:n,sessions:l,isTrendsLoading:i,isHourlyLoading:x,isModelsLoading:a,isSessionsLoading:o,isSummaryLoading:d,onModelClick:u}){const{privacyMode:m}=M();return e.jsxs("div",{className:"min-h-0 grid gap-4 lg:grid-rows-[minmax(260px,1.2fr)_minmax(220px,0.9fr)]",children:[e.jsxs(p,{className:"flex flex-col h-full min-h-[220px] lg:min-h-[240px] overflow-hidden gap-0 py-0 shadow-sm",children:[e.jsx(y,{className:"px-3 py-2 shrink-0",children:e.jsxs(D,{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(Me,{className:"w-4 h-4"}),s==="hourly"?"Last 24 Hours":"Usage Trends"]})}),e.jsx(g,{className:"px-3 pb-3 pt-0 flex-1 min-h-0",children:e.jsx(ns,{data:s==="hourly"?r||[]:t||[],isLoading:s==="hourly"?x:i,granularity:s==="hourly"?"hourly":"daily"})})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-10 gap-4 h-auto min-h-[220px] lg:h-full lg:min-h-[220px] lg:grid-rows-[minmax(0,1fr)] lg:[&>*]:min-h-0",children:[e.jsx(fs,{models:n,isLoading:a,onModelClick:u,privacyMode:m}),e.jsxs(p,{className:"flex flex-col h-full min-h-0 overflow-hidden gap-0 py-0 shadow-sm lg:col-span-2",children:[e.jsx(y,{className:"px-3 py-2",children:e.jsxs(D,{className:"text-base font-semibold flex items-center gap-2",children:[e.jsx(Pe,{className:"w-4 h-4"}),"Model Usage"]})}),e.jsx(g,{className:"px-2 pb-2 pt-0 flex-1 min-h-0 flex items-center justify-center",children:e.jsx(is,{data:n||[],isLoading:a,className:"h-full w-full"})})]}),e.jsx(ds,{data:l,isLoading:o,className:"lg:col-span-2"}),e.jsx(us,{isLoading:d,className:"lg:col-span-2"})]})]})}function $s(){return e.jsxs("div",{className:"space-y-4 h-full overflow-hidden",children:[e.jsxs(p,{className:"flex flex-col min-h-[300px]",children:[e.jsx(y,{className:"p-4 pb-2",children:e.jsx(h,{className:"h-4 w-32"})}),e.jsx(g,{className:"p-4 pt-0 flex-1",children:e.jsx(h,{className:"h-full w-full"})})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[e.jsxs(p,{className:"flex flex-col min-h-[250px]",children:[e.jsx(y,{className:"p-4 pb-2",children:e.jsx(h,{className:"h-4 w-28"})}),e.jsx(g,{className:"p-4 pt-2",children:e.jsx("div",{className:"space-y-3",children:[1,2,3,4,5].map(s=>e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(h,{className:"w-2.5 h-2.5 rounded-full"}),e.jsx(h,{className:"h-3 w-24"})]}),e.jsx(h,{className:"h-3 w-16"})]},s))})})]}),e.jsxs(p,{className:"flex flex-col min-h-[250px]",children:[e.jsx(y,{className:"p-4 pb-2",children:e.jsx(h,{className:"h-4 w-28"})}),e.jsx(g,{className:"p-4 pt-0 flex-1",children:e.jsxs("div",{className:"flex w-full h-full items-center",children:[e.jsx("div",{className:"flex-1 flex justify-center",children:e.jsx(h,{className:"h-[180px] w-[180px] rounded-full"})}),e.jsx("div",{className:"w-[140px] shrink-0 pl-2 space-y-2",children:[1,2,3,4].map(s=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(h,{className:"w-2 h-2 rounded-full"}),e.jsx(h,{className:"h-3 w-20"})]},s))})]})})]})]})]})}function Ts(){const s=f.useRef(null),{dateRange:t,handleDateRangeChange:r,handleTodayClick:n,handleRefresh:l,isRefreshing:i,lastUpdatedText:x,viewMode:a,summary:o,isSummaryLoading:d,trends:u,hourlyData:m,models:j,sessions:w,isTrendsLoading:v,isHourlyLoading:C,isModelsLoading:S,isSessionsLoading:B,handleModelClick:A,selectedModel:U,popoverPosition:q,handlePopoverClose:_}=ts();return e.jsxs("div",{className:"grid h-full min-h-0 grid-rows-[auto_auto_minmax(0,1fr)] gap-4 overflow-y-auto px-4 py-4",children:[e.jsx(rs,{dateRange:t,onDateRangeChange:r,onTodayClick:n,onRefresh:l,isRefreshing:i,lastUpdatedText:x,viewMode:a}),e.jsx(Ge,{data:o,isLoading:d}),e.jsx(js,{viewMode:a,trends:u,hourlyData:m,models:j,sessions:w,isTrendsLoading:v,isHourlyLoading:C,isModelsLoading:S,isSessionsLoading:B,isSummaryLoading:d,onModelClick:A}),e.jsxs(se,{open:!!U,onOpenChange:O=>!O&&_(),children:[e.jsx(be,{asChild:!0,children:e.jsx("div",{ref:s,className:"fixed pointer-events-none",style:{left:q?.x??0,top:q?.y??0,width:1,height:1}})}),e.jsx(te,{className:"w-80 p-3",side:"top",align:"center",children:U&&e.jsx(We,{model:U})})]})]})}export{Ts as AnalyticsPage,$s as AnalyticsSkeleton};
@@ -0,0 +1 @@
1
+ import{j as e}from"./radix-ui-Zb8sVEtn.js";import{r as c,L as ne}from"./react-vendor-CNOkPC89.js";import{c as n,L as b,aF as O,r as de,s as oe,t as ce,v as me,w,I as R,d as f,n as C,Q as G,R as J,U as _,V as E,Y as L,C as y,j as k,S as x,b as T,bh as xe}from"./index-Du97tqVQ.js";import{a7 as ue,aD as pe,at as ge,Q as he,A as D,$ as z,am as P,_ as be,aA as fe,aW as ve,Y as je,ah as Ne,L as ye,aX as we,a6 as Z,Z as A,au as ke,aY as Se,i as Le,R as $,d as M,aZ as Ce,ag as X,C as ee}from"./icons-DfENUzBo.js";import{u as Q,a as _e,b as Ee,k as Ie}from"./tanstack-CrmUhA7Z.js";import{t as q}from"./notifications-B2HqRBj7.js";import"./utils-CzKF5WmX.js";import"./form-utils-Bcoyqxpq.js";import"./code-highlight-BRUf_pqB.js";function W(r,s){const t=Number.parseInt(r,10);return Number.isNaN(t)?s:Math.max(0,t)}function K({config:r,onSave:s,isPending:t}){const[d,o]=c.useState(r);c.useEffect(()=>{o(r)},[r]);const m=c.useMemo(()=>JSON.stringify(d)!==JSON.stringify(r),[r,d]);return e.jsxs("div",{className:"group relative overflow-hidden rounded-2xl border-2 border-border/60 bg-card/40 p-1 shadow-lg transition-all hover:border-border",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-border bg-muted/30 px-5 py-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex h-7 w-7 items-center justify-center rounded-lg bg-primary/5 border border-primary/20",children:e.jsx(ue,{className:"h-3.5 w-3.5 text-primary"})}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("h3",{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-foreground",children:"Logging Policy"}),e.jsx("p",{className:"text-[10px] font-medium uppercase tracking-[0.1em] text-foreground/45",children:"Retention and privacy"})]})]}),e.jsx("div",{className:n("h-1.5 w-1.5 rounded-full",r.enabled?"bg-emerald-500 shadow-[0_0_8px_rgba(16,185,129,0.5)]":"bg-zinc-500")})]}),e.jsxs("div",{className:"space-y-6 p-5",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{className:"rounded-xl border border-border/40 bg-background/50 p-3 flex flex-col gap-1",children:[e.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-[0.12em] text-muted-foreground/70",children:"Active Status"}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:n("text-[11px] font-semibold uppercase tracking-[0.1em]",r.enabled?"text-emerald-500":"text-zinc-500"),children:r.enabled?"Live":"Off"})})]}),e.jsxs("div",{className:"rounded-xl border border-border/40 bg-background/50 p-3 flex flex-col gap-1",children:[e.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-[0.12em] text-muted-foreground/70",children:"Redaction"}),e.jsx("span",{className:n("text-[11px] font-semibold uppercase tracking-[0.1em]",r.redact?"text-primary":"text-muted-foreground/40"),children:r.redact?"Enforced":"Plain"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4 rounded-xl border border-border/40 bg-background/20 px-4 py-3 transition-colors hover:bg-background/40",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{htmlFor:"logs-enabled",className:"text-[12px] font-semibold uppercase tracking-[0.12em]",children:"Pipeline"}),e.jsx("p",{className:"text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground/55",children:"Enable structured logging"})]}),e.jsx(O,{id:"logs-enabled",checked:d.enabled,onCheckedChange:a=>o(l=>({...l,enabled:a})),className:"data-[state=checked]:bg-primary"})]}),e.jsxs("div",{className:"flex items-center justify-between gap-4 rounded-xl border border-border/40 bg-background/20 px-4 py-3 transition-colors hover:bg-background/40",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{htmlFor:"logs-redact",className:"text-[12px] font-semibold uppercase tracking-[0.12em]",children:"Masking"}),e.jsx("p",{className:"text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground/55",children:"Sanitize payload data"})]}),e.jsx(O,{id:"logs-redact",checked:d.redact,onCheckedChange:a=>o(l=>({...l,redact:a})),className:"data-[state=checked]:bg-primary"})]})]}),e.jsxs("div",{className:"space-y-4 pt-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 px-1",children:[e.jsx(pe,{className:"h-3 w-3 text-primary/40"}),e.jsx(b,{htmlFor:"logs-config-level",className:"text-[10px] font-semibold uppercase tracking-[0.12em] text-foreground/70",children:"Minimum Operational Threshold"})]}),e.jsxs(de,{value:d.level,onValueChange:a=>o(l=>({...l,level:a})),children:[e.jsx(oe,{id:"logs-config-level",className:"h-10 rounded-xl border-2 border-border/40 bg-background/50 text-[12px] font-semibold uppercase tracking-[0.1em] focus:ring-0",children:e.jsx(ce,{})}),e.jsxs(me,{className:"border-2 border-border bg-card",children:[e.jsx(w,{value:"error",className:"text-[11px] font-semibold uppercase tracking-[0.1em]",children:"Error Only"}),e.jsx(w,{value:"warn",className:"text-[11px] font-semibold uppercase tracking-[0.1em]",children:"Warn + Above"}),e.jsx(w,{value:"info",className:"text-[11px] font-semibold uppercase tracking-[0.1em]",children:"Info + Above"}),e.jsx(w,{value:"debug",className:"text-[11px] font-semibold uppercase tracking-[0.1em]",children:"Full Debug"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"logs-rotate-mb",className:"px-1 text-[10px] font-semibold uppercase tracking-[0.1em] text-foreground/50",children:"Rotation (MB)"}),e.jsx(R,{id:"logs-rotate-mb",type:"number",min:1,className:"h-10 rounded-xl border-2 border-border/40 bg-background/50 font-mono text-[12px] font-medium focus-visible:ring-0",value:d.rotate_mb,onChange:a=>o(l=>({...l,rotate_mb:W(a.target.value,l.rotate_mb)}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"logs-retain-days",className:"px-1 text-[10px] font-semibold uppercase tracking-[0.1em] text-foreground/50",children:"Retain (Days)"}),e.jsx(R,{id:"logs-retain-days",type:"number",min:1,className:"h-10 rounded-xl border-2 border-border/40 bg-background/50 font-mono text-[12px] font-medium focus-visible:ring-0",value:d.retain_days,onChange:a=>o(l=>({...l,retain_days:W(a.target.value,l.retain_days)}))})]})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-4 border-t border-border",children:[e.jsxs(f,{onClick:()=>s(d),disabled:!m||t,className:"h-10 w-full gap-2 rounded-xl bg-primary text-[11px] font-semibold uppercase tracking-[0.14em] shadow-lg shadow-primary/20 transition-all hover:scale-[1.02] active:scale-[0.98]",children:[e.jsx(ge,{className:"h-3.5 w-3.5"}),"Commit Changes"]}),e.jsxs(f,{variant:"ghost",onClick:()=>o(r),disabled:!m||t,className:"h-9 gap-2 text-[10px] font-medium uppercase tracking-[0.12em] text-foreground/45 hover:text-foreground",children:[e.jsx(he,{className:"h-3 w-3"}),"Rollback Draft"]})]})]}),e.jsxs("div",{className:"flex items-center justify-between bg-muted/20 px-5 py-2",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(D,{className:"h-2.5 w-2.5 text-primary/40"}),e.jsx("span",{className:"text-[9px] font-medium uppercase tracking-[0.12em] text-foreground/30",children:"Operational Logic v3.4"})]}),m&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("div",{className:"h-1 w-1 rounded-full bg-amber-500 animate-pulse"}),e.jsx("span",{className:"text-[9px] font-medium uppercase tracking-[0.12em] text-amber-500/70",children:"Pending"})]})]})]})}function Qe(r){if(r==null)return"{}";try{return JSON.stringify(r,null,2)}catch{return String(r)}}function Fe(r){switch(r){case"error":return"Error";case"warn":return"Warn";case"info":return"Info";case"debug":return"Debug"}}const Re={error:"border-red-500/30 bg-red-500/10 text-red-700 dark:text-red-300",warn:"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300",info:"border-sky-500/30 bg-sky-500/10 text-sky-700 dark:text-sky-300",debug:"border-zinc-500/30 bg-zinc-500/10 text-zinc-700 dark:text-zinc-300"};function re({level:r,className:s}){return e.jsx("span",{className:n("inline-flex items-center rounded-full border px-2 py-0.5 text-[11px] font-medium uppercase tracking-[0.12em]",Re[r],s),children:Fe(r)})}function S({label:r,value:s,icon:t}){return e.jsxs("div",{className:"group relative flex flex-col gap-1.5 rounded-xl border border-border/40 bg-background/40 p-3 transition-all hover:bg-background/80 hover:shadow-lg hover:shadow-black/5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[t&&e.jsx(t,{className:"h-3 w-3 text-primary/40 group-hover:text-primary transition-colors"}),e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-[0.12em] text-muted-foreground/70 transition-colors group-hover:text-primary/60",children:r})]}),e.jsx("div",{className:"h-1 w-1 rounded-full bg-border/40 group-hover:bg-primary/40 transition-colors"})]}),e.jsx("p",{className:"truncate font-mono text-[13px] font-medium tracking-tight text-foreground/85 transition-colors group-hover:text-foreground",children:s})]})}function V({entry:r,sourceLabel:s}){return r?e.jsxs("div",{className:"flex h-full flex-col bg-card/30 backdrop-blur-sm animate-in fade-in slide-in-from-right-4 duration-500",children:[e.jsxs("div",{className:"relative shrink-0 border-b border-border bg-card/60 p-6 shadow-sm overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 opacity-[0.03] pointer-events-none [background-image:radial-gradient(circle_at_center,var(--primary)_1px,transparent_0)] [background-size:16px_16px]"}),e.jsxs("div",{className:"relative space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(re,{level:r.level,className:"h-5 px-3 shadow-lg shadow-black/5"}),e.jsx("div",{className:"h-4 w-px bg-border/60"}),e.jsxs("div",{className:"flex items-center gap-2 rounded-full border border-border bg-background/50 px-3 py-1 shadow-inner",children:[e.jsx(P,{className:"h-3 w-3 text-primary/60"}),e.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-[0.12em] text-foreground/75",children:s??r.source})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(D,{className:"h-3 w-3 animate-pulse text-emerald-500"}),e.jsx("span",{className:"font-mono text-[11px] font-medium uppercase tracking-[0.12em] text-muted-foreground/45",children:new Date(r.timestamp).toLocaleTimeString(void 0,{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"h-1 w-4 rounded-full bg-primary/40"}),e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-[0.12em] text-primary/65",children:"Event"})]}),e.jsx("h2",{className:"text-[24px] font-semibold tracking-tight text-foreground leading-tight break-words",children:r.event}),e.jsx("div",{className:"rounded-xl border-l-4 border-primary/20 bg-muted/20 p-4 shadow-inner",children:e.jsx("p",{className:"text-[14px] font-medium leading-relaxed text-foreground/85 selection:bg-primary/20",children:r.message})})]})]})]}),e.jsx(C,{className:"flex-1",children:e.jsx("div",{className:"p-6",children:e.jsxs(G,{defaultValue:"details",className:"space-y-8",children:[e.jsxs(J,{className:"grid h-auto w-full grid-cols-2 gap-1 rounded-xl border border-border/60 bg-muted/40 p-1",children:[e.jsxs(_,{value:"details",className:"min-w-0 gap-2 rounded-lg px-3 py-2 text-[11px] font-semibold uppercase tracking-[0.1em] transition-all data-[state=active]:bg-background data-[state=active]:text-primary data-[state=active]:shadow-sm",children:[e.jsx(be,{className:"h-3.5 w-3.5"}),"Details"]}),e.jsxs(_,{value:"raw",className:"min-w-0 gap-2 rounded-lg px-3 py-2 text-[11px] font-semibold uppercase tracking-[0.1em] transition-all data-[state=active]:bg-background data-[state=active]:text-primary data-[state=active]:shadow-sm",children:[e.jsx(fe,{className:"h-3.5 w-3.5"}),"Raw Context"]})]}),e.jsxs(E,{value:"details",className:"mt-0 space-y-8 animate-in fade-in slide-in-from-bottom-2 duration-500",children:[e.jsxs("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[e.jsx(S,{label:"Entry Signature",value:r.id.slice(0,16)+"...",icon:ve}),e.jsx(S,{label:"Telemetry Origin",value:r.source,icon:P}),e.jsx(S,{label:"Process ID",value:r.processId??"NA",icon:je}),e.jsx(S,{label:"Operational Run",value:r.runId?.slice(0,8)??"NA",icon:Ne})]}),e.jsxs("div",{className:"relative overflow-hidden rounded-[2rem] border border-border bg-muted/10 p-1 shadow-inner group",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-transparent via-primary/[0.03] to-transparent h-[200%] -top-full animate-[scan_8s_linear_infinite] pointer-events-none"}),e.jsxs("div",{className:"rounded-[calc(2rem-4px)] border border-dashed border-border/40 bg-background/50 p-6 space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-primary/5 border border-primary/20 text-primary shadow-inner",children:e.jsx(z,{className:"h-4 w-4"})}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-[0.12em] text-primary",children:"Automated Summary"}),e.jsx("p",{className:"text-[10px] font-medium uppercase tracking-[0.1em] text-muted-foreground/55",children:"Quick interpretation"})]})]}),e.jsxs("p",{className:"text-[13px] leading-relaxed text-muted-foreground/80 font-medium",children:["This telemetry node was captured from"," ",e.jsx("span",{className:"rounded bg-muted/40 px-1.5 py-0.5 font-semibold text-foreground",children:s??r.source}),"operating at the"," ",e.jsx("span",{className:n("rounded px-1.5 py-0.5 text-[11px] font-semibold uppercase tracking-[0.08em]",r.level==="error"?"bg-red-500/10 text-red-500":r.level==="warn"?"bg-amber-500/10 text-amber-500":r.level==="info"?"bg-sky-500/10 text-sky-500":"bg-zinc-500/10 text-zinc-500"),children:r.level})," ","threshold. The operational payload indicates an event state of"," ",e.jsx("span",{className:"font-semibold text-foreground",children:r.event}),"."]})]})]})]}),e.jsx(E,{value:"raw",className:"mt-0 animate-in fade-in slide-in-from-bottom-2 duration-500",children:e.jsxs("div",{className:"group relative rounded-2xl border-2 border-border bg-zinc-950 p-1 shadow-2xl transition-all hover:border-primary/20",children:[e.jsx("div",{className:"absolute right-4 top-4 z-10 opacity-0 group-hover:opacity-100 transition-opacity",children:e.jsx("div",{className:"rounded-md border border-white/10 bg-white/5 px-2 py-1 text-[9px] font-medium uppercase tracking-[0.12em] text-white/45 backdrop-blur-md",children:"JSON.RAW.MODE"})}),e.jsx(C,{className:"h-[30rem] w-full rounded-xl p-6",children:e.jsx("pre",{className:"font-mono text-[12px] leading-relaxed tracking-tight text-zinc-400 selection:bg-primary/40 selection:text-primary-foreground",children:Qe({id:r.id,timestamp:r.timestamp,level:r.level,source:r.source,event:r.event,message:r.message,processId:r.processId,runId:r.runId,context:r.context??{}})})})]})})]})})}),e.jsxs("div",{className:"flex shrink-0 items-center justify-between border-t border-border bg-muted/5 px-6 py-3",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"h-1.5 w-1.5 rounded-full bg-emerald-500 shadow-[0_0_8px_rgba(16,185,129,0.5)]"}),e.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.12em] text-foreground/35",children:"Node Verified"})]}),e.jsx("div",{className:"h-3 w-px bg-border/40"}),e.jsx("span",{className:"text-[10px] font-medium tabular-nums uppercase tracking-[0.12em] text-foreground/35",children:r.id.slice(0,8)})]}),e.jsx("div",{className:"rounded-full bg-primary/5 px-2 py-0.5 border border-primary/10",children:e.jsx("span",{className:"text-[9px] font-medium uppercase tracking-[0.12em] text-primary/65",children:"CCS-TEC-v3"})})]})]}):e.jsxs("div",{className:"flex h-full flex-col items-center justify-center p-8 text-center animate-in fade-in duration-1000",children:[e.jsxs("div",{className:"relative mb-8",children:[e.jsx("div",{className:"absolute inset-0 animate-ping rounded-full bg-primary/5 p-12"}),e.jsx("div",{className:"relative rounded-full border-2 border-dashed border-border/40 p-10 bg-muted/5",children:e.jsx(z,{className:"h-10 w-10 text-muted-foreground/20"})})]}),e.jsxs("div",{className:"max-w-xs space-y-3",children:[e.jsx("h3",{className:"text-[15px] font-semibold uppercase tracking-[0.14em] text-foreground/65",children:"Inspector Standby"}),e.jsx("p",{className:"text-[13px] leading-relaxed text-muted-foreground/55 font-medium",children:"Select a telemetry node from the active data queue to perform deep analysis of its operational context."})]})]})}function Y({entries:r,selectedEntryId:s,onSelect:t,sourceLabels:d,isLoading:o,isFetching:m}){return e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col bg-background/50 backdrop-blur-sm",children:[e.jsxs("div",{className:"flex shrink-0 items-center justify-between border-b border-border bg-card/40 px-6 py-3 shadow-sm",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"h-2 w-2 animate-pulse rounded-full bg-primary shadow-[0_0_12px_rgba(var(--primary),0.6)]"}),e.jsx("h2",{className:"text-[12px] font-semibold uppercase tracking-[0.14em] text-foreground",children:"Live Entry Stream"})]}),e.jsx("div",{className:"h-4 w-px bg-border/60"}),e.jsxs("div",{className:"flex items-center gap-2 rounded-full border border-emerald-500/20 bg-emerald-500/10 px-2 py-0.5",children:[e.jsx(D,{className:"h-3 w-3 text-emerald-500"}),e.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-[0.12em] text-emerald-600",children:"Live telemetry"})]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[m&&e.jsxs("div",{className:"flex items-center gap-2 rounded-full border border-primary/20 bg-primary/10 px-3 py-1",children:[e.jsx(ye,{className:"h-3 w-3 animate-spin text-primary"}),e.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-[0.12em] text-primary",children:"Syncing"})]}),e.jsx("span",{className:"font-mono text-[10px] font-medium uppercase tracking-[0.16em] text-foreground/35",children:"NODE.01"})]})]}),e.jsxs("div",{className:"flex items-center gap-0 border-b border-border bg-muted/30 px-0 py-2 text-[10px] font-semibold uppercase tracking-[0.12em] text-foreground/45",children:[e.jsx("div",{className:"w-[6.5rem] shrink-0 px-6",children:"Time"}),e.jsx("div",{className:"w-14 shrink-0 border-l border-border/10 px-2 text-center",children:"Lvl"}),e.jsx("div",{className:"w-[15rem] shrink-0 border-l border-border/10 px-4",children:"Source"}),e.jsx("div",{className:"flex-1 border-l border-border/10 px-4",children:"Message"}),e.jsx("div",{className:"w-[5.5rem] shrink-0 border-l border-border/10 px-2 text-center",children:"Proc"}),e.jsx("div",{className:"w-[5.5rem] shrink-0 border-l border-border/10 px-3 text-center",children:"Run"}),e.jsx("div",{className:"w-11 shrink-0 border-l border-border/10 px-2 text-center",children:"Open"})]}),e.jsx("div",{className:"flex-1 min-h-0 overflow-hidden",children:o?e.jsx("div",{className:"space-y-1 p-2",children:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15].map(a=>e.jsx("div",{className:"h-10 w-full animate-pulse rounded-lg border border-border/5 bg-muted/20"},a))}):r.length===0?e.jsxs("div",{className:"flex h-full animate-in fade-in duration-1000 flex-col items-center justify-center gap-6 px-8 text-center",children:[e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-0 animate-ping rounded-full bg-muted/5 p-12"}),e.jsx("div",{className:"relative rounded-full border border-dashed border-border/40 bg-muted/5 p-10",children:e.jsx(we,{className:"h-10 w-10 text-muted-foreground/20"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-[13px] font-semibold uppercase tracking-[0.14em] text-foreground/55",children:"No matching entries"}),e.jsx("p",{className:"max-w-[18rem] text-[12px] font-medium leading-relaxed text-muted-foreground/60",children:"Your current source, level, or search filters are hiding the stream. Adjust them to bring entries back into view."})]})]}):e.jsx(C,{className:"h-full",children:e.jsx("div",{className:"flex flex-col",children:r.map(a=>{const l=a.id===s;return e.jsxs("button",{type:"button",onClick:()=>t(a.id),className:n("group relative flex w-full items-center border-b border-border/5 px-0 py-2.5 text-left transition-all duration-150",l?"z-10 bg-primary/[0.08] shadow-[inset_4px_0_0_rgba(var(--primary),1)]":"bg-transparent hover:bg-muted/30"),children:[e.jsx("div",{className:"absolute inset-y-0 left-0 w-1 origin-center scale-y-0 bg-primary transition-transform duration-300 group-hover:scale-y-100"}),e.jsxs("div",{className:"flex w-full items-center gap-0",children:[e.jsx("div",{className:"flex w-[6.5rem] shrink-0 items-center",children:e.jsx("p",{className:n("px-6 font-mono text-[11px] font-semibold tabular-nums transition-colors",l?"text-primary":"text-foreground/60 group-hover:text-foreground"),children:new Date(a.timestamp).toLocaleTimeString(void 0,{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})})}),e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-0",children:[e.jsx("div",{className:"flex w-14 shrink-0 items-center justify-center opacity-80 transition-opacity group-hover:opacity-100",children:e.jsx(re,{level:a.level,className:"origin-center scale-[0.85]"})}),e.jsxs("div",{className:"flex w-[15rem] shrink-0 flex-col gap-0.5 overflow-hidden px-4",children:[e.jsx("span",{className:n("truncate text-[11px] font-semibold uppercase tracking-[0.12em] transition-colors",l?"text-foreground":"text-foreground/50 group-hover:text-foreground/80"),children:d[a.source]??a.source}),e.jsx("span",{className:"truncate text-[10px] font-medium uppercase tracking-[0.1em] text-muted-foreground/55",children:a.event})]}),e.jsx("div",{className:"min-w-0 flex-1 px-4",children:e.jsx("p",{className:n("truncate text-[13px] font-medium leading-5 transition-colors",l?"text-foreground":"text-foreground/70 group-hover:text-foreground"),children:a.message})}),e.jsx("div",{className:"flex w-[5.5rem] shrink-0 items-center justify-center px-2 font-mono text-[10px] font-semibold tabular-nums tracking-[0.12em] text-foreground/30 transition-colors group-hover:text-primary/45",children:a.processId??"????"}),e.jsx("div",{className:"flex w-[5.5rem] shrink-0 items-center justify-center px-3 font-mono text-[10px] font-semibold tabular-nums tracking-[0.12em] text-foreground/30 transition-colors group-hover:text-primary/45",children:a.runId?.slice(0,4).toUpperCase()??"NONE"}),e.jsx("div",{className:"flex w-11 shrink-0 items-center justify-center px-2",children:e.jsx("div",{className:n("flex h-7 w-7 items-center justify-center rounded-full border transition-all",l?"animate-in zoom-in duration-300 border-primary/20 bg-primary/10 text-primary":"border-transparent text-foreground/20 group-hover:border-border/40 group-hover:bg-background/80 group-hover:text-foreground/55"),children:e.jsx(Z,{className:"h-3.5 w-3.5"})})})]})]})]},a.id)})})})}),e.jsxs("div",{className:"flex shrink-0 items-center justify-between border-t border-border bg-muted/5 px-6 py-2",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.12em] text-foreground/35",children:"Node: CCS-CORE"}),e.jsx("div",{className:"h-1 w-1 rounded-full bg-border/40"}),e.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.12em] text-foreground/35",children:"Status: Operational"})]}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs("span",{className:"text-[10px] font-medium uppercase tracking-[0.12em] text-foreground/35",children:["Entries: ",r.length]})})]})]})}const se=["logs","config"],ae=["logs","sources"],Te=150;function De(){const[r,s]=c.useState("all"),[t,d]=c.useState("all"),[o,m]=c.useState(""),[a,l]=c.useState(Te),[g,u]=c.useState(null),p=c.useDeferredValue(o.trim()),h=Q({queryKey:se,queryFn:async()=>(await L.logs.getConfig()).logging,refetchInterval:3e4}),v=Q({queryKey:ae,queryFn:async()=>(await L.logs.getSources()).sources,refetchInterval:15e3}),i=Q({queryKey:["logs","entries",r,t,p,a],queryFn:async()=>(await L.logs.getEntries({source:r==="all"?void 0:r,level:t==="all"?void 0:t,search:p||void 0,limit:a})).entries,placeholderData:Ie,refetchInterval:1e4}),I=c.useMemo(()=>{const N=i.data??[];return N.length===0?null:g&&N.some(j=>j.id===g)?g:N[0]?.id??null},[i.data,g]),te=c.useMemo(()=>(i.data??[]).find(N=>N.id===I)??null,[I,i.data]),ie=c.useMemo(()=>(v.data??[]).map(j=>j.lastTimestamp).filter(j=>!!j).sort((j,le)=>le.localeCompare(j))[0]??null,[v.data]);return{configQuery:h,sourcesQuery:v,entriesQuery:i,selectedSource:r,setSelectedSource:s,selectedLevel:t,setSelectedLevel:d,search:o,setSearch:m,limit:a,setLimit:l,selectedEntryId:I,setSelectedEntryId:u,selectedEntry:te,latestTimestamp:ie,isInitialLoading:!h.data&&h.isLoading||!v.data&&v.isLoading||!i.data&&i.isLoading}}function Oe(){const r=_e();return Ee({mutationFn:s=>L.logs.updateConfig(s),onSuccess:async()=>{await Promise.all([r.invalidateQueries({queryKey:se}),r.invalidateQueries({queryKey:ae}),r.invalidateQueries({queryKey:["logs","entries"]})]),q.success("Logging configuration saved.")},onError:s=>{q.error(s.message||"Failed to save logging configuration.")}})}function ze(){return[{value:"all",label:"All levels"},{value:"error",label:"Errors"},{value:"warn",label:"Warnings"},{value:"info",label:"Info"},{value:"debug",label:"Debug"}]}function Pe(r){return Object.fromEntries(r.map(s=>[s.source,s.label]))}function H({sources:r,selectedSource:s,onSourceChange:t,selectedLevel:d,onLevelChange:o,search:m,onSearchChange:a,limit:l,onLimitChange:g,onRefresh:u,isRefreshing:p}){const h=ze(),v=[50,100,150,250];return e.jsxs("div",{className:"flex flex-col gap-6 animate-in fade-in slide-in-from-left-2 duration-700",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between px-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"h-1.5 w-1.5 rounded-full bg-primary shadow-[0_0_8px_rgba(var(--primary),0.5)]"}),e.jsx(b,{htmlFor:"logs-search",className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-foreground/80",children:"Payload Search"})]}),e.jsx(A,{className:"h-3 w-3 text-primary/20"})]}),e.jsxs("div",{className:"group relative",children:[e.jsx("div",{className:"pointer-events-none absolute inset-y-0 left-3.5 flex items-center transition-all group-focus-within:translate-x-1",children:e.jsx(ke,{className:"h-3.5 w-3.5 text-foreground/20 group-focus-within:text-primary transition-colors"})}),e.jsx(R,{id:"logs-search","aria-label":"Search",value:m,onChange:i=>a(i.target.value),placeholder:"Scan for patterns...",className:"h-11 rounded-xl border-2 border-border/40 bg-background/50 pl-10 text-[13px] font-medium text-foreground placeholder:text-foreground/35 focus-visible:border-primary/40 focus-visible:ring-0 transition-all shadow-inner"})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 px-1",children:[e.jsx(Se,{className:"h-3 w-3 text-primary/40"}),e.jsx(b,{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-foreground/80",children:"Source Matrix"})]}),e.jsxs("div",{className:"flex flex-col gap-1","aria-label":"Source filter",children:[e.jsxs("button",{type:"button",onClick:()=>t("all"),className:n("group relative flex items-center justify-between rounded-lg border px-3 py-2 transition-all active:scale-[0.98]",s==="all"?"border-primary/50 bg-primary/10 text-primary shadow-[0_0_15px_rgba(var(--primary),0.1)]":"border-border/40 bg-muted/20 text-foreground/40 hover:border-border hover:bg-muted/40 hover:text-foreground/80"),children:[e.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-[0.12em]",children:"Global Stream"}),s==="all"&&e.jsx("div",{className:"h-1.5 w-1.5 rounded-full bg-primary shadow-[0_0_8px_rgba(var(--primary),0.8)]"})]}),e.jsx("div",{className:"grid grid-cols-2 gap-1 mt-1",children:r.map(i=>e.jsx("button",{type:"button",onClick:()=>t(i.source),className:n("rounded-lg border px-2.5 py-1.5 text-[10px] font-semibold uppercase tracking-[0.1em] transition-all active:scale-[0.97]",s===i.source?"border-primary/50 bg-primary/10 text-primary shadow-sm":"border-border/40 bg-muted/20 text-foreground/40 hover:border-border hover:bg-muted/40 hover:text-foreground/80"),children:i.label},i.source))})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 px-1",children:[e.jsx(Le,{className:"h-3 w-3 text-primary/40"}),e.jsx(b,{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-foreground/80",children:"Sensitivity"})]}),e.jsx("div",{className:"grid grid-cols-2 gap-1.5","aria-label":"Level filter",children:h.map(i=>e.jsxs("button",{type:"button",onClick:()=>o(i.value),className:n("flex flex-col items-center gap-1 rounded-lg border px-2 py-2 text-[10px] font-semibold uppercase tracking-[0.1em] transition-all active:scale-[0.97]",d===i.value?"border-primary/50 bg-primary/10 text-primary shadow-[0_0_15px_rgba(var(--primary),0.1)]":"border-border/40 bg-muted/20 text-foreground/40 hover:border-border hover:bg-muted/40 hover:text-foreground/80"),children:[e.jsx("span",{children:i.label}),e.jsx("div",{className:n("h-0.5 w-4 rounded-full transition-colors",d===i.value?"bg-primary":"bg-foreground/10")})]},i.value))})]}),e.jsx("div",{className:"mt-4 rounded-2xl border-2 border-border bg-card/40 p-1.5 shadow-xl shadow-black/5",children:e.jsxs("div",{className:"rounded-[calc(1rem-2px)] border border-dashed border-border bg-background/60 p-4 space-y-5",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-[0.14em] text-primary",children:"Operational Window"}),e.jsx("p",{className:"text-[11px] font-medium uppercase tracking-[0.1em] text-foreground/45",children:"Tail Capacity"})]}),e.jsx("div",{className:"h-8 w-8 rounded-lg bg-primary/5 border border-primary/10 flex items-center justify-center",children:e.jsx(A,{className:"h-4 w-4 text-primary/40"})})]}),e.jsx("div",{className:"grid grid-cols-4 gap-1.5","aria-label":"Visible entries",children:v.map(i=>e.jsx("button",{type:"button",onClick:()=>g(i),className:n("rounded-md border py-1.5 text-[11px] font-semibold tabular-nums transition-all active:scale-[0.95]",l===i?"border-foreground bg-foreground text-background":"border-border/60 bg-muted/40 text-foreground/40 hover:bg-muted hover:text-foreground"),children:i},i))}),e.jsxs(f,{variant:"ghost",size:"sm",className:"group relative h-10 w-full overflow-hidden rounded-xl border-none bg-primary text-[11px] font-semibold uppercase tracking-[0.14em] text-primary-foreground transition-all hover:scale-[1.02] hover:shadow-lg hover:shadow-primary/20 active:scale-[0.98]",onClick:u,children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-transparent via-white/10 to-transparent -translate-x-full group-hover:translate-x-full transition-transform duration-1000"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx($,{className:n("h-3.5 w-3.5",p&&"animate-spin")}),e.jsx("span",{children:"Refresh Entries"})]})]})]})})]})}function Ae(){return e.jsxs("div",{className:"space-y-6","aria-label":"Loading logs workspace",children:[e.jsx(y,{className:"gap-4",children:e.jsxs(k,{className:"space-y-3",children:[e.jsx(x,{className:"h-4 w-28"}),e.jsx(x,{className:"h-8 w-72"}),e.jsx(x,{className:"h-4 w-[30rem]"})]})}),e.jsx("div",{className:"grid gap-4 md:grid-cols-2 xl:grid-cols-4",children:[1,2,3,4].map(r=>e.jsx(y,{className:"gap-3",children:e.jsxs(k,{className:"space-y-2",children:[e.jsx(x,{className:"h-4 w-20"}),e.jsx(x,{className:"h-7 w-24"})]})},r))}),e.jsxs("div",{className:"grid gap-6 xl:grid-cols-[minmax(0,1.45fr)_22rem]",children:[e.jsxs(y,{className:"gap-4",children:[e.jsxs(k,{className:"space-y-3",children:[e.jsx(x,{className:"h-4 w-52"}),e.jsx("div",{className:"grid gap-3 md:grid-cols-4",children:[1,2,3,4].map(r=>e.jsx(x,{className:"h-10 w-full"},r))})]}),e.jsxs(T,{className:"grid gap-4 xl:grid-cols-[22rem_minmax(0,1fr)]",children:[e.jsx(x,{className:"h-[26rem] w-full"}),e.jsx(x,{className:"h-[26rem] w-full"})]})]}),e.jsxs(y,{className:"gap-4",children:[e.jsxs(k,{className:"space-y-3",children:[e.jsx(x,{className:"h-5 w-44"}),e.jsx(x,{className:"h-4 w-full"})]}),e.jsx(T,{className:"space-y-4",children:[1,2,3,4].map(r=>e.jsx(x,{className:"h-10 w-full"},r))})]})]})]})}const F=1200,Me=336,qe=368,U=52;function B({side:r,label:s,onExpand:t}){return e.jsxs("div",{className:n("flex h-full w-full flex-col items-center justify-center gap-4 bg-muted/5",r==="left"?"border-r border-border":"border-l border-border"),children:[e.jsx(f,{variant:"ghost",size:"icon",onClick:t,"aria-label":`Show ${s.toLowerCase()}`,className:"h-9 w-9 rounded-xl border border-border/70 bg-background/85 shadow-sm",children:r==="left"?e.jsx(ee,{className:"h-4 w-4"}):e.jsx(X,{className:"h-4 w-4"})}),e.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-[0.14em] text-foreground/45",style:{writingMode:"vertical-rl"},children:s})]})}function Ze(){const r=De(),s=Oe(),t=Pe(r.sourcesQuery.data??[]),[d,o]=c.useState(()=>typeof window<"u"?window.innerWidth>=F:!1),[m,a]=c.useState(!1),[l,g]=c.useState(!1);if(c.useEffect(()=>{const p=window.matchMedia(`(min-width: ${F}px)`),h=()=>{o(window.innerWidth>=F)};return h(),p.addEventListener("change",h),()=>p.removeEventListener("change",h)},[]),r.isInitialLoading)return e.jsx(Ae,{});const u=r.configQuery.data;return u?e.jsxs("div",{className:"relative flex h-full min-h-full flex-col overflow-hidden border-t border-border/40 bg-background font-sans text-foreground antialiased selection:bg-primary/30 selection:text-primary",children:[e.jsx("div",{className:"pointer-events-none absolute inset-0 z-0 opacity-40 [background-image:radial-gradient(circle_at_1px_1px,rgba(38,38,36,0.08)_1px,transparent_0)] [background-size:14px_14px]"}),e.jsxs("div",{className:"relative z-10 flex shrink-0 items-center justify-between border-b border-border/80 bg-card/95 px-6 py-2 backdrop-blur-xl shadow-md transition-all xl:px-8",children:[e.jsxs("div",{className:"flex items-center gap-10",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"group flex h-9 w-9 items-center justify-center rounded-xl border-2 border-primary/20 bg-primary/5 text-primary shadow-inner transition-all hover:scale-110 active:scale-90",children:e.jsx(M,{className:"h-4.5 w-4.5 transition-transform group-hover:rotate-6"})}),e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsxs("div",{className:"flex items-center gap-2.5",children:[e.jsx("span",{className:"rounded-full bg-primary px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] text-primary-foreground shadow-lg shadow-primary/20",children:"Operational"}),e.jsx("h1",{className:"text-[17px] font-semibold tracking-tight text-foreground",children:"Log Operations Center"})]}),e.jsx("p",{className:"font-mono text-[10px] font-medium uppercase tracking-[0.16em] text-foreground/45",children:"CCS.TOC.LOGS.STREAM.v3"})]})]}),e.jsx("div",{className:"hidden h-8 w-px bg-border/80 md:block"}),e.jsxs("div",{className:"hidden items-center gap-10 md:flex",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:n("h-2 w-2 rounded-full ring-4 transition-all duration-700",u.redact?"bg-emerald-500 shadow-[0_0_20px_rgba(16,185,129,0.6)] ring-emerald-500/30":"bg-zinc-600 ring-transparent")}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-foreground/90",children:"Redaction"}),e.jsx("span",{className:"text-[11px] font-medium text-foreground/50",children:u.redact?"Enforced":"Standby"})]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex h-7 w-7 items-center justify-center rounded-lg border-2 border-border bg-muted shadow-inner",children:e.jsx(Ce,{className:"h-3.5 w-3.5 text-foreground"})}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-foreground/90",children:"Retention"}),e.jsxs("span",{className:"text-[11px] font-medium text-foreground/50",children:[u.retain_days,"D / ",u.rotate_mb,"MB"]})]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(f,{variant:"ghost",size:"sm",className:"group h-9 gap-3 rounded-xl border-2 border-border bg-muted px-5 text-[11px] font-semibold uppercase tracking-[0.14em] text-foreground transition-all hover:bg-foreground hover:text-background active:scale-95 shadow-lg shadow-black/5",onClick:()=>void Promise.all([r.sourcesQuery.refetch(),r.entriesQuery.refetch()]),children:[e.jsxs("div",{className:"relative",children:[e.jsx($,{className:n("h-3.5 w-3.5 transition-transform duration-500",(r.entriesQuery.isFetching||r.sourcesQuery.isFetching)&&"animate-spin")}),!r.entriesQuery.isFetching&&!r.sourcesQuery.isFetching&&e.jsx("div",{className:"absolute -right-1 -top-1 h-1.5 w-1.5 rounded-full border border-muted bg-primary animate-pulse"})]}),r.entriesQuery.isFetching||r.sourcesQuery.isFetching?"Syncing":"Refresh"]}),e.jsx("div",{className:"h-7 w-px bg-border/80"}),e.jsx(f,{asChild:!0,variant:"ghost",size:"sm",className:"h-9 w-9 rounded-xl border-2 border-border bg-muted p-0 text-foreground transition-all hover:bg-foreground hover:text-background active:scale-95 shadow-lg shadow-black/5",children:e.jsx(ne,{to:"/health",children:e.jsx(Z,{className:"h-4 w-4"})})})]})]}),e.jsx("div",{className:"relative z-10 flex min-h-0 flex-1 overflow-hidden",children:e.jsxs(G,{defaultValue:"stream",className:"flex flex-1 flex-col overflow-hidden",children:[e.jsxs("div",{className:"flex shrink-0 items-center justify-between border-b border-border/80 bg-card/80 px-6 py-2 backdrop-blur-xl shadow-inner xl:px-8",children:[e.jsxs(J,{className:"h-10 w-auto gap-1.5 rounded-xl border border-border/60 bg-muted/40 p-1",children:[e.jsx(_,{value:"stream",className:"rounded-lg px-5 text-[11px] font-semibold uppercase tracking-[0.12em] text-foreground/60 transition-all data-[state=active]:bg-background data-[state=active]:text-primary data-[state=active]:shadow-md",children:"Telemetry Stream"}),e.jsx(_,{value:"errors",className:"rounded-lg px-5 text-[11px] font-semibold uppercase tracking-[0.12em] text-foreground/60 transition-all data-[state=active]:bg-background data-[state=active]:text-primary data-[state=active]:shadow-md",children:"Legacy Errors"})]}),e.jsxs("div",{className:"hidden items-center gap-3 lg:flex",children:[e.jsxs("div",{className:"flex items-center gap-2 rounded-full border border-border bg-muted px-3 py-1 shadow-inner",children:[e.jsxs("span",{className:"relative flex h-1.5 w-1.5",children:[e.jsx("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-emerald-400 opacity-75"}),e.jsx("span",{className:"relative inline-flex h-1.5 w-1.5 rounded-full bg-emerald-500 shadow-[0_0_8px_rgba(16,185,129,0.6)]"})]}),e.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-tight text-foreground/80",children:"Connected"})]}),e.jsxs("span",{className:"pr-4 text-[11px] font-medium tabular-nums text-foreground/45",children:[r.entriesQuery.data?.length??0," captured"]})]})]}),e.jsx(E,{value:"stream",className:"m-0 flex min-h-0 flex-1 overflow-y-auto lg:overflow-hidden focus-visible:outline-none",children:d?e.jsxs("div",{className:"flex min-h-0 flex-1 overflow-hidden",children:[e.jsx("div",{"data-logs-pane":"filters",style:{width:m?U:Me},className:"flex min-h-0 shrink-0 bg-muted/5",children:m?e.jsx(B,{side:"left",label:"Filters",onExpand:()=>a(!1)}):e.jsxs("div",{className:"flex h-full min-h-0 w-full flex-col border-r border-border p-5 2xl:p-6",children:[e.jsxs("div",{className:"mb-4 flex items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-foreground/80",children:"Filters"}),e.jsx("p",{className:"text-[11px] text-muted-foreground/70",children:"Search, source, and retention controls"})]}),e.jsx(f,{variant:"ghost",size:"icon",onClick:()=>a(!0),"aria-label":"Hide filters",className:"h-9 w-9 rounded-xl border border-border/70 bg-background/85 shadow-sm",children:e.jsx(X,{className:"h-4 w-4"})})]}),e.jsx(C,{className:"min-h-0 flex-1","data-logs-scroll-region":"filters",children:e.jsxs("div",{className:"space-y-5 pr-4",children:[e.jsx(H,{sources:r.sourcesQuery.data??[],selectedSource:r.selectedSource,onSourceChange:r.setSelectedSource,selectedLevel:r.selectedLevel,onLevelChange:r.setSelectedLevel,search:r.search,onSearchChange:r.setSearch,limit:r.limit,onLimitChange:r.setLimit,onRefresh:()=>void Promise.all([r.sourcesQuery.refetch(),r.entriesQuery.refetch()]),isRefreshing:r.entriesQuery.isFetching||r.sourcesQuery.isFetching}),e.jsx("div",{className:"border-t border-border/20 pt-5",children:e.jsx(K,{config:u,onSave:p=>s.mutate(p),isPending:s.isPending})})]})})]})}),e.jsx("div",{"data-logs-pane":"entries",className:"flex min-h-0 min-w-0 flex-1 overflow-hidden border-l border-r border-border bg-background/95",children:e.jsx(Y,{entries:r.entriesQuery.data??[],selectedEntryId:r.selectedEntryId,onSelect:r.setSelectedEntryId,sourceLabels:t,isLoading:r.entriesQuery.isLoading,isFetching:r.entriesQuery.isFetching})}),e.jsx("div",{"data-logs-pane":"details",style:{width:l?U:qe},className:"flex min-h-0 shrink-0 bg-muted/5 shadow-inner",children:l?e.jsx(B,{side:"right",label:"Details",onExpand:()=>g(!1)}):e.jsxs("div",{className:"flex h-full min-h-0 w-full flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-border/50 bg-background/60 px-3 py-2",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-foreground/80",children:"Details"}),e.jsx("p",{className:"text-[11px] text-muted-foreground/70",children:"Selected entry context and raw payload"})]}),e.jsx(f,{variant:"ghost",size:"icon",onClick:()=>g(!0),"aria-label":"Hide details",className:"h-9 w-9 rounded-xl border border-border/70 bg-background/85 shadow-sm",children:e.jsx(ee,{className:"h-4 w-4"})})]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:e.jsx(V,{entry:r.selectedEntry,sourceLabel:r.selectedEntry?t[r.selectedEntry.source]:void 0})})]})})]}):e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[e.jsx("div",{className:"border-b border-border bg-muted/5 p-5",children:e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsx(H,{sources:r.sourcesQuery.data??[],selectedSource:r.selectedSource,onSourceChange:r.setSelectedSource,selectedLevel:r.selectedLevel,onLevelChange:r.setSelectedLevel,search:r.search,onSearchChange:r.setSearch,limit:r.limit,onLimitChange:r.setLimit,onRefresh:()=>void Promise.all([r.sourcesQuery.refetch(),r.entriesQuery.refetch()]),isRefreshing:r.entriesQuery.isFetching||r.sourcesQuery.isFetching}),e.jsx(K,{config:u,onSave:p=>s.mutate(p),isPending:s.isPending})]})}),e.jsx("div",{className:"flex min-h-[32rem] flex-col overflow-hidden border-b border-border bg-background/95",children:e.jsx(Y,{entries:r.entriesQuery.data??[],selectedEntryId:r.selectedEntryId,onSelect:r.setSelectedEntryId,sourceLabels:t,isLoading:r.entriesQuery.isLoading,isFetching:r.entriesQuery.isFetching})}),e.jsx("div",{className:"flex min-h-[30rem] flex-col overflow-hidden bg-muted/5 shadow-inner",children:e.jsx(V,{entry:r.selectedEntry,sourceLabel:r.selectedEntry?t[r.selectedEntry.source]:void 0})})]})}),e.jsx(E,{value:"errors",className:"m-0 flex-1 overflow-y-auto bg-background/20 p-6 focus-visible:outline-none xl:p-8",children:e.jsxs("div",{className:"mx-auto max-w-5xl space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-700",children:[e.jsxs("div",{className:"relative overflow-hidden rounded-[2.5rem] border-2 border-border bg-card/40 p-1.5 shadow-2xl shadow-black/10",children:[e.jsx("div",{className:"absolute inset-0 opacity-[0.02] pointer-events-none [background-image:radial-gradient(circle_at_center,var(--primary)_1px,transparent_0)] [background-size:24px_24px]"}),e.jsx(y,{className:"rounded-[calc(2.5rem-0.375rem)] border-none bg-background/60 shadow-none overflow-hidden backdrop-blur-md",children:e.jsxs(T,{className:"flex flex-col gap-6 p-10",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-xl border-2 border-primary/20 bg-primary/10 text-primary shadow-inner",children:e.jsx(M,{className:"h-5 w-5"})}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.4em] text-primary",children:"Legacy Diagnostic Node"}),e.jsx("p",{className:"text-[9px] font-bold uppercase tracking-widest text-muted-foreground/40",children:"CCS-MATRIX-FAILURE-MONITOR"})]})]}),e.jsx("div",{className:"rounded-full border border-border bg-background/50 px-3 py-1 text-[9px] font-black uppercase tracking-widest text-foreground/40 shadow-inner",children:"Mode: Historical"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("h2",{className:"text-3xl font-black uppercase tracking-tighter text-foreground",children:"CLIProxy Failure Analysis"}),e.jsx("p",{className:"max-w-3xl text-[15px] font-medium leading-relaxed text-muted-foreground/60",children:"Maintain oversight of legacy request failures while the unified stream consolidates system-wide telemetry. This view provides direct access to the historical failure matrix for deep-field debugging."})]}),e.jsx("div",{className:"h-px w-full bg-gradient-to-r from-transparent via-border to-transparent opacity-40"})]})})]}),e.jsxs("div",{className:"rounded-[2.5rem] border-2 border-border bg-muted/5 p-8 shadow-inner backdrop-blur-sm",children:[e.jsxs("div",{className:"mb-6 flex items-center gap-3",children:[e.jsx("div",{className:"h-1.5 w-1.5 animate-pulse rounded-full bg-primary shadow-[0_0_8px_rgba(var(--primary),0.5)]"}),e.jsx("span",{className:"text-[10px] font-black uppercase tracking-[0.3em] text-foreground/40",children:"Realtime Monitoring Deck"})]}),e.jsx(xe,{})]})]})})]})})]}):null}export{Ze as LogsPage};
@@ -1 +1 @@
1
- import{j as s}from"./radix-ui-Zb8sVEtn.js";import{r}from"./react-vendor-CNOkPC89.js";import{I as i,d as m}from"./index-BMHPMj0j.js";import{E as l,f as n}from"./icons-B9oTjo-t.js";function d({label:e,...a}){const[t,o]=r.useState(!1);return s.jsxs("div",{className:"space-y-1",children:[e&&s.jsx("label",{className:"text-sm font-medium",children:e}),s.jsxs("div",{className:"relative",children:[s.jsx(i,{type:t?"text":"password",className:"pr-10 font-mono",...a}),s.jsx(m,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3",onClick:()=>o(!t),tabIndex:-1,children:t?s.jsx(l,{className:"w-4 h-4"}):s.jsx(n,{className:"w-4 h-4"})})]})]})}export{d as M};
1
+ import{j as s}from"./radix-ui-Zb8sVEtn.js";import{r}from"./react-vendor-CNOkPC89.js";import{I as i,d as m}from"./index-Du97tqVQ.js";import{E as l,g as n}from"./icons-DfENUzBo.js";function f({label:e,...a}){const[t,o]=r.useState(!1);return s.jsxs("div",{className:"space-y-1",children:[e&&s.jsx("label",{className:"text-sm font-medium",children:e}),s.jsxs("div",{className:"relative",children:[s.jsx(i,{type:t?"text":"password",className:"pr-10 font-mono",...a}),s.jsx(m,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3",onClick:()=>o(!t),tabIndex:-1,children:t?s.jsx(l,{className:"w-4 h-4"}):s.jsx(n,{className:"w-4 h-4"})})]})]})}export{f as M};
@@ -0,0 +1 @@
1
+ import{j as t}from"./radix-ui-Zb8sVEtn.js";import{g as Ve,r as S}from"./react-vendor-CNOkPC89.js";import{bu as ye,bv as be,bw as je,bx as Pe,by as z,bz as te,bA as L,bB as $e,bC as We,c as W,B as H,d as Y,a as Oe,bt as _e,aW as De,bD as Ie,bE as Re,bF as Fe,bG as Le,bH as Ue,bI as ze,bJ as qe,aJ as Me,M as Be,O as He,r as Ke,s as Ye,t as Ze,v as Ge,w as Je,T as Qe,p as Xe,q as et,Y as tt}from"./index-Du97tqVQ.js";import{A as st,a as nt,b as rt,c as at,d as it,e as ot,f as lt,g as ct}from"./alert-dialog-DJMw_zyc.js";import{u as ve,a as ut,b as dt,h as mt}from"./tanstack-CrmUhA7Z.js";import{t as se}from"./notifications-B2HqRBj7.js";import{bc as me,R as K,t as pt,s as xt,u as gt,A as ft,bd as ht,be as yt,bf as bt,X as jt,e as vt,bg as Nt,bh as St,U as wt,v as Ct,m as kt,w as At,aB as Et,T as ne,aL as Tt}from"./icons-DfENUzBo.js";var re,pe;function Vt(){return pe||(pe=1,re={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}),re}var Pt=Vt();const $t=Ve(Pt);var Wt=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function xe(e){var s={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(s.name=n[1],($t[n[1]]||e.charAt(e.length-2)==="/")&&(s.voidElement=!0),s.name.startsWith("!--"))){var r=e.indexOf("-->");return{type:"comment",comment:r!==-1?e.slice(4,r):""}}for(var a=new RegExp(Wt),i=null;(i=a.exec(e))!==null;)if(i[0].trim())if(i[1]){var o=i[1].trim(),c=[o,""];o.indexOf("=")>-1&&(c=o.split("=")),s.attrs[c[0]]=c[1],a.lastIndex--}else i[2]&&(s.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return s}var Ot=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,_t=/^\s*$/,Dt=Object.create(null);function Ne(e,s){switch(s.type){case"text":return e+s.content;case"tag":return e+="<"+s.name+(s.attrs?(function(n){var r=[];for(var a in n)r.push(a+'="'+n[a]+'"');return r.length?" "+r.join(" "):""})(s.attrs):"")+(s.voidElement?"/>":">"),s.voidElement?e:e+s.children.reduce(Ne,"")+"</"+s.name+">";case"comment":return e+"<!--"+s.comment+"-->"}}var It={parse:function(e,s){s||(s={}),s.components||(s.components=Dt);var n,r=[],a=[],i=-1,o=!1;if(e.indexOf("<")!==0){var c=e.indexOf("<");r.push({type:"text",content:c===-1?e:e.substring(0,c)})}return e.replace(Ot,function(d,m){if(o){if(d!=="</"+n.name+">")return;o=!1}var p,w=d.charAt(1)!=="/",A=d.startsWith("<!--"),g=m+d.length,x=e.charAt(g);if(A){var v=xe(d);return i<0?(r.push(v),r):((p=a[i]).children.push(v),r)}if(w&&(i++,(n=xe(d)).type==="tag"&&s.components[n.name]&&(n.type="component",o=!0),n.voidElement||o||!x||x==="<"||n.children.push({type:"text",content:e.slice(g,e.indexOf("<",g))}),i===0&&r.push(n),(p=a[i-1])&&p.children.push(n),a[i]=n),(!w||n.voidElement)&&(i>-1&&(n.voidElement||n.name===d.slice(2,-1))&&(i--,n=i===-1?r:a[i]),!o&&x!=="<"&&x)){p=i===-1?r:a[i].children;var u=e.indexOf("<",g),h=e.slice(g,u===-1?void 0:u);_t.test(h)&&(h=" "),(u>-1&&i+p.length>=0||h!==" ")&&p.push({type:"text",content:h})}}),r},stringify:function(e){return e.reduce(function(s,n){return s+Ne("",n)},"")}};const G=(e,s)=>{if(!e)return!1;const n=e.props?.children??e.children;return s?n.length>0:!!n},J=e=>{if(!e)return[];const s=e.props?.children??e.children;return e.props?.i18nIsDynamicList?U(s):s},Rt=e=>Array.isArray(e)&&e.every(S.isValidElement),U=e=>Array.isArray(e)?e:[e],Ft=(e,s)=>{const n={...s};return n.props={...s.props,...e.props},n},Lt=e=>{const s={};if(!e)return s;const n=r=>{U(r).forEach(i=>{z(i)||(G(i)?n(J(i)):L(i)&&!S.isValidElement(i)&&Object.assign(s,i))})};return n(e),s},Se=(e,s,n,r)=>{if(!e)return"";let a="";const i=U(e),o=s?.transSupportBasicHtmlNodes?s.transKeepBasicHtmlNodesFor??[]:[];return i.forEach((c,d)=>{if(z(c)){a+=`${c}`;return}if(S.isValidElement(c)){const{props:m,type:p}=c,w=Object.keys(m).length,A=o.indexOf(p)>-1,g=m.children;if(!g&&A&&!w){a+=`<${p}/>`;return}if(!g&&(!A||w)||m.i18nIsDynamicList){a+=`<${d}></${d}>`;return}if(A&&w===1&&z(g)){a+=`<${p}>${g}</${p}>`;return}const x=Se(g,s,n,r);a+=`<${d}>${x}</${d}>`;return}if(c===null){te(n,"TRANS_NULL_VALUE","Passed in a null value as child",{i18nKey:r});return}if(L(c)){const{format:m,...p}=c,w=Object.keys(p);if(w.length===1){const A=m?`${w[0]}, ${m}`:w[0];a+=`{{${A}}}`;return}te(n,"TRANS_INVALID_OBJ","Invalid child - Object should only have keys {{ value, format }} (format is optional).",{i18nKey:r,child:c});return}te(n,"TRANS_INVALID_VAR","Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.",{i18nKey:r,child:c})}),a},Ut=(e,s=[],n={})=>{if(!e)return e;const r=Object.keys(n),a=[...s,...r];let i="",o=0;for(;o<e.length;)if(e[o]==="<"){let c=!1;const d=e.slice(o).match(/^<\/(\d+|[a-zA-Z][a-zA-Z0-9_-]*)>/);if(d){const m=d[1];(/^\d+$/.test(m)||a.includes(m))&&(c=!0,i+=d[0],o+=d[0].length)}if(!c){const m=e.slice(o).match(/^<(\d+|[a-zA-Z][a-zA-Z0-9_-]*)(\s+[\w-]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]+))?)*\s*(\/)?>/);if(m){const p=m[1];(/^\d+$/.test(p)||a.includes(p))&&(c=!0,i+=m[0],o+=m[0].length)}}c||(i+="&lt;",o+=1)}else i+=e[o],o+=1;return i},zt=(e,s,n,r,a,i,o)=>{if(n==="")return[];const c=a.transKeepBasicHtmlNodesFor||[],d=n&&new RegExp(c.map(b=>`<${b}`).join("|")).test(n);if(!e&&!s&&!d&&!o)return[n];const m=s??{},p=b=>{U(b).forEach(k=>{z(k)||(G(k)?p(J(k)):L(k)&&!S.isValidElement(k)&&Object.assign(m,k))})};p(e);const w=Ut(n,c,m),A=It.parse(`<0>${w}</0>`),g={...m,...i},x=(b,C,k)=>{const E=J(b),$=u(E,C.children,k);return Rt(E)&&$.length===0||b.props?.i18nIsDynamicList?E:$},v=(b,C,k,E,$)=>{b.dummy?(b.children=C,k.push(S.cloneElement(b,{key:E},$?void 0:C))):k.push(...S.Children.map([b],f=>{const l="data-i18n-is-dynamic-list",V={key:E,[l]:void 0};return f&&f.props&&Object.keys(f.props).forEach(T=>{T==="ref"||T==="children"||T==="i18nIsDynamicList"||T===l||(V[T]=f.props[T])}),S.cloneElement(f,V,$?null:C)}))},u=(b,C,k)=>{const E=U(b);return U(C).reduce((f,l,V)=>{const T=l.children?.[0]?.content&&r.services.interpolator.interpolate(l.children[0].content,g,r.language);if(l.type==="tag"){let P=E[parseInt(l.name,10)];!P&&s&&(P=s[l.name]),k.length===1&&!P&&(P=k[0][l.name]),P||(P={});const O={...l.attrs};o&&Object.keys(O).forEach(y=>{const F=O[y];z(F)&&(O[y]=$e(F))});const j=Object.keys(O).length!==0?Ft({props:O},P):P,_=S.isValidElement(j),D=_&&G(l,!0)&&!l.voidElement,R=d&&L(j)&&j.dummy&&!_,q=L(s)&&Object.hasOwnProperty.call(s,l.name);if(z(j)){const y=r.services.interpolator.interpolate(j,g,r.language);f.push(y)}else if(G(j)||D){const y=x(j,l,k);v(j,y,f,V)}else if(R){const y=u(E,l.children,k);v(j,y,f,V)}else if(Number.isNaN(parseFloat(l.name)))if(q){const y=x(j,l,k);v(j,y,f,V,l.voidElement)}else if(a.transSupportBasicHtmlNodes&&c.indexOf(l.name)>-1)if(l.voidElement)f.push(S.createElement(l.name,{key:`${l.name}-${V}`}));else{const y=u(E,l.children,k);f.push(S.createElement(l.name,{key:`${l.name}-${V}`},y))}else if(l.voidElement)f.push(`<${l.name} />`);else{const y=u(E,l.children,k);f.push(`<${l.name}>${y}</${l.name}>`)}else if(L(j)&&!_){const y=l.children[0]?T:null;y&&f.push(y)}else v(j,T,f,V,l.children.length!==1||!T)}else if(l.type==="text"){const P=a.transWrapTextNodes,O=typeof a.unescape=="function"?a.unescape:je().unescape,j=o?O(r.services.interpolator.interpolate(l.content,g,r.language)):r.services.interpolator.interpolate(l.content,g,r.language);P?f.push(S.createElement(P,{key:`${l.name}-${V}`},j)):f.push(j)}return f},[])},h=u([{dummy:!0,children:e||[]}],A,U(e||[]));return J(h[0])},we=(e,s,n)=>{const r=e.key||s,a=S.cloneElement(e,{key:r});if(!a.props||!a.props.children||n.indexOf(`${s}/>`)<0&&n.indexOf(`${s} />`)<0)return a;function i(){return S.createElement(S.Fragment,null,a)}return S.createElement(i,{key:r})},qt=(e,s)=>e.map((n,r)=>we(n,r,s)),Mt=(e,s)=>{const n={};return Object.keys(e).forEach(r=>{Object.assign(n,{[r]:we(e[r],r,s)})}),n},Bt=(e,s,n,r)=>e?Array.isArray(e)?qt(e,s):L(e)?Mt(e,s):(ye(n,"TRANS_INVALID_COMPONENTS",'<Trans /> "components" prop expects an object or array',{i18nKey:r}),null):null,Ht=e=>!L(e)||Array.isArray(e)?!1:Object.keys(e).reduce((s,n)=>s&&Number.isNaN(Number.parseFloat(n)),!0);function Kt({children:e,count:s,parent:n,i18nKey:r,context:a,tOptions:i={},values:o,defaults:c,components:d,ns:m,i18n:p,t:w,shouldUnescape:A,...g}){const x=p||be();if(!x)return ye(x,"NO_I18NEXT_INSTANCE","Trans: You need to pass in an i18next instance using i18nextReactModule",{i18nKey:r}),e;const v=w||x.t.bind(x)||(M=>M),u={...je(),...x.options?.react};let h=m||v.ns||x.options?.defaultNS;h=z(h)?[h]:h||["translation"];const{transDefaultProps:b}=u,C=b?.tOptions?{...b.tOptions,...i}:i,k=A??b?.shouldUnescape,E=b?.values?{...b.values,...o}:o,$=b?.components?{...b.components,...d}:d,f=Se(e,u,x,r),l=c||C?.defaultValue||f||u.transEmptyNodeValue||(typeof r=="function"?Pe(r):r),{hashTransKey:V}=u,T=r||(V?V(f||l):f||l);x.options?.interpolation?.defaultVariables?o=E&&Object.keys(E).length>0?{...E,...x.options.interpolation.defaultVariables}:{...x.options.interpolation.defaultVariables}:o=E;const P=Lt(e);P&&typeof P.count=="number"&&s===void 0&&(s=P.count);const O=o||s!==void 0&&!x.options?.interpolation?.alwaysFormat||!e?C.interpolation:{interpolation:{...C.interpolation,prefix:"#$?",suffix:"?$#"}},j={...C,context:a||C.context,count:s,...o,...O,defaultValue:l,ns:h};let _=T?v(T,j):l;_===T&&l&&(_=l);const D=Bt($,_,x,r);let R=D||e,q=null;Ht(D)&&(q=D,R=e);const y=zt(R,q,_,x,u,j,k),F=n??u.defaultTransParent;return F?S.createElement(F,g,y):y}function ge({children:e,count:s,parent:n,i18nKey:r,context:a,tOptions:i={},values:o,defaults:c,components:d,ns:m,i18n:p,t:w,shouldUnescape:A,...g}){const{i18n:x,defaultNS:v}=S.useContext(We)||{},u=p||x||be(),h=w||u?.t.bind(u);return Kt({children:e,count:s,parent:n,i18nKey:r,context:a,tOptions:i,values:o,defaults:c,components:d,ns:m||h?.ns||v||u?.options?.defaultNS,i18n:u,t:w,shouldUnescape:A,...g})}async function Yt(){const e=await fetch("/api/cliproxy/sync/status");if(!e.ok){let s="Failed to fetch sync status";try{const n=await e.json();s=n.error||n.message||s}catch{}throw new Error(s)}return e.json()}async function Zt(){const e=new AbortController,s=setTimeout(()=>e.abort(),3e4);try{const n=await fetch("/api/cliproxy/sync",{method:"POST",headers:{"Content-Type":"application/json"},signal:e.signal});if(!n.ok){let r="Sync failed";try{const a=await n.json();r=a.error||a.message||r}catch{}throw new Error(r)}return n.json()}catch(n){throw n instanceof Error&&n.name==="AbortError"?new Error("Sync request timed out after 30 seconds"):n}finally{clearTimeout(s)}}function Gt(){return ve({queryKey:["cliproxy-sync-status"],queryFn:Yt,refetchInterval:3e4,retry:1,staleTime:1e4})}function Jt(){const e=ut();return dt({mutationFn:Zt,onSuccess:s=>{e.invalidateQueries({queryKey:["cliproxy-sync-status"]}),e.invalidateQueries({queryKey:["cliproxy-sync-preview"]}),s.syncedCount===0?se.info("No profiles to sync"):se.success(`Synced ${s.syncedCount} profile${s.syncedCount===1?"":"s"} to CLIProxy`)},onError:s=>{se.error(`Sync failed: ${s.message}`)}})}function fe(e){return e.replace(/-\d+$/,"").split(".").map(Number)}function le(e,s){const n=fe(e),r=fe(s);for(let a=0;a<3;a+=1){const i=n[a]||0,o=r[a]||0;if(i>o)return 1;if(i<o)return-1}return 0}function ae(e,s){return le(e,s)>0}function ie(e,s,n){return le(e,s)>=0&&le(e,n)<=0}const oe={"round-robin":{title:"Round Robin",description:"Spread requests across matching accounts for even usage."},"fill-first":{title:"Fill First",description:"Drain one healthy account first and keep backups untouched until needed."}};function he({className:e,compact:s=!1,state:n,isLoading:r,isSaving:a,error:i,onApply:o}){const c=n?.strategy??"round-robin",[d,m]=S.useState(c),[p,w]=S.useState(!1),A=n?.source==="live"?"Live CLIProxy":"Saved startup default",g=r||a||!n||d===c,x=p?"Hide details":"Show details";if(s){const v=u=>{m(u),u!==c&&o(u)};return t.jsxs("div",{className:W("group/routing flex items-center justify-between mt-1 p-1 -mx-1 rounded-lg transition-colors hover:bg-primary/5",e),children:[t.jsxs("div",{className:"flex items-center gap-2 text-xs font-medium text-foreground",children:[t.jsxs("div",{className:"relative flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-background border border-border/60 text-muted-foreground shadow-sm overflow-hidden transition-all duration-300 group-hover/routing:border-primary/40 group-hover/routing:text-primary group-hover/routing:shadow-[0_0_12px_rgba(59,130,246,0.15)] dark:group-hover/routing:shadow-[0_0_12px_rgba(59,130,246,0.1)]",children:[t.jsx("div",{className:"absolute inset-0 bg-primary/10 translate-y-full group-hover/routing:translate-y-0 transition-transform duration-300 ease-out"}),t.jsx(me,{className:"relative z-10 h-3.5 w-3.5 transition-transform duration-300 group-hover/routing:scale-110"})]}),t.jsx("span",{className:"tracking-tight transition-colors duration-300 group-hover/routing:text-primary group-hover/routing:font-semibold",children:"Routing"}),a&&t.jsx(K,{className:"ml-1 h-3 w-3 shrink-0 animate-spin text-primary"})]}),t.jsxs("div",{className:"relative grid grid-cols-2 p-0.5 gap-0.5 rounded-lg border border-border/60 bg-muted/30 shadow-[inset_0_1px_2px_rgba(0,0,0,0.05)] dark:shadow-[inset_0_1px_3px_rgba(0,0,0,0.2)] transition-colors duration-300 group-hover/routing:border-primary/20 group-hover/routing:bg-primary/5",children:[t.jsx("div",{className:W("absolute inset-y-0.5 left-0.5 w-[calc(50%-0.1875rem)] rounded bg-background shadow-[0_1px_3px_rgba(0,0,0,0.1),0_1px_2px_rgba(0,0,0,0.06)] ring-1 ring-black/5 dark:ring-white/10 transition-all duration-300",d==="fill-first"?"translate-x-[calc(100%+0.125rem)]":"translate-x-0","group-hover/routing:shadow-[0_0_8px_rgba(59,130,246,0.15)] dark:group-hover/routing:shadow-[0_0_8px_rgba(59,130,246,0.1)] group-hover/routing:ring-primary/30"),style:{transitionTimingFunction:"cubic-bezier(0.175, 0.885, 0.32, 1.275)"}}),Object.entries(oe).map(([u,h])=>{const b=d===u;return t.jsx("button",{type:"button",className:W("relative z-10 flex items-center justify-center rounded px-2.5 py-0.5 text-[10px] font-medium whitespace-nowrap transition-colors duration-200",b?"text-foreground group-hover/routing:text-primary":"text-muted-foreground/70 hover:text-foreground/90 group-hover/routing:text-muted-foreground/90"),onClick:()=>v(u),disabled:r||a||!!i,title:h.description,children:h.title},u)})]})]})}return t.jsx("section",{className:W("rounded-xl border border-border/70 bg-background",e),children:t.jsxs("div",{className:"grid gap-3 px-4 py-3 xl:grid-cols-[minmax(0,1fr)_auto] xl:items-start",children:[t.jsxs("div",{className:"min-w-0 space-y-2",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsx("div",{className:"inline-flex h-7 w-7 items-center justify-center rounded-lg bg-muted text-primary",children:t.jsx(me,{className:"h-4 w-4"})}),t.jsx("div",{className:"text-sm font-medium",children:"Routing strategy"}),t.jsx(H,{variant:"secondary",children:c}),n?t.jsx(H,{variant:"outline",children:A}):null,n?t.jsx(H,{variant:"outline",children:n.target}):null]}),t.jsx("p",{className:"max-w-3xl text-xs leading-5 text-muted-foreground",children:"Proxy-wide account rotation. CCS keeps round-robin as the default until you explicitly change it."})]}),t.jsxs("div",{className:"flex flex-col gap-2 xl:items-end",children:[t.jsx("div",{className:"inline-flex flex-wrap rounded-lg border border-border/70 bg-muted/35 p-1",children:Object.entries(oe).map(([v,u])=>{const h=d===v;return t.jsx("button",{type:"button",className:W("rounded-md px-3 py-1.5 text-sm font-medium transition-colors",h?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),onClick:()=>m(v),disabled:r||a||!!i,children:u.title},v)})}),t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsxs(Y,{type:"button",variant:"ghost",size:"sm",className:"h-8 px-2 text-xs text-muted-foreground",onClick:()=>w(v=>!v),children:[p?t.jsx(pt,{className:"mr-1 h-3.5 w-3.5"}):t.jsx(xt,{className:"mr-1 h-3.5 w-3.5"}),x]}),t.jsx(Y,{size:"sm",onClick:()=>o(d),disabled:g||!!i,children:a?"Saving...":`Use ${d}`})]})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1 text-[11px] text-muted-foreground xl:col-span-2",children:[t.jsx("span",{children:"Round robin spreads usage."}),t.jsx("span",{className:"hidden text-border sm:inline",children:"•"}),t.jsx("span",{children:"Fill first keeps backup accounts cold until they are needed."})]}),i?t.jsx("div",{className:"rounded-lg border border-destructive/25 bg-destructive/5 px-3 py-2 text-sm xl:col-span-2",children:i.message}):null,!i&&n?.message?t.jsx("div",{className:"rounded-lg border border-border/70 bg-muted/35 px-3 py-2 text-xs text-muted-foreground xl:col-span-2",children:n.message}):null,p?t.jsx("div",{className:"grid gap-4 border-t border-border/60 pt-3 md:grid-cols-2 xl:col-span-2",children:Object.entries(oe).map(([v,u])=>{const h=c===v;return t.jsxs("div",{className:"space-y-1",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsx("div",{className:"text-sm font-medium",children:u.title}),h?t.jsx(H,{variant:"secondary",children:"Current"}):null]}),t.jsx("p",{className:"text-xs leading-5 text-muted-foreground",children:u.description})]},v)})}):null]})})}function Qt(e){if(!e)return"";const s=new Date(e).getTime(),r=Date.now()-s,a=Math.floor(r/(1e3*60*60)),i=Math.floor(r%(1e3*60*60)/(1e3*60));return a>0?`${a}h ${i}m`:`${i}m`}function Xt(e,s){if(!e)return"";const n=Date.now()-e,r=Math.floor(n/(1e3*60)),a=Math.floor(n/(1e3*60*60));return r<1?s("proxyStatusWidget.justNow"):r<60?s("proxyStatusWidget.minutesAgo",{count:r}):s("proxyStatusWidget.hoursAgo",{count:a})}function Z({icon:e,tooltip:s,onClick:n,disabled:r,isPending:a,className:i,variant:o="ghost"}){return t.jsxs(Qe,{children:[t.jsx(Xe,{asChild:!0,children:t.jsx(Y,{variant:o==="destructive-ghost"?"ghost":o,size:"sm",className:W("h-7 w-7 p-0",o==="destructive-ghost"&&"hover:bg-destructive/10 hover:text-destructive hover:border-destructive/30",i),onClick:n,disabled:r,children:a?t.jsx(K,{className:"w-3.5 h-3.5 animate-spin"}):t.jsx(e,{className:"w-3.5 h-3.5"})})}),t.jsx(et,{side:"bottom",className:"text-xs",children:s})]})}function os(){const{t:e}=Oe(),{data:s,isLoading:n}=_e(),{data:r}=De(),{data:a,isLoading:i}=Ie(),{data:o,isLoading:c,error:d}=Re(),m=Fe(),p=Le(),w=Ue(),A=ze(),g=qe(),{data:x}=Gt(),{mutate:v,isPending:u}=Jt(),[h,b]=S.useState(!1),[C,k]=S.useState(""),[E,$]=S.useState(!1),[f,l]=S.useState(null),[V,T]=S.useState(null),{data:P}=ve({queryKey:["cliproxy-server-config"],queryFn:()=>tt.cliproxyServer.get(),staleTime:3e4}),O=mt({mutationKey:["update-backend"]})>0,j=P?.remote,_=j?.enabled&&j?.host,D=s?.running??!1,R=p.isPending||w.isPending||A.isPending||g.isPending||O||u,q=r?.hasUpdate??!1,y=r?.isStable===!1,F=r?.currentVersion,M=x?.configured??!1,Ce=e(M?"proxyStatusWidget.syncReady":"proxyStatusWidget.noConfig"),Q=y?r?.maxStableVersion||a?.latestStable:r?.latestVersion,ce=a?.maxStableVersion||r?.maxStableVersion||"6.6.80",B=a?.faultyRange,ke=B&&`${B.min.replace(/-\d+$/,"")}-${B.max.replace(/-\d+$/,"")}`,X=(N,I)=>{l(N),T(I),$(!0)},ue=async N=>{if(!N)return;const I=ae(N,ce);if(B!==void 0&&ie(N,B.min,B.max)){X(N,"faulty");return}if(I){X(N,"experimental");return}try{const de=await g.mutateAsync({version:N});de.requiresConfirmation&&X(N,de.isFaulty?"faulty":"experimental")}catch{}},Ae=()=>{f&&g.mutate({version:f,force:!0}),$(!1),l(null),T(null)},Ee=()=>{$(!1),l(null),T(null)},Te=_?(()=>{const N=j.protocol||"http",I=j.port||(N==="https"?443:80);return N==="https"&&I===443||N==="http"&&I===80?j.host:`${j.host}:${I}`})():null;return _?t.jsxs("div",{className:W("rounded-lg border p-3 transition-colors","border-blue-500/30 bg-blue-500/5"),children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(gt,{className:"w-4 h-4 text-blue-500"}),t.jsx("span",{className:"text-sm font-medium",children:e("proxyStatusWidget.remoteProxy")}),t.jsx(H,{variant:"secondary",className:"text-[10px] h-4 px-1.5 bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400",children:e("proxyStatusWidget.active")})]}),t.jsx(ft,{className:"w-3 h-3 text-blue-600"})]}),t.jsxs("div",{className:"mt-2 text-xs text-muted-foreground",children:[t.jsx("div",{className:"flex items-center gap-1 mb-1",children:t.jsx("span",{className:"font-mono",children:Te})}),t.jsx("p",{className:"text-[10px] text-muted-foreground/70 leading-tight",children:e("proxyStatusWidget.trafficAutoRouted")})]}),t.jsx(he,{compact:!0,className:"mt-3",state:o,isLoading:c,isSaving:m.isPending,error:d instanceof Error?d:null,onApply:N=>m.mutate(N)},`remote:${o?.strategy??"round-robin"}`)]}):t.jsx(Me,{delayDuration:300,children:t.jsxs("div",{className:W("rounded-lg border p-3 transition-colors",D?"border-green-500/30 bg-green-500/5":"border-muted bg-muted/30"),children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("div",{className:W("w-2 h-2 rounded-full",D?"bg-green-500 animate-pulse":"bg-muted-foreground/30")}),t.jsx("span",{className:"text-sm font-medium",children:r?.backendLabel??"CLIProxy"})]}),t.jsxs("div",{className:"flex items-center gap-1",children:[n?t.jsx(K,{className:"w-3 h-3 animate-spin text-muted-foreground"}):D?t.jsxs(t.Fragment,{children:[t.jsx(Z,{icon:u?K:ht,tooltip:e("proxyStatusWidget.tooltipSync"),onClick:()=>v(),disabled:!M||R,isPending:u}),t.jsx(Z,{icon:yt,tooltip:e("proxyStatusWidget.tooltipRestart"),onClick:()=>A.mutate(),disabled:R,isPending:A.isPending}),t.jsx(Z,{icon:bt,tooltip:e("proxyStatusWidget.tooltipStop"),onClick:()=>w.mutate(),disabled:R,isPending:w.isPending,variant:"destructive-ghost"})]}):null,t.jsx(Z,{icon:h?jt:vt,tooltip:e(h?"proxyStatusWidget.tooltipClose":"proxyStatusWidget.tooltipVersionSettings"),onClick:()=>b(!h),className:h?"bg-muted":void 0})]})]}),F&&t.jsxs("div",{className:"mt-1.5 flex items-center gap-2",children:[t.jsxs("span",{className:W("text-xs font-mono text-muted-foreground",y&&"text-amber-600 dark:text-amber-400"),children:["v",F]}),(q||y)&&Q&&t.jsxs(H,{variant:"secondary",className:W("text-[10px] h-4 px-1.5 gap-0.5 cursor-pointer transition-colors",y?"bg-amber-100 text-amber-700 hover:bg-amber-200 dark:bg-amber-900/30 dark:text-amber-400 dark:hover:bg-amber-900/50":"bg-green-100 text-green-700 hover:bg-green-200 dark:bg-green-900/30 dark:text-green-400 dark:hover:bg-green-900/50"),onClick:()=>void ue(Q),title:e(y?"proxyStatusWidget.clickToDowngrade":"proxyStatusWidget.clickToUpdate"),children:[y?t.jsx(Nt,{className:"w-2.5 h-2.5"}):t.jsx(St,{className:"w-2.5 h-2.5"}),Q]})]}),D&&s&&t.jsxs("div",{className:"mt-2 flex items-center gap-4 text-xs text-muted-foreground",children:[t.jsx("span",{className:"flex items-center gap-1",children:e("proxyStatusWidget.port",{port:s.port})}),s.sessionCount!==void 0&&s.sessionCount>0&&t.jsxs("span",{className:"flex items-center gap-1",children:[t.jsx(wt,{className:"w-3 h-3"}),e("proxyStatusWidget.sessionCount",{count:s.sessionCount})]}),s.startedAt&&t.jsxs("span",{className:"flex items-center gap-1",children:[t.jsx(Ct,{className:"w-3 h-3"}),Qt(s.startedAt)]})]}),t.jsxs("div",{className:"mt-2 flex items-center gap-1.5 text-xs",children:[M?t.jsx(kt,{className:"w-3 h-3 text-green-600 dark:text-green-400"}):t.jsx(At,{className:"w-3 h-3 text-muted-foreground"}),t.jsx("span",{className:W("text-xs",M?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:Ce})]}),t.jsx(he,{compact:!0,className:"mt-3",state:o,isLoading:c,isSaving:m.isPending,error:d instanceof Error?d:null,onApply:N=>m.mutate(N)},`local:${o?.strategy??"round-robin"}`),t.jsx(Be,{open:h,onOpenChange:b,children:t.jsxs(He,{className:"mt-3 pt-3 border-t border-muted",children:[t.jsx("h4",{className:"text-xs font-medium text-muted-foreground mb-3",children:e("proxyStatusWidget.versionManagement")}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs(Ke,{value:C,onValueChange:k,disabled:i,children:[t.jsx(Ye,{className:"h-8 text-xs flex-1",children:t.jsx(Ze,{placeholder:e("proxyStatusWidget.selectVersionPlaceholder")})}),t.jsx(Ge,{children:a?.versions.slice(0,20).map(N=>{const I=a?.maxStableVersion&&ae(N,a.maxStableVersion),ee=a?.faultyRange&&ie(N,a.faultyRange.min,a.faultyRange.max);return t.jsx(Je,{value:N,className:"text-xs",children:t.jsxs("span",{className:"flex items-center gap-2",children:["v",N,N===a.latestStable&&t.jsx("span",{className:"text-green-600 dark:text-green-400",children:e("proxyStatusWidget.stable")}),(ee||I)&&t.jsx("span",{className:"text-amber-600 dark:text-amber-400",children:"⚠"})]})},N)})})]}),t.jsxs(Y,{variant:"outline",size:"sm",className:"h-8 text-xs gap-1.5 px-3",onClick:()=>void ue(C),disabled:g.isPending||!C,children:[g.isPending?t.jsx(K,{className:"w-3.5 h-3.5 animate-spin"}):t.jsx(Et,{className:"w-3.5 h-3.5"}),e("proxyStatusWidget.install")]})]}),C&&a?.maxStableVersion&&ae(C,a.maxStableVersion)&&t.jsxs("div",{className:"mt-2 flex items-center gap-1.5 text-[11px] text-amber-600 dark:text-amber-400",children:[t.jsx(ne,{className:"w-3.5 h-3.5 flex-shrink-0"}),t.jsx("span",{children:e("proxyStatusWidget.versionsAboveUnstable",{version:a.maxStableVersion})})]}),C&&a?.faultyRange&&ie(C,a.faultyRange.min,a.faultyRange.max)&&t.jsxs("div",{className:"mt-2 flex items-center gap-1.5 text-[11px] text-amber-600 dark:text-amber-400",children:[t.jsx(ne,{className:"w-3.5 h-3.5 flex-shrink-0"}),t.jsx("span",{children:e("proxyStatusWidget.versionsKnownIssues",{version:C})})]}),r?.checkedAt&&t.jsx("div",{className:"mt-2 text-[10px] text-muted-foreground/60",children:e("proxyStatusWidget.lastChecked",{time:Xt(r.checkedAt,e)})})]})}),!D&&t.jsxs("div",{className:"mt-2 flex items-center justify-between",children:[t.jsx("span",{className:"text-xs text-muted-foreground",children:e("proxyStatusWidget.notRunning")}),t.jsxs(Y,{variant:"outline",size:"sm",className:"h-7 text-xs gap-1",onClick:()=>p.mutate(),disabled:p.isPending,children:[p.isPending?t.jsx(K,{className:"w-3 h-3 animate-spin"}):t.jsx(Tt,{className:"w-3 h-3"}),e("proxyStatusWidget.start")]})]}),t.jsx(st,{open:E,onOpenChange:$,children:t.jsxs(nt,{children:[t.jsxs(rt,{children:[t.jsxs(at,{className:"flex items-center gap-2",children:[t.jsx(ne,{className:"w-5 h-5 text-amber-500"}),e(V==="faulty"?"proxyStatusWidget.installFaultyTitle":"proxyStatusWidget.installUnstableTitle")]}),t.jsxs(it,{className:"space-y-2",children:[V==="faulty"?t.jsx("p",{children:t.jsx(ge,{i18nKey:"proxyStatusWidget.installFaultyDesc",values:{version:f??"",range:ke||""},components:{strong:t.jsx("strong",{})}})}):t.jsx("p",{children:t.jsx(ge,{i18nKey:"proxyStatusWidget.installUnstableDesc",values:{version:f??"",maxStable:ce},components:{strong:t.jsx("strong",{})}})}),t.jsx("p",{className:"text-amber-600 dark:text-amber-400",children:e(V==="faulty"?"proxyStatusWidget.installFaultyWarning":"proxyStatusWidget.installUnstableWarning")}),t.jsx("p",{children:e("proxyStatusWidget.installUnstableConfirm")})]})]}),t.jsxs(ot,{children:[t.jsx(lt,{onClick:Ee,children:e("proxyStatusWidget.cancel")}),t.jsx(ct,{onClick:Ae,className:"bg-amber-500 hover:bg-amber-600 text-white",children:e("proxyStatusWidget.installAnyway")})]})]})})]})})}export{os as P};
@@ -1 +1 @@
1
- import{j as e}from"./radix-ui-Zb8sVEtn.js";import{r as y}from"./react-vendor-CNOkPC89.js";import{t as k}from"./notifications-B2HqRBj7.js";import{B as R,d as a,c as E,b0 as z,W as S}from"./index-BMHPMj0j.js";import{aQ as B,L as m,an as L,n as P,R as T}from"./icons-B9oTjo-t.js";function F({title:c,pathLabel:x,loading:t,parseWarning:r,readWarning:i,value:s,dirty:n,readOnly:h=!1,saving:f,saveDisabled:j,onChange:p,onSave:u,onRefresh:b,onDiscard:l,language:v="json",loadingLabel:N="Loading settings.json...",parseWarningLabel:g="Parse warning",ownershipNotice:d}){const[w,o]=y.useState(!1),C=async()=>{s&&(await navigator.clipboard.writeText(s),o(!0),k.success(S.t("commonToast.settingsCopied")),window.setTimeout(()=>o(!1),1500))};return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsxs("div",{className:"p-4 border-b bg-background flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("h2",{className:"font-semibold flex items-center gap-2",children:[e.jsx(B,{className:"h-4 w-4 text-primary"}),c,n&&e.jsx(R,{variant:"secondary",className:"text-[10px]",children:"Unsaved"})]}),e.jsx("p",{className:"text-xs text-muted-foreground font-mono truncate",children:x})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(a,{size:"sm",onClick:u,disabled:j,children:[f?e.jsx(m,{className:"h-4 w-4 mr-1 animate-spin"}):e.jsx(L,{className:"h-4 w-4 mr-1"}),"Save"]}),l?e.jsx(a,{variant:"outline",size:"sm",onClick:l,disabled:!n||t,children:"Discard"}):null,e.jsxs(a,{variant:"outline",size:"sm",onClick:C,disabled:!s,children:[e.jsx(P,{className:"h-4 w-4 mr-1"}),w?"Copied":"Copy"]}),e.jsx(a,{variant:"outline",size:"sm",onClick:b,"aria-label":"Refresh raw config",children:e.jsx(T,{className:E("h-4 w-4",t?"animate-spin":"")})})]})]}),e.jsx("div",{className:"flex-1 overflow-auto",children:t?e.jsxs("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:[e.jsx(m,{className:"h-5 w-5 animate-spin mr-2"}),N]}):e.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[d&&e.jsx("div",{className:"mx-4 mt-4",children:d}),r&&e.jsxs("div",{className:"mx-4 mt-4 rounded-md border border-amber-300 bg-amber-50 px-3 py-2 text-sm text-amber-800 dark:bg-amber-950/20 dark:text-amber-300",children:[g,": ",r]}),i&&e.jsxs("div",{className:"mx-4 mt-4 rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-sm text-destructive",children:["Read-only: ",i]}),e.jsx("div",{className:"min-h-0 flex-1 p-4 pt-3",children:e.jsx("div",{className:"h-full rounded-md border overflow-hidden bg-background",children:e.jsx(z,{value:s,onChange:p,language:v,readonly:h,minHeight:"100%",heightMode:"fill-parent"})})})]})})]})}const q=F;export{F as R,q as a};
1
+ import{j as e}from"./radix-ui-Zb8sVEtn.js";import{r as y}from"./react-vendor-CNOkPC89.js";import{t as k}from"./notifications-B2HqRBj7.js";import{B as R,d as a,c as E,b5 as z,W as S}from"./index-Du97tqVQ.js";import{aT as T,L as m,at as B,o as L,R as P}from"./icons-DfENUzBo.js";function F({title:c,pathLabel:x,loading:t,parseWarning:r,readWarning:i,value:s,dirty:n,readOnly:h=!1,saving:f,saveDisabled:j,onChange:p,onSave:u,onRefresh:b,onDiscard:l,language:v="json",loadingLabel:N="Loading settings.json...",parseWarningLabel:g="Parse warning",ownershipNotice:d}){const[w,o]=y.useState(!1),C=async()=>{s&&(await navigator.clipboard.writeText(s),o(!0),k.success(S.t("commonToast.settingsCopied")),window.setTimeout(()=>o(!1),1500))};return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsxs("div",{className:"p-4 border-b bg-background flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("h2",{className:"font-semibold flex items-center gap-2",children:[e.jsx(T,{className:"h-4 w-4 text-primary"}),c,n&&e.jsx(R,{variant:"secondary",className:"text-[10px]",children:"Unsaved"})]}),e.jsx("p",{className:"text-xs text-muted-foreground font-mono truncate",children:x})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(a,{size:"sm",onClick:u,disabled:j,children:[f?e.jsx(m,{className:"h-4 w-4 mr-1 animate-spin"}):e.jsx(B,{className:"h-4 w-4 mr-1"}),"Save"]}),l?e.jsx(a,{variant:"outline",size:"sm",onClick:l,disabled:!n||t,children:"Discard"}):null,e.jsxs(a,{variant:"outline",size:"sm",onClick:C,disabled:!s,children:[e.jsx(L,{className:"h-4 w-4 mr-1"}),w?"Copied":"Copy"]}),e.jsx(a,{variant:"outline",size:"sm",onClick:b,"aria-label":"Refresh raw config",children:e.jsx(P,{className:E("h-4 w-4",t?"animate-spin":"")})})]})]}),e.jsx("div",{className:"flex-1 overflow-auto",children:t?e.jsxs("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:[e.jsx(m,{className:"h-5 w-5 animate-spin mr-2"}),N]}):e.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[d&&e.jsx("div",{className:"mx-4 mt-4",children:d}),r&&e.jsxs("div",{className:"mx-4 mt-4 rounded-md border border-amber-300 bg-amber-50 px-3 py-2 text-sm text-amber-800 dark:bg-amber-950/20 dark:text-amber-300",children:[g,": ",r]}),i&&e.jsxs("div",{className:"mx-4 mt-4 rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-sm text-destructive",children:["Read-only: ",i]}),e.jsx("div",{className:"min-h-0 flex-1 p-4 pt-3",children:e.jsx("div",{className:"h-full rounded-md border overflow-hidden bg-background",children:e.jsx(z,{value:s,onChange:p,language:v,readonly:h,minHeight:"100%",heightMode:"fill-parent"})})})]})})]})}const A=F;export{F as R,A as a};
@@ -0,0 +1 @@
1
+ import{j as n}from"./radix-ui-Zb8sVEtn.js";import{r as a}from"./react-vendor-CNOkPC89.js";import{e as P,f as Q,d as $,c as w,g as B,I as G}from"./index-Du97tqVQ.js";import{aN as H,au as L,m as V}from"./icons-DfENUzBo.js";function S(o){return o.trim().toLowerCase()}function M(o,h){return`${o}-option-${h.replace(/[^a-z0-9_-]+/gi,"-")}`}function Z({value:o,onChange:h,options:f,groups:g,placeholder:j,searchPlaceholder:k,emptyText:E,disabled:F,className:q,triggerClassName:K,contentClassName:R}){const[l,T]=a.useState(!1),[y,N]=a.useState(""),[i,c]=a.useState(),m=a.useId(),A=a.useRef(null),I=a.useRef({}),O=a.useMemo(()=>f.find(e=>e.value===o),[f,o]),d=a.useMemo(()=>{const e=S(y);return e?f.filter(t=>[t.searchText,...t.keywords??[]].some(u=>S(u).includes(e))):f},[f,y]),z=a.useMemo(()=>{const e=new Map((g??[]).map(r=>[r.key,r])),t=d.filter(r=>!r.groupKey||!e.has(r.groupKey)),u=(g??[]).map(r=>({...r,options:d.filter(x=>x.groupKey===r.key)})).filter(r=>r.options.length>0);return t.length===0?u:[{key:"__default",options:t},...u]},[d,g]),s=a.useMemo(()=>d.filter(e=>!e.disabled),[d]),D=O?.triggerContent??O?.itemContent,v=e=>{T(e),e||(N(""),c(void 0))},b=()=>A.current?.focus();a.useEffect(()=>{if(l){if(s.length===0){c(void 0);return}c(e=>e&&s.some(t=>t.value===e)?e:s.find(t=>t.value===o)?.value??s[0]?.value)}},[s,l,o]),a.useEffect(()=>{!l||!i||I.current[i]?.scrollIntoView({block:"nearest"})},[i,l]);const p=e=>{if(s.length===0)return;if(e==="first"){c(s[0]?.value);return}if(e==="last"){c(s.at(-1)?.value);return}const t=s.findIndex(_=>_.value===i),u=e==="next"?-1:s.length,r=t>=0?t:u,x=e==="next"?Math.min(r+1,s.length-1):Math.max(r-1,0);c(s[x]?.value)},C=e=>{h(e),v(!1)},U=()=>{if(!i)return;const e=s.find(t=>t.value===i);e&&C(e.value)};return n.jsxs(P,{open:l,onOpenChange:v,children:[n.jsx(Q,{asChild:!0,children:n.jsxs($,{type:"button",variant:"outline","aria-expanded":l,"aria-controls":l?m:void 0,"aria-haspopup":"dialog",disabled:F,onKeyDown:e=>{if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return;e.preventDefault(),v(!0);const t=()=>{b(),p(e.key==="ArrowDown"?"first":"last")};if(typeof requestAnimationFrame=="function"){requestAnimationFrame(t);return}setTimeout(t,0)},className:w("w-full justify-between font-normal",q,K,!D&&"text-muted-foreground"),children:[n.jsx("div",{className:"min-w-0 flex-1 text-left",children:D??n.jsx("span",{children:j})}),n.jsx(H,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),n.jsxs(B,{align:"start",className:w("w-[var(--radix-popover-trigger-width)] p-0",R),onOpenAutoFocus:e=>{if(e.preventDefault(),typeof requestAnimationFrame=="function"){requestAnimationFrame(b);return}setTimeout(b,0)},children:[n.jsx("div",{className:"border-b p-2",children:n.jsxs("div",{className:"relative",children:[n.jsx(L,{className:"text-muted-foreground absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2"}),n.jsx(G,{ref:A,value:y,onChange:e=>N(e.target.value),role:"combobox","aria-label":k,"aria-autocomplete":"list","aria-expanded":l,"aria-controls":m,"aria-activedescendant":i?M(m,i):void 0,onKeyDown:e=>{if(e.key==="ArrowDown"){e.preventDefault(),p("next");return}if(e.key==="ArrowUp"){e.preventDefault(),p("previous");return}if(e.key==="Home"){e.preventDefault(),p("first");return}if(e.key==="End"){e.preventDefault(),p("last");return}if(e.key==="Enter"){e.preventDefault(),U();return}e.key==="Escape"&&(e.preventDefault(),v(!1))},placeholder:k,className:"pl-8"})]})}),n.jsx("div",{"data-slot":"searchable-select-scroll-container","data-testid":"searchable-select-scroll-container",className:"max-h-72 overflow-y-auto overscroll-contain",children:d.length===0?n.jsx("div",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:E}):n.jsx("div",{id:m,role:"listbox","aria-label":j,className:"p-1",children:z.map(e=>n.jsxs("div",{children:[e.label&&n.jsx("div",{className:"px-2 py-1.5 text-xs font-medium text-muted-foreground",children:e.label}),e.options.map(t=>{const u=t.value===i,r=t.value===o;return n.jsxs("button",{id:M(m,t.value),type:"button",role:"option","aria-selected":r,disabled:t.disabled,tabIndex:-1,ref:x=>{I.current[t.value]=x},onMouseMove:()=>{t.disabled||c(t.value)},onFocus:()=>{t.disabled||c(t.value)},onClick:()=>C(t.value),className:w("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none","focus-visible:ring-ring focus-visible:ring-1",u&&"bg-accent text-accent-foreground",r&&"bg-accent text-accent-foreground",t.disabled&&"pointer-events-none opacity-50"),children:[n.jsx("div",{className:"min-w-0 flex-1",children:t.itemContent}),r&&n.jsx(V,{className:"h-4 w-4 shrink-0"})]},t.value)})]},e.key))})})]})]})}export{Z as S};
@@ -1 +1 @@
1
- import{j as i,a0 as n}from"./radix-ui-Zb8sVEtn.js";import"./react-vendor-CNOkPC89.js";import{c as e}from"./index-BMHPMj0j.js";function m({className:t,orientation:a="horizontal",decorative:o=!0,...r}){return i.jsx(n,{"data-slot":"separator",decorative:o,orientation:a,className:e("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",t),...r})}export{m as S};
1
+ import{j as i,a0 as n}from"./radix-ui-Zb8sVEtn.js";import"./react-vendor-CNOkPC89.js";import{c as e}from"./index-Du97tqVQ.js";function m({className:t,orientation:a="horizontal",decorative:o=!0,...r}){return i.jsx(n,{"data-slot":"separator",decorative:o,orientation:a,className:e("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",t),...r})}export{m as S};
@@ -1,4 +1,4 @@
1
- import{j as e}from"./radix-ui-Zb8sVEtn.js";import{r as j}from"./react-vendor-CNOkPC89.js";import{a as Q,bc as ee,bd as se,be as te,Q as ae,R as re,U as ne,B as $,b5 as S,b6 as M,b7 as L,d as I,I as le,n as B,c as U,C as ie,b as de}from"./index-BMHPMj0j.js";import{a1 as ce,a7 as oe,a_ as me,T as E,R as T,F as he,ao as ue,v as xe}from"./icons-B9oTjo-t.js";import"./tanstack-DWm6aJ-G.js";import"./notifications-B2HqRBj7.js";import"./utils-CzKF5WmX.js";import"./form-utils-Bcoyqxpq.js";import"./code-highlight-BRUf_pqB.js";function Se(){const{t:s}=Q(),[a,l]=j.useState("commands"),t={commands:s("sharedPage.commands"),skills:s("sharedPage.skills"),agents:s("sharedPage.agents")},[r,d]=j.useState(""),[n,o]=j.useState(null),{data:c,isError:h,error:p,refetch:w}=ee(),{data:m,isLoading:x,isFetching:y,isError:g,error:_,refetch:q}=se(a),N=m?.items??[],C=r.trim().toLowerCase(),b=r.trim(),u=j.useMemo(()=>{const i=m?.items??[];return C?i.filter(v=>[v.name,v.description,v.path].some(Y=>Y.toLowerCase().includes(C))):i},[m,C]),f=j.useMemo(()=>u.length===0?null:n?u.find(i=>i.path===n)??u[0]:u[0],[u,n]),{data:P,isLoading:D,isError:O,error:W,refetch:V}=te(a,f?.path??null),z=[{id:"commands",label:t.commands,icon:ce,count:c?.commands??0},{id:"skills",label:t.skills,icon:oe,count:c?.skills??0},{id:"agents",label:t.agents,icon:me,count:c?.agents??0}],H=z.reduce((i,v)=>i+v.count,0),K=!x&&!g&&N.length===0,Z=!x&&!g&&N.length>0&&u.length===0,G=A(p,"Shared item totals could not be loaded. Listing still works."),J=A(_,`Unable to fetch shared ${a}. Please try again.`),X=A(W,`Unable to load content for ${f?.name??"selected item"}.`);return e.jsxs("div",{className:"h-full overflow-hidden flex flex-col",children:[e.jsxs("div",{className:"p-6 pb-4 space-y-3",children:[e.jsxs("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:s("sharedPage.title")}),e.jsx("p",{className:"text-muted-foreground",children:s("sharedPage.subtitle")})]}),e.jsx(ae,{value:a,onValueChange:i=>{l(i),d(""),o(null)},children:e.jsx(re,{className:"h-auto flex-wrap justify-start",children:z.map(i=>e.jsxs(ne,{value:i.id,className:"flex items-center gap-2",children:[e.jsx(i.icon,{className:"w-4 h-4"}),e.jsx("span",{children:i.label}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",i.count,")"]})]},i.id))})})]}),e.jsxs("div",{className:"flex flex-col gap-2 lg:items-end",children:[e.jsxs("div",{className:"grid w-full gap-2 sm:w-auto sm:min-w-[340px] sm:grid-cols-3",children:[e.jsx(F,{label:s("sharedPage.totalShared"),value:H}),e.jsx(F,{label:t[a],value:N.length}),e.jsx(F,{label:s("sharedPage.visible"),value:u.length})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx($,{variant:"secondary",children:s("sharedPage.markdownDetail")}),b?e.jsxs($,{variant:"outline",children:[s("sharedPage.filterPrefix")," ",b]}):null]})]})]}),c&&!c.symlinkStatus.valid&&e.jsxs(S,{variant:"warning",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsx(M,{children:s("sharedPage.configurationRequired")}),e.jsxs(L,{children:[c.symlinkStatus.message,". Run `ccs sync` to configure."]})]}),h&&e.jsxs(S,{variant:"info",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsx(M,{children:s("sharedPage.countsUnavailable")}),e.jsxs(L,{children:[e.jsx("p",{children:G}),e.jsx("div",{className:"mt-3",children:e.jsxs(I,{size:"sm",variant:"outline",onClick:()=>{w()},children:[e.jsx(T,{className:"w-4 h-4 mr-2"}),s("sharedPage.retryCounts")]})})]})]})]}),e.jsx("div",{className:"flex-1 min-h-0 px-6 pb-6",children:e.jsx("div",{className:"h-full rounded-lg border overflow-hidden bg-background",children:e.jsxs("div",{className:"grid h-full min-h-0 lg:grid-cols-[320px_minmax(0,1fr)]",children:[e.jsxs("div",{className:"min-h-0 border-b lg:border-b-0 lg:border-r flex flex-col bg-muted/30",children:[e.jsxs("div",{className:"p-4 border-b bg-background space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(he,{className:"w-4 h-4 text-primary shrink-0"}),e.jsx("h2",{className:"font-semibold truncate",children:t[a]})]}),!x&&!g&&e.jsxs($,{variant:"outline",className:"text-[10px] h-5",children:[u.length,"/",N.length]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(ue,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(le,{value:r,onChange:i=>d(i.target.value),placeholder:s("sharedPage.filterPlaceholder",{tab:a}),"aria-label":s("sharedPage.filterPlaceholder",{tab:a}),className:"pl-8 h-9"})]}),!x&&!g&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:[s("sharedPage.showing",{visible:u.length,total:N.length,tab:a}),b?s("sharedPage.showingQuery",{query:b}):"",y?s("sharedPage.refreshing"):""]})]}),e.jsx(B,{className:"flex-1 min-h-0",children:x?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("sharedPage.loadingShared",{tab:a})}):g?e.jsx("div",{className:"p-4 text-center",children:e.jsxs("div",{className:"space-y-3 py-8",children:[e.jsx(xe,{className:"w-10 h-10 mx-auto text-destructive/50"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:s("sharedPage.failedLoadShared",{tab:a})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:J})]}),e.jsxs(I,{size:"sm",variant:"outline",onClick:()=>{q()},children:[e.jsx(T,{className:"w-4 h-4 mr-2"}),s("sharedPage.retry")]})]})}):K?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("sharedPage.noSharedFound",{tab:a})}):Z?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("sharedPage.noMatch",{tab:a,query:b})}):e.jsx("div",{className:"p-2 space-y-1",children:u.map(i=>e.jsxs("button",{type:"button",onClick:()=>o(i.path),className:U("w-full text-left p-3 rounded-md border transition-colors",f?.path===i.path?"bg-primary/10 border-primary/30":"bg-background hover:bg-muted border-transparent"),children:[e.jsx("p",{className:"text-sm font-medium truncate",children:i.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-2",children:i.description}),e.jsx("p",{className:"text-[11px] text-muted-foreground/90 mt-2 font-mono truncate",children:i.path})]},`${i.type}:${i.path}`))})})]}),e.jsx("div",{className:"min-w-0 min-h-0 flex flex-col bg-muted/20",children:f?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"px-4 py-3 border-b bg-background",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h2",{className:"text-base font-semibold truncate",children:f.name}),e.jsx($,{variant:"outline",className:"uppercase text-[10px]",children:f.type})]})}),e.jsxs("div",{className:"p-4 space-y-4 min-h-0 flex-1 flex flex-col",children:[e.jsx("div",{className:"rounded-md border bg-muted/35 p-3",children:e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[e.jsx(R,{label:s("sharedPage.pathLabel"),value:f.path,mono:!0}),P?.contentPath&&P.contentPath!==f.path&&e.jsx(R,{label:s("sharedPage.resolvedSource"),value:P.contentPath,mono:!0})]})}),e.jsx(ie,{className:"min-h-0 flex-1",children:e.jsx(de,{className:"p-0 h-full",children:e.jsx(B,{className:"h-full px-5 py-4",children:D?e.jsx("p",{className:"text-sm text-muted-foreground",children:s("sharedPage.loadingMarkdown")}):O?e.jsxs(S,{variant:"destructive",className:"max-w-2xl",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsx(M,{children:s("sharedPage.failedLoadContent")}),e.jsxs(L,{children:[e.jsx("p",{children:X}),e.jsx("div",{className:"mt-3",children:e.jsxs(I,{size:"sm",variant:"outline",onClick:()=>{V()},children:[e.jsx(T,{className:"w-4 h-4 mr-2"}),s("sharedPage.retryContent")]})})]})]}):e.jsx(pe,{content:P?.content??""})})})})]})]}):e.jsx("div",{className:"min-h-[320px] flex items-center justify-center p-6 text-center text-muted-foreground",children:s("sharedPage.selectOne",{tab:a.slice(0,-1)})})})]})})})]})}function F({label:s,value:a}){return e.jsxs("div",{className:"rounded-md border bg-muted/30 px-3 py-2",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:s}),e.jsx("p",{className:"text-lg font-semibold leading-tight mt-1",children:a})]})}function R({label:s,value:a,mono:l=!1}){return e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:s}),e.jsx("p",{className:U("text-xs mt-1 break-words",l?"font-mono":"text-sm"),children:a})]})}function A(s,a){if(!(s instanceof Error))return a;const l=s.message.toLowerCase();return l.includes("failed to fetch")||l.includes("network")?"Connection to dashboard server lost or restarting. Keep `ccs config` running, then retry.":s.message||a}function pe({content:s}){const{t:a}=Q(),l=j.useMemo(()=>fe(s),[s]);return l.blocks.length===0&&l.frontmatter.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:a("sharedPage.noMarkdown")}):e.jsxs("div",{className:"space-y-5",children:[l.frontmatter.length>0?e.jsx("div",{className:"rounded-md border bg-muted/35 p-3",children:e.jsx("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:l.frontmatter.map(t=>e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:ge(t.key)}),e.jsx("p",{className:"text-xs mt-1 break-words",children:t.value})]},`${t.key}:${t.value}`))})}):null,l.blocks.map((t,r)=>{if(t.type==="heading"){const d=t.level<=1?"text-xl font-semibold":t.level===2?"text-lg font-semibold":"text-base font-semibold";return e.jsx("h3",{className:d,children:k(t.text,`heading-${r}`)},`heading-${r}`)}return t.type==="paragraph"?e.jsx("p",{className:"text-sm leading-6 whitespace-pre-wrap",children:k(t.text,`paragraph-${r}`)},`paragraph-${r}`):t.type==="unordered-list"?e.jsx("ul",{className:"list-disc pl-5 space-y-1 text-sm leading-6",children:t.items.map((d,n)=>e.jsx("li",{children:k(d,`ul-item-${r}-${n}`)},`ul-item-${r}-${n}`))},`ul-${r}`):t.type==="ordered-list"?e.jsx("ol",{className:"list-decimal pl-5 space-y-1 text-sm leading-6",children:t.items.map((d,n)=>e.jsx("li",{children:k(d,`ol-item-${r}-${n}`)},`ol-item-${r}-${n}`))},`ol-${r}`):e.jsxs("div",{className:"rounded-md border bg-muted/60 p-3 font-mono text-xs leading-5 overflow-x-auto",children:[t.language&&e.jsx("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground mb-2",children:t.language}),e.jsx("pre",{className:"whitespace-pre-wrap break-words m-0",children:t.content})]},`code-${r}`)})]})}function ge(s){return s.replace(/[-_]/g," ")}function k(s,a){const l=/(\*\*([^*]+)\*\*|`([^`]+)`|\*([^*]+)\*|\[([^\]]+)\]\(([^)]+)\))/g,t=[];let r=0,d=0;for(const n of s.matchAll(l)){const o=n[0],c=n.index??0;if(c>r&&t.push(s.slice(r,c)),n[2])t.push(e.jsx("strong",{className:"font-semibold",children:n[2]},`${a}-strong-${d}`));else if(n[3])t.push(e.jsx("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-[0.82em]",children:n[3]},`${a}-code-${d}`));else if(n[4])t.push(e.jsx("em",{className:"italic",children:n[4]},`${a}-em-${d}`));else if(n[5]&&n[6]){const h=n[6].trim();/^(https?:\/\/|mailto:)/i.test(h)?t.push(e.jsx("a",{href:h,target:"_blank",rel:"noreferrer",className:"text-primary underline underline-offset-2 hover:opacity-90",children:n[5]},`${a}-link-${d}`)):t.push(n[5])}else t.push(o);r=c+o.length,d+=1}return r<s.length&&t.push(s.slice(r)),t.length===0?[s]:t}function fe(s){const a=s.replace(/\r\n/g,`
1
+ import{j as e}from"./radix-ui-Zb8sVEtn.js";import{r as j}from"./react-vendor-CNOkPC89.js";import{a as Q,bi as ee,bj as se,bk as te,Q as ae,R as re,U as ne,B as $,ba as S,bb as M,bc as L,d as I,I as le,n as B,c as U,C as ie,b as de}from"./index-Du97tqVQ.js";import{a3 as ce,aa as oe,b5 as me,T as E,R as T,F as he,au as ue,w as xe}from"./icons-DfENUzBo.js";import"./tanstack-CrmUhA7Z.js";import"./notifications-B2HqRBj7.js";import"./utils-CzKF5WmX.js";import"./form-utils-Bcoyqxpq.js";import"./code-highlight-BRUf_pqB.js";function Se(){const{t:s}=Q(),[a,l]=j.useState("commands"),t={commands:s("sharedPage.commands"),skills:s("sharedPage.skills"),agents:s("sharedPage.agents")},[r,d]=j.useState(""),[n,o]=j.useState(null),{data:c,isError:h,error:p,refetch:w}=ee(),{data:m,isLoading:x,isFetching:y,isError:g,error:q,refetch:D}=se(a),N=m?.items??[],C=r.trim().toLowerCase(),b=r.trim(),u=j.useMemo(()=>{const i=m?.items??[];return C?i.filter(v=>[v.name,v.description,v.path].some(Y=>Y.toLowerCase().includes(C))):i},[m,C]),f=j.useMemo(()=>u.length===0?null:n?u.find(i=>i.path===n)??u[0]:u[0],[u,n]),{data:P,isLoading:O,isError:_,error:W,refetch:V}=te(a,f?.path??null),z=[{id:"commands",label:t.commands,icon:ce,count:c?.commands??0},{id:"skills",label:t.skills,icon:oe,count:c?.skills??0},{id:"agents",label:t.agents,icon:me,count:c?.agents??0}],H=z.reduce((i,v)=>i+v.count,0),K=!x&&!g&&N.length===0,Z=!x&&!g&&N.length>0&&u.length===0,G=A(p,"Shared item totals could not be loaded. Listing still works."),J=A(q,`Unable to fetch shared ${a}. Please try again.`),X=A(W,`Unable to load content for ${f?.name??"selected item"}.`);return e.jsxs("div",{className:"h-full overflow-hidden flex flex-col",children:[e.jsxs("div",{className:"p-6 pb-4 space-y-3",children:[e.jsxs("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:s("sharedPage.title")}),e.jsx("p",{className:"text-muted-foreground",children:s("sharedPage.subtitle")})]}),e.jsx(ae,{value:a,onValueChange:i=>{l(i),d(""),o(null)},children:e.jsx(re,{className:"h-auto flex-wrap justify-start",children:z.map(i=>e.jsxs(ne,{value:i.id,className:"flex items-center gap-2",children:[e.jsx(i.icon,{className:"w-4 h-4"}),e.jsx("span",{children:i.label}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",i.count,")"]})]},i.id))})})]}),e.jsxs("div",{className:"flex flex-col gap-2 lg:items-end",children:[e.jsxs("div",{className:"grid w-full gap-2 sm:w-auto sm:min-w-[340px] sm:grid-cols-3",children:[e.jsx(F,{label:s("sharedPage.totalShared"),value:H}),e.jsx(F,{label:t[a],value:N.length}),e.jsx(F,{label:s("sharedPage.visible"),value:u.length})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx($,{variant:"secondary",children:s("sharedPage.markdownDetail")}),b?e.jsxs($,{variant:"outline",children:[s("sharedPage.filterPrefix")," ",b]}):null]})]})]}),c&&!c.symlinkStatus.valid&&e.jsxs(S,{variant:"warning",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsx(M,{children:s("sharedPage.configurationRequired")}),e.jsxs(L,{children:[c.symlinkStatus.message,". Run `ccs sync` to configure."]})]}),h&&e.jsxs(S,{variant:"info",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsx(M,{children:s("sharedPage.countsUnavailable")}),e.jsxs(L,{children:[e.jsx("p",{children:G}),e.jsx("div",{className:"mt-3",children:e.jsxs(I,{size:"sm",variant:"outline",onClick:()=>{w()},children:[e.jsx(T,{className:"w-4 h-4 mr-2"}),s("sharedPage.retryCounts")]})})]})]})]}),e.jsx("div",{className:"flex-1 min-h-0 px-6 pb-6",children:e.jsx("div",{className:"h-full rounded-lg border overflow-hidden bg-background",children:e.jsxs("div",{className:"grid h-full min-h-0 lg:grid-cols-[320px_minmax(0,1fr)]",children:[e.jsxs("div",{className:"min-h-0 border-b lg:border-b-0 lg:border-r flex flex-col bg-muted/30",children:[e.jsxs("div",{className:"p-4 border-b bg-background space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(he,{className:"w-4 h-4 text-primary shrink-0"}),e.jsx("h2",{className:"font-semibold truncate",children:t[a]})]}),!x&&!g&&e.jsxs($,{variant:"outline",className:"text-[10px] h-5",children:[u.length,"/",N.length]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(ue,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(le,{value:r,onChange:i=>d(i.target.value),placeholder:s("sharedPage.filterPlaceholder",{tab:a}),"aria-label":s("sharedPage.filterPlaceholder",{tab:a}),className:"pl-8 h-9"})]}),!x&&!g&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:[s("sharedPage.showing",{visible:u.length,total:N.length,tab:a}),b?s("sharedPage.showingQuery",{query:b}):"",y?s("sharedPage.refreshing"):""]})]}),e.jsx(B,{className:"flex-1 min-h-0",children:x?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("sharedPage.loadingShared",{tab:a})}):g?e.jsx("div",{className:"p-4 text-center",children:e.jsxs("div",{className:"space-y-3 py-8",children:[e.jsx(xe,{className:"w-10 h-10 mx-auto text-destructive/50"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:s("sharedPage.failedLoadShared",{tab:a})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:J})]}),e.jsxs(I,{size:"sm",variant:"outline",onClick:()=>{D()},children:[e.jsx(T,{className:"w-4 h-4 mr-2"}),s("sharedPage.retry")]})]})}):K?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("sharedPage.noSharedFound",{tab:a})}):Z?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("sharedPage.noMatch",{tab:a,query:b})}):e.jsx("div",{className:"p-2 space-y-1",children:u.map(i=>e.jsxs("button",{type:"button",onClick:()=>o(i.path),className:U("w-full text-left p-3 rounded-md border transition-colors",f?.path===i.path?"bg-primary/10 border-primary/30":"bg-background hover:bg-muted border-transparent"),children:[e.jsx("p",{className:"text-sm font-medium truncate",children:i.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-2",children:i.description}),e.jsx("p",{className:"text-[11px] text-muted-foreground/90 mt-2 font-mono truncate",children:i.path})]},`${i.type}:${i.path}`))})})]}),e.jsx("div",{className:"min-w-0 min-h-0 flex flex-col bg-muted/20",children:f?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"px-4 py-3 border-b bg-background",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h2",{className:"text-base font-semibold truncate",children:f.name}),e.jsx($,{variant:"outline",className:"uppercase text-[10px]",children:f.type})]})}),e.jsxs("div",{className:"p-4 space-y-4 min-h-0 flex-1 flex flex-col",children:[e.jsx("div",{className:"rounded-md border bg-muted/35 p-3",children:e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[e.jsx(R,{label:s("sharedPage.pathLabel"),value:f.path,mono:!0}),P?.contentPath&&P.contentPath!==f.path&&e.jsx(R,{label:s("sharedPage.resolvedSource"),value:P.contentPath,mono:!0})]})}),e.jsx(ie,{className:"min-h-0 flex-1",children:e.jsx(de,{className:"p-0 h-full",children:e.jsx(B,{className:"h-full px-5 py-4",children:O?e.jsx("p",{className:"text-sm text-muted-foreground",children:s("sharedPage.loadingMarkdown")}):_?e.jsxs(S,{variant:"destructive",className:"max-w-2xl",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsx(M,{children:s("sharedPage.failedLoadContent")}),e.jsxs(L,{children:[e.jsx("p",{children:X}),e.jsx("div",{className:"mt-3",children:e.jsxs(I,{size:"sm",variant:"outline",onClick:()=>{V()},children:[e.jsx(T,{className:"w-4 h-4 mr-2"}),s("sharedPage.retryContent")]})})]})]}):e.jsx(pe,{content:P?.content??""})})})})]})]}):e.jsx("div",{className:"min-h-[320px] flex items-center justify-center p-6 text-center text-muted-foreground",children:s("sharedPage.selectOne",{tab:a.slice(0,-1)})})})]})})})]})}function F({label:s,value:a}){return e.jsxs("div",{className:"rounded-md border bg-muted/30 px-3 py-2",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:s}),e.jsx("p",{className:"text-lg font-semibold leading-tight mt-1",children:a})]})}function R({label:s,value:a,mono:l=!1}){return e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:s}),e.jsx("p",{className:U("text-xs mt-1 break-words",l?"font-mono":"text-sm"),children:a})]})}function A(s,a){if(!(s instanceof Error))return a;const l=s.message.toLowerCase();return l.includes("failed to fetch")||l.includes("network")?"Connection to dashboard server lost or restarting. Keep `ccs config` running, then retry.":s.message||a}function pe({content:s}){const{t:a}=Q(),l=j.useMemo(()=>fe(s),[s]);return l.blocks.length===0&&l.frontmatter.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:a("sharedPage.noMarkdown")}):e.jsxs("div",{className:"space-y-5",children:[l.frontmatter.length>0?e.jsx("div",{className:"rounded-md border bg-muted/35 p-3",children:e.jsx("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:l.frontmatter.map(t=>e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:ge(t.key)}),e.jsx("p",{className:"text-xs mt-1 break-words",children:t.value})]},`${t.key}:${t.value}`))})}):null,l.blocks.map((t,r)=>{if(t.type==="heading"){const d=t.level<=1?"text-xl font-semibold":t.level===2?"text-lg font-semibold":"text-base font-semibold";return e.jsx("h3",{className:d,children:k(t.text,`heading-${r}`)},`heading-${r}`)}return t.type==="paragraph"?e.jsx("p",{className:"text-sm leading-6 whitespace-pre-wrap",children:k(t.text,`paragraph-${r}`)},`paragraph-${r}`):t.type==="unordered-list"?e.jsx("ul",{className:"list-disc pl-5 space-y-1 text-sm leading-6",children:t.items.map((d,n)=>e.jsx("li",{children:k(d,`ul-item-${r}-${n}`)},`ul-item-${r}-${n}`))},`ul-${r}`):t.type==="ordered-list"?e.jsx("ol",{className:"list-decimal pl-5 space-y-1 text-sm leading-6",children:t.items.map((d,n)=>e.jsx("li",{children:k(d,`ol-item-${r}-${n}`)},`ol-item-${r}-${n}`))},`ol-${r}`):e.jsxs("div",{className:"rounded-md border bg-muted/60 p-3 font-mono text-xs leading-5 overflow-x-auto",children:[t.language&&e.jsx("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground mb-2",children:t.language}),e.jsx("pre",{className:"whitespace-pre-wrap break-words m-0",children:t.content})]},`code-${r}`)})]})}function ge(s){return s.replace(/[-_]/g," ")}function k(s,a){const l=/(\*\*([^*]+)\*\*|`([^`]+)`|\*([^*]+)\*|\[([^\]]+)\]\(([^)]+)\))/g,t=[];let r=0,d=0;for(const n of s.matchAll(l)){const o=n[0],c=n.index??0;if(c>r&&t.push(s.slice(r,c)),n[2])t.push(e.jsx("strong",{className:"font-semibold",children:n[2]},`${a}-strong-${d}`));else if(n[3])t.push(e.jsx("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-[0.82em]",children:n[3]},`${a}-code-${d}`));else if(n[4])t.push(e.jsx("em",{className:"italic",children:n[4]},`${a}-em-${d}`));else if(n[5]&&n[6]){const h=n[6].trim();/^(https?:\/\/|mailto:)/i.test(h)?t.push(e.jsx("a",{href:h,target:"_blank",rel:"noreferrer",className:"text-primary underline underline-offset-2 hover:opacity-90",children:n[5]},`${a}-link-${d}`)):t.push(n[5])}else t.push(o);r=c+o.length,d+=1}return r<s.length&&t.push(s.slice(r)),t.length===0?[s]:t}function fe(s){const a=s.replace(/\r\n/g,`
2
2
  `).trim();if(!a)return{blocks:[],frontmatter:[]};let l=a;const t=[];if(l.startsWith(`---
3
3
  `)){const r=l.indexOf(`
4
4
  ---
@@ -1 +1 @@
1
- import{j as t}from"./radix-ui-Zb8sVEtn.js";import"./react-vendor-CNOkPC89.js";import{c as l}from"./index-BMHPMj0j.js";function n({className:a,...e}){return t.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:t.jsx("table",{"data-slot":"table",className:l("w-full caption-bottom text-sm",a),...e})})}function c({className:a,...e}){return t.jsx("thead",{"data-slot":"table-header",className:l("[&_tr]:border-b",a),...e})}function d({className:a,...e}){return t.jsx("tbody",{"data-slot":"table-body",className:l("[&_tr:last-child]:border-0",a),...e})}function b({className:a,...e}){return t.jsx("tr",{"data-slot":"table-row",className:l("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",a),...e})}function i({className:a,...e}){return t.jsx("th",{"data-slot":"table-head",className:l("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...e})}function m({className:a,...e}){return t.jsx("td",{"data-slot":"table-cell",className:l("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...e})}export{n as T,c as a,b,i as c,d,m as e};
1
+ import{j as t}from"./radix-ui-Zb8sVEtn.js";import"./react-vendor-CNOkPC89.js";import{c as l}from"./index-Du97tqVQ.js";function n({className:a,...e}){return t.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:t.jsx("table",{"data-slot":"table",className:l("w-full caption-bottom text-sm",a),...e})})}function c({className:a,...e}){return t.jsx("thead",{"data-slot":"table-header",className:l("[&_tr]:border-b",a),...e})}function d({className:a,...e}){return t.jsx("tbody",{"data-slot":"table-body",className:l("[&_tr:last-child]:border-0",a),...e})}function b({className:a,...e}){return t.jsx("tr",{"data-slot":"table-row",className:l("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",a),...e})}function i({className:a,...e}){return t.jsx("th",{"data-slot":"table-head",className:l("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...e})}function m({className:a,...e}){return t.jsx("td",{"data-slot":"table-cell",className:l("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...e})}export{n as T,c as a,b,i as c,d,m as e};