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
@@ -1,193 +1,8 @@
1
1
  /* Full-page dashboard styles for adonisjs-server-stats.
2
2
  * All classes use the `.ss-dash-` prefix to avoid conflicts.
3
- * Two themes via CSS custom properties + @media (prefers-color-scheme).
3
+ * Theme tokens are loaded from tokens.css (prepended at runtime).
4
4
  */
5
5
 
6
- /* ── Theme: Dark (default) ─────────────────────────────────────── */
7
- :root {
8
- --ss-bg: #0f0f0f;
9
- --ss-surface: #171717;
10
- --ss-surface-alt: #141414;
11
- --ss-text: #e5e5e5;
12
- --ss-text-secondary: #b5b5b5;
13
- --ss-accent: #34d399;
14
- --ss-accent-dim: #064e3b;
15
- --ss-border: #333;
16
- --ss-border-dim: #262626;
17
- --ss-border-faint: #1f1f1f;
18
- --ss-muted: #9ca3af;
19
- --ss-dim: #6b7280;
20
- --ss-hover: rgba(38, 38, 38, 0.4);
21
- --ss-hover-accent: rgba(52, 211, 153, 0.08);
22
- --ss-input-bg: #1a1a1a;
23
- --ss-shadow: rgb(0 0 0 / 0.4);
24
- /* Status colors */
25
- --ss-green-bg: #064e3b;
26
- --ss-green-fg: #34d399;
27
- --ss-blue-bg: #1e3a5f;
28
- --ss-blue-fg: #60a5fa;
29
- --ss-amber-bg: #422006;
30
- --ss-amber-fg: #fbbf24;
31
- --ss-red-bg: #450a0a;
32
- --ss-red-fg: #f87171;
33
- --ss-purple-bg: #2e1065;
34
- --ss-purple-fg: #c084fc;
35
- --ss-sql-color: #93c5fd;
36
- --ss-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
37
- --ss-text-primary: var(--ss-text);
38
- --ss-reqid-bg: #1e1b2e;
39
- --ss-reqid-fg: #6d28d9;
40
- --ss-reqid-hover-bg: #2e2644;
41
- --ss-reqid-hover-fg: #a78bfa;
42
- }
43
-
44
- /* ── Theme: Dark (explicit toggle override) ───────────────────── */
45
- [data-theme='dark'] {
46
- --ss-bg: #0f0f0f;
47
- --ss-surface: #171717;
48
- --ss-surface-alt: #141414;
49
- --ss-text: #e5e5e5;
50
- --ss-text-secondary: #b5b5b5;
51
- --ss-accent: #34d399;
52
- --ss-accent-dim: #064e3b;
53
- --ss-border: #333;
54
- --ss-border-dim: #262626;
55
- --ss-border-faint: #1f1f1f;
56
- --ss-muted: #9ca3af;
57
- --ss-dim: #6b7280;
58
- --ss-hover: rgba(38, 38, 38, 0.4);
59
- --ss-hover-accent: rgba(52, 211, 153, 0.08);
60
- --ss-input-bg: #1a1a1a;
61
- --ss-shadow: rgb(0 0 0 / 0.4);
62
- --ss-green-bg: #064e3b;
63
- --ss-green-fg: #34d399;
64
- --ss-blue-bg: #1e3a5f;
65
- --ss-blue-fg: #60a5fa;
66
- --ss-amber-bg: #422006;
67
- --ss-amber-fg: #fbbf24;
68
- --ss-red-bg: #450a0a;
69
- --ss-red-fg: #f87171;
70
- --ss-purple-bg: #2e1065;
71
- --ss-purple-fg: #c084fc;
72
- --ss-sql-color: #93c5fd;
73
- --ss-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
74
- --ss-text-primary: var(--ss-text);
75
- --ss-reqid-bg: #1e1b2e;
76
- --ss-reqid-fg: #6d28d9;
77
- --ss-reqid-hover-bg: #2e2644;
78
- --ss-reqid-hover-fg: #a78bfa;
79
- }
80
-
81
- /* ── Theme: Light ──────────────────────────────────────────────── */
82
- @media (prefers-color-scheme: light) {
83
- :root:not([data-theme='dark']) {
84
- --ss-bg: #fafafa;
85
- --ss-surface: #ffffff;
86
- --ss-surface-alt: #f5f5f5;
87
- --ss-text: #171717;
88
- --ss-text-secondary: #525252;
89
- --ss-accent: #059669;
90
- --ss-accent-dim: #d1fae5;
91
- --ss-border: #e5e5e5;
92
- --ss-border-dim: #e5e5e5;
93
- --ss-border-faint: #f0f0f0;
94
- --ss-muted: #6b7280;
95
- --ss-dim: #9ca3af;
96
- --ss-hover: rgba(0, 0, 0, 0.03);
97
- --ss-hover-accent: rgba(5, 150, 105, 0.06);
98
- --ss-input-bg: #ffffff;
99
- --ss-shadow: rgb(0 0 0 / 0.08);
100
- --ss-green-bg: #d1fae5;
101
- --ss-green-fg: #059669;
102
- --ss-blue-bg: #dbeafe;
103
- --ss-blue-fg: #2563eb;
104
- --ss-amber-bg: #fef3c7;
105
- --ss-amber-fg: #b45309;
106
- --ss-red-bg: #fee2e2;
107
- --ss-red-fg: #dc2626;
108
- --ss-purple-bg: #ede9fe;
109
- --ss-purple-fg: #7c3aed;
110
- --ss-sql-color: #2563eb;
111
- --ss-text-primary: var(--ss-text);
112
- --ss-reqid-bg: #ede9fe;
113
- --ss-reqid-fg: #7c3aed;
114
- --ss-reqid-hover-bg: #ddd6fe;
115
- --ss-reqid-hover-fg: #6d28d9;
116
- }
117
- }
118
-
119
- /* ── Theme: Light (explicit toggle override) ──────────────────── */
120
- [data-theme='light'] {
121
- --ss-bg: #fafafa;
122
- --ss-surface: #ffffff;
123
- --ss-surface-alt: #f5f5f5;
124
- --ss-text: #171717;
125
- --ss-text-secondary: #525252;
126
- --ss-accent: #059669;
127
- --ss-accent-dim: #d1fae5;
128
- --ss-border: #e5e5e5;
129
- --ss-border-dim: #e5e5e5;
130
- --ss-border-faint: #f0f0f0;
131
- --ss-muted: #6b7280;
132
- --ss-dim: #9ca3af;
133
- --ss-hover: rgba(0, 0, 0, 0.03);
134
- --ss-hover-accent: rgba(5, 150, 105, 0.06);
135
- --ss-input-bg: #ffffff;
136
- --ss-shadow: rgb(0 0 0 / 0.08);
137
- --ss-green-bg: #d1fae5;
138
- --ss-green-fg: #059669;
139
- --ss-blue-bg: #dbeafe;
140
- --ss-blue-fg: #2563eb;
141
- --ss-amber-bg: #fef3c7;
142
- --ss-amber-fg: #b45309;
143
- --ss-red-bg: #fee2e2;
144
- --ss-red-fg: #dc2626;
145
- --ss-purple-bg: #ede9fe;
146
- --ss-purple-fg: #7c3aed;
147
- --ss-sql-color: #2563eb;
148
- --ss-text-primary: var(--ss-text);
149
- --ss-reqid-bg: #ede9fe;
150
- --ss-reqid-fg: #7c3aed;
151
- --ss-reqid-hover-bg: #ddd6fe;
152
- --ss-reqid-hover-fg: #6d28d9;
153
- }
154
-
155
- /* ── Theme override via data attribute ─────────────────────────── */
156
- [data-theme='light'] {
157
- --ss-bg: #fafafa;
158
- --ss-surface: #ffffff;
159
- --ss-surface-alt: #f5f5f5;
160
- --ss-text: #171717;
161
- --ss-text-secondary: #525252;
162
- --ss-accent: #059669;
163
- --ss-accent-dim: #d1fae5;
164
- --ss-border: #e5e5e5;
165
- --ss-border-dim: #e5e5e5;
166
- --ss-border-faint: #f0f0f0;
167
- --ss-muted: #6b7280;
168
- --ss-dim: #9ca3af;
169
- --ss-hover: rgba(0, 0, 0, 0.03);
170
- --ss-hover-accent: rgba(5, 150, 105, 0.06);
171
- --ss-input-bg: #ffffff;
172
- --ss-shadow: rgb(0 0 0 / 0.08);
173
- --ss-green-bg: #d1fae5;
174
- --ss-green-fg: #059669;
175
- --ss-blue-bg: #dbeafe;
176
- --ss-blue-fg: #2563eb;
177
- --ss-amber-bg: #fef3c7;
178
- --ss-amber-fg: #b45309;
179
- --ss-red-bg: #fee2e2;
180
- --ss-red-fg: #dc2626;
181
- --ss-purple-bg: #ede9fe;
182
- --ss-purple-fg: #7c3aed;
183
- --ss-sql-color: #2563eb;
184
- --ss-text-primary: var(--ss-text);
185
- --ss-reqid-bg: #ede9fe;
186
- --ss-reqid-fg: #7c3aed;
187
- --ss-reqid-hover-bg: #ddd6fe;
188
- --ss-reqid-hover-fg: #6d28d9;
189
- }
190
-
191
6
  /* ── Reset & base ──────────────────────────────────────────────── */
192
7
  *,
193
8
  *::before,
@@ -197,6 +12,14 @@
197
12
  padding: 0;
198
13
  }
199
14
 
15
+ button,
16
+ input,
17
+ select,
18
+ textarea,
19
+ pre {
20
+ font-family: inherit;
21
+ }
22
+
200
23
  html,
201
24
  body {
202
25
  height: 100%;
@@ -299,7 +122,6 @@ body {
299
122
  cursor: pointer;
300
123
  border: none;
301
124
  background: none;
302
- font-family: inherit;
303
125
  border-radius: 4px;
304
126
  }
305
127
  .ss-dash-theme-btn:hover,
@@ -335,11 +157,7 @@ body {
335
157
  transition:
336
158
  width 0.2s ease,
337
159
  min-width 0.2s ease;
338
- scrollbar-width: none;
339
- -ms-overflow-style: none;
340
- }
341
- .ss-dash-sidebar::-webkit-scrollbar {
342
- display: none;
160
+ /* scrollbar hiding → utilities.css */
343
161
  }
344
162
 
345
163
  .ss-dash-sidebar.ss-dash-collapsed {
@@ -365,7 +183,6 @@ body {
365
183
  background: none;
366
184
  width: 100%;
367
185
  text-align: left;
368
- font-family: inherit;
369
186
  transition:
370
187
  color 0.15s,
371
188
  background 0.15s;
@@ -419,13 +236,17 @@ body {
419
236
 
420
237
  .ss-dash-nav-badge {
421
238
  margin-left: auto;
422
- font-size: 9px;
423
- padding: 1px 6px;
424
- border-radius: 8px;
425
- background: var(--ss-border-dim);
426
- color: var(--ss-muted);
239
+ font-size: 10px;
240
+ min-width: 18px;
241
+ height: 18px;
242
+ line-height: 18px;
243
+ text-align: center;
244
+ border-radius: 9px;
245
+ background: var(--ss-red-fg);
246
+ color: #fff;
247
+ padding: 0 5px;
427
248
  font-weight: 600;
428
- font-variant-numeric: tabular-nums;
249
+ /* tabular-nums → utilities.css */
429
250
  }
430
251
  .ss-dash-nav-badge.ss-dash-badge-accent {
431
252
  background: var(--ss-accent-dim);
@@ -454,7 +275,6 @@ body {
454
275
  color: var(--ss-dim);
455
276
  border: none;
456
277
  background: none;
457
- font-family: inherit;
458
278
  font-size: 14px;
459
279
  border-top: 1px solid var(--ss-border-dim);
460
280
  flex-shrink: 0;
@@ -501,8 +321,9 @@ body {
501
321
  flex: 1;
502
322
  min-width: 200px;
503
323
  padding: 5px 10px;
324
+ padding-left: 28px;
325
+ padding-right: 24px;
504
326
  font-size: 11px;
505
- font-family: inherit;
506
327
  color: var(--ss-text);
507
328
  background: var(--ss-input-bg);
508
329
  border: 1px solid var(--ss-border);
@@ -516,30 +337,79 @@ body {
516
337
  color: var(--ss-dim);
517
338
  }
518
339
 
340
+ .ss-dash-filter-bar {
341
+ display: flex;
342
+ align-items: center;
343
+ gap: 8px;
344
+ padding: 8px 16px;
345
+ border-bottom: 1px solid var(--ss-border-dim);
346
+ background: var(--ss-surface-alt);
347
+ flex-shrink: 0;
348
+ flex-wrap: wrap;
349
+ }
350
+
351
+ .ss-dash-search-wrapper {
352
+ position: relative;
353
+ flex: 1;
354
+ min-width: 180px;
355
+ max-width: 400px;
356
+ }
357
+
358
+ .ss-dash-search-icon {
359
+ position: absolute;
360
+ left: 8px;
361
+ top: 50%;
362
+ transform: translateY(-50%);
363
+ width: 14px;
364
+ height: 14px;
365
+ color: var(--ss-dim);
366
+ pointer-events: none;
367
+ }
368
+
369
+ .ss-dash-search-clear {
370
+ position: absolute;
371
+ right: 6px;
372
+ top: 50%;
373
+ transform: translateY(-50%);
374
+ background: none;
375
+ border: none;
376
+ color: var(--ss-dim);
377
+ cursor: pointer;
378
+ font-size: 14px;
379
+ padding: 2px 4px;
380
+ line-height: 1;
381
+ }
382
+ .ss-dash-search-clear:hover {
383
+ color: var(--ss-text);
384
+ }
385
+
386
+ .ss-dash-filter-controls {
387
+ display: flex;
388
+ align-items: center;
389
+ gap: 6px;
390
+ margin-left: auto;
391
+ }
392
+
519
393
  .ss-dash-summary {
520
- font-size: 11px;
521
- color: var(--ss-muted);
394
+ font-size: 12px;
395
+ color: var(--ss-dim);
522
396
  white-space: nowrap;
523
- padding: 0 4px;
524
397
  }
525
398
 
526
399
  /* ── Buttons ───────────────────────────────────────────────────── */
400
+ /* Base btn / btn-group → components.css */
401
+ /* Dashboard override: bordered style with uppercase */
527
402
  .ss-dash-btn {
528
- padding: 4px 10px;
529
- font-size: 10px;
530
- font-family: inherit;
531
- color: var(--ss-muted);
532
- background: var(--ss-surface);
533
- border: 1px solid var(--ss-border);
534
- border-radius: 4px;
535
- cursor: pointer;
536
- text-transform: uppercase;
403
+ --ss-btn-py: 4px;
404
+ --ss-btn-px: 10px;
405
+ --ss-btn-border: 1px solid var(--ss-border);
406
+ --ss-btn-bg: var(--ss-surface);
407
+ --ss-btn-case: uppercase;
537
408
  letter-spacing: 0.03em;
538
409
  font-weight: 500;
539
410
  white-space: nowrap;
540
411
  }
541
412
  .ss-dash-btn:hover {
542
- color: var(--ss-text);
543
413
  border-color: var(--ss-dim);
544
414
  }
545
415
  .ss-dash-btn.ss-dash-active {
@@ -548,59 +418,48 @@ body {
548
418
  background: var(--ss-accent-dim);
549
419
  }
550
420
 
551
- .ss-dash-btn-group {
552
- display: flex;
553
- gap: 0;
554
- }
555
- .ss-dash-btn-group .ss-dash-btn {
556
- border-radius: 0;
557
- margin-left: -1px;
421
+ .ss-dash-filter-btn {
422
+ padding: 3px 10px;
423
+ font-size: 11px;
424
+ border-radius: 4px;
425
+ border: 1px solid var(--ss-border);
426
+ background: var(--ss-surface);
427
+ color: var(--ss-dim);
428
+ cursor: pointer;
558
429
  }
559
- .ss-dash-btn-group .ss-dash-btn:first-child {
560
- border-radius: 4px 0 0 4px;
561
- margin-left: 0;
430
+ .ss-dash-filter-btn.ss-dash-active {
431
+ background: var(--ss-accent);
432
+ color: #fff;
433
+ border-color: var(--ss-accent);
562
434
  }
563
- .ss-dash-btn-group .ss-dash-btn:last-child {
564
- border-radius: 0 4px 4px 0;
435
+
436
+ .ss-dash-level-filters {
437
+ display: flex;
438
+ gap: 4px;
439
+ flex-wrap: wrap;
565
440
  }
566
441
 
567
442
  /* ── Tables ────────────────────────────────────────────────────── */
568
443
  .ss-dash-table-wrap {
444
+ --ss-table-cell-px: 12px;
445
+ --ss-table-cell-py: 7px;
446
+ --ss-table-td-py: 6px;
569
447
  flex: 1;
570
- overflow: auto;
448
+ overflow-x: auto;
449
+ overflow-y: visible;
450
+ margin: 0 -2px;
451
+ padding: 0 2px;
571
452
  scrollbar-width: thin;
572
453
  scrollbar-color: var(--ss-border) transparent;
573
454
  }
574
-
575
- .ss-dash-table {
576
- width: 100%;
577
- border-collapse: collapse;
578
- font-size: 11px;
579
- }
455
+ /* Table base → components.css */
456
+ /* Column resize → components.css */
580
457
  .ss-dash-table th {
581
- position: sticky;
582
- top: 0;
583
- padding: 7px 12px;
584
- text-align: left;
585
- font-weight: 600;
586
- font-size: 10px;
587
- text-transform: uppercase;
588
- letter-spacing: 0.05em;
589
- color: var(--ss-muted);
590
- background: var(--ss-surface);
591
- border-bottom: 1px solid var(--ss-border);
592
- white-space: nowrap;
593
458
  z-index: 2;
594
459
  }
595
460
  .ss-dash-table td {
596
- padding: 6px 12px;
597
- border-bottom: 1px solid var(--ss-border-faint);
598
- vertical-align: top;
599
461
  max-width: 0;
600
462
  }
601
- .ss-dash-table tr:hover td {
602
- background: var(--ss-hover);
603
- }
604
463
  .ss-dash-table tr.ss-dash-explain-row:hover td {
605
464
  background: var(--ss-surface-alt);
606
465
  }
@@ -611,36 +470,40 @@ body {
611
470
  background: var(--ss-hover-accent);
612
471
  }
613
472
 
614
- /* ── Method badges ─────────────────────────────────────────────── */
615
- .ss-dash-method {
616
- display: inline-block;
617
- padding: 1px 5px;
618
- border-radius: 3px;
473
+ .ss-dash-sortable {
474
+ cursor: pointer;
475
+ user-select: none;
476
+ }
477
+ .ss-dash-sortable:hover {
478
+ color: var(--ss-accent);
479
+ }
480
+
481
+ .ss-dash-sort-arrow {
619
482
  font-size: 10px;
620
- font-weight: 600;
621
- letter-spacing: 0.03em;
622
- text-transform: uppercase;
483
+ color: var(--ss-accent);
484
+ margin-left: 2px;
485
+ }
486
+
487
+ .ss-dash-data-cell {
488
+ position: relative;
489
+ max-width: 300px;
623
490
  }
624
- .ss-dash-method-get,
491
+
492
+ /* ── Method badges ─────────────────────────────────────────────── */
493
+ /* Base + GET/POST/PUT/PATCH/DELETE → components.css */
494
+ /* Dashboard-only SQL method variants */
625
495
  .ss-dash-method-select {
626
496
  background: var(--ss-green-bg);
627
497
  color: var(--ss-green-fg);
628
498
  }
629
- .ss-dash-method-post,
630
499
  .ss-dash-method-insert {
631
500
  background: var(--ss-blue-bg);
632
501
  color: var(--ss-blue-fg);
633
502
  }
634
- .ss-dash-method-put,
635
- .ss-dash-method-patch,
636
503
  .ss-dash-method-update {
637
504
  background: var(--ss-amber-bg);
638
505
  color: var(--ss-amber-fg);
639
506
  }
640
- .ss-dash-method-delete {
641
- background: var(--ss-red-bg);
642
- color: var(--ss-red-fg);
643
- }
644
507
  .ss-dash-method-head,
645
508
  .ss-dash-method-options,
646
509
  .ss-dash-method-raw {
@@ -648,74 +511,15 @@ body {
648
511
  color: var(--ss-dim);
649
512
  }
650
513
 
651
- /* ── Status badges ─────────────────────────────────────────────── */
652
- .ss-dash-status {
653
- font-size: 10px;
654
- font-weight: 600;
655
- padding: 1px 5px;
656
- border-radius: 3px;
657
- }
658
- .ss-dash-status-2xx {
659
- background: var(--ss-green-bg);
660
- color: var(--ss-green-fg);
661
- }
662
- .ss-dash-status-3xx {
663
- background: var(--ss-blue-bg);
664
- color: var(--ss-blue-fg);
665
- }
666
- .ss-dash-status-4xx {
667
- background: var(--ss-amber-bg);
668
- color: var(--ss-amber-fg);
669
- }
670
- .ss-dash-status-5xx {
671
- background: var(--ss-red-bg);
672
- color: var(--ss-red-fg);
673
- }
514
+ /* Status badges components.css */
515
+ /* Badge generic → components.css */
674
516
 
675
- /* ── Badge generic ─────────────────────────────────────────────── */
676
- .ss-dash-badge {
677
- display: inline-block;
678
- padding: 1px 6px;
679
- border-radius: 3px;
680
- font-size: 10px;
681
- font-weight: 600;
682
- text-transform: uppercase;
683
- }
684
- .ss-dash-badge-green {
685
- background: var(--ss-green-bg);
686
- color: var(--ss-green-fg);
687
- }
688
- .ss-dash-badge-amber {
689
- background: var(--ss-amber-bg);
690
- color: var(--ss-amber-fg);
691
- }
692
- .ss-dash-badge-red {
693
- background: var(--ss-red-bg);
694
- color: var(--ss-red-fg);
695
- }
696
- .ss-dash-badge-blue {
697
- background: var(--ss-blue-bg);
698
- color: var(--ss-blue-fg);
699
- }
700
- .ss-dash-badge-purple {
701
- background: var(--ss-purple-bg);
702
- color: var(--ss-purple-fg);
703
- }
517
+ /* Dashboard badge-muted override (uses --ss-surface instead of --ss-border-dim) */
704
518
  .ss-dash-badge-muted {
705
519
  background: var(--ss-surface);
706
- color: var(--ss-muted);
707
520
  }
708
521
 
709
- /* ── Duration ──────────────────────────────────────────────────── */
710
- .ss-dash-duration {
711
- font-variant-numeric: tabular-nums;
712
- }
713
- .ss-dash-slow {
714
- color: var(--ss-amber-fg);
715
- }
716
- .ss-dash-very-slow {
717
- color: var(--ss-red-fg);
718
- }
522
+ /* Duration components.css */
719
523
 
720
524
  /* ── SQL ───────────────────────────────────────────────────────── */
721
525
  .ss-dash-sql {
@@ -724,9 +528,7 @@ body {
724
528
  word-break: break-all;
725
529
  cursor: pointer;
726
530
  max-width: 600px;
727
- overflow: hidden;
728
- text-overflow: ellipsis;
729
- white-space: nowrap;
531
+ /* truncation → utilities.css */
730
532
  display: inline-block;
731
533
  }
732
534
  .ss-dash-sql.ss-dash-expanded {
@@ -763,7 +565,6 @@ body {
763
565
  border-radius: 4px;
764
566
  color: var(--ss-text-secondary);
765
567
  font-size: 10px;
766
- font-family: inherit;
767
568
  white-space: pre-wrap;
768
569
  word-break: break-all;
769
570
  max-height: 300px;
@@ -772,32 +573,15 @@ body {
772
573
  scrollbar-width: thin;
773
574
  }
774
575
 
775
- .ss-dash-copy-btn {
776
- margin-left: 6px;
777
- padding: 1px 5px;
778
- font-size: 11px;
779
- color: var(--ss-dim);
780
- background: none;
781
- border: 1px solid transparent;
782
- border-radius: 3px;
783
- cursor: pointer;
784
- font-family: inherit;
785
- vertical-align: middle;
786
- }
576
+ /* Copy button → components.css */
577
+ /* Dashboard copy-btn hover override (uses --ss-border instead of --ss-border-strong) */
787
578
  .ss-dash-copy-btn:hover {
788
- color: var(--ss-text-secondary);
789
579
  border-color: var(--ss-border);
790
580
  }
791
581
 
792
- /* ── Empty state ───────────────────────────────────────────────── */
582
+ /* Empty state components.css */
583
+ /* Dashboard empty override (adds flex: 1) */
793
584
  .ss-dash-empty {
794
- display: flex;
795
- align-items: center;
796
- justify-content: center;
797
- height: 100%;
798
- min-height: 120px;
799
- color: var(--ss-dim);
800
- font-size: 12px;
801
585
  flex: 1;
802
586
  }
803
587
 
@@ -813,11 +597,17 @@ body {
813
597
  .ss-dash-event-time {
814
598
  color: var(--ss-dim);
815
599
  font-size: 10px;
816
- font-variant-numeric: tabular-nums;
600
+ /* tabular-nums → utilities.css */
817
601
  }
818
602
 
819
603
  /* ── Logs ──────────────────────────────────────────────────────── */
604
+ /* Log entry / level / time / reqid / msg → components.css */
605
+ /* Dashboard overrides: wider padding, border-faint separator, surface bg for debug/trace */
820
606
  .ss-dash-log-filters {
607
+ --ss-log-px: 16px;
608
+ --ss-log-border: var(--ss-border-faint);
609
+ --ss-log-debug-bg: var(--ss-surface);
610
+ --ss-log-trace-bg: var(--ss-surface);
821
611
  display: flex;
822
612
  gap: 4px;
823
613
  padding: 8px 16px;
@@ -828,10 +618,16 @@ body {
828
618
  align-items: center;
829
619
  }
830
620
 
621
+ /* When log filters are inside the shared FilterBar, strip redundant chrome */
622
+ .ss-dash-filter-controls .ss-dash-log-filters {
623
+ padding: 0;
624
+ border-bottom: none;
625
+ background: none;
626
+ }
627
+
831
628
  .ss-dash-log-filter {
832
629
  padding: 3px 10px;
833
630
  font-size: 10px;
834
- font-family: inherit;
835
631
  border: 1px solid var(--ss-border);
836
632
  border-radius: 4px;
837
633
  cursor: pointer;
@@ -849,87 +645,18 @@ body {
849
645
  }
850
646
 
851
647
  .ss-dash-log-entries {
648
+ --ss-log-px: 16px;
649
+ --ss-log-border: var(--ss-border-faint);
650
+ --ss-log-debug-bg: var(--ss-surface);
651
+ --ss-log-trace-bg: var(--ss-surface);
852
652
  flex: 1;
853
653
  overflow: auto;
854
654
  scrollbar-width: thin;
855
655
  }
856
-
857
- .ss-dash-log-entry {
858
- padding: 4px 16px;
859
- font-size: 11px;
860
- border-bottom: 1px solid var(--ss-border-faint);
861
- display: flex;
862
- gap: 8px;
863
- align-items: baseline;
864
- }
865
656
  .ss-dash-log-entry:hover {
866
657
  background: var(--ss-hover);
867
658
  }
868
659
 
869
- .ss-dash-log-level {
870
- font-size: 10px;
871
- font-weight: 600;
872
- width: 42px;
873
- text-align: center;
874
- flex-shrink: 0;
875
- padding: 1px 0;
876
- border-radius: 3px;
877
- }
878
- .ss-dash-log-level-info {
879
- background: var(--ss-green-bg);
880
- color: var(--ss-green-fg);
881
- }
882
- .ss-dash-log-level-warn {
883
- background: var(--ss-amber-bg);
884
- color: var(--ss-amber-fg);
885
- }
886
- .ss-dash-log-level-error,
887
- .ss-dash-log-level-fatal {
888
- background: var(--ss-red-bg);
889
- color: var(--ss-red-fg);
890
- }
891
- .ss-dash-log-level-debug {
892
- background: var(--ss-surface);
893
- color: var(--ss-muted);
894
- }
895
- .ss-dash-log-level-trace {
896
- background: var(--ss-surface);
897
- color: var(--ss-dim);
898
- }
899
-
900
- .ss-dash-log-time {
901
- color: var(--ss-dim);
902
- font-size: 10px;
903
- font-variant-numeric: tabular-nums;
904
- flex-shrink: 0;
905
- }
906
- .ss-dash-log-reqid {
907
- font-size: 10px;
908
- color: var(--ss-reqid-fg);
909
- background: var(--ss-reqid-bg);
910
- padding: 1px 5px;
911
- border-radius: 3px;
912
- cursor: pointer;
913
- flex-shrink: 0;
914
- font-family: inherit;
915
- letter-spacing: 0.02em;
916
- }
917
- .ss-dash-log-reqid:hover {
918
- color: var(--ss-reqid-hover-fg);
919
- background: var(--ss-reqid-hover-bg);
920
- }
921
- .ss-dash-log-reqid-empty {
922
- font-size: 10px;
923
- color: var(--ss-border);
924
- flex-shrink: 0;
925
- width: 58px;
926
- text-align: center;
927
- }
928
- .ss-dash-log-msg {
929
- color: var(--ss-text);
930
- word-break: break-word;
931
- }
932
-
933
660
  /* ── Structured log search ─────────────────────────────────────── */
934
661
  .ss-dash-structured-search {
935
662
  display: flex;
@@ -946,7 +673,6 @@ body {
946
673
  .ss-dash-filter-input {
947
674
  padding: 4px 8px;
948
675
  font-size: 11px;
949
- font-family: inherit;
950
676
  color: var(--ss-text);
951
677
  background: var(--ss-input-bg);
952
678
  border: 1px solid var(--ss-border);
@@ -982,7 +708,6 @@ body {
982
708
  background: var(--ss-accent-dim);
983
709
  color: var(--ss-accent);
984
710
  border-radius: 4px;
985
- font-family: inherit;
986
711
  }
987
712
  .ss-dash-filter-chip-remove {
988
713
  cursor: pointer;
@@ -991,7 +716,6 @@ body {
991
716
  color: var(--ss-accent);
992
717
  background: none;
993
718
  border: none;
994
- font-family: inherit;
995
719
  padding: 0;
996
720
  }
997
721
  .ss-dash-filter-chip-remove:hover {
@@ -1009,7 +733,6 @@ body {
1009
733
  .ss-dash-saved-select {
1010
734
  padding: 4px 8px;
1011
735
  font-size: 10px;
1012
- font-family: inherit;
1013
736
  color: var(--ss-text);
1014
737
  background: var(--ss-input-bg);
1015
738
  border: 1px solid var(--ss-border);
@@ -1019,200 +742,71 @@ body {
1019
742
  }
1020
743
 
1021
744
  /* ── Email preview ─────────────────────────────────────────────── */
745
+ /* Base email preview / row / status → components.css */
746
+ /* Dashboard override: 16px header padding */
1022
747
  .ss-dash-email-preview {
748
+ --ss-email-px: 16px;
749
+ }
750
+ .ss-dash-email-preview-close {
1023
751
  position: absolute;
1024
- inset: 0;
1025
- display: flex;
1026
- flex-direction: column;
1027
- background: var(--ss-bg);
1028
- z-index: 30;
752
+ top: 8px;
753
+ right: 8px;
754
+ background: none;
755
+ border: none;
756
+ color: var(--ss-dim);
757
+ cursor: pointer;
758
+ font-size: 18px;
759
+ padding: 4px 8px;
760
+ border-radius: 4px;
1029
761
  }
1030
- .ss-dash-email-preview-header {
1031
- display: flex;
1032
- align-items: flex-start;
1033
- justify-content: space-between;
1034
- gap: 12px;
1035
- padding: 10px 16px;
1036
- border-bottom: 1px solid var(--ss-border-dim);
1037
- background: var(--ss-surface-alt);
1038
- flex-shrink: 0;
1039
- }
1040
- .ss-dash-email-preview-meta {
1041
- font-size: 11px;
1042
- color: var(--ss-text-secondary);
1043
- line-height: 1.6;
1044
- overflow: hidden;
1045
- }
1046
- .ss-dash-email-preview-meta strong {
762
+ .ss-dash-email-preview-close:hover {
763
+ background: var(--ss-surface);
1047
764
  color: var(--ss-text);
1048
- font-weight: 600;
1049
- }
1050
- .ss-dash-email-iframe {
1051
- flex: 1;
1052
- border: none;
1053
- background: #fff;
1054
- }
1055
-
1056
- .ss-dash-email-row {
1057
- cursor: pointer;
1058
- }
1059
- .ss-dash-email-row:hover td {
1060
- background: var(--ss-hover-accent) !important;
1061
- }
1062
-
1063
- /* Email status badges reuse .ss-dash-badge base */
1064
- .ss-dash-email-status-sent {
1065
- background: var(--ss-green-bg);
1066
- color: var(--ss-green-fg);
1067
- }
1068
- .ss-dash-email-status-sending {
1069
- background: var(--ss-amber-bg);
1070
- color: var(--ss-amber-fg);
1071
- }
1072
- .ss-dash-email-status-queued {
1073
- background: var(--ss-blue-bg);
1074
- color: var(--ss-blue-fg);
1075
- }
1076
- .ss-dash-email-status-failed {
1077
- background: var(--ss-red-bg);
1078
- color: var(--ss-red-fg);
1079
765
  }
1080
766
 
1081
767
  /* ── Timeline / Waterfall ──────────────────────────────────────── */
768
+ /* Base timeline → components.css */
769
+ /* Dashboard overrides: wider dimensions, faint border, extra bar style */
1082
770
  .ss-dash-tl-detail-header {
1083
- display: flex;
1084
- align-items: center;
1085
- gap: 12px;
1086
- padding: 8px 16px;
1087
- border-bottom: 1px solid var(--ss-border-dim);
1088
- background: var(--ss-surface-alt);
1089
- flex-shrink: 0;
771
+ --ss-tl-detail-gap: 12px;
772
+ --ss-tl-detail-py: 8px;
773
+ --ss-tl-detail-px: 16px;
1090
774
  }
1091
775
 
1092
776
  .ss-dash-tl-waterfall {
777
+ --ss-tl-label-w: 320px;
778
+ --ss-tl-row-h: 26px;
779
+ --ss-tl-bar-h: 14px;
780
+ --ss-tl-track-h: 18px;
781
+ --ss-tl-row-border: var(--ss-border-faint);
782
+ --ss-tl-dur-ml: 6px;
783
+ --ss-tl-legend-gap: 14px;
784
+ --ss-tl-legend-py: 6px;
785
+ --ss-tl-legend-px: 16px;
786
+ --ss-tl-legend-dot-size: 8px;
787
+ --ss-tl-warnings-px: 16px;
788
+ --ss-tl-bar-custom-bg: var(--ss-dim);
1093
789
  padding: 8px 16px;
1094
790
  overflow: auto;
1095
791
  flex: 1;
1096
792
  scrollbar-width: thin;
1097
793
  }
1098
794
 
1099
- .ss-dash-tl-row {
1100
- display: flex;
1101
- align-items: center;
1102
- height: 26px;
1103
- font-size: 11px;
1104
- border-bottom: 1px solid var(--ss-border-faint);
1105
- }
1106
- .ss-dash-tl-row:hover {
1107
- background: var(--ss-hover);
1108
- }
1109
-
1110
- .ss-dash-tl-label {
1111
- width: 320px;
1112
- min-width: 320px;
1113
- padding-right: 8px;
1114
- overflow: hidden;
1115
- text-overflow: ellipsis;
1116
- white-space: nowrap;
1117
- color: var(--ss-text-secondary);
1118
- font-size: 10px;
1119
- }
1120
-
1121
- .ss-dash-tl-track {
1122
- flex: 1;
1123
- position: relative;
1124
- height: 18px;
1125
- }
1126
-
1127
- .ss-dash-tl-bar {
1128
- position: absolute;
1129
- height: 14px;
1130
- top: 2px;
1131
- border-radius: 2px;
1132
- min-width: 2px;
1133
- cursor: default;
1134
- }
795
+ /* Dashboard-specific: request bar has a border */
1135
796
  .ss-dash-tl-bar-request {
1136
797
  background: var(--ss-blue-bg);
1137
798
  border: 1px solid var(--ss-blue-fg);
1138
799
  }
1139
- .ss-dash-tl-bar-middleware {
1140
- background: var(--ss-blue-bg);
1141
- opacity: 0.7;
1142
- }
1143
- .ss-dash-tl-bar-db {
1144
- background: #6d28d9;
1145
- }
1146
- .ss-dash-tl-bar-view {
1147
- background: #0e7490;
1148
- }
1149
- .ss-dash-tl-bar-mail {
1150
- background: #059669;
1151
- }
1152
- .ss-dash-tl-bar-event {
1153
- background: #b45309;
1154
- }
1155
- .ss-dash-tl-bar-custom {
1156
- background: var(--ss-dim);
1157
- }
1158
800
 
1159
801
  .ss-dash-tl-dur {
1160
- font-size: 10px;
1161
- color: var(--ss-dim);
1162
- margin-left: 6px;
1163
- white-space: nowrap;
1164
- font-variant-numeric: tabular-nums;
1165
802
  min-width: 60px;
1166
803
  text-align: right;
1167
804
  }
1168
805
 
1169
806
  .ss-dash-tl-legend {
1170
- display: flex;
1171
- gap: 14px;
1172
- padding: 6px 16px;
1173
- border-bottom: 1px solid var(--ss-border-dim);
1174
- background: var(--ss-surface-alt);
1175
- font-size: 10px;
1176
- color: var(--ss-muted);
1177
- flex-shrink: 0;
1178
- }
1179
- .ss-dash-tl-legend-item {
1180
- display: flex;
1181
- align-items: center;
1182
- gap: 4px;
1183
- }
1184
- .ss-dash-tl-legend-dot {
1185
- width: 8px;
1186
- height: 8px;
1187
- border-radius: 2px;
1188
807
  flex-shrink: 0;
1189
808
  }
1190
809
 
1191
- .ss-dash-tl-warnings {
1192
- margin-top: 12px;
1193
- padding: 8px 16px;
1194
- border-top: 1px solid var(--ss-border-dim);
1195
- }
1196
- .ss-dash-tl-warnings-title {
1197
- font-size: 10px;
1198
- font-weight: 600;
1199
- color: var(--ss-amber-fg);
1200
- text-transform: uppercase;
1201
- letter-spacing: 0.05em;
1202
- margin-bottom: 4px;
1203
- }
1204
- .ss-dash-tl-warning {
1205
- font-size: 11px;
1206
- color: var(--ss-amber-fg);
1207
- padding: 2px 0;
1208
- }
1209
-
1210
- .ss-dash-tl-meta {
1211
- font-size: 10px;
1212
- color: var(--ss-dim);
1213
- margin-left: 8px;
1214
- }
1215
-
1216
810
  /* ── EXPLAIN panel ─────────────────────────────────────────────── */
1217
811
  .ss-dash-explain-row td {
1218
812
  white-space: normal;
@@ -1230,7 +824,6 @@ body {
1230
824
  .ss-dash-explain-btn {
1231
825
  padding: 2px 8px;
1232
826
  font-size: 9px;
1233
- font-family: inherit;
1234
827
  color: var(--ss-purple-fg);
1235
828
  background: var(--ss-purple-bg);
1236
829
  border: none;
@@ -1338,7 +931,7 @@ body {
1338
931
  font-size: 22px;
1339
932
  font-weight: 700;
1340
933
  color: var(--ss-text);
1341
- font-variant-numeric: tabular-nums;
934
+ /* tabular-nums → utilities.css */
1342
935
  line-height: 1.2;
1343
936
  }
1344
937
  .ss-dash-card-value.ss-dash-accent {
@@ -1396,6 +989,11 @@ body {
1396
989
  letter-spacing: 0.04em;
1397
990
  }
1398
991
 
992
+ .ss-dash-chart-area {
993
+ position: relative;
994
+ min-height: 160px;
995
+ }
996
+
1399
997
  .ss-dash-chart {
1400
998
  width: 100%;
1401
999
  height: 220px;
@@ -1410,6 +1008,9 @@ body {
1410
1008
  r 0.15s ease,
1411
1009
  opacity 0.15s ease;
1412
1010
  }
1011
+ .ss-dash-chart-svg .ss-dash-chart-dot-err {
1012
+ fill: var(--ss-red-fg);
1013
+ }
1413
1014
  .ss-dash-chart-svg .ss-dash-chart-hover-zone {
1414
1015
  cursor: crosshair;
1415
1016
  }
@@ -1492,9 +1093,7 @@ body {
1492
1093
  border-bottom: none;
1493
1094
  }
1494
1095
  .ss-dash-secondary-list li > span:first-child {
1495
- overflow: hidden;
1496
- text-overflow: ellipsis;
1497
- white-space: nowrap;
1096
+ /* truncation → utilities.css */
1498
1097
  min-width: 0;
1499
1098
  }
1500
1099
  .ss-dash-secondary-list li:last-child {
@@ -1502,7 +1101,7 @@ body {
1502
1101
  }
1503
1102
  .ss-dash-secondary-list-value {
1504
1103
  color: var(--ss-text-secondary);
1505
- font-variant-numeric: tabular-nums;
1104
+ /* tabular-nums → utilities.css */
1506
1105
  flex-shrink: 0;
1507
1106
  white-space: nowrap;
1508
1107
  }
@@ -1519,10 +1118,21 @@ body {
1519
1118
  flex-shrink: 0;
1520
1119
  }
1521
1120
 
1121
+ .ss-dash-pagination-controls {
1122
+ display: flex;
1123
+ align-items: center;
1124
+ gap: 2px;
1125
+ }
1126
+
1127
+ .ss-dash-page-ellipsis {
1128
+ padding: 4px 6px;
1129
+ color: var(--ss-dim);
1130
+ font-size: 12px;
1131
+ }
1132
+
1522
1133
  .ss-dash-page-btn {
1523
1134
  padding: 3px 10px;
1524
1135
  font-size: 10px;
1525
- font-family: inherit;
1526
1136
  color: var(--ss-muted);
1527
1137
  background: none;
1528
1138
  border: 1px solid var(--ss-border);
@@ -1549,6 +1159,34 @@ body {
1549
1159
  }
1550
1160
 
1551
1161
  /* ── Config viewer ─────────────────────────────────────────────── */
1162
+ /* Config section/toggle/key/val/match/redacted/copy-row/inner-table → components.css */
1163
+ /* Dashboard-specific: toolbar, tabs, env table, wider config sections */
1164
+ .ss-dash-config-toolbar {
1165
+ display: flex;
1166
+ align-items: center;
1167
+ gap: 8px;
1168
+ padding: 8px 16px;
1169
+ border-bottom: 1px solid var(--ss-border-dim);
1170
+ }
1171
+ .ss-dash-config-tab {
1172
+ padding: 4px 12px;
1173
+ font-size: 11px;
1174
+ border: 1px solid var(--ss-border-dim);
1175
+ border-radius: 4px;
1176
+ background: transparent;
1177
+ cursor: pointer;
1178
+ color: var(--ss-muted);
1179
+ white-space: nowrap;
1180
+ }
1181
+ .ss-dash-config-tab:hover {
1182
+ border-color: var(--ss-dim);
1183
+ color: var(--ss-text-secondary);
1184
+ }
1185
+ .ss-dash-config-tab.ss-dash-active {
1186
+ border-color: var(--ss-accent);
1187
+ color: var(--ss-accent);
1188
+ }
1189
+
1552
1190
  .ss-dash-config-table-wrap {
1553
1191
  flex: 1;
1554
1192
  overflow: auto;
@@ -1562,163 +1200,54 @@ body {
1562
1200
  .ss-dash-env-key {
1563
1201
  width: 280px;
1564
1202
  min-width: 280px;
1565
- white-space: nowrap;
1566
- overflow: hidden;
1567
- text-overflow: ellipsis;
1203
+ /* truncation → utilities.css */
1568
1204
  }
1569
1205
  .ss-dash-env-val {
1570
- overflow: hidden;
1571
- text-overflow: ellipsis;
1572
- white-space: nowrap;
1206
+ /* truncation → utilities.css */
1573
1207
  max-width: 0;
1574
1208
  }
1575
1209
 
1210
+ /* Dashboard config overrides: larger header, wider padding, border-dim */
1576
1211
  .ss-dash-config-key {
1577
- color: var(--ss-sql-color);
1578
1212
  font-weight: 500;
1579
1213
  font-size: 11px;
1580
1214
  }
1581
1215
  .ss-dash-config-val {
1582
- color: var(--ss-text-secondary);
1583
1216
  font-size: 11px;
1584
1217
  }
1585
- .ss-dash-config-redacted {
1586
- color: var(--ss-dim);
1587
- font-style: italic;
1588
- }
1589
- .ss-dash-redacted-wrap {
1590
- display: inline-flex;
1591
- align-items: center;
1592
- gap: 4px;
1593
- font-style: italic;
1594
- color: var(--ss-dim);
1595
- }
1596
- .ss-dash-redacted-real {
1597
- font-style: normal;
1598
- color: var(--ss-text-secondary);
1599
- font-family: var(--ss-font-mono);
1600
- font-size: 11px;
1601
- word-break: break-all;
1602
- }
1603
- .ss-dash-redacted-reveal,
1604
- .ss-dash-redacted-copy {
1605
- background: none;
1606
- border: 1px solid var(--ss-border-dim);
1607
- border-radius: 3px;
1608
- padding: 2px 4px;
1609
- cursor: pointer;
1610
- color: var(--ss-dim);
1611
- display: inline-flex;
1612
- align-items: center;
1613
- line-height: 1;
1614
- transition:
1615
- color 0.15s,
1616
- border-color 0.15s;
1617
- }
1618
- .ss-dash-redacted-reveal:hover,
1619
- .ss-dash-redacted-copy:hover {
1620
- color: var(--ss-text-primary);
1621
- border-color: var(--ss-border);
1622
- }
1623
-
1624
1218
  .ss-dash-config-sections {
1219
+ --ss-config-section-border: var(--ss-border-dim);
1220
+ --ss-config-header-gap: 8px;
1221
+ --ss-config-header-py: 9px;
1222
+ --ss-config-header-px: 16px;
1223
+ --ss-config-header-font: 12px;
1224
+ --ss-config-toggle-color: var(--ss-muted);
1625
1225
  flex: 1;
1626
1226
  overflow: auto;
1627
1227
  scrollbar-width: thin;
1628
1228
  scrollbar-color: var(--ss-border) transparent;
1629
1229
  }
1630
-
1631
- .ss-dash-config-section {
1632
- border-bottom: 1px solid var(--ss-border-dim);
1633
- }
1634
-
1635
1230
  .ss-dash-config-section-header {
1636
- display: flex;
1637
- align-items: center;
1638
- gap: 8px;
1639
- padding: 9px 16px;
1640
- cursor: pointer;
1641
1231
  user-select: none;
1642
- font-size: 12px;
1643
1232
  font-weight: 600;
1644
1233
  transition: background 0.1s;
1645
1234
  }
1646
- .ss-dash-config-section-header:hover {
1647
- background: var(--ss-hover);
1648
- }
1649
1235
  .ss-dash-config-section-header.ss-dash-config-leaf {
1650
- cursor: default;
1651
1236
  font-weight: 400;
1652
1237
  }
1653
-
1654
- .ss-dash-config-toggle {
1655
- color: var(--ss-muted);
1656
- font-size: 10px;
1657
- flex-shrink: 0;
1658
- width: 12px;
1659
- text-align: center;
1660
- }
1661
-
1662
1238
  .ss-dash-config-count {
1663
- margin-left: auto;
1664
- font-size: 10px;
1665
- color: var(--ss-dim);
1666
1239
  font-weight: 400;
1667
1240
  }
1668
-
1669
- .ss-dash-config-section-body {
1670
- padding: 0 0 4px 0;
1671
- background: var(--ss-surface-alt);
1672
- }
1673
-
1674
- .ss-dash-config-inner-table {
1675
- font-size: 11px;
1676
- table-layout: fixed;
1677
- }
1678
- .ss-dash-config-inner-table th {
1679
- background: var(--ss-surface-alt);
1680
- }
1681
- .ss-dash-config-inner-table td {
1682
- overflow: hidden;
1683
- text-overflow: ellipsis;
1684
- white-space: nowrap;
1685
- }
1686
- .ss-dash-config-inner-table td:hover {
1687
- white-space: normal;
1688
- word-break: break-all;
1689
- }
1690
-
1691
- .ss-dash-config-match {
1692
- background: var(--ss-amber-bg);
1693
- color: var(--ss-amber-fg);
1694
- border-radius: 2px;
1695
- padding: 0 1px;
1696
- }
1697
-
1698
- .ss-dash-copy-row-btn {
1699
- padding: 2px 6px;
1700
- font-size: 12px;
1701
- color: var(--ss-dim);
1702
- background: none;
1703
- border: 1px solid transparent;
1704
- border-radius: 3px;
1705
- cursor: pointer;
1706
- font-family: inherit;
1707
- line-height: 1;
1708
- opacity: 0;
1709
- transition: opacity 0.1s;
1710
- }
1711
- tr:hover .ss-dash-copy-row-btn {
1712
- opacity: 1;
1241
+ /* Dashboard redacted border override (uses border-dim instead of border) */
1242
+ .ss-dash-redacted-reveal,
1243
+ .ss-dash-redacted-copy {
1244
+ border-color: var(--ss-border-dim);
1713
1245
  }
1714
- .ss-dash-copy-row-btn:hover {
1715
- color: var(--ss-text);
1246
+ .ss-dash-redacted-reveal:hover,
1247
+ .ss-dash-redacted-copy:hover {
1248
+ color: var(--ss-text-primary);
1716
1249
  border-color: var(--ss-border);
1717
1250
  }
1718
- .ss-dash-copy-row-btn.ss-dash-copy-row-ok {
1719
- color: var(--ss-green-fg);
1720
- opacity: 1;
1721
- }
1722
1251
 
1723
1252
  /* ── Cache ─────────────────────────────────────────────────────── */
1724
1253
  .ss-dash-cache-stats {
@@ -1740,7 +1269,8 @@ tr:hover .ss-dash-copy-row-btn {
1740
1269
  }
1741
1270
  .ss-dash-cache-stat-value {
1742
1271
  font-weight: 600;
1743
- font-variant-numeric: tabular-nums;
1272
+ /* tabular-nums → utilities.css */
1273
+ color: var(--ss-text);
1744
1274
  }
1745
1275
 
1746
1276
  .ss-dash-cache-detail {
@@ -1773,13 +1303,13 @@ tr:hover .ss-dash-copy-row-btn {
1773
1303
  }
1774
1304
  .ss-dash-job-stat-value {
1775
1305
  font-weight: 600;
1776
- font-variant-numeric: tabular-nums;
1306
+ /* tabular-nums → utilities.css */
1307
+ color: var(--ss-text);
1777
1308
  }
1778
1309
 
1779
1310
  .ss-dash-retry-btn {
1780
1311
  padding: 2px 8px;
1781
1312
  font-size: 9px;
1782
- font-family: inherit;
1783
1313
  color: var(--ss-amber-fg);
1784
1314
  background: var(--ss-amber-bg);
1785
1315
  border: none;
@@ -1869,12 +1399,15 @@ tr:hover .ss-dash-copy-row-btn {
1869
1399
  color: var(--ss-accent);
1870
1400
  }
1871
1401
  .ss-dash-widget-row-link > span:first-child {
1872
- overflow: hidden;
1873
- text-overflow: ellipsis;
1874
- white-space: nowrap;
1402
+ /* truncation → utilities.css */
1875
1403
  min-width: 0;
1876
1404
  }
1877
1405
 
1406
+ /* ── Utility: dim text ────────────────────────────────────────── */
1407
+ .ss-dim {
1408
+ color: var(--ss-dim);
1409
+ }
1410
+
1878
1411
  .ss-dash-widget-stat {
1879
1412
  display: flex;
1880
1413
  justify-content: space-between;
@@ -1890,5 +1423,35 @@ tr:hover .ss-dash-copy-row-btn {
1890
1423
  }
1891
1424
  .ss-dash-widget-stat-value {
1892
1425
  font-weight: 600;
1893
- font-variant-numeric: tabular-nums;
1426
+ /* tabular-nums → utilities.css */
1427
+ color: var(--ss-text);
1428
+ }
1429
+
1430
+ /* Utility color classes → components.css */
1431
+
1432
+ /* ── Section title (reused by internals + Vue) ────────────────── */
1433
+ .ss-dash-internals-title,
1434
+ .ss-dash-section-title {
1435
+ margin: 20px 0 6px;
1436
+ padding: 0 12px 6px;
1437
+ font-size: 11px;
1438
+ font-weight: 600;
1439
+ text-transform: uppercase;
1440
+ letter-spacing: 0.05em;
1441
+ color: var(--ss-muted);
1442
+ border-bottom: 1px solid var(--ss-border);
1443
+ }
1444
+ .ss-dash-internals-title:first-child,
1445
+ .ss-dash-section-title:first-child {
1446
+ margin-top: 4px;
1447
+ }
1448
+
1449
+ /* Info cards → components.css */
1450
+ /* Status indicator dot → components.css */
1451
+ /* Progress bar → components.css */
1452
+
1453
+ /* ── Tooltip trigger ─────────────────────────────────────────── */
1454
+ .ss-tooltip-trigger {
1455
+ display: inline-flex;
1456
+ align-items: center;
1894
1457
  }