adonisjs-server-stats 1.5.4 → 1.6.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 (527) hide show
  1. package/README.md +351 -171
  2. package/dist/configure.d.ts.map +1 -1
  3. package/dist/core/api-client.d.ts +73 -0
  4. package/dist/core/api-client.d.ts.map +1 -0
  5. package/dist/core/config-utils.d.ts +109 -0
  6. package/dist/core/config-utils.d.ts.map +1 -0
  7. package/dist/core/constants.d.ts +11 -0
  8. package/dist/core/constants.d.ts.map +1 -0
  9. package/dist/core/dashboard-api.d.ts +65 -0
  10. package/dist/core/dashboard-api.d.ts.map +1 -0
  11. package/dist/core/dashboard-data-controller.d.ts +157 -0
  12. package/dist/core/dashboard-data-controller.d.ts.map +1 -0
  13. package/dist/core/debug-data-controller.d.ts +89 -0
  14. package/dist/core/debug-data-controller.d.ts.map +1 -0
  15. package/dist/core/feature-detect.d.ts +67 -0
  16. package/dist/core/feature-detect.d.ts.map +1 -0
  17. package/dist/core/formatters.d.ts +189 -0
  18. package/dist/core/formatters.d.ts.map +1 -0
  19. package/dist/core/history-buffer.d.ts +23 -0
  20. package/dist/core/history-buffer.d.ts.map +1 -0
  21. package/dist/core/icons.d.ts +36 -0
  22. package/dist/core/icons.d.ts.map +1 -0
  23. package/dist/core/index.d.ts +39 -0
  24. package/dist/core/index.d.ts.map +1 -0
  25. package/dist/core/index.js +1961 -0
  26. package/dist/core/internals-utils.d.ts +71 -0
  27. package/dist/core/internals-utils.d.ts.map +1 -0
  28. package/dist/core/job-utils.d.ts +45 -0
  29. package/dist/core/job-utils.d.ts.map +1 -0
  30. package/dist/core/log-utils.d.ts +34 -0
  31. package/dist/core/log-utils.d.ts.map +1 -0
  32. package/dist/core/metrics.d.ts +41 -0
  33. package/dist/core/metrics.d.ts.map +1 -0
  34. package/dist/core/pagination.d.ts +128 -0
  35. package/dist/core/pagination.d.ts.map +1 -0
  36. package/dist/core/query-utils.d.ts +35 -0
  37. package/dist/core/query-utils.d.ts.map +1 -0
  38. package/dist/core/resizable-columns.d.ts +18 -0
  39. package/dist/core/resizable-columns.d.ts.map +1 -0
  40. package/dist/core/routes.d.ts +12 -0
  41. package/dist/core/routes.d.ts.map +1 -0
  42. package/dist/core/server-stats-controller.d.ts +106 -0
  43. package/dist/core/server-stats-controller.d.ts.map +1 -0
  44. package/dist/core/sparkline.d.ts +80 -0
  45. package/dist/core/sparkline.d.ts.map +1 -0
  46. package/dist/core/theme.d.ts +42 -0
  47. package/dist/core/theme.d.ts.map +1 -0
  48. package/dist/core/trace-utils.d.ts +62 -0
  49. package/dist/core/trace-utils.d.ts.map +1 -0
  50. package/dist/core/transmit-adapter.d.ts +59 -0
  51. package/dist/core/transmit-adapter.d.ts.map +1 -0
  52. package/dist/core/types.d.ts +619 -0
  53. package/dist/core/types.d.ts.map +1 -0
  54. package/dist/react/CacheSection-DGxMDlWK.js +146 -0
  55. package/dist/react/CacheTab-CnVW5PLs.js +123 -0
  56. package/dist/react/ConfigContent-CnsEI4j3.js +397 -0
  57. package/dist/react/ConfigSection-DPcrfqXY.js +11 -0
  58. package/dist/react/ConfigTab-BSWq_o2p.js +15 -0
  59. package/dist/react/CustomPaneTab-xjkYwTvH.js +104 -0
  60. package/dist/react/DataTable-YyShr5B-.js +55 -0
  61. package/dist/react/EmailsSection-CSyTg1aX.js +262 -0
  62. package/dist/react/EmailsTab-Dh2YSa_f.js +131 -0
  63. package/dist/react/EventsSection-C1pbJDfW.js +86 -0
  64. package/dist/react/EventsTab-eCh02cdd.js +63 -0
  65. package/dist/react/FilterBar-DQRXpWrb.js +50 -0
  66. package/dist/react/InternalsContent-DBzsI0CG.js +346 -0
  67. package/dist/react/InternalsSection-t7ihcWO-.js +32 -0
  68. package/dist/react/InternalsTab-Oij0A2fN.js +30 -0
  69. package/dist/react/JobsSection-CLAin5vU.js +187 -0
  70. package/dist/react/JobsTab-Dl5nrj2z.js +141 -0
  71. package/dist/react/LogsSection-C1p81fXO.js +212 -0
  72. package/dist/react/LogsTab-D-kR7PjX.js +88 -0
  73. package/dist/react/OverviewSection-nm3xdACz.js +539 -0
  74. package/dist/react/Pagination-BkmzUDY8.js +64 -0
  75. package/dist/react/QueriesSection-DB12HMfQ.js +461 -0
  76. package/dist/react/QueriesTab-fyBB1u_Y.js +90 -0
  77. package/dist/react/RequestsSection-DTqB81ac.js +209 -0
  78. package/dist/react/RoutesSection-DJWa4NPV.js +74 -0
  79. package/dist/react/RoutesTab-D3l8TOpu.js +74 -0
  80. package/dist/react/TimelineSection-C4d-jRX1.js +158 -0
  81. package/dist/react/TimelineTab-C5TFaSmQ.js +193 -0
  82. package/dist/react/WaterfallChart-Cj73WdfM.js +100 -0
  83. package/dist/react/core/api-client.d.ts +73 -0
  84. package/dist/react/core/api-client.d.ts.map +1 -0
  85. package/dist/react/core/config-utils.d.ts +109 -0
  86. package/dist/react/core/config-utils.d.ts.map +1 -0
  87. package/dist/react/core/constants.d.ts +11 -0
  88. package/dist/react/core/constants.d.ts.map +1 -0
  89. package/dist/react/core/dashboard-api.d.ts +65 -0
  90. package/dist/react/core/dashboard-api.d.ts.map +1 -0
  91. package/dist/react/core/dashboard-data-controller.d.ts +157 -0
  92. package/dist/react/core/dashboard-data-controller.d.ts.map +1 -0
  93. package/dist/react/core/debug-data-controller.d.ts +89 -0
  94. package/dist/react/core/debug-data-controller.d.ts.map +1 -0
  95. package/dist/react/core/feature-detect.d.ts +67 -0
  96. package/dist/react/core/feature-detect.d.ts.map +1 -0
  97. package/dist/react/core/formatters.d.ts +189 -0
  98. package/dist/react/core/formatters.d.ts.map +1 -0
  99. package/dist/react/core/history-buffer.d.ts +23 -0
  100. package/dist/react/core/history-buffer.d.ts.map +1 -0
  101. package/dist/react/core/icons.d.ts +36 -0
  102. package/dist/react/core/icons.d.ts.map +1 -0
  103. package/dist/react/core/index.d.ts +39 -0
  104. package/dist/react/core/index.d.ts.map +1 -0
  105. package/dist/react/core/internals-utils.d.ts +71 -0
  106. package/dist/react/core/internals-utils.d.ts.map +1 -0
  107. package/dist/react/core/job-utils.d.ts +45 -0
  108. package/dist/react/core/job-utils.d.ts.map +1 -0
  109. package/dist/react/core/log-utils.d.ts +34 -0
  110. package/dist/react/core/log-utils.d.ts.map +1 -0
  111. package/dist/react/core/metrics.d.ts +41 -0
  112. package/dist/react/core/metrics.d.ts.map +1 -0
  113. package/dist/react/core/pagination.d.ts +128 -0
  114. package/dist/react/core/pagination.d.ts.map +1 -0
  115. package/dist/react/core/query-utils.d.ts +35 -0
  116. package/dist/react/core/query-utils.d.ts.map +1 -0
  117. package/dist/react/core/resizable-columns.d.ts +18 -0
  118. package/dist/react/core/resizable-columns.d.ts.map +1 -0
  119. package/dist/react/core/routes.d.ts +12 -0
  120. package/dist/react/core/routes.d.ts.map +1 -0
  121. package/dist/react/core/server-stats-controller.d.ts +106 -0
  122. package/dist/react/core/server-stats-controller.d.ts.map +1 -0
  123. package/dist/react/core/sparkline.d.ts +80 -0
  124. package/dist/react/core/sparkline.d.ts.map +1 -0
  125. package/dist/react/core/theme.d.ts +42 -0
  126. package/dist/react/core/theme.d.ts.map +1 -0
  127. package/dist/react/core/trace-utils.d.ts +62 -0
  128. package/dist/react/core/trace-utils.d.ts.map +1 -0
  129. package/dist/react/core/transmit-adapter.d.ts +59 -0
  130. package/dist/react/core/transmit-adapter.d.ts.map +1 -0
  131. package/dist/react/core/types.d.ts +619 -0
  132. package/dist/react/core/types.d.ts.map +1 -0
  133. package/dist/react/index-UdTfSvtO.js +1074 -0
  134. package/dist/react/index.js +18 -0
  135. package/dist/react/react/components/Dashboard/DashboardPage.d.ts +17 -0
  136. package/dist/react/react/components/Dashboard/DashboardPage.d.ts.map +1 -0
  137. package/dist/react/react/components/Dashboard/sections/CacheSection.d.ts +7 -0
  138. package/dist/react/react/components/Dashboard/sections/CacheSection.d.ts.map +1 -0
  139. package/dist/react/react/components/Dashboard/sections/ConfigSection.d.ts +7 -0
  140. package/dist/react/react/components/Dashboard/sections/ConfigSection.d.ts.map +1 -0
  141. package/dist/react/react/components/Dashboard/sections/EmailsSection.d.ts +7 -0
  142. package/dist/react/react/components/Dashboard/sections/EmailsSection.d.ts.map +1 -0
  143. package/dist/react/react/components/Dashboard/sections/EventsSection.d.ts +7 -0
  144. package/dist/react/react/components/Dashboard/sections/EventsSection.d.ts.map +1 -0
  145. package/dist/react/react/components/Dashboard/sections/InternalsSection.d.ts +14 -0
  146. package/dist/react/react/components/Dashboard/sections/InternalsSection.d.ts.map +1 -0
  147. package/dist/react/react/components/Dashboard/sections/JobsSection.d.ts +7 -0
  148. package/dist/react/react/components/Dashboard/sections/JobsSection.d.ts.map +1 -0
  149. package/dist/react/react/components/Dashboard/sections/LogsSection.d.ts +7 -0
  150. package/dist/react/react/components/Dashboard/sections/LogsSection.d.ts.map +1 -0
  151. package/dist/react/react/components/Dashboard/sections/OverviewSection.d.ts +7 -0
  152. package/dist/react/react/components/Dashboard/sections/OverviewSection.d.ts.map +1 -0
  153. package/dist/react/react/components/Dashboard/sections/QueriesSection.d.ts +7 -0
  154. package/dist/react/react/components/Dashboard/sections/QueriesSection.d.ts.map +1 -0
  155. package/dist/react/react/components/Dashboard/sections/RequestsSection.d.ts +7 -0
  156. package/dist/react/react/components/Dashboard/sections/RequestsSection.d.ts.map +1 -0
  157. package/dist/react/react/components/Dashboard/sections/RoutesSection.d.ts +7 -0
  158. package/dist/react/react/components/Dashboard/sections/RoutesSection.d.ts.map +1 -0
  159. package/dist/react/react/components/Dashboard/sections/TimelineSection.d.ts +9 -0
  160. package/dist/react/react/components/Dashboard/sections/TimelineSection.d.ts.map +1 -0
  161. package/dist/react/react/components/Dashboard/shared/DataTable.d.ts +27 -0
  162. package/dist/react/react/components/Dashboard/shared/DataTable.d.ts.map +1 -0
  163. package/dist/react/react/components/Dashboard/shared/FilterBar.d.ts +17 -0
  164. package/dist/react/react/components/Dashboard/shared/FilterBar.d.ts.map +1 -0
  165. package/dist/react/react/components/Dashboard/shared/Pagination.d.ts +13 -0
  166. package/dist/react/react/components/Dashboard/shared/Pagination.d.ts.map +1 -0
  167. package/dist/react/react/components/Dashboard/shared/TimeRangeSelector.d.ts +12 -0
  168. package/dist/react/react/components/Dashboard/shared/TimeRangeSelector.d.ts.map +1 -0
  169. package/dist/react/react/components/Dashboard/shared/WaterfallChart.d.ts +16 -0
  170. package/dist/react/react/components/Dashboard/shared/WaterfallChart.d.ts.map +1 -0
  171. package/dist/react/react/components/DebugPanel/DebugPanel.d.ts +16 -0
  172. package/dist/react/react/components/DebugPanel/DebugPanel.d.ts.map +1 -0
  173. package/dist/react/react/components/DebugPanel/tabs/CacheTab.d.ts +8 -0
  174. package/dist/react/react/components/DebugPanel/tabs/CacheTab.d.ts.map +1 -0
  175. package/dist/react/react/components/DebugPanel/tabs/ConfigTab.d.ts +8 -0
  176. package/dist/react/react/components/DebugPanel/tabs/ConfigTab.d.ts.map +1 -0
  177. package/dist/react/react/components/DebugPanel/tabs/CustomPaneTab.d.ts +14 -0
  178. package/dist/react/react/components/DebugPanel/tabs/CustomPaneTab.d.ts.map +1 -0
  179. package/dist/react/react/components/DebugPanel/tabs/EmailsTab.d.ts +7 -0
  180. package/dist/react/react/components/DebugPanel/tabs/EmailsTab.d.ts.map +1 -0
  181. package/dist/react/react/components/DebugPanel/tabs/EventsTab.d.ts +7 -0
  182. package/dist/react/react/components/DebugPanel/tabs/EventsTab.d.ts.map +1 -0
  183. package/dist/react/react/components/DebugPanel/tabs/InternalsTab.d.ts +12 -0
  184. package/dist/react/react/components/DebugPanel/tabs/InternalsTab.d.ts.map +1 -0
  185. package/dist/react/react/components/DebugPanel/tabs/JobsTab.d.ts +9 -0
  186. package/dist/react/react/components/DebugPanel/tabs/JobsTab.d.ts.map +1 -0
  187. package/dist/react/react/components/DebugPanel/tabs/LogsTab.d.ts +7 -0
  188. package/dist/react/react/components/DebugPanel/tabs/LogsTab.d.ts.map +1 -0
  189. package/dist/react/react/components/DebugPanel/tabs/QueriesTab.d.ts +7 -0
  190. package/dist/react/react/components/DebugPanel/tabs/QueriesTab.d.ts.map +1 -0
  191. package/dist/react/react/components/DebugPanel/tabs/RoutesTab.d.ts +8 -0
  192. package/dist/react/react/components/DebugPanel/tabs/RoutesTab.d.ts.map +1 -0
  193. package/dist/react/react/components/DebugPanel/tabs/TimelineTab.d.ts +7 -0
  194. package/dist/react/react/components/DebugPanel/tabs/TimelineTab.d.ts.map +1 -0
  195. package/dist/react/react/components/StatsBar/MetricCard.d.ts +21 -0
  196. package/dist/react/react/components/StatsBar/MetricCard.d.ts.map +1 -0
  197. package/dist/react/react/components/StatsBar/Sparkline.d.ts +15 -0
  198. package/dist/react/react/components/StatsBar/Sparkline.d.ts.map +1 -0
  199. package/dist/react/react/components/StatsBar/StatsBar.d.ts +22 -0
  200. package/dist/react/react/components/StatsBar/StatsBar.d.ts.map +1 -0
  201. package/dist/react/react/components/shared/Badge.d.ts +32 -0
  202. package/dist/react/react/components/shared/Badge.d.ts.map +1 -0
  203. package/dist/react/react/components/shared/ConfigContent.d.ts +13 -0
  204. package/dist/react/react/components/shared/ConfigContent.d.ts.map +1 -0
  205. package/dist/react/react/components/shared/InternalsContent.d.ts +10 -0
  206. package/dist/react/react/components/shared/InternalsContent.d.ts.map +1 -0
  207. package/dist/react/react/components/shared/JsonViewer.d.ts +12 -0
  208. package/dist/react/react/components/shared/JsonViewer.d.ts.map +1 -0
  209. package/dist/react/react/components/shared/ThemeToggle.d.ts +13 -0
  210. package/dist/react/react/components/shared/ThemeToggle.d.ts.map +1 -0
  211. package/dist/react/react/components/shared/Tooltip.d.ts +16 -0
  212. package/dist/react/react/components/shared/Tooltip.d.ts.map +1 -0
  213. package/dist/react/react/hooks/useApiClient.d.ts +10 -0
  214. package/dist/react/react/hooks/useApiClient.d.ts.map +1 -0
  215. package/dist/react/react/hooks/useDashboardApiBase.d.ts +19 -0
  216. package/dist/react/react/hooks/useDashboardApiBase.d.ts.map +1 -0
  217. package/dist/react/react/hooks/useDashboardData.d.ts +27 -0
  218. package/dist/react/react/hooks/useDashboardData.d.ts.map +1 -0
  219. package/dist/react/react/hooks/useDebugData.d.ts +17 -0
  220. package/dist/react/react/hooks/useDebugData.d.ts.map +1 -0
  221. package/dist/react/react/hooks/useFeatures.d.ts +13 -0
  222. package/dist/react/react/hooks/useFeatures.d.ts.map +1 -0
  223. package/dist/react/react/hooks/useResizableTable.d.ts +13 -0
  224. package/dist/react/react/hooks/useResizableTable.d.ts.map +1 -0
  225. package/dist/react/react/hooks/useServerStats.d.ts +21 -0
  226. package/dist/react/react/hooks/useServerStats.d.ts.map +1 -0
  227. package/dist/react/react/hooks/useTheme.d.ts +12 -0
  228. package/dist/react/react/hooks/useTheme.d.ts.map +1 -0
  229. package/dist/react/react/index.d.ts +14 -0
  230. package/dist/react/react/index.d.ts.map +1 -0
  231. package/dist/react/style.css +1 -0
  232. package/dist/react/useApiClient-BVtNCmnL.js +9 -0
  233. package/dist/react/useDashboardApiBase-Bi36pJ2L.js +14 -0
  234. package/dist/react/useResizableTable-CNJmACdt.js +13 -0
  235. package/dist/src/collectors/app_collector.d.ts.map +1 -1
  236. package/dist/src/collectors/app_collector.js +30 -2
  237. package/dist/src/collectors/auto_detect.d.ts +31 -0
  238. package/dist/src/collectors/auto_detect.d.ts.map +1 -0
  239. package/dist/src/collectors/auto_detect.js +120 -0
  240. package/dist/src/collectors/collector.d.ts +17 -0
  241. package/dist/src/collectors/collector.d.ts.map +1 -1
  242. package/dist/src/collectors/db_pool_collector.d.ts.map +1 -1
  243. package/dist/src/collectors/db_pool_collector.js +35 -1
  244. package/dist/src/collectors/http_collector.d.ts +4 -3
  245. package/dist/src/collectors/http_collector.d.ts.map +1 -1
  246. package/dist/src/collectors/http_collector.js +28 -11
  247. package/dist/src/collectors/index.d.ts +2 -0
  248. package/dist/src/collectors/index.d.ts.map +1 -1
  249. package/dist/src/collectors/index.js +1 -0
  250. package/dist/src/collectors/log_collector.d.ts +11 -4
  251. package/dist/src/collectors/log_collector.d.ts.map +1 -1
  252. package/dist/src/collectors/log_collector.js +51 -5
  253. package/dist/src/collectors/process_collector.d.ts.map +1 -1
  254. package/dist/src/collectors/process_collector.js +4 -0
  255. package/dist/src/collectors/queue_collector.d.ts.map +1 -1
  256. package/dist/src/collectors/queue_collector.js +55 -1
  257. package/dist/src/collectors/redis_collector.d.ts.map +1 -1
  258. package/dist/src/collectors/redis_collector.js +42 -3
  259. package/dist/src/collectors/system_collector.d.ts.map +1 -1
  260. package/dist/src/collectors/system_collector.js +4 -0
  261. package/dist/src/controller/api_controller.d.ts +101 -0
  262. package/dist/src/controller/api_controller.d.ts.map +1 -0
  263. package/dist/src/controller/api_controller.js +131 -0
  264. package/dist/src/controller/debug_controller.d.ts +19 -10
  265. package/dist/src/controller/debug_controller.d.ts.map +1 -1
  266. package/dist/src/controller/debug_controller.js +118 -101
  267. package/dist/src/core/theme.d.ts +42 -0
  268. package/dist/src/core/theme.d.ts.map +1 -0
  269. package/dist/src/core/theme.js +115 -0
  270. package/dist/src/dashboard/chart_aggregator.d.ts.map +1 -1
  271. package/dist/src/dashboard/chart_aggregator.js +3 -2
  272. package/dist/src/dashboard/dashboard_controller.d.ts +10 -14
  273. package/dist/src/dashboard/dashboard_controller.d.ts.map +1 -1
  274. package/dist/src/dashboard/dashboard_controller.js +132 -250
  275. package/dist/src/dashboard/dashboard_store.d.ts +62 -19
  276. package/dist/src/dashboard/dashboard_store.d.ts.map +1 -1
  277. package/dist/src/dashboard/dashboard_store.js +242 -53
  278. package/dist/src/dashboard/integrations/cache_inspector.d.ts +19 -1
  279. package/dist/src/dashboard/integrations/cache_inspector.d.ts.map +1 -1
  280. package/dist/src/dashboard/integrations/config_inspector.d.ts +1 -1
  281. package/dist/src/dashboard/integrations/config_inspector.d.ts.map +1 -1
  282. package/dist/src/dashboard/integrations/config_inspector.js +3 -2
  283. package/dist/src/dashboard/integrations/queue_inspector.d.ts +55 -10
  284. package/dist/src/dashboard/integrations/queue_inspector.d.ts.map +1 -1
  285. package/dist/src/dashboard/integrations/queue_inspector.js +70 -24
  286. package/dist/src/dashboard/migrator.d.ts +5 -0
  287. package/dist/src/dashboard/migrator.d.ts.map +1 -1
  288. package/dist/src/dashboard/migrator.js +44 -9
  289. package/dist/src/dashboard/models/stats_event.d.ts +1 -1
  290. package/dist/src/dashboard/models/stats_event.d.ts.map +1 -1
  291. package/dist/src/dashboard/models/stats_log.d.ts +1 -1
  292. package/dist/src/dashboard/models/stats_log.d.ts.map +1 -1
  293. package/dist/src/dashboard/models/stats_query.d.ts +1 -1
  294. package/dist/src/dashboard/models/stats_query.d.ts.map +1 -1
  295. package/dist/src/dashboard/models/stats_saved_filter.d.ts +1 -1
  296. package/dist/src/dashboard/models/stats_saved_filter.d.ts.map +1 -1
  297. package/dist/src/dashboard/models/stats_trace.d.ts +2 -1
  298. package/dist/src/dashboard/models/stats_trace.d.ts.map +1 -1
  299. package/dist/src/data/data_access.d.ts +105 -0
  300. package/dist/src/data/data_access.d.ts.map +1 -0
  301. package/dist/src/data/data_access.js +310 -0
  302. package/dist/src/data/index.d.ts +3 -0
  303. package/dist/src/data/index.d.ts.map +1 -0
  304. package/dist/src/data/index.js +1 -0
  305. package/dist/src/debug/debug_store.d.ts +20 -1
  306. package/dist/src/debug/debug_store.d.ts.map +1 -1
  307. package/dist/src/debug/debug_store.js +43 -15
  308. package/dist/src/debug/email_collector.d.ts +6 -2
  309. package/dist/src/debug/email_collector.d.ts.map +1 -1
  310. package/dist/src/debug/email_collector.js +3 -0
  311. package/dist/src/debug/event_collector.d.ts +6 -2
  312. package/dist/src/debug/event_collector.d.ts.map +1 -1
  313. package/dist/src/debug/event_collector.js +12 -8
  314. package/dist/src/debug/query_collector.d.ts +6 -2
  315. package/dist/src/debug/query_collector.d.ts.map +1 -1
  316. package/dist/src/debug/query_collector.js +3 -0
  317. package/dist/src/debug/ring_buffer.d.ts +1 -0
  318. package/dist/src/debug/ring_buffer.d.ts.map +1 -1
  319. package/dist/src/debug/ring_buffer.js +5 -2
  320. package/dist/src/debug/route_inspector.d.ts +2 -2
  321. package/dist/src/debug/route_inspector.d.ts.map +1 -1
  322. package/dist/src/debug/route_inspector.js +4 -3
  323. package/dist/src/debug/trace_collector.d.ts +7 -3
  324. package/dist/src/debug/trace_collector.d.ts.map +1 -1
  325. package/dist/src/debug/trace_collector.js +7 -5
  326. package/dist/src/debug/types.d.ts +107 -2
  327. package/dist/src/debug/types.d.ts.map +1 -1
  328. package/dist/src/debug/types.js +1 -1
  329. package/dist/src/define_config.d.ts +49 -5
  330. package/dist/src/define_config.d.ts.map +1 -1
  331. package/dist/src/define_config.js +361 -4
  332. package/dist/src/edge/bootstrap.d.ts +17 -0
  333. package/dist/src/edge/bootstrap.d.ts.map +1 -0
  334. package/dist/src/edge/bootstrap.js +29 -0
  335. package/dist/src/edge/client/dashboard.js +2 -3619
  336. package/dist/src/edge/client/debug-panel-deferred.js +1 -0
  337. package/dist/src/edge/client/debug-panel.js +1 -2140
  338. package/dist/src/edge/client/stats-bar.js +1 -801
  339. package/dist/src/edge/client-vue/dashboard.js +5 -0
  340. package/dist/src/edge/client-vue/debug-panel-deferred.js +4 -0
  341. package/dist/src/edge/client-vue/debug-panel.js +4 -0
  342. package/dist/src/edge/client-vue/stats-bar.js +4 -0
  343. package/dist/src/edge/plugin.d.ts +35 -2
  344. package/dist/src/edge/plugin.d.ts.map +1 -1
  345. package/dist/src/edge/plugin.js +30 -66
  346. package/dist/src/edge/types.d.ts +46 -0
  347. package/dist/src/edge/types.d.ts.map +1 -0
  348. package/dist/src/edge/types.js +4 -0
  349. package/dist/src/edge/views/dashboard.edge +1 -358
  350. package/dist/src/edge/views/debug-panel.edge +2 -154
  351. package/dist/src/edge/views/stats-bar.edge +15 -48
  352. package/dist/src/engine/stats_engine.d.ts +18 -0
  353. package/dist/src/engine/stats_engine.d.ts.map +1 -1
  354. package/dist/src/engine/stats_engine.js +45 -2
  355. package/dist/src/index.d.ts +1 -1
  356. package/dist/src/index.d.ts.map +1 -1
  357. package/dist/src/log_stream/log_stream_provider.d.ts.map +1 -1
  358. package/dist/src/log_stream/log_stream_provider.js +21 -4
  359. package/dist/src/log_stream/log_stream_service.d.ts +8 -1
  360. package/dist/src/log_stream/log_stream_service.d.ts.map +1 -1
  361. package/dist/src/log_stream/log_stream_service.js +27 -3
  362. package/dist/src/middleware/request_tracking_middleware.d.ts +1 -1
  363. package/dist/src/middleware/request_tracking_middleware.d.ts.map +1 -1
  364. package/dist/src/middleware/request_tracking_middleware.js +21 -6
  365. package/dist/src/prometheus/prometheus_collector.d.ts +2 -1
  366. package/dist/src/prometheus/prometheus_collector.d.ts.map +1 -1
  367. package/dist/src/provider/server_stats_provider.d.ts +100 -0
  368. package/dist/src/provider/server_stats_provider.d.ts.map +1 -1
  369. package/dist/src/provider/server_stats_provider.js +460 -104
  370. package/dist/src/routes/access_middleware.d.ts +2 -1
  371. package/dist/src/routes/access_middleware.d.ts.map +1 -1
  372. package/dist/src/routes/access_middleware.js +7 -1
  373. package/dist/src/routes/index.d.ts +4 -0
  374. package/dist/src/routes/index.d.ts.map +1 -0
  375. package/dist/src/routes/index.js +1 -0
  376. package/dist/src/routes/register_routes.d.ts +103 -0
  377. package/dist/src/routes/register_routes.d.ts.map +1 -0
  378. package/dist/src/routes/register_routes.js +356 -0
  379. package/dist/src/routes/router_types.d.ts +29 -0
  380. package/dist/src/routes/router_types.d.ts.map +1 -0
  381. package/dist/src/routes/router_types.js +1 -0
  382. package/dist/src/stubs/config.stub +12 -32
  383. package/dist/src/styles/components.css +1048 -0
  384. package/dist/src/{edge/client → styles}/dashboard.css +299 -736
  385. package/dist/src/{edge/client → styles}/debug-panel.css +117 -633
  386. package/dist/src/{edge/client → styles}/stats-bar.css +28 -10
  387. package/dist/src/styles/tokens.css +153 -0
  388. package/dist/src/styles/utilities.css +75 -0
  389. package/dist/src/types.d.ts +119 -16
  390. package/dist/src/types.d.ts.map +1 -1
  391. package/dist/src/utils/app_import.d.ts +23 -0
  392. package/dist/src/utils/app_import.d.ts.map +1 -0
  393. package/dist/src/utils/app_import.js +44 -0
  394. package/dist/src/utils/json_helpers.d.ts +2 -2
  395. package/dist/src/utils/json_helpers.d.ts.map +1 -1
  396. package/dist/src/utils/logger.d.ts +17 -0
  397. package/dist/src/utils/logger.d.ts.map +1 -0
  398. package/dist/src/utils/logger.js +27 -0
  399. package/dist/src/utils/mail_helpers.d.ts +1 -1
  400. package/dist/src/utils/mail_helpers.d.ts.map +1 -1
  401. package/dist/src/utils/mail_helpers.js +1 -1
  402. package/dist/vue/CacheSection-C788Yfai.js +149 -0
  403. package/dist/vue/CacheTab-BPisYYiQ.js +104 -0
  404. package/dist/vue/ConfigSection-CRzYxqW2.js +576 -0
  405. package/dist/vue/ConfigTab-C8cafGUj.js +361 -0
  406. package/dist/vue/CustomPaneTab-BJxT5Dp7.js +172 -0
  407. package/dist/vue/EmailsSection-C8JFMtW7.js +206 -0
  408. package/dist/vue/EmailsTab-DhFhoNmU.js +157 -0
  409. package/dist/vue/EventsSection-C4wXUgxG.js +107 -0
  410. package/dist/vue/EventsTab-DQ4Nd6AK.js +97 -0
  411. package/dist/vue/FilterBar.vue_vue_type_script_setup_true_lang-ClJ37hhT.js +62 -0
  412. package/dist/vue/InternalsSection-BJUXE-5F.js +468 -0
  413. package/dist/vue/InternalsTab-DEMjqtlw.js +471 -0
  414. package/dist/vue/JobsSection-CsKWTjgN.js +187 -0
  415. package/dist/vue/JobsTab-BCvhOARO.js +117 -0
  416. package/dist/vue/JsonViewer.vue_vue_type_script_setup_true_lang-Vsqar1zx.js +67 -0
  417. package/dist/vue/LogsSection-BFVjSZ24.js +227 -0
  418. package/dist/vue/LogsTab-DpEQ7euu.js +122 -0
  419. package/dist/vue/OverviewSection-CbMdAido.js +849 -0
  420. package/dist/vue/PaginationControls.vue_vue_type_script_setup_true_lang-CuN7g_8Z.js +50 -0
  421. package/dist/vue/QueriesSection-BPiv7u3r.js +429 -0
  422. package/dist/vue/QueriesTab-C8_7oprC.js +107 -0
  423. package/dist/vue/RequestsSection-LtImH4rD.js +243 -0
  424. package/dist/vue/RoutesSection-CrxOxmzx.js +106 -0
  425. package/dist/vue/RoutesTab-Dz0MkZuF.js +80 -0
  426. package/dist/vue/TimelineSection-DLxMW2J_.js +186 -0
  427. package/dist/vue/TimelineTab-Db6lKKsD.js +250 -0
  428. package/dist/vue/WaterfallChart.vue_vue_type_script_setup_true_lang-tZ13cNj1.js +118 -0
  429. package/dist/vue/components/Dashboard/DashboardPage.vue.d.ts +18 -0
  430. package/dist/vue/components/Dashboard/DashboardPage.vue.d.ts.map +1 -0
  431. package/dist/vue/components/Dashboard/sections/CacheSection.vue.d.ts +5 -0
  432. package/dist/vue/components/Dashboard/sections/CacheSection.vue.d.ts.map +1 -0
  433. package/dist/vue/components/Dashboard/sections/ConfigSection.vue.d.ts +3 -0
  434. package/dist/vue/components/Dashboard/sections/ConfigSection.vue.d.ts.map +1 -0
  435. package/dist/vue/components/Dashboard/sections/EmailsSection.vue.d.ts +5 -0
  436. package/dist/vue/components/Dashboard/sections/EmailsSection.vue.d.ts.map +1 -0
  437. package/dist/vue/components/Dashboard/sections/EventsSection.vue.d.ts +5 -0
  438. package/dist/vue/components/Dashboard/sections/EventsSection.vue.d.ts.map +1 -0
  439. package/dist/vue/components/Dashboard/sections/InternalsSection.vue.d.ts +3 -0
  440. package/dist/vue/components/Dashboard/sections/InternalsSection.vue.d.ts.map +1 -0
  441. package/dist/vue/components/Dashboard/sections/JobsSection.vue.d.ts +5 -0
  442. package/dist/vue/components/Dashboard/sections/JobsSection.vue.d.ts.map +1 -0
  443. package/dist/vue/components/Dashboard/sections/LogsSection.vue.d.ts +3 -0
  444. package/dist/vue/components/Dashboard/sections/LogsSection.vue.d.ts.map +1 -0
  445. package/dist/vue/components/Dashboard/sections/OverviewSection.vue.d.ts +5 -0
  446. package/dist/vue/components/Dashboard/sections/OverviewSection.vue.d.ts.map +1 -0
  447. package/dist/vue/components/Dashboard/sections/QueriesSection.vue.d.ts +45 -0
  448. package/dist/vue/components/Dashboard/sections/QueriesSection.vue.d.ts.map +1 -0
  449. package/dist/vue/components/Dashboard/sections/RequestsSection.vue.d.ts +5 -0
  450. package/dist/vue/components/Dashboard/sections/RequestsSection.vue.d.ts.map +1 -0
  451. package/dist/vue/components/Dashboard/sections/RoutesSection.vue.d.ts +5 -0
  452. package/dist/vue/components/Dashboard/sections/RoutesSection.vue.d.ts.map +1 -0
  453. package/dist/vue/components/Dashboard/sections/TimelineSection.vue.d.ts +11 -0
  454. package/dist/vue/components/Dashboard/sections/TimelineSection.vue.d.ts.map +1 -0
  455. package/dist/vue/components/Dashboard/shared/FilterBar.vue.d.ts +29 -0
  456. package/dist/vue/components/Dashboard/shared/FilterBar.vue.d.ts.map +1 -0
  457. package/dist/vue/components/Dashboard/shared/PaginationControls.vue.d.ts +12 -0
  458. package/dist/vue/components/Dashboard/shared/PaginationControls.vue.d.ts.map +1 -0
  459. package/dist/vue/components/Dashboard/shared/TimeRangeSelector.vue.d.ts +11 -0
  460. package/dist/vue/components/Dashboard/shared/TimeRangeSelector.vue.d.ts.map +1 -0
  461. package/dist/vue/components/Dashboard/shared/WaterfallChart.vue.d.ts +10 -0
  462. package/dist/vue/components/Dashboard/shared/WaterfallChart.vue.d.ts.map +1 -0
  463. package/dist/vue/components/DebugPanel/DebugPanel.vue.d.ts +21 -0
  464. package/dist/vue/components/DebugPanel/DebugPanel.vue.d.ts.map +1 -0
  465. package/dist/vue/components/DebugPanel/tabs/CacheTab.vue.d.ts +12 -0
  466. package/dist/vue/components/DebugPanel/tabs/CacheTab.vue.d.ts.map +1 -0
  467. package/dist/vue/components/DebugPanel/tabs/ConfigTab.vue.d.ts +11 -0
  468. package/dist/vue/components/DebugPanel/tabs/ConfigTab.vue.d.ts.map +1 -0
  469. package/dist/vue/components/DebugPanel/tabs/CustomPaneTab.vue.d.ts +11 -0
  470. package/dist/vue/components/DebugPanel/tabs/CustomPaneTab.vue.d.ts.map +1 -0
  471. package/dist/vue/components/DebugPanel/tabs/EmailsTab.vue.d.ts +12 -0
  472. package/dist/vue/components/DebugPanel/tabs/EmailsTab.vue.d.ts.map +1 -0
  473. package/dist/vue/components/DebugPanel/tabs/EventsTab.vue.d.ts +12 -0
  474. package/dist/vue/components/DebugPanel/tabs/EventsTab.vue.d.ts.map +1 -0
  475. package/dist/vue/components/DebugPanel/tabs/InternalsTab.vue.d.ts +11 -0
  476. package/dist/vue/components/DebugPanel/tabs/InternalsTab.vue.d.ts.map +1 -0
  477. package/dist/vue/components/DebugPanel/tabs/JobsTab.vue.d.ts +13 -0
  478. package/dist/vue/components/DebugPanel/tabs/JobsTab.vue.d.ts.map +1 -0
  479. package/dist/vue/components/DebugPanel/tabs/LogsTab.vue.d.ts +15 -0
  480. package/dist/vue/components/DebugPanel/tabs/LogsTab.vue.d.ts.map +1 -0
  481. package/dist/vue/components/DebugPanel/tabs/QueriesTab.vue.d.ts +12 -0
  482. package/dist/vue/components/DebugPanel/tabs/QueriesTab.vue.d.ts.map +1 -0
  483. package/dist/vue/components/DebugPanel/tabs/RoutesTab.vue.d.ts +12 -0
  484. package/dist/vue/components/DebugPanel/tabs/RoutesTab.vue.d.ts.map +1 -0
  485. package/dist/vue/components/DebugPanel/tabs/TimelineTab.vue.d.ts +15 -0
  486. package/dist/vue/components/DebugPanel/tabs/TimelineTab.vue.d.ts.map +1 -0
  487. package/dist/vue/components/StatsBar/MetricCard.vue.d.ts +19 -0
  488. package/dist/vue/components/StatsBar/MetricCard.vue.d.ts.map +1 -0
  489. package/dist/vue/components/StatsBar/Sparkline.vue.d.ts +17 -0
  490. package/dist/vue/components/StatsBar/Sparkline.vue.d.ts.map +1 -0
  491. package/dist/vue/components/StatsBar/StatsBar.vue.d.ts +22 -0
  492. package/dist/vue/components/StatsBar/StatsBar.vue.d.ts.map +1 -0
  493. package/dist/vue/components/shared/JsonViewer.vue.d.ts +13 -0
  494. package/dist/vue/components/shared/JsonViewer.vue.d.ts.map +1 -0
  495. package/dist/vue/components/shared/ThemeToggle.vue.d.ts +8 -0
  496. package/dist/vue/components/shared/ThemeToggle.vue.d.ts.map +1 -0
  497. package/dist/vue/composables/useApiClient.d.ts +9 -0
  498. package/dist/vue/composables/useApiClient.d.ts.map +1 -0
  499. package/dist/vue/composables/useDashboardData.d.ts +53 -0
  500. package/dist/vue/composables/useDashboardData.d.ts.map +1 -0
  501. package/dist/vue/composables/useDebugData.d.ts +25 -0
  502. package/dist/vue/composables/useDebugData.d.ts.map +1 -0
  503. package/dist/vue/composables/useFeatures.d.ts +80 -0
  504. package/dist/vue/composables/useFeatures.d.ts.map +1 -0
  505. package/dist/vue/composables/useResizableTable.d.ts +16 -0
  506. package/dist/vue/composables/useResizableTable.d.ts.map +1 -0
  507. package/dist/vue/composables/useServerStats.d.ts +104 -0
  508. package/dist/vue/composables/useServerStats.d.ts.map +1 -0
  509. package/dist/vue/composables/useTheme.d.ts +6 -0
  510. package/dist/vue/composables/useTheme.d.ts.map +1 -0
  511. package/dist/vue/index-qCQpBftQ.js +1233 -0
  512. package/dist/vue/index.d.ts +10 -0
  513. package/dist/vue/index.d.ts.map +1 -0
  514. package/dist/vue/index.js +11 -0
  515. package/dist/vue/style.css +1 -0
  516. package/dist/vue/useApiClient-BQQ9CF-q.js +10 -0
  517. package/dist/vue/useResizableTable-BoivAevK.js +17 -0
  518. package/package.json +72 -10
  519. package/dist/src/dashboard/dashboard_routes.d.ts +0 -16
  520. package/dist/src/dashboard/dashboard_routes.d.ts.map +0 -1
  521. package/dist/src/dashboard/dashboard_routes.js +0 -77
  522. package/dist/src/routes/debug_routes.d.ts +0 -14
  523. package/dist/src/routes/debug_routes.d.ts.map +0 -1
  524. package/dist/src/routes/debug_routes.js +0 -42
  525. package/dist/src/routes/stats_routes.d.ts +0 -14
  526. package/dist/src/routes/stats_routes.d.ts.map +0 -1
  527. package/dist/src/routes/stats_routes.js +0 -27
@@ -0,0 +1,1048 @@
1
+ /* Shared component styles for adonisjs-server-stats.
2
+ * Contains styles that are identical across dashboard and debug panel.
3
+ * Uses neutral `.ss-` prefix with backward-compatible aliases for
4
+ * `.ss-dash-` and `.ss-dbg-` prefixes.
5
+ *
6
+ * Loaded AFTER tokens.css, BEFORE dashboard.css / debug-panel.css.
7
+ */
8
+
9
+ /* ── Badge ────────────────────────────────────────────────────── */
10
+ .ss-badge-block,
11
+ .ss-dash-badge,
12
+ .ss-dbg-badge {
13
+ display: inline-block;
14
+ padding: 1px 6px;
15
+ border-radius: 3px;
16
+ font-size: 10px;
17
+ font-weight: 600;
18
+ text-transform: uppercase;
19
+ }
20
+ .ss-badge-green,
21
+ .ss-dash-badge-green,
22
+ .ss-dbg-badge-green {
23
+ background: var(--ss-green-bg);
24
+ color: var(--ss-green-fg);
25
+ }
26
+ .ss-badge-amber,
27
+ .ss-dash-badge-amber,
28
+ .ss-dbg-badge-amber {
29
+ background: var(--ss-amber-bg);
30
+ color: var(--ss-amber-fg);
31
+ }
32
+ .ss-badge-red,
33
+ .ss-dash-badge-red,
34
+ .ss-dbg-badge-red {
35
+ background: var(--ss-red-bg);
36
+ color: var(--ss-red-fg);
37
+ }
38
+ .ss-badge-blue,
39
+ .ss-dash-badge-blue,
40
+ .ss-dbg-badge-blue {
41
+ background: var(--ss-blue-bg);
42
+ color: var(--ss-blue-fg);
43
+ }
44
+ .ss-badge-purple,
45
+ .ss-dash-badge-purple,
46
+ .ss-dbg-badge-purple {
47
+ background: var(--ss-purple-bg);
48
+ color: var(--ss-purple-fg);
49
+ }
50
+ /* Badge muted — dashboard and debug differ slightly in background,
51
+ * so each keeps its own override. This is the debug-panel version. */
52
+ .ss-badge-muted,
53
+ .ss-dbg-badge-muted {
54
+ background: var(--ss-border-dim);
55
+ color: var(--ss-muted);
56
+ }
57
+
58
+ /* ── Status code badges ───────────────────────────────────────── */
59
+ .ss-status,
60
+ .ss-dash-status,
61
+ .ss-dbg-status {
62
+ font-size: 10px;
63
+ font-weight: 600;
64
+ padding: 1px 5px;
65
+ border-radius: 3px;
66
+ }
67
+ .ss-status-2xx,
68
+ .ss-dash-status-2xx,
69
+ .ss-dbg-status-2xx {
70
+ background: var(--ss-green-bg);
71
+ color: var(--ss-green-fg);
72
+ }
73
+ .ss-status-3xx,
74
+ .ss-dash-status-3xx,
75
+ .ss-dbg-status-3xx {
76
+ background: var(--ss-blue-bg);
77
+ color: var(--ss-blue-fg);
78
+ }
79
+ .ss-status-4xx,
80
+ .ss-dash-status-4xx,
81
+ .ss-dbg-status-4xx {
82
+ background: var(--ss-amber-bg);
83
+ color: var(--ss-amber-fg);
84
+ }
85
+ .ss-status-5xx,
86
+ .ss-dash-status-5xx,
87
+ .ss-dbg-status-5xx {
88
+ background: var(--ss-red-bg);
89
+ color: var(--ss-red-fg);
90
+ }
91
+
92
+ /* ── Empty state ──────────────────────────────────────────────── */
93
+ .ss-empty,
94
+ .ss-dash-empty,
95
+ .ss-dbg-empty {
96
+ display: flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ height: 100%;
100
+ min-height: 120px;
101
+ color: var(--ss-dim);
102
+ font-size: 12px;
103
+ }
104
+
105
+ /* ── Info cards ───────────────────────────────────────────────── */
106
+ .ss-info-cards,
107
+ .ss-dash-info-cards,
108
+ .ss-dbg-info-cards {
109
+ display: flex;
110
+ gap: 8px;
111
+ flex-wrap: wrap;
112
+ }
113
+ .ss-info-card,
114
+ .ss-dash-info-card,
115
+ .ss-dbg-info-card {
116
+ display: flex;
117
+ flex-direction: column;
118
+ gap: 2px;
119
+ padding: 8px 12px;
120
+ background: var(--ss-surface-alt);
121
+ border-radius: 6px;
122
+ min-width: 0;
123
+ flex: 1 1 0;
124
+ }
125
+ .ss-info-card-label,
126
+ .ss-dash-info-card-label,
127
+ .ss-dbg-info-card-label {
128
+ font-size: 10px;
129
+ color: var(--ss-muted);
130
+ text-transform: uppercase;
131
+ letter-spacing: 0.04em;
132
+ }
133
+ .ss-info-card-value,
134
+ .ss-dash-info-card-value,
135
+ .ss-dbg-info-card-value {
136
+ font-size: 13px;
137
+ font-weight: 500;
138
+ color: var(--ss-text);
139
+ overflow: hidden;
140
+ text-overflow: ellipsis;
141
+ white-space: nowrap;
142
+ }
143
+
144
+ /* ── Progress bar ─────────────────────────────────────────────── */
145
+ .ss-progress,
146
+ .ss-dash-bar,
147
+ .ss-dbg-bar {
148
+ display: flex;
149
+ align-items: center;
150
+ gap: 8px;
151
+ }
152
+ .ss-progress-track,
153
+ .ss-dash-bar-track,
154
+ .ss-dbg-bar-track {
155
+ flex: 1;
156
+ height: 8px;
157
+ background: var(--ss-border);
158
+ border-radius: 4px;
159
+ overflow: hidden;
160
+ }
161
+ .ss-progress-fill,
162
+ .ss-dash-bar-fill,
163
+ .ss-dbg-bar-fill {
164
+ height: 100%;
165
+ border-radius: 4px;
166
+ background: var(--ss-blue-fg);
167
+ transition: width 0.3s;
168
+ }
169
+ .ss-progress-fill-warn,
170
+ .ss-dash-bar-fill-warn,
171
+ .ss-dbg-bar-fill-warn {
172
+ background: var(--ss-amber-fg);
173
+ }
174
+ .ss-progress-pct,
175
+ .ss-dash-bar-pct,
176
+ .ss-dbg-bar-pct {
177
+ font-size: 11px;
178
+ min-width: 36px;
179
+ text-align: right;
180
+ color: var(--ss-dim);
181
+ }
182
+ .ss-progress-pct-warn,
183
+ .ss-dash-bar-pct-warn,
184
+ .ss-dbg-bar-pct-warn {
185
+ color: var(--ss-amber-fg);
186
+ }
187
+
188
+ /* ── Status indicator dot ─────────────────────────────────────── */
189
+ .ss-indicator-dot,
190
+ .ss-dash-dot,
191
+ .ss-dbg-dot {
192
+ display: inline-block;
193
+ width: 8px;
194
+ height: 8px;
195
+ border-radius: 50%;
196
+ margin-right: 6px;
197
+ vertical-align: middle;
198
+ background: var(--ss-dim);
199
+ }
200
+ .ss-indicator-dot-ok,
201
+ .ss-dash-dot-ok,
202
+ .ss-dbg-dot-ok {
203
+ background: var(--ss-green-fg);
204
+ }
205
+ .ss-indicator-dot-err,
206
+ .ss-dash-dot-err,
207
+ .ss-dbg-dot-err {
208
+ background: var(--ss-red-fg);
209
+ }
210
+
211
+ /* ── Duration classes ─────────────────────────────────────────── */
212
+ .ss-duration,
213
+ .ss-dash-duration,
214
+ .ss-dbg-duration {
215
+ font-variant-numeric: tabular-nums;
216
+ color: var(--ss-text);
217
+ }
218
+ .ss-slow,
219
+ .ss-dash-slow,
220
+ .ss-dbg-slow {
221
+ color: var(--ss-amber-fg);
222
+ }
223
+ .ss-very-slow,
224
+ .ss-dash-very-slow,
225
+ .ss-dbg-very-slow {
226
+ color: var(--ss-red-fg);
227
+ }
228
+
229
+ /* ── Copy button ──────────────────────────────────────────────── */
230
+ .ss-copy-btn,
231
+ .ss-dash-copy-btn,
232
+ .ss-dbg-copy-btn {
233
+ margin-left: 6px;
234
+ padding: 1px 5px;
235
+ font-size: 11px;
236
+ color: var(--ss-dim);
237
+ background: none;
238
+ border: 1px solid transparent;
239
+ border-radius: 3px;
240
+ cursor: pointer;
241
+ vertical-align: middle;
242
+ }
243
+ .ss-copy-btn:hover,
244
+ .ss-dash-copy-btn:hover,
245
+ .ss-dbg-copy-btn:hover {
246
+ color: var(--ss-text-secondary);
247
+ border-color: var(--ss-border-strong);
248
+ }
249
+
250
+ /* ── Utility color classes ────────────────────────────────────── */
251
+ .ss-c-dim,
252
+ .ss-dash-c-dim,
253
+ .ss-dbg-c-dim {
254
+ color: var(--ss-dim);
255
+ }
256
+ .ss-c-muted,
257
+ .ss-dash-c-muted,
258
+ .ss-dbg-c-muted {
259
+ color: var(--ss-muted);
260
+ }
261
+ .ss-c-secondary,
262
+ .ss-dash-c-secondary,
263
+ .ss-dbg-c-secondary {
264
+ color: var(--ss-text-secondary);
265
+ }
266
+ .ss-c-text,
267
+ .ss-dash-c-text,
268
+ .ss-dbg-c-text {
269
+ color: var(--ss-text);
270
+ }
271
+ .ss-c-sql,
272
+ .ss-dash-c-sql,
273
+ .ss-dbg-c-sql {
274
+ color: var(--ss-sql-color);
275
+ }
276
+ .ss-c-amber,
277
+ .ss-dash-c-amber,
278
+ .ss-dbg-c-amber {
279
+ color: var(--ss-amber-fg);
280
+ }
281
+ .ss-c-red,
282
+ .ss-dash-c-red,
283
+ .ss-dbg-c-red {
284
+ color: var(--ss-red-fg);
285
+ }
286
+ .ss-c-green,
287
+ .ss-dash-c-green,
288
+ .ss-dbg-c-green {
289
+ color: var(--ss-green-fg);
290
+ }
291
+ .ss-c-blue,
292
+ .ss-dash-c-blue,
293
+ .ss-dbg-c-blue {
294
+ color: var(--ss-blue-fg);
295
+ }
296
+ .ss-c-purple,
297
+ .ss-dash-c-purple,
298
+ .ss-dbg-c-purple {
299
+ color: var(--ss-purple-fg);
300
+ }
301
+ .ss-c-accent,
302
+ .ss-dash-c-accent,
303
+ .ss-dbg-c-accent {
304
+ color: var(--ss-accent);
305
+ }
306
+ .ss-c-border,
307
+ .ss-dash-c-border,
308
+ .ss-dbg-c-border {
309
+ color: var(--ss-border);
310
+ }
311
+
312
+ /* ═══════════════════════════════════════════════════════════════
313
+ * Phase 4: Full Component Unification
314
+ * ═══════════════════════════════════════════════════════════════ */
315
+
316
+ /* ── 1. Tables ───────────────────────────────────────────────── */
317
+ /* Base table: debug uses 10px cell padding, dashboard uses 12px.
318
+ * Override via --ss-table-cell-px / --ss-table-cell-py on a wrapper. */
319
+ .ss-table,
320
+ .ss-dash-table,
321
+ .ss-dbg-table {
322
+ width: 100%;
323
+ border-collapse: collapse;
324
+ font-size: 11px;
325
+ table-layout: fixed;
326
+ }
327
+ .ss-table th,
328
+ .ss-dash-table th,
329
+ .ss-dbg-table th {
330
+ position: sticky;
331
+ top: 0;
332
+ padding: var(--ss-table-cell-py, 6px) var(--ss-table-cell-px, 10px);
333
+ text-align: left;
334
+ font-weight: 600;
335
+ font-size: 10px;
336
+ text-transform: uppercase;
337
+ letter-spacing: 0.05em;
338
+ color: var(--ss-muted);
339
+ background: var(--ss-surface);
340
+ border-bottom: 1px solid var(--ss-border);
341
+ white-space: nowrap;
342
+ }
343
+ .ss-table td,
344
+ .ss-dash-table td,
345
+ .ss-dbg-table td {
346
+ padding: var(--ss-table-td-py, 5px) var(--ss-table-cell-px, 10px);
347
+ border-bottom: 1px solid var(--ss-border-faint);
348
+ vertical-align: top;
349
+ overflow: hidden;
350
+ text-overflow: ellipsis;
351
+ white-space: nowrap;
352
+ color: var(--ss-text);
353
+ }
354
+ .ss-table tr:hover td,
355
+ .ss-dash-table tr:hover td,
356
+ .ss-dbg-table tr:hover td {
357
+ background: var(--ss-hover);
358
+ }
359
+
360
+ /* Column resize handles (shared between dashboard & debug) */
361
+ .ss-col-resize {
362
+ position: absolute;
363
+ right: 0;
364
+ top: 0;
365
+ width: 5px;
366
+ height: 100%;
367
+ cursor: col-resize;
368
+ user-select: none;
369
+ z-index: 3;
370
+ background: var(--ss-border-faint);
371
+ opacity: 0;
372
+ transition: opacity 0.15s;
373
+ }
374
+ .ss-table th:hover .ss-col-resize,
375
+ .ss-dash-table th:hover .ss-col-resize,
376
+ .ss-dbg-table th:hover .ss-col-resize {
377
+ opacity: 0.6;
378
+ }
379
+ .ss-col-resize:hover,
380
+ .ss-col-resize.ss-resizing {
381
+ background: var(--ss-accent, #6d28d9);
382
+ opacity: 0.8;
383
+ }
384
+
385
+ /* ── 2. Method badges ────────────────────────────────────────── */
386
+ .ss-method,
387
+ .ss-dash-method,
388
+ .ss-dbg-method {
389
+ display: inline-block;
390
+ padding: 1px 5px;
391
+ border-radius: 3px;
392
+ font-size: 10px;
393
+ font-weight: 600;
394
+ letter-spacing: 0.03em;
395
+ text-transform: uppercase;
396
+ }
397
+ .ss-method-get,
398
+ .ss-dash-method-get,
399
+ .ss-dbg-method-get {
400
+ background: var(--ss-green-bg);
401
+ color: var(--ss-green-fg);
402
+ }
403
+ .ss-method-post,
404
+ .ss-dash-method-post,
405
+ .ss-dbg-method-post {
406
+ background: var(--ss-blue-bg);
407
+ color: var(--ss-blue-fg);
408
+ }
409
+ .ss-method-put,
410
+ .ss-method-patch,
411
+ .ss-dash-method-put,
412
+ .ss-dash-method-patch,
413
+ .ss-dbg-method-put,
414
+ .ss-dbg-method-patch {
415
+ background: var(--ss-amber-bg);
416
+ color: var(--ss-amber-fg);
417
+ }
418
+ .ss-method-delete,
419
+ .ss-dash-method-delete,
420
+ .ss-dbg-method-delete {
421
+ background: var(--ss-red-bg);
422
+ color: var(--ss-red-fg);
423
+ }
424
+
425
+ /* ── 3. Log system ───────────────────────────────────────────── */
426
+ /* Log entry row: dashboard uses 16px horizontal padding, debug uses 12px.
427
+ * Dashboard uses border-faint, debug uses input-bg for separator.
428
+ * Override via --ss-log-px and --ss-log-border. */
429
+ .ss-log-entry,
430
+ .ss-dash-log-entry,
431
+ .ss-dbg-log-entry {
432
+ padding: 4px var(--ss-log-px, 12px);
433
+ font-size: 11px;
434
+ border-bottom: 1px solid var(--ss-log-border, var(--ss-input-bg));
435
+ display: flex;
436
+ gap: 8px;
437
+ align-items: baseline;
438
+ }
439
+ .ss-log-level,
440
+ .ss-dash-log-level,
441
+ .ss-dbg-log-level {
442
+ font-size: 10px;
443
+ font-weight: 600;
444
+ width: 42px;
445
+ text-align: center;
446
+ flex-shrink: 0;
447
+ padding: 1px 0;
448
+ border-radius: 3px;
449
+ }
450
+ .ss-log-level-info,
451
+ .ss-dash-log-level-info,
452
+ .ss-dbg-log-level-info {
453
+ background: var(--ss-green-bg);
454
+ color: var(--ss-green-fg);
455
+ }
456
+ .ss-log-level-warn,
457
+ .ss-dash-log-level-warn,
458
+ .ss-dbg-log-level-warn {
459
+ background: var(--ss-amber-bg);
460
+ color: var(--ss-amber-fg);
461
+ }
462
+ .ss-log-level-error,
463
+ .ss-log-level-fatal,
464
+ .ss-dash-log-level-error,
465
+ .ss-dash-log-level-fatal,
466
+ .ss-dbg-log-level-error,
467
+ .ss-dbg-log-level-fatal {
468
+ background: var(--ss-red-bg);
469
+ color: var(--ss-red-fg);
470
+ }
471
+ .ss-log-level-debug,
472
+ .ss-dash-log-level-debug,
473
+ .ss-dbg-log-level-debug {
474
+ background: var(--ss-log-debug-bg, var(--ss-surface-alt));
475
+ color: var(--ss-muted);
476
+ }
477
+ .ss-log-level-trace,
478
+ .ss-dash-log-level-trace,
479
+ .ss-dbg-log-level-trace {
480
+ background: var(--ss-log-trace-bg, var(--ss-surface-alt));
481
+ color: var(--ss-dim);
482
+ }
483
+ .ss-log-time,
484
+ .ss-dash-log-time,
485
+ .ss-dbg-log-time {
486
+ color: var(--ss-dim);
487
+ font-size: 10px;
488
+ font-variant-numeric: tabular-nums;
489
+ flex-shrink: 0;
490
+ }
491
+ .ss-log-reqid,
492
+ .ss-dash-log-reqid,
493
+ .ss-dbg-log-reqid {
494
+ font-size: 10px;
495
+ color: var(--ss-reqid-fg);
496
+ background: var(--ss-reqid-bg);
497
+ padding: 1px 5px;
498
+ border-radius: 3px;
499
+ cursor: pointer;
500
+ flex-shrink: 0;
501
+ letter-spacing: 0.02em;
502
+ }
503
+ .ss-log-reqid:hover,
504
+ .ss-dash-log-reqid:hover,
505
+ .ss-dbg-log-reqid:hover {
506
+ color: var(--ss-reqid-hover-fg);
507
+ background: var(--ss-reqid-hover-bg);
508
+ }
509
+ .ss-log-reqid-empty,
510
+ .ss-dash-log-reqid-empty,
511
+ .ss-dbg-log-reqid-empty {
512
+ font-size: 10px;
513
+ color: var(--ss-border);
514
+ flex-shrink: 0;
515
+ width: 58px;
516
+ text-align: center;
517
+ }
518
+ .ss-log-msg,
519
+ .ss-dash-log-msg,
520
+ .ss-dbg-log-msg {
521
+ color: var(--ss-text);
522
+ word-break: break-word;
523
+ }
524
+
525
+ /* ── 4. Email preview ────────────────────────────────────────── */
526
+ /* Dashboard uses 16px padding, debug uses 12px — override via
527
+ * --ss-email-px on a wrapper. */
528
+ .ss-email-preview,
529
+ .ss-dash-email-preview,
530
+ .ss-dbg-email-preview {
531
+ position: absolute;
532
+ inset: 0;
533
+ display: flex;
534
+ flex-direction: column;
535
+ background: var(--ss-bg);
536
+ z-index: 30;
537
+ }
538
+ .ss-email-preview-header,
539
+ .ss-dash-email-preview-header,
540
+ .ss-dbg-email-preview-header {
541
+ display: flex;
542
+ align-items: flex-start;
543
+ justify-content: space-between;
544
+ gap: 12px;
545
+ padding: 10px var(--ss-email-px, 12px);
546
+ border-bottom: 1px solid var(--ss-border-dim);
547
+ background: var(--ss-surface-alt);
548
+ flex-shrink: 0;
549
+ }
550
+ .ss-email-preview-meta,
551
+ .ss-dash-email-preview-meta,
552
+ .ss-dbg-email-preview-meta {
553
+ font-size: 11px;
554
+ color: var(--ss-text-secondary);
555
+ line-height: 1.6;
556
+ overflow: hidden;
557
+ }
558
+ .ss-email-preview-meta strong,
559
+ .ss-dash-email-preview-meta strong,
560
+ .ss-dbg-email-preview-meta strong {
561
+ color: var(--ss-text);
562
+ font-weight: 600;
563
+ }
564
+ .ss-email-iframe,
565
+ .ss-dash-email-iframe,
566
+ .ss-dbg-email-iframe {
567
+ flex: 1;
568
+ border: none;
569
+ background: #fff;
570
+ }
571
+ /* Email row */
572
+ .ss-email-row,
573
+ .ss-dash-email-row,
574
+ .ss-dbg-email-row {
575
+ cursor: pointer;
576
+ }
577
+ .ss-email-row:hover td,
578
+ .ss-dash-email-row:hover td,
579
+ .ss-dbg-email-row:hover td {
580
+ background: var(--ss-hover-accent) !important;
581
+ }
582
+ /* Email status badges */
583
+ .ss-email-status,
584
+ .ss-dash-email-status,
585
+ .ss-dbg-email-status {
586
+ display: inline-block;
587
+ padding: 1px 6px;
588
+ border-radius: 3px;
589
+ font-size: 10px;
590
+ font-weight: 600;
591
+ text-transform: uppercase;
592
+ }
593
+ .ss-email-status-sent,
594
+ .ss-dash-email-status-sent,
595
+ .ss-dbg-email-status-sent {
596
+ background: var(--ss-green-bg);
597
+ color: var(--ss-green-fg);
598
+ }
599
+ .ss-email-status-sending,
600
+ .ss-dash-email-status-sending,
601
+ .ss-dbg-email-status-sending {
602
+ background: var(--ss-amber-bg);
603
+ color: var(--ss-amber-fg);
604
+ }
605
+ .ss-email-status-queued,
606
+ .ss-dash-email-status-queued,
607
+ .ss-dbg-email-status-queued {
608
+ background: var(--ss-blue-bg);
609
+ color: var(--ss-blue-fg);
610
+ }
611
+ .ss-email-status-failed,
612
+ .ss-dash-email-status-failed,
613
+ .ss-dbg-email-status-failed {
614
+ background: var(--ss-red-bg);
615
+ color: var(--ss-red-fg);
616
+ }
617
+
618
+ /* ── 5. Timeline / Waterfall ─────────────────────────────────── */
619
+ /* Dimension differences via CSS variables:
620
+ * --ss-tl-label-w: 280px (debug) vs 320px (dashboard)
621
+ * --ss-tl-row-h: 24px (debug) vs 26px (dashboard)
622
+ * --ss-tl-bar-h: 12px (debug) vs 14px (dashboard) */
623
+ .ss-tl-row,
624
+ .ss-dash-tl-row,
625
+ .ss-dbg-tl-row {
626
+ display: flex;
627
+ align-items: center;
628
+ height: var(--ss-tl-row-h, 24px);
629
+ font-size: 11px;
630
+ border-bottom: 1px solid var(--ss-tl-row-border, var(--ss-input-bg));
631
+ }
632
+ .ss-tl-row:hover,
633
+ .ss-dash-tl-row:hover,
634
+ .ss-dbg-tl-row:hover {
635
+ background: var(--ss-hover);
636
+ }
637
+ .ss-tl-label,
638
+ .ss-dash-tl-label,
639
+ .ss-dbg-tl-label {
640
+ width: var(--ss-tl-label-w, 280px);
641
+ min-width: var(--ss-tl-label-w, 280px);
642
+ padding-right: 8px;
643
+ overflow: hidden;
644
+ text-overflow: ellipsis;
645
+ white-space: nowrap;
646
+ color: var(--ss-text-secondary);
647
+ font-size: 10px;
648
+ }
649
+ .ss-tl-track,
650
+ .ss-dash-tl-track,
651
+ .ss-dbg-tl-track {
652
+ flex: 1;
653
+ position: relative;
654
+ height: var(--ss-tl-track-h, 16px);
655
+ }
656
+ .ss-tl-bar,
657
+ .ss-dash-tl-bar,
658
+ .ss-dbg-tl-bar {
659
+ position: absolute;
660
+ height: var(--ss-tl-bar-h, 12px);
661
+ top: 2px;
662
+ border-radius: 2px;
663
+ min-width: 2px;
664
+ cursor: default;
665
+ }
666
+ /* Timeline bar colors — semantic category indicators */
667
+ .ss-tl-bar-request,
668
+ .ss-dash-tl-bar-request,
669
+ .ss-dbg-tl-bar-request {
670
+ background: #1e3a5f;
671
+ }
672
+ .ss-tl-bar-middleware,
673
+ .ss-dash-tl-bar-middleware,
674
+ .ss-dbg-tl-bar-middleware {
675
+ background: #1e3a5f;
676
+ opacity: 0.7;
677
+ }
678
+ .ss-tl-bar-db,
679
+ .ss-dash-tl-bar-db,
680
+ .ss-dbg-tl-bar-db {
681
+ background: #6d28d9;
682
+ }
683
+ .ss-tl-bar-view,
684
+ .ss-dash-tl-bar-view,
685
+ .ss-dbg-tl-bar-view {
686
+ background: #0e7490;
687
+ }
688
+ .ss-tl-bar-mail,
689
+ .ss-dash-tl-bar-mail,
690
+ .ss-dbg-tl-bar-mail {
691
+ background: #059669;
692
+ }
693
+ .ss-tl-bar-event,
694
+ .ss-dash-tl-bar-event,
695
+ .ss-dbg-tl-bar-event {
696
+ background: #b45309;
697
+ }
698
+ .ss-tl-bar-custom,
699
+ .ss-dash-tl-bar-custom,
700
+ .ss-dbg-tl-bar-custom {
701
+ background: var(--ss-tl-bar-custom-bg, #525252);
702
+ }
703
+ .ss-tl-dur,
704
+ .ss-dash-tl-dur,
705
+ .ss-dbg-tl-dur {
706
+ font-size: 10px;
707
+ color: var(--ss-dim);
708
+ margin-left: var(--ss-tl-dur-ml, 4px);
709
+ white-space: nowrap;
710
+ font-variant-numeric: tabular-nums;
711
+ }
712
+ .ss-tl-legend,
713
+ .ss-dash-tl-legend,
714
+ .ss-dbg-tl-legend {
715
+ display: flex;
716
+ gap: var(--ss-tl-legend-gap, 10px);
717
+ padding: var(--ss-tl-legend-py, 4px) var(--ss-tl-legend-px, 12px);
718
+ border-bottom: 1px solid var(--ss-border-dim);
719
+ background: var(--ss-surface-alt);
720
+ font-size: 10px;
721
+ color: var(--ss-muted);
722
+ }
723
+ .ss-tl-legend-item,
724
+ .ss-dash-tl-legend-item,
725
+ .ss-dbg-tl-legend-item {
726
+ display: flex;
727
+ align-items: center;
728
+ gap: 4px;
729
+ }
730
+ .ss-tl-legend-dot,
731
+ .ss-dash-tl-legend-dot,
732
+ .ss-dbg-tl-legend-dot {
733
+ width: var(--ss-tl-legend-dot-size, 6px);
734
+ height: var(--ss-tl-legend-dot-size, 6px);
735
+ border-radius: 2px;
736
+ flex-shrink: 0;
737
+ }
738
+ .ss-tl-warnings,
739
+ .ss-dash-tl-warnings,
740
+ .ss-dbg-tl-warnings {
741
+ margin-top: 12px;
742
+ padding: 8px var(--ss-tl-warnings-px, 12px);
743
+ border-top: 1px solid var(--ss-border-dim);
744
+ }
745
+ .ss-tl-warnings-title,
746
+ .ss-dash-tl-warnings-title,
747
+ .ss-dbg-tl-warnings-title {
748
+ font-size: 10px;
749
+ font-weight: 600;
750
+ color: var(--ss-amber-fg);
751
+ text-transform: uppercase;
752
+ letter-spacing: 0.05em;
753
+ margin-bottom: 4px;
754
+ }
755
+ .ss-tl-warning,
756
+ .ss-dash-tl-warning,
757
+ .ss-dbg-tl-warning {
758
+ font-size: 11px;
759
+ color: var(--ss-amber-fg);
760
+ padding: 2px 0;
761
+ }
762
+ .ss-tl-meta,
763
+ .ss-dash-tl-meta,
764
+ .ss-dbg-tl-meta {
765
+ font-size: 10px;
766
+ color: var(--ss-dim);
767
+ margin-left: 8px;
768
+ }
769
+ .ss-tl-detail-header,
770
+ .ss-dash-tl-detail-header,
771
+ .ss-dbg-tl-detail-header {
772
+ display: flex;
773
+ align-items: center;
774
+ gap: var(--ss-tl-detail-gap, 6px);
775
+ padding: var(--ss-tl-detail-py, 5px) var(--ss-tl-detail-px, 12px);
776
+ border-bottom: 1px solid var(--ss-border-dim);
777
+ background: var(--ss-surface-alt);
778
+ flex-shrink: 0;
779
+ font-size: 11px;
780
+ }
781
+
782
+ /* ── 6. Config viewer ────────────────────────────────────────── */
783
+ .ss-config-sections,
784
+ .ss-dash-config-sections,
785
+ .ss-dbg-config-sections {
786
+ padding: 0;
787
+ }
788
+ .ss-config-section,
789
+ .ss-dash-config-section,
790
+ .ss-dbg-config-section {
791
+ border-bottom: 1px solid var(--ss-config-section-border, var(--ss-border-faint));
792
+ }
793
+ .ss-config-section-header,
794
+ .ss-dash-config-section-header,
795
+ .ss-dbg-config-section-header {
796
+ display: flex;
797
+ align-items: center;
798
+ gap: var(--ss-config-header-gap, 6px);
799
+ padding: var(--ss-config-header-py, 6px) var(--ss-config-header-px, 12px);
800
+ cursor: pointer;
801
+ font-size: var(--ss-config-header-font, 11px);
802
+ }
803
+ .ss-config-section-header:hover,
804
+ .ss-dash-config-section-header:hover,
805
+ .ss-dbg-config-section-header:hover {
806
+ background: var(--ss-hover);
807
+ }
808
+ .ss-config-toggle,
809
+ .ss-dash-config-toggle,
810
+ .ss-dbg-config-toggle {
811
+ color: var(--ss-config-toggle-color, var(--ss-dim));
812
+ font-size: 9px;
813
+ width: 12px;
814
+ text-align: center;
815
+ flex-shrink: 0;
816
+ }
817
+ .ss-config-key,
818
+ .ss-dash-config-key,
819
+ .ss-dbg-config-key {
820
+ color: var(--ss-sql-color);
821
+ }
822
+ .ss-config-count,
823
+ .ss-dash-config-count,
824
+ .ss-dbg-config-count {
825
+ color: var(--ss-dim);
826
+ font-size: 10px;
827
+ margin-left: auto;
828
+ }
829
+ .ss-config-val,
830
+ .ss-dash-config-val,
831
+ .ss-dbg-config-val {
832
+ color: var(--ss-text-secondary);
833
+ }
834
+ .ss-config-val-true,
835
+ .ss-dash-config-val-true,
836
+ .ss-dbg-config-val-true {
837
+ color: var(--ss-accent);
838
+ }
839
+ .ss-config-val-false,
840
+ .ss-dash-config-val-false,
841
+ .ss-dbg-config-val-false {
842
+ color: var(--ss-red-fg);
843
+ }
844
+ .ss-config-val-number,
845
+ .ss-dash-config-val-number,
846
+ .ss-dbg-config-val-number {
847
+ color: var(--ss-amber-fg);
848
+ }
849
+ .ss-config-val-array,
850
+ .ss-dash-config-val-array,
851
+ .ss-dbg-config-val-array {
852
+ color: var(--ss-purple-fg);
853
+ }
854
+ .ss-config-val-null,
855
+ .ss-dash-config-val-null,
856
+ .ss-dbg-config-val-null {
857
+ color: var(--ss-dim);
858
+ }
859
+ .ss-config-redacted,
860
+ .ss-dash-config-redacted,
861
+ .ss-dbg-config-redacted {
862
+ color: var(--ss-dim);
863
+ font-style: italic;
864
+ }
865
+ .ss-config-section-body,
866
+ .ss-dash-config-section-body,
867
+ .ss-dbg-config-section-body {
868
+ padding: 0 0 4px 0;
869
+ background: var(--ss-surface-alt);
870
+ }
871
+ .ss-config-match,
872
+ .ss-dash-config-match,
873
+ .ss-dbg-config-match {
874
+ background: var(--ss-amber-bg);
875
+ color: var(--ss-amber-fg);
876
+ border-radius: 2px;
877
+ padding: 0 1px;
878
+ }
879
+ .ss-config-leaf,
880
+ .ss-dash-config-leaf,
881
+ .ss-dbg-config-leaf {
882
+ cursor: default;
883
+ }
884
+ .ss-config-leaf:hover,
885
+ .ss-dash-config-leaf:hover,
886
+ .ss-dbg-config-leaf:hover {
887
+ background: transparent;
888
+ }
889
+ .ss-config-inner-table,
890
+ .ss-dash-config-inner-table,
891
+ .ss-dbg-config-inner-table {
892
+ font-size: 11px;
893
+ table-layout: fixed;
894
+ }
895
+ .ss-config-inner-table th,
896
+ .ss-dash-config-inner-table th,
897
+ .ss-dbg-config-inner-table th {
898
+ background: var(--ss-surface-alt);
899
+ }
900
+ .ss-config-inner-table td,
901
+ .ss-dash-config-inner-table td,
902
+ .ss-dbg-config-inner-table td {
903
+ overflow: hidden;
904
+ text-overflow: ellipsis;
905
+ white-space: nowrap;
906
+ }
907
+ .ss-config-inner-table td:hover,
908
+ .ss-dash-config-inner-table td:hover,
909
+ .ss-dbg-config-inner-table td:hover {
910
+ white-space: normal;
911
+ word-break: break-all;
912
+ }
913
+ .ss-redacted-wrap,
914
+ .ss-dash-redacted-wrap,
915
+ .ss-dbg-redacted-wrap {
916
+ display: inline-flex;
917
+ align-items: center;
918
+ gap: 4px;
919
+ font-style: italic;
920
+ color: var(--ss-dim);
921
+ }
922
+ .ss-redacted-real,
923
+ .ss-dash-redacted-real,
924
+ .ss-dbg-redacted-real {
925
+ font-style: normal;
926
+ color: var(--ss-text-secondary);
927
+ font-family: var(--ss-font-mono);
928
+ font-size: 11px;
929
+ word-break: break-all;
930
+ }
931
+ .ss-redacted-reveal,
932
+ .ss-redacted-copy,
933
+ .ss-dash-redacted-reveal,
934
+ .ss-dash-redacted-copy,
935
+ .ss-dbg-redacted-reveal,
936
+ .ss-dbg-redacted-copy {
937
+ background: none;
938
+ border: 1px solid var(--ss-border);
939
+ border-radius: 3px;
940
+ padding: 2px 4px;
941
+ cursor: pointer;
942
+ color: var(--ss-dim);
943
+ display: inline-flex;
944
+ align-items: center;
945
+ line-height: 1;
946
+ transition:
947
+ color 0.15s,
948
+ border-color 0.15s;
949
+ }
950
+ .ss-redacted-reveal:hover,
951
+ .ss-redacted-copy:hover,
952
+ .ss-dash-redacted-reveal:hover,
953
+ .ss-dash-redacted-copy:hover,
954
+ .ss-dbg-redacted-reveal:hover,
955
+ .ss-dbg-redacted-copy:hover {
956
+ color: var(--ss-text);
957
+ border-color: var(--ss-dim);
958
+ }
959
+ /* Copy-row button (shared pattern) */
960
+ .ss-copy-row-btn,
961
+ .ss-dash-copy-row-btn,
962
+ .ss-dbg-copy-row-btn {
963
+ padding: 2px 6px;
964
+ font-size: 12px;
965
+ color: var(--ss-dim);
966
+ background: none;
967
+ border: 1px solid transparent;
968
+ border-radius: 3px;
969
+ cursor: pointer;
970
+ line-height: 1;
971
+ opacity: 0;
972
+ transition: opacity 0.1s;
973
+ }
974
+ tr:hover .ss-copy-row-btn,
975
+ tr:hover .ss-dash-copy-row-btn,
976
+ tr:hover .ss-dbg-copy-row-btn,
977
+ .ss-config-section-header:hover .ss-copy-row-btn,
978
+ .ss-dash-config-section-header:hover .ss-copy-row-btn,
979
+ .ss-dash-config-section-header:hover .ss-dash-copy-row-btn,
980
+ .ss-dbg-config-section-header:hover .ss-dbg-copy-row-btn {
981
+ opacity: 1;
982
+ }
983
+ .ss-copy-row-btn:hover,
984
+ .ss-dash-copy-row-btn:hover,
985
+ .ss-dbg-copy-row-btn:hover {
986
+ color: var(--ss-text);
987
+ border-color: var(--ss-border);
988
+ }
989
+ .ss-copy-row-btn.ss-copy-row-ok,
990
+ .ss-dash-copy-row-btn.ss-dash-copy-row-ok,
991
+ .ss-dbg-copy-row-btn.ss-dbg-copy-row-ok {
992
+ color: var(--ss-green-fg);
993
+ opacity: 1;
994
+ }
995
+
996
+ /* ── 7. Buttons ──────────────────────────────────────────────── */
997
+ /* Shared base button pattern */
998
+ .ss-btn,
999
+ .ss-dash-btn,
1000
+ .ss-dbg-btn {
1001
+ display: flex;
1002
+ align-items: center;
1003
+ gap: 4px;
1004
+ padding: var(--ss-btn-py, 3px) var(--ss-btn-px, 8px);
1005
+ font-size: var(--ss-btn-font, 10px);
1006
+ color: var(--ss-muted);
1007
+ cursor: pointer;
1008
+ border: var(--ss-btn-border, none);
1009
+ background: var(--ss-btn-bg, none);
1010
+ border-radius: 4px;
1011
+ flex-shrink: 0;
1012
+ text-transform: var(--ss-btn-case, none);
1013
+ }
1014
+ .ss-btn:hover,
1015
+ .ss-dash-btn:hover,
1016
+ .ss-dbg-btn:hover {
1017
+ color: var(--ss-text);
1018
+ background: var(--ss-hover);
1019
+ }
1020
+ .ss-btn.ss-active,
1021
+ .ss-dash-btn.ss-dash-active,
1022
+ .ss-dbg-btn.ss-dbg-active {
1023
+ color: var(--ss-accent);
1024
+ }
1025
+ /* Button group */
1026
+ .ss-btn-group,
1027
+ .ss-dash-btn-group,
1028
+ .ss-dbg-btn-group {
1029
+ display: inline-flex;
1030
+ gap: 0;
1031
+ }
1032
+ .ss-btn-group .ss-btn,
1033
+ .ss-dash-btn-group .ss-dash-btn,
1034
+ .ss-dbg-btn-group .ss-dbg-btn {
1035
+ border-radius: 0;
1036
+ margin-left: -1px;
1037
+ }
1038
+ .ss-btn-group .ss-btn:first-child,
1039
+ .ss-dash-btn-group .ss-dash-btn:first-child,
1040
+ .ss-dbg-btn-group .ss-dbg-btn:first-child {
1041
+ border-radius: 4px 0 0 4px;
1042
+ margin-left: 0;
1043
+ }
1044
+ .ss-btn-group .ss-btn:last-child,
1045
+ .ss-dash-btn-group .ss-dash-btn:last-child,
1046
+ .ss-dbg-btn-group .ss-dbg-btn:last-child {
1047
+ border-radius: 0 4px 4px 0;
1048
+ }