@sudobility/testomniac_ui 0.0.1

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 (266) hide show
  1. package/README.md +83 -0
  2. package/dist/components/bundles/AddToBundleButton.d.ts +8 -0
  3. package/dist/components/bundles/AddToBundleButton.d.ts.map +1 -0
  4. package/dist/components/bundles/AddToBundleButton.js +64 -0
  5. package/dist/components/bundles/AddToBundleButton.js.map +1 -0
  6. package/dist/components/cells/BundleCell.d.ts +10 -0
  7. package/dist/components/cells/BundleCell.d.ts.map +1 -0
  8. package/dist/components/cells/BundleCell.js +8 -0
  9. package/dist/components/cells/BundleCell.js.map +1 -0
  10. package/dist/components/cells/InteractionCell.d.ts +17 -0
  11. package/dist/components/cells/InteractionCell.d.ts.map +1 -0
  12. package/dist/components/cells/InteractionCell.js +13 -0
  13. package/dist/components/cells/InteractionCell.js.map +1 -0
  14. package/dist/components/cells/ListCell.d.ts +29 -0
  15. package/dist/components/cells/ListCell.d.ts.map +1 -0
  16. package/dist/components/cells/ListCell.js +19 -0
  17. package/dist/components/cells/ListCell.js.map +1 -0
  18. package/dist/components/cells/PersonaCell.d.ts +10 -0
  19. package/dist/components/cells/PersonaCell.d.ts.map +1 -0
  20. package/dist/components/cells/PersonaCell.js +7 -0
  21. package/dist/components/cells/PersonaCell.js.map +1 -0
  22. package/dist/components/cells/ScaffoldCell.d.ts +12 -0
  23. package/dist/components/cells/ScaffoldCell.d.ts.map +1 -0
  24. package/dist/components/cells/ScaffoldCell.js +10 -0
  25. package/dist/components/cells/ScaffoldCell.js.map +1 -0
  26. package/dist/components/cells/ScenarioCell.d.ts +12 -0
  27. package/dist/components/cells/ScenarioCell.d.ts.map +1 -0
  28. package/dist/components/cells/ScenarioCell.js +8 -0
  29. package/dist/components/cells/ScenarioCell.js.map +1 -0
  30. package/dist/components/cells/SurfaceCell.d.ts +14 -0
  31. package/dist/components/cells/SurfaceCell.d.ts.map +1 -0
  32. package/dist/components/cells/SurfaceCell.js +23 -0
  33. package/dist/components/cells/SurfaceCell.js.map +1 -0
  34. package/dist/components/cells/index.d.ts +9 -0
  35. package/dist/components/cells/index.d.ts.map +1 -0
  36. package/dist/components/cells/index.js +9 -0
  37. package/dist/components/cells/index.js.map +1 -0
  38. package/dist/components/cells/scaffoldMeta.d.ts +6 -0
  39. package/dist/components/cells/scaffoldMeta.d.ts.map +1 -0
  40. package/dist/components/cells/scaffoldMeta.js +47 -0
  41. package/dist/components/cells/scaffoldMeta.js.map +1 -0
  42. package/dist/components/dashboard/DashboardSidebar.d.ts +6 -0
  43. package/dist/components/dashboard/DashboardSidebar.d.ts.map +1 -0
  44. package/dist/components/dashboard/DashboardSidebar.js +163 -0
  45. package/dist/components/dashboard/DashboardSidebar.js.map +1 -0
  46. package/dist/components/data/DataTable.d.ts +16 -0
  47. package/dist/components/data/DataTable.d.ts.map +1 -0
  48. package/dist/components/data/DataTable.js +54 -0
  49. package/dist/components/data/DataTable.js.map +1 -0
  50. package/dist/components/data/JsonViewer.d.ts +6 -0
  51. package/dist/components/data/JsonViewer.d.ts.map +1 -0
  52. package/dist/components/data/JsonViewer.js +5 -0
  53. package/dist/components/data/JsonViewer.js.map +1 -0
  54. package/dist/components/data/index.d.ts +3 -0
  55. package/dist/components/data/index.d.ts.map +1 -0
  56. package/dist/components/data/index.js +3 -0
  57. package/dist/components/data/index.js.map +1 -0
  58. package/dist/components/forms/SelectField.d.ts +22 -0
  59. package/dist/components/forms/SelectField.d.ts.map +1 -0
  60. package/dist/components/forms/SelectField.js +14 -0
  61. package/dist/components/forms/SelectField.js.map +1 -0
  62. package/dist/components/navigation/BackLink.d.ts +7 -0
  63. package/dist/components/navigation/BackLink.d.ts.map +1 -0
  64. package/dist/components/navigation/BackLink.js +6 -0
  65. package/dist/components/navigation/BackLink.js.map +1 -0
  66. package/dist/components/pages/PagesListView.d.ts +12 -0
  67. package/dist/components/pages/PagesListView.d.ts.map +1 -0
  68. package/dist/components/pages/PagesListView.js +19 -0
  69. package/dist/components/pages/PagesListView.js.map +1 -0
  70. package/dist/components/pages/PagesMapView.d.ts +15 -0
  71. package/dist/components/pages/PagesMapView.d.ts.map +1 -0
  72. package/dist/components/pages/PagesMapView.js +232 -0
  73. package/dist/components/pages/PagesMapView.js.map +1 -0
  74. package/dist/components/scanner/EventLog.d.ts +8 -0
  75. package/dist/components/scanner/EventLog.d.ts.map +1 -0
  76. package/dist/components/scanner/EventLog.js +18 -0
  77. package/dist/components/scanner/EventLog.js.map +1 -0
  78. package/dist/components/scanner/LiveCounters.d.ts +9 -0
  79. package/dist/components/scanner/LiveCounters.d.ts.map +1 -0
  80. package/dist/components/scanner/LiveCounters.js +33 -0
  81. package/dist/components/scanner/LiveCounters.js.map +1 -0
  82. package/dist/components/scanner/PhaseIndicator.d.ts +6 -0
  83. package/dist/components/scanner/PhaseIndicator.d.ts.map +1 -0
  84. package/dist/components/scanner/PhaseIndicator.js +31 -0
  85. package/dist/components/scanner/PhaseIndicator.js.map +1 -0
  86. package/dist/components/scanner/RunSummaryCard.d.ts +12 -0
  87. package/dist/components/scanner/RunSummaryCard.d.ts.map +1 -0
  88. package/dist/components/scanner/RunSummaryCard.js +7 -0
  89. package/dist/components/scanner/RunSummaryCard.js.map +1 -0
  90. package/dist/components/scanner/ScanForm.d.ts +9 -0
  91. package/dist/components/scanner/ScanForm.d.ts.map +1 -0
  92. package/dist/components/scanner/ScanForm.js +31 -0
  93. package/dist/components/scanner/ScanForm.js.map +1 -0
  94. package/dist/components/scanner/ScanProgressPanel.d.ts +16 -0
  95. package/dist/components/scanner/ScanProgressPanel.d.ts.map +1 -0
  96. package/dist/components/scanner/ScanProgressPanel.js +8 -0
  97. package/dist/components/scanner/ScanProgressPanel.js.map +1 -0
  98. package/dist/components/scanner/StatusBadge.d.ts +7 -0
  99. package/dist/components/scanner/StatusBadge.d.ts.map +1 -0
  100. package/dist/components/scanner/StatusBadge.js +65 -0
  101. package/dist/components/scanner/StatusBadge.js.map +1 -0
  102. package/dist/components/scanner/index.d.ts +8 -0
  103. package/dist/components/scanner/index.d.ts.map +1 -0
  104. package/dist/components/scanner/index.js +8 -0
  105. package/dist/components/scanner/index.js.map +1 -0
  106. package/dist/components/scenarios/AddScenarioForm.d.ts +14 -0
  107. package/dist/components/scenarios/AddScenarioForm.d.ts.map +1 -0
  108. package/dist/components/scenarios/AddScenarioForm.js +43 -0
  109. package/dist/components/scenarios/AddScenarioForm.js.map +1 -0
  110. package/dist/components/scripts/ScriptPanel.d.ts +17 -0
  111. package/dist/components/scripts/ScriptPanel.d.ts.map +1 -0
  112. package/dist/components/scripts/ScriptPanel.js +32 -0
  113. package/dist/components/scripts/ScriptPanel.js.map +1 -0
  114. package/dist/components/states/index.d.ts +19 -0
  115. package/dist/components/states/index.d.ts.map +1 -0
  116. package/dist/components/states/index.js +16 -0
  117. package/dist/components/states/index.js.map +1 -0
  118. package/dist/config/priorityConfig.d.ts +12 -0
  119. package/dist/config/priorityConfig.d.ts.map +1 -0
  120. package/dist/config/priorityConfig.js +39 -0
  121. package/dist/config/priorityConfig.js.map +1 -0
  122. package/dist/context/config.d.ts +53 -0
  123. package/dist/context/config.d.ts.map +1 -0
  124. package/dist/context/config.js +32 -0
  125. package/dist/context/config.js.map +1 -0
  126. package/dist/context/routing.d.ts +42 -0
  127. package/dist/context/routing.d.ts.map +1 -0
  128. package/dist/context/routing.js +33 -0
  129. package/dist/context/routing.js.map +1 -0
  130. package/dist/hooks/useDashboardEnvironmentContext.d.ts +15 -0
  131. package/dist/hooks/useDashboardEnvironmentContext.d.ts.map +1 -0
  132. package/dist/hooks/useDashboardEnvironmentContext.js +89 -0
  133. package/dist/hooks/useDashboardEnvironmentContext.js.map +1 -0
  134. package/dist/hooks/useEnvBasePath.d.ts +8 -0
  135. package/dist/hooks/useEnvBasePath.d.ts.map +1 -0
  136. package/dist/hooks/useEnvBasePath.js +12 -0
  137. package/dist/hooks/useEnvBasePath.js.map +1 -0
  138. package/dist/hooks/useLocalizedNavigate.d.ts +12 -0
  139. package/dist/hooks/useLocalizedNavigate.d.ts.map +1 -0
  140. package/dist/hooks/useLocalizedNavigate.js +14 -0
  141. package/dist/hooks/useLocalizedNavigate.js.map +1 -0
  142. package/dist/index.d.ts +49 -0
  143. package/dist/index.d.ts.map +1 -0
  144. package/dist/index.js +66 -0
  145. package/dist/index.js.map +1 -0
  146. package/dist/pages/BundleDetailPage.d.ts +2 -0
  147. package/dist/pages/BundleDetailPage.d.ts.map +1 -0
  148. package/dist/pages/BundleDetailPage.js +155 -0
  149. package/dist/pages/BundleDetailPage.js.map +1 -0
  150. package/dist/pages/BundlesPage.d.ts +2 -0
  151. package/dist/pages/BundlesPage.d.ts.map +1 -0
  152. package/dist/pages/BundlesPage.js +61 -0
  153. package/dist/pages/BundlesPage.js.map +1 -0
  154. package/dist/pages/DashboardOverview.d.ts +2 -0
  155. package/dist/pages/DashboardOverview.d.ts.map +1 -0
  156. package/dist/pages/DashboardOverview.js +179 -0
  157. package/dist/pages/DashboardOverview.js.map +1 -0
  158. package/dist/pages/FindingsListPage.d.ts +2 -0
  159. package/dist/pages/FindingsListPage.d.ts.map +1 -0
  160. package/dist/pages/FindingsListPage.js +160 -0
  161. package/dist/pages/FindingsListPage.js.map +1 -0
  162. package/dist/pages/PageDetailPage.d.ts +2 -0
  163. package/dist/pages/PageDetailPage.d.ts.map +1 -0
  164. package/dist/pages/PageDetailPage.js +120 -0
  165. package/dist/pages/PageDetailPage.js.map +1 -0
  166. package/dist/pages/PageGraphPage.d.ts +3 -0
  167. package/dist/pages/PageGraphPage.d.ts.map +1 -0
  168. package/dist/pages/PageGraphPage.js +72 -0
  169. package/dist/pages/PageGraphPage.js.map +1 -0
  170. package/dist/pages/PageStateDetailPage.d.ts +2 -0
  171. package/dist/pages/PageStateDetailPage.d.ts.map +1 -0
  172. package/dist/pages/PageStateDetailPage.js +69 -0
  173. package/dist/pages/PageStateDetailPage.js.map +1 -0
  174. package/dist/pages/PagesPage.d.ts +2 -0
  175. package/dist/pages/PagesPage.d.ts.map +1 -0
  176. package/dist/pages/PagesPage.js +83 -0
  177. package/dist/pages/PagesPage.js.map +1 -0
  178. package/dist/pages/PatternsPage.d.ts +2 -0
  179. package/dist/pages/PatternsPage.d.ts.map +1 -0
  180. package/dist/pages/PatternsPage.js +102 -0
  181. package/dist/pages/PatternsPage.js.map +1 -0
  182. package/dist/pages/PersonasPage.d.ts +2 -0
  183. package/dist/pages/PersonasPage.d.ts.map +1 -0
  184. package/dist/pages/PersonasPage.js +151 -0
  185. package/dist/pages/PersonasPage.js.map +1 -0
  186. package/dist/pages/RunRedirect.d.ts +2 -0
  187. package/dist/pages/RunRedirect.d.ts.map +1 -0
  188. package/dist/pages/RunRedirect.js +25 -0
  189. package/dist/pages/RunRedirect.js.map +1 -0
  190. package/dist/pages/RunSurfaceRunDetailPage.d.ts +2 -0
  191. package/dist/pages/RunSurfaceRunDetailPage.d.ts.map +1 -0
  192. package/dist/pages/RunSurfaceRunDetailPage.js +38 -0
  193. package/dist/pages/RunSurfaceRunDetailPage.js.map +1 -0
  194. package/dist/pages/RunSurfaceRunsPage.d.ts +2 -0
  195. package/dist/pages/RunSurfaceRunsPage.d.ts.map +1 -0
  196. package/dist/pages/RunSurfaceRunsPage.js +35 -0
  197. package/dist/pages/RunSurfaceRunsPage.js.map +1 -0
  198. package/dist/pages/RunTestInteractionRunDetailPage.d.ts +2 -0
  199. package/dist/pages/RunTestInteractionRunDetailPage.d.ts.map +1 -0
  200. package/dist/pages/RunTestInteractionRunDetailPage.js +55 -0
  201. package/dist/pages/RunTestInteractionRunDetailPage.js.map +1 -0
  202. package/dist/pages/RunTestInteractionRunsPage.d.ts +2 -0
  203. package/dist/pages/RunTestInteractionRunsPage.d.ts.map +1 -0
  204. package/dist/pages/RunTestInteractionRunsPage.js +38 -0
  205. package/dist/pages/RunTestInteractionRunsPage.js.map +1 -0
  206. package/dist/pages/RunnerGraphPage.d.ts +3 -0
  207. package/dist/pages/RunnerGraphPage.d.ts.map +1 -0
  208. package/dist/pages/RunnerGraphPage.js +86 -0
  209. package/dist/pages/RunnerGraphPage.js.map +1 -0
  210. package/dist/pages/ScaffoldDetailPage.d.ts +2 -0
  211. package/dist/pages/ScaffoldDetailPage.d.ts.map +1 -0
  212. package/dist/pages/ScaffoldDetailPage.js +56 -0
  213. package/dist/pages/ScaffoldDetailPage.js.map +1 -0
  214. package/dist/pages/ScaffoldsPage.d.ts +2 -0
  215. package/dist/pages/ScaffoldsPage.d.ts.map +1 -0
  216. package/dist/pages/ScaffoldsPage.js +35 -0
  217. package/dist/pages/ScaffoldsPage.js.map +1 -0
  218. package/dist/pages/ScanProgressPage.d.ts +2 -0
  219. package/dist/pages/ScanProgressPage.d.ts.map +1 -0
  220. package/dist/pages/ScanProgressPage.js +30 -0
  221. package/dist/pages/ScanProgressPage.js.map +1 -0
  222. package/dist/pages/SchedulesPage.d.ts +2 -0
  223. package/dist/pages/SchedulesPage.d.ts.map +1 -0
  224. package/dist/pages/SchedulesPage.js +165 -0
  225. package/dist/pages/SchedulesPage.js.map +1 -0
  226. package/dist/pages/StartScanPage.d.ts +2 -0
  227. package/dist/pages/StartScanPage.d.ts.map +1 -0
  228. package/dist/pages/StartScanPage.js +97 -0
  229. package/dist/pages/StartScanPage.js.map +1 -0
  230. package/dist/pages/TestInteractionDetailPage.d.ts +2 -0
  231. package/dist/pages/TestInteractionDetailPage.d.ts.map +1 -0
  232. package/dist/pages/TestInteractionDetailPage.js +60 -0
  233. package/dist/pages/TestInteractionDetailPage.js.map +1 -0
  234. package/dist/pages/TestInteractionsPage.d.ts +2 -0
  235. package/dist/pages/TestInteractionsPage.d.ts.map +1 -0
  236. package/dist/pages/TestInteractionsPage.js +96 -0
  237. package/dist/pages/TestInteractionsPage.js.map +1 -0
  238. package/dist/pages/TestRunDetailPage.d.ts +2 -0
  239. package/dist/pages/TestRunDetailPage.d.ts.map +1 -0
  240. package/dist/pages/TestRunDetailPage.js +81 -0
  241. package/dist/pages/TestRunDetailPage.js.map +1 -0
  242. package/dist/pages/TestRunsListPage.d.ts +2 -0
  243. package/dist/pages/TestRunsListPage.d.ts.map +1 -0
  244. package/dist/pages/TestRunsListPage.js +18 -0
  245. package/dist/pages/TestRunsListPage.js.map +1 -0
  246. package/dist/pages/TestScenarioDetailPage.d.ts +2 -0
  247. package/dist/pages/TestScenarioDetailPage.d.ts.map +1 -0
  248. package/dist/pages/TestScenarioDetailPage.js +101 -0
  249. package/dist/pages/TestScenarioDetailPage.js.map +1 -0
  250. package/dist/pages/TestScenariosPage.d.ts +2 -0
  251. package/dist/pages/TestScenariosPage.d.ts.map +1 -0
  252. package/dist/pages/TestScenariosPage.js +73 -0
  253. package/dist/pages/TestScenariosPage.js.map +1 -0
  254. package/dist/pages/TestSurfaceDetailPage.d.ts +2 -0
  255. package/dist/pages/TestSurfaceDetailPage.d.ts.map +1 -0
  256. package/dist/pages/TestSurfaceDetailPage.js +33 -0
  257. package/dist/pages/TestSurfaceDetailPage.js.map +1 -0
  258. package/dist/pages/TestSurfacesListPage.d.ts +2 -0
  259. package/dist/pages/TestSurfacesListPage.d.ts.map +1 -0
  260. package/dist/pages/TestSurfacesListPage.js +73 -0
  261. package/dist/pages/TestSurfacesListPage.js.map +1 -0
  262. package/dist/utils/formatDateTime.d.ts +13 -0
  263. package/dist/utils/formatDateTime.d.ts.map +1 -0
  264. package/dist/utils/formatDateTime.js +27 -0
  265. package/dist/utils/formatDateTime.js.map +1 -0
  266. package/package.json +72 -0
@@ -0,0 +1,65 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ const STATUS_COLORS = {
3
+ pending: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300',
4
+ planned: 'bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300',
5
+ running: 'bg-blue-100 text-blue-800 animate-pulse dark:bg-blue-900/30 dark:text-blue-300',
6
+ completed: 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300',
7
+ failed: 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300',
8
+ passed: 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300',
9
+ error: 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300',
10
+ warning: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300',
11
+ };
12
+ const svgProps = {
13
+ xmlns: 'http://www.w3.org/2000/svg',
14
+ viewBox: '0 0 16 16',
15
+ className: 'w-3 h-3 shrink-0',
16
+ stroke: 'currentColor',
17
+ strokeWidth: 2,
18
+ fill: 'none',
19
+ };
20
+ const STATUS_ICONS = {
21
+ // --- Run / execution states ---
22
+ pending: (_jsxs("svg", { ...svgProps, children: [_jsx("circle", { cx: "8", cy: "8", r: "6" }), _jsx("path", { d: "M8 4v4l2.5 1.5", strokeLinecap: "round", strokeLinejoin: "round" })] })),
23
+ planned: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "3", y: "2", width: "10", height: "12", rx: "1" }), _jsx("path", { d: "M6 1v2M10 1v2M3 6h10", strokeLinecap: "round" })] })),
24
+ running: (_jsx("svg", { ...svgProps, className: "w-3 h-3 shrink-0 animate-spin", children: _jsx("circle", { cx: "8", cy: "8", r: "6", strokeDasharray: "28", strokeDashoffset: "8", strokeLinecap: "round" }) })),
25
+ completed: (_jsxs("svg", { ...svgProps, children: [_jsx("circle", { cx: "8", cy: "8", r: "6" }), _jsx("path", { d: "M5.5 8l1.5 2 3.5-4", strokeLinecap: "round", strokeLinejoin: "round" })] })),
26
+ passed: (_jsx("svg", { ...svgProps, children: _jsx("path", { d: "M3 8.5l3 3 7-7.5", strokeLinecap: "round", strokeLinejoin: "round" }) })),
27
+ failed: (_jsxs("svg", { ...svgProps, children: [_jsx("circle", { cx: "8", cy: "8", r: "6" }), _jsx("path", { d: "M5.5 5.5l5 5M10.5 5.5l-5 5", strokeLinecap: "round" })] })),
28
+ error: (_jsxs("svg", { ...svgProps, fill: "currentColor", stroke: "none", children: [_jsx("circle", { cx: "8", cy: "8", r: "7" }), _jsx("text", { x: "8", y: "12", textAnchor: "middle", fontSize: "11", fontWeight: "bold", fill: "currentColor", className: "fill-yellow-100 dark:fill-red-950", children: "!" })] })),
29
+ warning: (_jsxs("svg", { ...svgProps, children: [_jsx("path", { d: "M8 1.5l6.5 12H1.5L8 1.5z", strokeLinejoin: "round" }), _jsx("path", { d: "M8 6v3", strokeLinecap: "round" }), _jsx("circle", { cx: "8", cy: "11.5", r: "0.5", fill: "currentColor", stroke: "none" })] })),
30
+ skipped: (_jsxs("svg", { ...svgProps, children: [_jsx("path", { d: "M4 3l5 5-5 5", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M11 3v10", strokeLinecap: "round" })] })),
31
+ cancelled: (_jsxs("svg", { ...svgProps, children: [_jsx("circle", { cx: "8", cy: "8", r: "6" }), _jsx("path", { d: "M12.24 3.76L3.76 12.24", strokeLinecap: "round" })] })),
32
+ // --- Test types ---
33
+ render: (_jsxs("svg", { ...svgProps, children: [_jsx("path", { d: "M1 8s2.5-5 7-5 7 5 7 5-2.5 5-7 5-7-5-7-5z", strokeLinejoin: "round" }), _jsx("circle", { cx: "8", cy: "8", r: "2" })] })),
34
+ form: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "2", y: "2", width: "12", height: "12", rx: "1.5" }), _jsx("path", { d: "M5 5.5h6M5 8h6M5 10.5h4", strokeLinecap: "round" })] })),
35
+ form_negative: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "2", y: "2", width: "12", height: "12", rx: "1.5" }), _jsx("path", { d: "M5 5.5h6M5 8h3", strokeLinecap: "round" }), _jsx("path", { d: "M10 10l2.5 2.5M12.5 10L10 12.5", strokeLinecap: "round" })] })),
36
+ form_correction: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "2", y: "2", width: "12", height: "12", rx: "1.5" }), _jsx("path", { d: "M5 5.5h6M5 8h3", strokeLinecap: "round" }), _jsx("path", { d: "M9.5 11l1 1.5 2.5-3", strokeLinecap: "round", strokeLinejoin: "round" })] })),
37
+ navigation: (_jsx("svg", { ...svgProps, children: _jsx("path", { d: "M8 1.5l5.5 13-5.5-3.5-5.5 3.5z", strokeLinejoin: "round" }) })),
38
+ interaction: (_jsx("svg", { ...svgProps, children: _jsx("path", { d: "M4 1l0 9.5 2.5-2.5 2 4.5 1.5-.5-2-4.5H11.5L4 1z", strokeLinejoin: "round", fill: "currentColor", strokeWidth: 1 }) })),
39
+ e2e: (_jsxs("svg", { ...svgProps, children: [_jsx("path", { d: "M5 5.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zM11 5.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5z" }), _jsx("path", { d: "M7.5 8h1", strokeLinecap: "round" })] })),
40
+ dialog: (_jsxs("svg", { ...svgProps, children: [_jsx("path", { d: "M2 3h12v8H6l-3 2.5V11H2V3z", strokeLinejoin: "round" }), _jsx("path", { d: "M5 6.5h6M5 8.5h4", strokeLinecap: "round" })] })),
41
+ keyboard: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "1", y: "4", width: "14", height: "9", rx: "1.5" }), _jsx("path", { d: "M4 7h1M7.5 7h1M11 7h1M5 9.5h6", strokeLinecap: "round" })] })),
42
+ variant: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "2", y: "5", width: "12", height: "6", rx: "3" }), _jsx("circle", { cx: "11", cy: "8", r: "2", fill: "currentColor" })] })),
43
+ login: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "5", y: "1.5", width: "6", height: "7", rx: "1.5" }), _jsx("path", { d: "M3 14v-1a5 5 0 0 1 4-4.9", strokeLinecap: "round" }), _jsx("circle", { cx: "8", cy: "5", r: "0" }), _jsx("path", { d: "M8 9v2.5M6.5 10.5h3", strokeLinecap: "round" })] })),
44
+ search: (_jsxs("svg", { ...svgProps, children: [_jsx("circle", { cx: "7", cy: "7", r: "4.5" }), _jsx("path", { d: "M10.5 10.5L14 14", strokeLinecap: "round" })] })),
45
+ scaffold: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "1.5", y: "1.5", width: "13", height: "13", rx: "1" }), _jsx("path", { d: "M1.5 5.5h13M6 5.5v9" })] })),
46
+ 'semantic-journey': (_jsxs("svg", { ...svgProps, children: [_jsx("circle", { cx: "3", cy: "13", r: "1.5", fill: "currentColor" }), _jsx("circle", { cx: "13", cy: "3", r: "1.5", fill: "currentColor" }), _jsx("path", { d: "M4.5 11.5Q8 8 8 8Q8 8 11.5 4.5", strokeLinecap: "round" }), _jsx("circle", { cx: "8", cy: "8", r: "1", fill: "currentColor", stroke: "none" })] })),
47
+ password: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "2.5", y: "7", width: "11", height: "7", rx: "1.5" }), _jsx("path", { d: "M5 7V5a3 3 0 0 1 6 0v2" }), _jsx("circle", { cx: "8", cy: "10.5", r: "1", fill: "currentColor", stroke: "none" })] })),
48
+ // --- Size classes ---
49
+ desktop: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "1.5", y: "2", width: "13", height: "9", rx: "1" }), _jsx("path", { d: "M5.5 14h5M8 11v3", strokeLinecap: "round" })] })),
50
+ mobile: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "4", y: "1", width: "8", height: "14", rx: "1.5" }), _jsx("path", { d: "M7 12.5h2", strokeLinecap: "round" })] })),
51
+ // --- Action types ---
52
+ click: (_jsx("svg", { ...svgProps, children: _jsx("path", { d: "M4 1l0 9.5 2.5-2.5 2 4.5 1.5-.5-2-4.5H11.5L4 1z", strokeLinejoin: "round", fill: "currentColor", strokeWidth: 1 }) })),
53
+ hover: (_jsxs("svg", { ...svgProps, children: [_jsx("path", { d: "M4 1l0 9.5 2.5-2.5H11.5L4 1z", strokeLinejoin: "round" }), _jsx("path", { d: "M6 13h6", strokeLinecap: "round", strokeDasharray: "1.5 1.5" })] })),
54
+ type: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "1", y: "4", width: "14", height: "9", rx: "1.5" }), _jsx("path", { d: "M4 7h1M7.5 7h1M11 7h1M5 9.5h6", strokeLinecap: "round" })] })),
55
+ pressKey: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "3", y: "3", width: "10", height: "10", rx: "2" }), _jsx("path", { d: "M8 6v4M6 8h4", strokeLinecap: "round" })] })),
56
+ select: (_jsxs("svg", { ...svgProps, children: [_jsx("rect", { x: "2", y: "3", width: "12", height: "10", rx: "1.5" }), _jsx("path", { d: "M10 7l-2 2.5L6 7", strokeLinecap: "round", strokeLinejoin: "round" })] })),
57
+ navigate: (_jsx("svg", { ...svgProps, children: _jsx("path", { d: "M3 8h10M9.5 4.5L13 8l-3.5 3.5", strokeLinecap: "round", strokeLinejoin: "round" }) })),
58
+ };
59
+ export function StatusBadge({ status, size = 'sm' }) {
60
+ const colors = STATUS_COLORS[status] ?? 'bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300';
61
+ const sizeClass = size === 'sm' ? 'px-2 py-0.5 text-xs' : 'px-2.5 py-1 text-sm';
62
+ const icon = STATUS_ICONS[status];
63
+ return (_jsxs("span", { className: `inline-flex items-center gap-1 rounded-full font-medium ${colors} ${sizeClass}`, children: [icon, status] }));
64
+ }
65
+ //# sourceMappingURL=StatusBadge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBadge.js","sourceRoot":"","sources":["../../../src/components/scanner/StatusBadge.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { ScanForm } from './ScanForm';
2
+ export { ScanProgressPanel } from './ScanProgressPanel';
3
+ export { PhaseIndicator } from './PhaseIndicator';
4
+ export { LiveCounters } from './LiveCounters';
5
+ export { EventLog } from './EventLog';
6
+ export { StatusBadge } from './StatusBadge';
7
+ export { RunSummaryCard } from './RunSummaryCard';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/scanner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { ScanForm } from './ScanForm';
2
+ export { ScanProgressPanel } from './ScanProgressPanel';
3
+ export { PhaseIndicator } from './PhaseIndicator';
4
+ export { LiveCounters } from './LiveCounters';
5
+ export { EventLog } from './EventLog';
6
+ export { StatusBadge } from './StatusBadge';
7
+ export { RunSummaryCard } from './RunSummaryCard';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/scanner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { NetworkClient } from '@sudobility/types';
2
+ import type { PersonaResponse } from '@sudobility/testomniac_types';
3
+ interface AddScenarioFormProps {
4
+ networkClient: NetworkClient;
5
+ token: string;
6
+ runnerId: number;
7
+ personas: PersonaResponse[];
8
+ defaultStartingPath?: string;
9
+ onCreated: () => void;
10
+ onCancel: () => void;
11
+ }
12
+ export declare function AddScenarioForm({ networkClient, token, runnerId, personas, defaultStartingPath, onCreated, onCancel, }: AddScenarioFormProps): import("react").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=AddScenarioForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddScenarioForm.d.ts","sourceRoot":"","sources":["../../../src/components/scenarios/AddScenarioForm.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAiBpE,UAAU,oBAAoB;IAC5B,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,mBAAyB,EACzB,SAAS,EACT,QAAQ,GACT,EAAE,oBAAoB,+BAwGtB"}
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { useCreateTestScenario } from '@sudobility/testomniac_client';
4
+ import { ActionButton, Button, Card, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Input, TextArea, } from '@sudobility/components';
5
+ import { useTestomniacApi } from '../../context/config';
6
+ export function AddScenarioForm({ networkClient, token, runnerId, personas, defaultStartingPath = '/', onCreated, onCancel, }) {
7
+ const [title, setTitle] = useState('');
8
+ const [startingPath, setStartingPath] = useState(defaultStartingPath);
9
+ const [prompt, setPrompt] = useState('');
10
+ const [personaId, setPersonaId] = useState(undefined);
11
+ const [error, setError] = useState(null);
12
+ const { baseUrl } = useTestomniacApi();
13
+ const { createTestScenario, isCreating } = useCreateTestScenario({
14
+ networkClient,
15
+ baseUrl,
16
+ runnerId,
17
+ token,
18
+ });
19
+ const handleCreate = async () => {
20
+ if (!title.trim() || !prompt.trim())
21
+ return;
22
+ setError(null);
23
+ try {
24
+ await createTestScenario({
25
+ runnerId,
26
+ title: title.trim(),
27
+ startingPath: startingPath.trim(),
28
+ prompt: prompt.trim(),
29
+ personaId,
30
+ });
31
+ setTitle('');
32
+ setStartingPath(defaultStartingPath);
33
+ setPrompt('');
34
+ setPersonaId(undefined);
35
+ onCreated();
36
+ }
37
+ catch (err) {
38
+ setError(err instanceof Error ? err.message : 'Failed to create scenario');
39
+ }
40
+ };
41
+ return (_jsxs(Card, { variant: "bordered", className: "space-y-3", children: [_jsxs("div", { children: [_jsx(Label, { className: "mb-1 block", children: "Title" }), _jsx(Input, { type: "text", value: title, onChange: e => setTitle(e.target.value), placeholder: "e.g., Add dish to cart and checkout", className: "w-full" })] }), _jsxs("div", { children: [_jsx(Label, { className: "mb-1 block", children: "Starting Path" }), _jsx(Input, { type: "text", value: startingPath, onChange: e => setStartingPath(e.target.value), placeholder: "e.g., /store", className: "w-full" })] }), personas.length > 0 && (_jsxs("div", { children: [_jsx(Label, { className: "mb-1 block", children: "Persona" }), _jsxs(Select, { value: personaId !== undefined ? String(personaId) : '', onValueChange: (value) => setPersonaId(value ? Number(value) : undefined), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, { placeholder: "None (optional)" }) }), _jsx(SelectContent, { children: personas.map(persona => (_jsx(SelectItem, { value: String(persona.id), children: persona.title }, persona.id))) })] })] })), _jsxs("div", { children: [_jsx(Label, { className: "mb-1 block", children: "Prompt" }), _jsx(TextArea, { value: prompt, onChange: setPrompt, placeholder: "Describe the test flow in plain English. e.g., Browse the menu, add a pasta dish to the shopping cart, go to checkout, fill in shipping details, and complete the purchase.", rows: 4 })] }), error && _jsx("p", { className: "text-sm text-red-600 dark:text-red-400", children: error }), _jsxs("div", { className: "flex gap-2", children: [_jsx(ActionButton, { variant: "primary", isLoading: isCreating, loadingText: "Creating...", onClick: handleCreate, disabled: !title.trim() || !prompt.trim(), children: "Create Scenario" }), _jsx(Button, { variant: "outline", type: "button", onClick: onCancel, children: "Cancel" })] })] }));
42
+ }
43
+ //# sourceMappingURL=AddScenarioForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddScenarioForm.js","sourceRoot":"","sources":["../../../src/components/scenarios/AddScenarioForm.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type ScriptKind } from '@sudobility/testomniac_client';
2
+ interface ScriptPanelProps {
3
+ kind: ScriptKind;
4
+ id: number | undefined;
5
+ /** Download filename, e.g. `interaction-3553.spec.ts`. */
6
+ filename: string;
7
+ title?: string;
8
+ /** Only fetch when true (e.g. when an accordion is expanded). */
9
+ enabled?: boolean;
10
+ }
11
+ /**
12
+ * Reusable code view for a domain object's complete Playwright script, with a
13
+ * copy button (from the shared CodeBlock) and a "Save Script" download button.
14
+ */
15
+ export declare function ScriptPanel({ kind, id, filename, title, enabled, }: ScriptPanelProps): import("react").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=ScriptPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptPanel.d.ts","sourceRoot":"","sources":["../../../src/components/scripts/ScriptPanel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGjF,UAAU,gBAAgB;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAcD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,EAAE,EACF,QAAQ,EACR,KAA2B,EAC3B,OAAc,GACf,EAAE,gBAAgB,+BAyClB"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CodeBlock, Alert, Button } from '@sudobility/components';
3
+ import { useObjectScript } from '@sudobility/testomniac_client';
4
+ import { useTestomniacApi } from '../../context/config';
5
+ function saveScript(filename, content) {
6
+ const blob = new Blob([content], { type: 'text/plain;charset=utf-8' });
7
+ const url = URL.createObjectURL(blob);
8
+ const anchor = document.createElement('a');
9
+ anchor.href = url;
10
+ anchor.download = filename;
11
+ document.body.appendChild(anchor);
12
+ anchor.click();
13
+ anchor.remove();
14
+ URL.revokeObjectURL(url);
15
+ }
16
+ /**
17
+ * Reusable code view for a domain object's complete Playwright script, with a
18
+ * copy button (from the shared CodeBlock) and a "Save Script" download button.
19
+ */
20
+ export function ScriptPanel({ kind, id, filename, title = 'Playwright Script', enabled = true, }) {
21
+ const { networkClient, token, baseUrl } = useTestomniacApi();
22
+ const { script, isLoading, error } = useObjectScript({
23
+ networkClient,
24
+ baseUrl,
25
+ kind,
26
+ id,
27
+ token: token ?? '',
28
+ enabled,
29
+ });
30
+ return (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("h2", { className: "text-sm font-semibold uppercase tracking-wider text-gray-500 dark:text-gray-400", children: title }), _jsx(Button, { type: "button", variant: "primary", size: "sm", onClick: () => script && saveScript(filename, script), disabled: !script, children: "Save Script" })] }), isLoading && (_jsx("div", { className: "rounded-lg border border-gray-200 bg-gray-50 px-4 py-6 text-center text-sm text-gray-500 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-400", children: "Generating script\u2026" })), !isLoading && error && _jsx(Alert, { variant: "error", description: error }), !isLoading && !error && script && (_jsx(CodeBlock, { code: script, language: "typescript", title: filename, showCopy: true, showHeader: true }))] }));
31
+ }
32
+ //# sourceMappingURL=ScriptPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptPanel.js","sourceRoot":"","sources":["../../../src/components/scripts/ScriptPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAmB,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAYxD,SAAS,UAAU,CAAC,QAAgB,EAAE,OAAe;IACnD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,IAAI,EACJ,EAAE,EACF,QAAQ,EACR,KAAK,GAAG,mBAAmB,EAC3B,OAAO,GAAG,IAAI,GACG;IACjB,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC7D,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC;QACnD,aAAa;QACb,OAAO;QACP,IAAI;QACJ,EAAE;QACF,KAAK,EAAE,KAAK,IAAI,EAAE;QAClB,OAAO;KACR,CAAC,CAAC;IAEH,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,eAAK,SAAS,EAAC,mCAAmC,aAChD,aAAI,SAAS,EAAC,iFAAiF,YAC5F,KAAK,GACH,EACL,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,IAAI,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,EACrD,QAAQ,EAAE,CAAC,MAAM,4BAGV,IACL,EAEL,SAAS,IAAI,CACZ,cAAK,SAAS,EAAC,mJAAmJ,wCAE5J,CACP,EAEA,CAAC,SAAS,IAAI,KAAK,IAAI,KAAC,KAAK,IAAC,OAAO,EAAC,OAAO,EAAC,WAAW,EAAE,KAAK,GAAI,EAEpE,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,CACjC,KAAC,SAAS,IAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAC,YAAY,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,QAAC,UAAU,SAAG,CACvF,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { LoadingState, EmptyState } from '@sudobility/components';
2
+ /**
3
+ * Shared list/detail page state components.
4
+ *
5
+ * `LoadingState` and `EmptyState` are re-exported from the shared design system
6
+ * (`@sudobility/components`) so every page renders consistent feedback states
7
+ * instead of hand-rolling the same markup. `ErrorState` is app-local because
8
+ * the design system does not yet ship an equivalent.
9
+ */
10
+ export { LoadingState, EmptyState };
11
+ interface ErrorStateProps {
12
+ /** The error message to display (rendered after an `Error:` prefix). */
13
+ message: string;
14
+ /** Wrapper padding/className. Defaults to `p-6` for full-page usage. */
15
+ className?: string;
16
+ }
17
+ /** Full-width error banner used by list and detail pages. */
18
+ export declare function ErrorState({ message, className }: ErrorStateProps): import("react").JSX.Element;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/states/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAElE;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AAEpC,UAAU,eAAe;IACvB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,6DAA6D;AAC7D,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,SAAiB,EAAE,EAAE,eAAe,+BAMzE"}
@@ -0,0 +1,16 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { LoadingState, EmptyState } from '@sudobility/components';
3
+ /**
4
+ * Shared list/detail page state components.
5
+ *
6
+ * `LoadingState` and `EmptyState` are re-exported from the shared design system
7
+ * (`@sudobility/components`) so every page renders consistent feedback states
8
+ * instead of hand-rolling the same markup. `ErrorState` is app-local because
9
+ * the design system does not yet ship an equivalent.
10
+ */
11
+ export { LoadingState, EmptyState };
12
+ /** Full-width error banner used by list and detail pages. */
13
+ export function ErrorState({ message, className = 'p-6' }) {
14
+ return (_jsx("div", { className: className, children: _jsxs("div", { className: "text-center text-red-600 dark:text-red-400 py-8", children: ["Error: ", message] }) }));
15
+ }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/states/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAElE;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AASpC,6DAA6D;AAC7D,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,EAAmB;IACxE,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,YACvB,eAAK,SAAS,EAAC,iDAAiD,wBAAS,OAAO,IAAO,GACnF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface PriorityConfig {
2
+ label: string;
3
+ shortLabel: string;
4
+ className: string;
5
+ chipClassName: string;
6
+ }
7
+ /**
8
+ * Returns the full presentation config for a priority level, falling back to
9
+ * P3 (Minor) styling for unknown levels — matching the previous inline maps.
10
+ */
11
+ export declare function getPriorityConfig(priority: number): PriorityConfig;
12
+ //# sourceMappingURL=priorityConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priorityConfig.d.ts","sourceRoot":"","sources":["../../src/config/priorityConfig.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAQlE"}
@@ -0,0 +1,39 @@
1
+ import { priorityLabel, priorityShortLabel } from '@sudobility/testomniac_lib';
2
+ /**
3
+ * Presentation config for finding/issue priorities.
4
+ *
5
+ * The domain vocabulary (labels, levels, bands) lives in `testomniac_lib`; this
6
+ * module owns only the Tailwind color classes and combines them with the lib
7
+ * labels so list/detail pages share a single source instead of re-declaring the
8
+ * `PRIORITY_CONFIG` map.
9
+ */
10
+ /** Badge background/text classes per priority level. */
11
+ const PRIORITY_CLASSNAMES = {
12
+ 0: 'bg-red-100 text-red-800 dark:bg-red-900/50 dark:text-red-200',
13
+ 1: 'bg-orange-100 text-orange-800 dark:bg-orange-900/50 dark:text-orange-200',
14
+ 2: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/50 dark:text-yellow-200',
15
+ 3: 'bg-blue-100 text-blue-800 dark:bg-blue-900/50 dark:text-blue-200',
16
+ 4: 'bg-gray-100 text-gray-700 dark:bg-gray-700/50 dark:text-gray-200',
17
+ };
18
+ /** Outlined "chip" classes (with border) per priority level. */
19
+ const PRIORITY_CHIP_CLASSNAMES = {
20
+ 0: 'bg-red-100 text-red-700 border-red-200 dark:bg-red-900/40 dark:text-red-300 dark:border-red-800',
21
+ 1: 'bg-orange-100 text-orange-700 border-orange-200 dark:bg-orange-900/40 dark:text-orange-300 dark:border-orange-800',
22
+ 2: 'bg-yellow-100 text-yellow-700 border-yellow-200 dark:bg-yellow-900/40 dark:text-yellow-300 dark:border-yellow-800',
23
+ 3: 'bg-blue-100 text-blue-700 border-blue-200 dark:bg-blue-900/40 dark:text-blue-300 dark:border-blue-800',
24
+ 4: 'bg-gray-100 text-gray-600 border-gray-200 dark:bg-gray-700/40 dark:text-gray-300 dark:border-gray-600',
25
+ };
26
+ /**
27
+ * Returns the full presentation config for a priority level, falling back to
28
+ * P3 (Minor) styling for unknown levels — matching the previous inline maps.
29
+ */
30
+ export function getPriorityConfig(priority) {
31
+ const level = priority in PRIORITY_CLASSNAMES ? priority : 3;
32
+ return {
33
+ label: priorityLabel(level),
34
+ shortLabel: priorityShortLabel(level),
35
+ className: PRIORITY_CLASSNAMES[level],
36
+ chipClassName: PRIORITY_CHIP_CLASSNAMES[level],
37
+ };
38
+ }
39
+ //# sourceMappingURL=priorityConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priorityConfig.js","sourceRoot":"","sources":["../../src/config/priorityConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAE/E;;;;;;;GAOG;AAEH,wDAAwD;AACxD,MAAM,mBAAmB,GAA2B;IAClD,CAAC,EAAE,8DAA8D;IACjE,CAAC,EAAE,0EAA0E;IAC7E,CAAC,EAAE,0EAA0E;IAC7E,CAAC,EAAE,kEAAkE;IACrE,CAAC,EAAE,kEAAkE;CACtE,CAAC;AAEF,gEAAgE;AAChE,MAAM,wBAAwB,GAA2B;IACvD,CAAC,EAAE,iGAAiG;IACpG,CAAC,EAAE,mHAAmH;IACtH,CAAC,EAAE,mHAAmH;IACtH,CAAC,EAAE,uGAAuG;IAC1G,CAAC,EAAE,uGAAuG;CAC3G,CAAC;AASF;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,KAAK,GAAG,QAAQ,IAAI,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO;QACL,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;QAC3B,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC;QACrC,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC;QACrC,aAAa,EAAE,wBAAwB,CAAC,KAAK,CAAC;KAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { type ComponentType, type ReactNode } from 'react';
2
+ import type { NetworkClient } from '@sudobility/types';
3
+ /**
4
+ * Props accepted by a host-provided SEO head component. Mirrors the shape the
5
+ * Testomniac pages pass; the host decides how (or whether) to render it.
6
+ */
7
+ export interface SEOHeadProps {
8
+ title: string;
9
+ description: string;
10
+ keywords?: string[];
11
+ ogType?: 'website' | 'article';
12
+ noIndex?: boolean;
13
+ structuredData?: Record<string, unknown> | Record<string, unknown>[];
14
+ }
15
+ /**
16
+ * Host-supplied configuration the dashboard UI needs but does not own:
17
+ * the network client, auth token, API base URL, and an optional SEO component.
18
+ *
19
+ * This decouples the library from any specific app shell (e.g. the web app's
20
+ * `building_blocks` `useApi` + react-helmet, or the extension's own client).
21
+ */
22
+ export interface TestomniacUiConfig {
23
+ networkClient: NetworkClient;
24
+ /** Firebase ID token; empty string when unauthenticated. */
25
+ token: string;
26
+ /** API base URL, e.g. `https://api.testomniac.com`. */
27
+ apiUrl: string;
28
+ /**
29
+ * Optional host SEO head (e.g. a Helmet-based component in the web app).
30
+ * When omitted (e.g. in the extension), {@link SEOHead} renders nothing.
31
+ */
32
+ SeoHead?: ComponentType<SEOHeadProps>;
33
+ }
34
+ export declare function TestomniacUiProvider({ children, networkClient, token, apiUrl, SeoHead, }: TestomniacUiConfig & {
35
+ children: ReactNode;
36
+ }): import("react").JSX.Element;
37
+ export declare function useTestomniacUiConfig(): TestomniacUiConfig;
38
+ /**
39
+ * Returns `{ networkClient, token, baseUrl }` ready to pass to
40
+ * `@sudobility/testomniac_client` / `_lib` hooks. Replaces the app's
41
+ * `useApi()` + `CONSTANTS.API_URL`.
42
+ */
43
+ export declare function useTestomniacApi(): {
44
+ networkClient: NetworkClient;
45
+ token: string;
46
+ baseUrl: string;
47
+ };
48
+ /**
49
+ * Library SEO component. Delegates to the host-provided `SeoHead`, or renders
50
+ * nothing when the host doesn't supply one (e.g. the extension sidepanel).
51
+ */
52
+ export declare function SEOHead(props: SEOHeadProps): import("react").JSX.Element | null;
53
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/context/config.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC/F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACtE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;CACvC;AAID,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,aAAa,EACb,KAAK,EACL,MAAM,EACN,OAAO,GACR,EAAE,kBAAkB,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAU9C;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAM1D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAGA;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,sCAG1C"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useMemo } from 'react';
3
+ const TestomniacUiConfigContext = createContext(null);
4
+ export function TestomniacUiProvider({ children, networkClient, token, apiUrl, SeoHead, }) {
5
+ const value = useMemo(() => ({ networkClient, token, apiUrl, SeoHead }), [networkClient, token, apiUrl, SeoHead]);
6
+ return (_jsx(TestomniacUiConfigContext.Provider, { value: value, children: children }));
7
+ }
8
+ export function useTestomniacUiConfig() {
9
+ const ctx = useContext(TestomniacUiConfigContext);
10
+ if (!ctx) {
11
+ throw new Error('Testomniac UI: components must be rendered inside <TestomniacUiProvider>');
12
+ }
13
+ return ctx;
14
+ }
15
+ /**
16
+ * Returns `{ networkClient, token, baseUrl }` ready to pass to
17
+ * `@sudobility/testomniac_client` / `_lib` hooks. Replaces the app's
18
+ * `useApi()` + `CONSTANTS.API_URL`.
19
+ */
20
+ export function useTestomniacApi() {
21
+ const { networkClient, token, apiUrl } = useTestomniacUiConfig();
22
+ return { networkClient, token, baseUrl: apiUrl };
23
+ }
24
+ /**
25
+ * Library SEO component. Delegates to the host-provided `SeoHead`, or renders
26
+ * nothing when the host doesn't supply one (e.g. the extension sidepanel).
27
+ */
28
+ export function SEOHead(props) {
29
+ const { SeoHead } = useTestomniacUiConfig();
30
+ return SeoHead ? _jsx(SeoHead, { ...props }) : null;
31
+ }
32
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/context/config.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAsC,MAAM,OAAO,CAAC;AAoC/F,MAAM,yBAAyB,GAAG,aAAa,CAA4B,IAAI,CAAC,CAAC;AAEjF,MAAM,UAAU,oBAAoB,CAAC,EACnC,QAAQ,EACR,aAAa,EACb,KAAK,EACL,MAAM,EACN,OAAO,GACsC;IAC7C,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EACjD,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CACxC,CAAC;IACF,OAAO,CACL,KAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAC7C,QAAQ,GAC0B,CACtC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,GAAG,GAAG,UAAU,CAAC,yBAAyB,CAAC,CAAC;IAClD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAK9B,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;IACjE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAC5C,OAAO,OAAO,CAAC,CAAC,CAAC,KAAC,OAAO,OAAK,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface NavigateOptions {
3
+ replace?: boolean;
4
+ }
5
+ /**
6
+ * Host-supplied routing surface. The library never imports `react-router-dom`;
7
+ * the host (web app via react-router, extension via its own state) provides the
8
+ * current route params and a language-aware `navigate`.
9
+ */
10
+ export interface TestomniacRouting {
11
+ /** Current route params (entitySlug, envId, runId, …). */
12
+ params: Record<string, string | undefined>;
13
+ /** Current path (used for active-link highlighting). May include the language prefix. */
14
+ pathname: string;
15
+ /**
16
+ * Navigate to an app-relative path (no language prefix). The host is
17
+ * responsible for prepending the active language, e.g. `/en${path}`.
18
+ */
19
+ navigate: (path: string, options?: NavigateOptions) => void;
20
+ /** Active language code (defaults to `'en'`). */
21
+ currentLanguage: string;
22
+ /** Optional: switch the active language while staying on the page. */
23
+ switchLanguage?: (lang: string) => void;
24
+ }
25
+ export declare function RoutingProvider({ children, params, pathname, navigate, currentLanguage, switchLanguage, }: TestomniacRouting & {
26
+ children: ReactNode;
27
+ }): import("react").JSX.Element;
28
+ export declare function useTestomniacRouting(): TestomniacRouting;
29
+ /**
30
+ * Drop-in replacement for react-router's `useParams`, backed by the host
31
+ * routing context.
32
+ */
33
+ export declare function useRouteParams<T extends Record<string, string | undefined> = Record<string, string | undefined>>(): T;
34
+ /**
35
+ * Declarative redirect — router-agnostic replacement for react-router's
36
+ * `<Navigate to=… replace />`. Navigates (via the host context) on mount.
37
+ */
38
+ export declare function Redirect({ to, replace }: {
39
+ to: string;
40
+ replace?: boolean;
41
+ }): null;
42
+ //# sourceMappingURL=routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/context/routing.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtF,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5D,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAID,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,cAAc,GACf,EAAE,iBAAiB,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAM7C;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,CAMxD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KAC9E,CAAC,CAEL;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAc,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,QAMjF"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useEffect, useMemo } from 'react';
3
+ const RoutingContext = createContext(null);
4
+ export function RoutingProvider({ children, params, pathname, navigate, currentLanguage, switchLanguage, }) {
5
+ const value = useMemo(() => ({ params, pathname, navigate, currentLanguage, switchLanguage }), [params, pathname, navigate, currentLanguage, switchLanguage]);
6
+ return _jsx(RoutingContext.Provider, { value: value, children: children });
7
+ }
8
+ export function useTestomniacRouting() {
9
+ const ctx = useContext(RoutingContext);
10
+ if (!ctx) {
11
+ throw new Error('Testomniac UI: components must be rendered inside <RoutingProvider>');
12
+ }
13
+ return ctx;
14
+ }
15
+ /**
16
+ * Drop-in replacement for react-router's `useParams`, backed by the host
17
+ * routing context.
18
+ */
19
+ export function useRouteParams() {
20
+ return useTestomniacRouting().params;
21
+ }
22
+ /**
23
+ * Declarative redirect — router-agnostic replacement for react-router's
24
+ * `<Navigate to=… replace />`. Navigates (via the host context) on mount.
25
+ */
26
+ export function Redirect({ to, replace = true }) {
27
+ const { navigate } = useTestomniacRouting();
28
+ useEffect(() => {
29
+ navigate(to, { replace });
30
+ }, [to, replace, navigate]);
31
+ return null;
32
+ }
33
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/context/routing.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAC;AA2BtF,MAAM,cAAc,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAErE,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,cAAc,GAC8B;IAC5C,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,EACvE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,CAC9D,CAAC;IACF,OAAO,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA2B,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc;IAG5B,OAAO,oBAAoB,EAAE,CAAC,MAAW,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,EAAqC;IAChF,MAAM,EAAE,QAAQ,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare function useDashboardEnvironmentContext(): {
2
+ entitySlug: string;
3
+ envId: number;
4
+ environment: import("@sudobility/testomniac_types").TestEnvironmentResponse | null;
5
+ product: import("@sudobility/testomniac_types").ProductSummaryResponse | null;
6
+ productId: number;
7
+ latestRun: import("@sudobility/testomniac_types").TestRunResponse;
8
+ environmentRuns: import("@sudobility/testomniac_types").TestRunResponse[];
9
+ primaryRunner: import("@sudobility/testomniac_types").RunnerResponse | null;
10
+ token: string;
11
+ networkClient: import("@sudobility/types").NetworkClient;
12
+ isLoading: boolean;
13
+ error: string | null;
14
+ };
15
+ //# sourceMappingURL=useDashboardEnvironmentContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDashboardEnvironmentContext.d.ts","sourceRoot":"","sources":["../../src/hooks/useDashboardEnvironmentContext.ts"],"names":[],"mappings":"AAWA,wBAAgB,8BAA8B;;;;;;;;;;;;;EAiH7C"}