@memberjunction/ng-core-entity-forms 3.4.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1334) hide show
  1. package/README.md +85 -2
  2. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts +13 -25
  3. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts.map +1 -1
  4. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +33 -379
  5. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
  6. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  7. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +15 -14
  8. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  9. package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js +1 -0
  10. package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js.map +1 -1
  11. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
  12. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +14 -13
  13. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
  14. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +45 -15
  15. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  16. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1443 -1267
  17. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  18. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
  19. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +15 -14
  20. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
  21. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
  22. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +12 -12
  23. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  24. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
  25. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +9 -8
  26. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  27. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
  28. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +14 -14
  29. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  30. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
  31. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +12 -11
  32. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
  33. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  34. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +18 -16
  35. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  36. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +3 -8
  37. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  38. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +107 -77
  39. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  40. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts.map +1 -1
  41. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +9 -9
  42. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  43. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +1 -8
  44. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  45. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +599 -587
  46. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  47. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +11 -10
  48. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
  49. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +1 -6
  50. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
  51. package/dist/lib/custom/Actions/action-execution-log-form.component.js +20 -21
  52. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  53. package/dist/lib/custom/Actions/action-form.component.d.ts +2 -6
  54. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  55. package/dist/lib/custom/Actions/action-form.component.js +64 -59
  56. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  57. package/dist/lib/custom/Entities/entity-form.component.d.ts +73 -1
  58. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  59. package/dist/lib/custom/Entities/entity-form.component.js +1592 -914
  60. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  61. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +15 -1
  62. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
  63. package/dist/lib/custom/EntityActions/entityaction.form.component.js +51 -30
  64. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  65. package/dist/lib/custom/Lists/list-form.component.d.ts +1 -1
  66. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  67. package/dist/lib/custom/Lists/list-form.component.js +437 -448
  68. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  69. package/dist/lib/custom/Queries/query-category-dialog.component.d.ts.map +1 -1
  70. package/dist/lib/custom/Queries/query-category-dialog.component.js +28 -29
  71. package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
  72. package/dist/lib/custom/Queries/query-form.component.d.ts +1 -3
  73. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  74. package/dist/lib/custom/Queries/query-form.component.js +189 -188
  75. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  76. package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -1
  77. package/dist/lib/custom/Queries/query-run-dialog.component.js +90 -89
  78. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  79. package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
  80. package/dist/lib/custom/Templates/template-param-dialog.component.js +76 -75
  81. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  82. package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
  83. package/dist/lib/custom/Templates/template-params-grid.component.js +98 -93
  84. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
  85. package/dist/lib/custom/Templates/templates-form.component.d.ts +0 -1
  86. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  87. package/dist/lib/custom/Templates/templates-form.component.js +28 -39
  88. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  89. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts +0 -1
  90. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
  91. package/dist/lib/custom/Tests/entity-link-pill.component.js +16 -18
  92. package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
  93. package/dist/lib/custom/Tests/test-form.component.d.ts +7 -13
  94. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  95. package/dist/lib/custom/Tests/test-form.component.js +440 -423
  96. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  97. package/dist/lib/custom/Tests/test-rubric-form.component.d.ts +0 -7
  98. package/dist/lib/custom/Tests/test-rubric-form.component.d.ts.map +1 -1
  99. package/dist/lib/custom/Tests/test-rubric-form.component.js +11 -20
  100. package/dist/lib/custom/Tests/test-rubric-form.component.js.map +1 -1
  101. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +0 -7
  102. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -1
  103. package/dist/lib/custom/Tests/test-run-feedback-form.component.js +18 -25
  104. package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
  105. package/dist/lib/custom/Tests/test-run-form.component.d.ts +5 -12
  106. package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
  107. package/dist/lib/custom/Tests/test-run-form.component.js +423 -410
  108. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  109. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +7 -13
  110. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  111. package/dist/lib/custom/Tests/test-suite-form.component.js +665 -642
  112. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  113. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +7 -13
  114. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
  115. package/dist/lib/custom/Tests/test-suite-run-form.component.js +635 -606
  116. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  117. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
  118. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +240 -243
  119. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  120. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
  121. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +42 -40
  122. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  123. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
  124. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +37 -36
  125. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
  126. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  127. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +68 -78
  128. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  129. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -1
  130. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +6 -6
  131. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
  132. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +5 -10
  133. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  134. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +310 -292
  135. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  136. package/dist/lib/custom/custom-forms.module.d.ts +50 -54
  137. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  138. package/dist/lib/custom/custom-forms.module.js +29 -63
  139. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  140. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  141. package/dist/lib/custom/shared/entity-selector-dialog.component.js +85 -82
  142. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  143. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.d.ts +0 -1
  144. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.d.ts.map +1 -1
  145. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js +36 -41
  146. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js.map +1 -1
  147. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.d.ts +0 -1
  148. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.d.ts.map +1 -1
  149. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +252 -267
  150. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
  151. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.d.ts +0 -1
  152. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.d.ts.map +1 -1
  153. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js +34 -42
  154. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js.map +1 -1
  155. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.d.ts +0 -1
  156. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.d.ts.map +1 -1
  157. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js +19 -27
  158. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js.map +1 -1
  159. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.d.ts +0 -1
  160. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.d.ts.map +1 -1
  161. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js +26 -32
  162. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js.map +1 -1
  163. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.d.ts +0 -1
  164. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.d.ts.map +1 -1
  165. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js +43 -47
  166. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js.map +1 -1
  167. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.d.ts +0 -1
  168. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.d.ts.map +1 -1
  169. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js +48 -66
  170. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js.map +1 -1
  171. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.d.ts +0 -1
  172. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.d.ts.map +1 -1
  173. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js +26 -30
  174. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js.map +1 -1
  175. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.d.ts +0 -1
  176. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.d.ts.map +1 -1
  177. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js +24 -30
  178. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js.map +1 -1
  179. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.d.ts +0 -1
  180. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.d.ts.map +1 -1
  181. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js +20 -26
  182. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js.map +1 -1
  183. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.d.ts +0 -1
  184. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.d.ts.map +1 -1
  185. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js +44 -64
  186. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js.map +1 -1
  187. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.d.ts +0 -1
  188. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.d.ts.map +1 -1
  189. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js +22 -26
  190. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js.map +1 -1
  191. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.d.ts +0 -1
  192. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.d.ts.map +1 -1
  193. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js +27 -35
  194. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js.map +1 -1
  195. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.d.ts +0 -1
  196. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.d.ts.map +1 -1
  197. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js +25 -35
  198. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js.map +1 -1
  199. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.d.ts +0 -1
  200. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.d.ts.map +1 -1
  201. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js +29 -35
  202. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js.map +1 -1
  203. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.d.ts +0 -1
  204. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.d.ts.map +1 -1
  205. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js +27 -35
  206. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js.map +1 -1
  207. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.d.ts +0 -1
  208. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.d.ts.map +1 -1
  209. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +121 -150
  210. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
  211. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.d.ts +0 -1
  212. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.d.ts.map +1 -1
  213. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js +37 -47
  214. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js.map +1 -1
  215. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.d.ts +0 -1
  216. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.d.ts.map +1 -1
  217. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js +52 -59
  218. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js.map +1 -1
  219. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts +0 -1
  220. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts.map +1 -1
  221. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js +55 -66
  222. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js.map +1 -1
  223. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts +0 -1
  224. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts.map +1 -1
  225. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js +24 -30
  226. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js.map +1 -1
  227. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.d.ts +0 -1
  228. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.d.ts.map +1 -1
  229. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js +37 -42
  230. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js.map +1 -1
  231. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.d.ts +0 -1
  232. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.d.ts.map +1 -1
  233. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js +42 -47
  234. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js.map +1 -1
  235. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.d.ts +0 -1
  236. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.d.ts.map +1 -1
  237. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +86 -97
  238. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
  239. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.d.ts +0 -1
  240. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.d.ts.map +1 -1
  241. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js +23 -27
  242. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js.map +1 -1
  243. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.d.ts +0 -1
  244. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.d.ts.map +1 -1
  245. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js +19 -29
  246. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js.map +1 -1
  247. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.d.ts +0 -1
  248. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.d.ts.map +1 -1
  249. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js +70 -73
  250. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js.map +1 -1
  251. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.d.ts +0 -1
  252. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.d.ts.map +1 -1
  253. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +179 -184
  254. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
  255. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.d.ts +0 -1
  256. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.d.ts.map +1 -1
  257. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js +21 -27
  258. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js.map +1 -1
  259. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.d.ts +0 -1
  260. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.d.ts.map +1 -1
  261. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js +23 -29
  262. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js.map +1 -1
  263. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.d.ts +0 -1
  264. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.d.ts.map +1 -1
  265. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js +33 -43
  266. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js.map +1 -1
  267. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.d.ts +0 -1
  268. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.d.ts.map +1 -1
  269. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js +31 -37
  270. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js.map +1 -1
  271. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.d.ts +0 -1
  272. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.d.ts.map +1 -1
  273. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js +21 -24
  274. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js.map +1 -1
  275. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.d.ts +0 -1
  276. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.d.ts.map +1 -1
  277. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js +22 -25
  278. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js.map +1 -1
  279. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.d.ts +0 -1
  280. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.d.ts.map +1 -1
  281. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +35 -42
  282. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
  283. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.d.ts +0 -1
  284. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.d.ts.map +1 -1
  285. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js +39 -48
  286. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js.map +1 -1
  287. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.d.ts +0 -1
  288. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.d.ts.map +1 -1
  289. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +161 -174
  290. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
  291. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.d.ts +0 -1
  292. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.d.ts.map +1 -1
  293. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js +35 -40
  294. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js.map +1 -1
  295. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.d.ts +0 -1
  296. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.d.ts.map +1 -1
  297. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js +44 -55
  298. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js.map +1 -1
  299. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.d.ts +0 -1
  300. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.d.ts.map +1 -1
  301. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +134 -163
  302. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
  303. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.d.ts +0 -1
  304. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.d.ts.map +1 -1
  305. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js +43 -52
  306. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js.map +1 -1
  307. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.d.ts +0 -1
  308. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.d.ts.map +1 -1
  309. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js +21 -24
  310. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js.map +1 -1
  311. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.d.ts +0 -1
  312. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.d.ts.map +1 -1
  313. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js +36 -50
  314. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js.map +1 -1
  315. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.d.ts +0 -1
  316. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.d.ts.map +1 -1
  317. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +76 -81
  318. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
  319. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.d.ts +0 -1
  320. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.d.ts.map +1 -1
  321. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js +25 -31
  322. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js.map +1 -1
  323. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.d.ts +0 -1
  324. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.d.ts.map +1 -1
  325. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js +28 -31
  326. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js.map +1 -1
  327. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.d.ts +0 -1
  328. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.d.ts.map +1 -1
  329. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.js +37 -40
  330. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.js.map +1 -1
  331. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.d.ts +0 -1
  332. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.d.ts.map +1 -1
  333. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.js +24 -30
  334. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.js.map +1 -1
  335. package/dist/lib/generated/Entities/APIKey/apikey.form.component.d.ts +0 -1
  336. package/dist/lib/generated/Entities/APIKey/apikey.form.component.d.ts.map +1 -1
  337. package/dist/lib/generated/Entities/APIKey/apikey.form.component.js +49 -56
  338. package/dist/lib/generated/Entities/APIKey/apikey.form.component.js.map +1 -1
  339. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.d.ts +0 -1
  340. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.d.ts.map +1 -1
  341. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.js +17 -23
  342. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.js.map +1 -1
  343. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.d.ts +0 -1
  344. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.d.ts.map +1 -1
  345. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.js +24 -30
  346. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.js.map +1 -1
  347. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.d.ts +0 -1
  348. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.d.ts.map +1 -1
  349. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.js +30 -36
  350. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.js.map +1 -1
  351. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.d.ts +0 -1
  352. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.d.ts.map +1 -1
  353. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js +47 -52
  354. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js.map +1 -1
  355. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.d.ts +0 -1
  356. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.d.ts.map +1 -1
  357. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js +32 -38
  358. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js.map +1 -1
  359. package/dist/lib/generated/Entities/Action/action.form.component.d.ts +0 -1
  360. package/dist/lib/generated/Entities/Action/action.form.component.d.ts.map +1 -1
  361. package/dist/lib/generated/Entities/Action/action.form.component.js +130 -141
  362. package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
  363. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.d.ts +0 -1
  364. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.d.ts.map +1 -1
  365. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js +19 -25
  366. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js.map +1 -1
  367. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.d.ts +0 -1
  368. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.d.ts.map +1 -1
  369. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js +43 -48
  370. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js.map +1 -1
  371. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.d.ts +0 -1
  372. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.d.ts.map +1 -1
  373. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js +21 -27
  374. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js.map +1 -1
  375. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.d.ts +0 -1
  376. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.d.ts.map +1 -1
  377. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js +21 -24
  378. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js.map +1 -1
  379. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.d.ts +0 -1
  380. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.d.ts.map +1 -1
  381. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js +27 -33
  382. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js.map +1 -1
  383. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.d.ts +0 -1
  384. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.d.ts.map +1 -1
  385. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js +23 -26
  386. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js.map +1 -1
  387. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.d.ts +0 -1
  388. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.d.ts.map +1 -1
  389. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js +19 -25
  390. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js.map +1 -1
  391. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.d.ts +0 -1
  392. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.d.ts.map +1 -1
  393. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js +42 -47
  394. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js.map +1 -1
  395. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.d.ts +0 -1
  396. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.d.ts.map +1 -1
  397. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js +22 -26
  398. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js.map +1 -1
  399. package/dist/lib/generated/Entities/Application/application.form.component.d.ts +0 -1
  400. package/dist/lib/generated/Entities/Application/application.form.component.d.ts.map +1 -1
  401. package/dist/lib/generated/Entities/Application/application.form.component.js +64 -67
  402. package/dist/lib/generated/Entities/Application/application.form.component.js.map +1 -1
  403. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.d.ts +0 -1
  404. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.d.ts.map +1 -1
  405. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js +26 -32
  406. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js.map +1 -1
  407. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.d.ts +0 -1
  408. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.d.ts.map +1 -1
  409. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js +22 -26
  410. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js.map +1 -1
  411. package/dist/lib/generated/Entities/Artifact/artifact.form.component.d.ts +0 -1
  412. package/dist/lib/generated/Entities/Artifact/artifact.form.component.d.ts.map +1 -1
  413. package/dist/lib/generated/Entities/Artifact/artifact.form.component.js +47 -56
  414. package/dist/lib/generated/Entities/Artifact/artifact.form.component.js.map +1 -1
  415. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.d.ts +0 -1
  416. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.d.ts.map +1 -1
  417. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js +25 -33
  418. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js.map +1 -1
  419. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.d.ts +0 -1
  420. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.d.ts.map +1 -1
  421. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js +61 -66
  422. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js.map +1 -1
  423. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.d.ts +0 -1
  424. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.d.ts.map +1 -1
  425. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js +22 -28
  426. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js.map +1 -1
  427. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.d.ts +0 -1
  428. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.d.ts.map +1 -1
  429. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js +55 -62
  430. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js.map +1 -1
  431. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.d.ts +0 -1
  432. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.d.ts.map +1 -1
  433. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js +26 -30
  434. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js.map +1 -1
  435. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.d.ts +0 -1
  436. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.d.ts.map +1 -1
  437. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js +26 -36
  438. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js.map +1 -1
  439. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.d.ts +0 -1
  440. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.d.ts.map +1 -1
  441. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js +38 -45
  442. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js.map +1 -1
  443. package/dist/lib/generated/Entities/Authorization/authorization.form.component.d.ts +0 -1
  444. package/dist/lib/generated/Entities/Authorization/authorization.form.component.d.ts.map +1 -1
  445. package/dist/lib/generated/Entities/Authorization/authorization.form.component.js +60 -65
  446. package/dist/lib/generated/Entities/Authorization/authorization.form.component.js.map +1 -1
  447. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.d.ts +0 -1
  448. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.d.ts.map +1 -1
  449. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js +19 -25
  450. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js.map +1 -1
  451. package/dist/lib/generated/Entities/Collection/collection.form.component.d.ts +0 -1
  452. package/dist/lib/generated/Entities/Collection/collection.form.component.d.ts.map +1 -1
  453. package/dist/lib/generated/Entities/Collection/collection.form.component.js +50 -59
  454. package/dist/lib/generated/Entities/Collection/collection.form.component.js.map +1 -1
  455. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.d.ts +0 -1
  456. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.d.ts.map +1 -1
  457. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js +19 -25
  458. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js.map +1 -1
  459. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.d.ts +0 -1
  460. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.d.ts.map +1 -1
  461. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js +25 -33
  462. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js.map +1 -1
  463. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.d.ts +0 -1
  464. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.d.ts.map +1 -1
  465. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js +32 -35
  466. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js.map +1 -1
  467. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.d.ts +0 -1
  468. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.d.ts.map +1 -1
  469. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js +28 -38
  470. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js.map +1 -1
  471. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.d.ts +0 -1
  472. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.d.ts.map +1 -1
  473. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js +37 -40
  474. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js.map +1 -1
  475. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.d.ts +0 -1
  476. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.d.ts.map +1 -1
  477. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js +31 -38
  478. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js.map +1 -1
  479. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.d.ts +0 -1
  480. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.d.ts.map +1 -1
  481. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js +36 -41
  482. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js.map +1 -1
  483. package/dist/lib/generated/Entities/Company/company.form.component.d.ts +0 -1
  484. package/dist/lib/generated/Entities/Company/company.form.component.d.ts.map +1 -1
  485. package/dist/lib/generated/Entities/Company/company.form.component.js +60 -63
  486. package/dist/lib/generated/Entities/Company/company.form.component.js.map +1 -1
  487. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.d.ts +0 -1
  488. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.d.ts.map +1 -1
  489. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js +71 -78
  490. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js.map +1 -1
  491. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.d.ts +0 -1
  492. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.d.ts.map +1 -1
  493. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js +20 -26
  494. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js.map +1 -1
  495. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.d.ts +0 -1
  496. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.d.ts.map +1 -1
  497. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js +54 -59
  498. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js.map +1 -1
  499. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.d.ts +0 -1
  500. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.d.ts.map +1 -1
  501. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js +23 -29
  502. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js.map +1 -1
  503. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.d.ts +0 -1
  504. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.d.ts.map +1 -1
  505. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js +37 -42
  506. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js.map +1 -1
  507. package/dist/lib/generated/Entities/Component/component.form.component.d.ts +0 -1
  508. package/dist/lib/generated/Entities/Component/component.form.component.d.ts.map +1 -1
  509. package/dist/lib/generated/Entities/Component/component.form.component.js +66 -71
  510. package/dist/lib/generated/Entities/Component/component.form.component.js.map +1 -1
  511. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.d.ts +0 -1
  512. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.d.ts.map +1 -1
  513. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js +17 -23
  514. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js.map +1 -1
  515. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.d.ts +0 -1
  516. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.d.ts.map +1 -1
  517. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js +33 -36
  518. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js.map +1 -1
  519. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.d.ts +0 -1
  520. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.d.ts.map +1 -1
  521. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js +21 -27
  522. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js.map +1 -1
  523. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.d.ts +0 -1
  524. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.d.ts.map +1 -1
  525. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js +26 -29
  526. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js.map +1 -1
  527. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.d.ts +0 -1
  528. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.d.ts.map +1 -1
  529. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js +27 -30
  530. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js.map +1 -1
  531. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.d.ts +0 -1
  532. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.d.ts.map +1 -1
  533. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js +38 -54
  534. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js.map +1 -1
  535. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.d.ts +0 -1
  536. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.d.ts.map +1 -1
  537. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js +17 -22
  538. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js.map +1 -1
  539. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.d.ts +0 -1
  540. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.d.ts.map +1 -1
  541. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js +16 -21
  542. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js.map +1 -1
  543. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.d.ts +0 -1
  544. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.d.ts.map +1 -1
  545. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js +19 -24
  546. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js.map +1 -1
  547. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.d.ts +0 -1
  548. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.d.ts.map +1 -1
  549. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js +41 -55
  550. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js.map +1 -1
  551. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.d.ts +0 -1
  552. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.d.ts.map +1 -1
  553. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js +17 -22
  554. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js.map +1 -1
  555. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.d.ts +0 -1
  556. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.d.ts.map +1 -1
  557. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js +27 -30
  558. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js.map +1 -1
  559. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.d.ts +0 -1
  560. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.d.ts.map +1 -1
  561. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js +16 -18
  562. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js.map +1 -1
  563. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.d.ts +0 -1
  564. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.d.ts.map +1 -1
  565. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js +33 -40
  566. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js.map +1 -1
  567. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.d.ts +0 -1
  568. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.d.ts.map +1 -1
  569. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js +15 -17
  570. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js.map +1 -1
  571. package/dist/lib/generated/Entities/Conversation/conversation.form.component.d.ts +0 -1
  572. package/dist/lib/generated/Entities/Conversation/conversation.form.component.d.ts.map +1 -1
  573. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +80 -95
  574. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js.map +1 -1
  575. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.d.ts +0 -1
  576. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.d.ts.map +1 -1
  577. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js +44 -51
  578. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js.map +1 -1
  579. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.d.ts +0 -1
  580. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.d.ts.map +1 -1
  581. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js +19 -25
  582. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js.map +1 -1
  583. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.d.ts +0 -1
  584. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.d.ts.map +1 -1
  585. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js +31 -36
  586. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js.map +1 -1
  587. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.d.ts +0 -1
  588. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.d.ts.map +1 -1
  589. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js +111 -130
  590. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js.map +1 -1
  591. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.d.ts +0 -1
  592. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.d.ts.map +1 -1
  593. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js +21 -29
  594. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js.map +1 -1
  595. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.d.ts +0 -1
  596. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.d.ts.map +1 -1
  597. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js +34 -42
  598. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js.map +1 -1
  599. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.d.ts +0 -1
  600. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.d.ts.map +1 -1
  601. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js +20 -32
  602. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js.map +1 -1
  603. package/dist/lib/generated/Entities/Credential/credential.form.component.d.ts +0 -1
  604. package/dist/lib/generated/Entities/Credential/credential.form.component.d.ts.map +1 -1
  605. package/dist/lib/generated/Entities/Credential/credential.form.component.js +72 -61
  606. package/dist/lib/generated/Entities/Credential/credential.form.component.js.map +1 -1
  607. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.d.ts +0 -1
  608. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.d.ts.map +1 -1
  609. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js +36 -41
  610. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js.map +1 -1
  611. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.d.ts +0 -1
  612. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.d.ts.map +1 -1
  613. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js +40 -43
  614. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js.map +1 -1
  615. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.d.ts +0 -1
  616. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.d.ts.map +1 -1
  617. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js +60 -71
  618. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js.map +1 -1
  619. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.d.ts +0 -1
  620. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.d.ts.map +1 -1
  621. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js +52 -59
  622. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js.map +1 -1
  623. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.d.ts +0 -1
  624. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.d.ts.map +1 -1
  625. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js +21 -29
  626. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js.map +1 -1
  627. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.d.ts +0 -1
  628. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.d.ts.map +1 -1
  629. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js +28 -36
  630. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js.map +1 -1
  631. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.d.ts +0 -1
  632. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.d.ts.map +1 -1
  633. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js +21 -23
  634. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js.map +1 -1
  635. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.d.ts +0 -1
  636. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.d.ts.map +1 -1
  637. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js +25 -33
  638. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js.map +1 -1
  639. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.d.ts +0 -1
  640. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.d.ts.map +1 -1
  641. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js +26 -34
  642. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js.map +1 -1
  643. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.d.ts +0 -1
  644. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.d.ts.map +1 -1
  645. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js +19 -25
  646. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js.map +1 -1
  647. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.d.ts +0 -1
  648. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.d.ts.map +1 -1
  649. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js +44 -49
  650. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js.map +1 -1
  651. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.d.ts +0 -1
  652. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.d.ts.map +1 -1
  653. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js +32 -42
  654. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js.map +1 -1
  655. package/dist/lib/generated/Entities/Dataset/dataset.form.component.d.ts +0 -1
  656. package/dist/lib/generated/Entities/Dataset/dataset.form.component.d.ts.map +1 -1
  657. package/dist/lib/generated/Entities/Dataset/dataset.form.component.js +21 -24
  658. package/dist/lib/generated/Entities/Dataset/dataset.form.component.js.map +1 -1
  659. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.d.ts +0 -1
  660. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.d.ts.map +1 -1
  661. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js +25 -31
  662. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js.map +1 -1
  663. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.d.ts +0 -1
  664. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.d.ts.map +1 -1
  665. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js +39 -50
  666. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js.map +1 -1
  667. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.d.ts +0 -1
  668. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.d.ts.map +1 -1
  669. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js +33 -38
  670. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js.map +1 -1
  671. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.d.ts +0 -1
  672. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.d.ts.map +1 -1
  673. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js +27 -35
  674. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js.map +1 -1
  675. package/dist/lib/generated/Entities/Employee/employee.form.component.d.ts +0 -1
  676. package/dist/lib/generated/Entities/Employee/employee.form.component.d.ts.map +1 -1
  677. package/dist/lib/generated/Entities/Employee/employee.form.component.js +66 -71
  678. package/dist/lib/generated/Entities/Employee/employee.form.component.js.map +1 -1
  679. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.d.ts +0 -1
  680. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.d.ts.map +1 -1
  681. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js +22 -28
  682. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js.map +1 -1
  683. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.d.ts +0 -1
  684. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.d.ts.map +1 -1
  685. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js +19 -33
  686. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js.map +1 -1
  687. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.d.ts +0 -1
  688. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.d.ts.map +1 -1
  689. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js +17 -23
  690. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js.map +1 -1
  691. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.d.ts +0 -1
  692. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.d.ts.map +1 -1
  693. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js +25 -28
  694. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js.map +1 -1
  695. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.d.ts +0 -1
  696. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.d.ts.map +1 -1
  697. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js +31 -38
  698. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js.map +1 -1
  699. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.d.ts +0 -1
  700. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.d.ts.map +1 -1
  701. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js +25 -28
  702. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js.map +1 -1
  703. package/dist/lib/generated/Entities/Entity/entity.form.component.d.ts +0 -1
  704. package/dist/lib/generated/Entities/Entity/entity.form.component.d.ts.map +1 -1
  705. package/dist/lib/generated/Entities/Entity/entity.form.component.js +424 -391
  706. package/dist/lib/generated/Entities/Entity/entity.form.component.js.map +1 -1
  707. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.d.ts +0 -1
  708. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.d.ts.map +1 -1
  709. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js +33 -43
  710. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js.map +1 -1
  711. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.d.ts +0 -1
  712. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.d.ts.map +1 -1
  713. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js +41 -48
  714. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js.map +1 -1
  715. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.d.ts +0 -1
  716. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.d.ts.map +1 -1
  717. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js +23 -25
  718. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js.map +1 -1
  719. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.d.ts +0 -1
  720. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.d.ts.map +1 -1
  721. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js +21 -27
  722. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js.map +1 -1
  723. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.d.ts +0 -1
  724. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.d.ts.map +1 -1
  725. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js +22 -25
  726. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js.map +1 -1
  727. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.d.ts +0 -1
  728. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.d.ts.map +1 -1
  729. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js +24 -26
  730. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js.map +1 -1
  731. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.d.ts +0 -1
  732. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.d.ts.map +1 -1
  733. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js +17 -22
  734. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js.map +1 -1
  735. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.d.ts +0 -1
  736. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.d.ts.map +1 -1
  737. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js +27 -34
  738. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js.map +1 -1
  739. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.d.ts +0 -1
  740. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.d.ts.map +1 -1
  741. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js +52 -65
  742. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js.map +1 -1
  743. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.d.ts +0 -1
  744. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.d.ts.map +1 -1
  745. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js +22 -26
  746. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js.map +1 -1
  747. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.d.ts +0 -1
  748. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.d.ts.map +1 -1
  749. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js +22 -26
  750. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js.map +1 -1
  751. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.d.ts +0 -1
  752. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.d.ts.map +1 -1
  753. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js +20 -24
  754. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js.map +1 -1
  755. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.d.ts +0 -1
  756. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.d.ts.map +1 -1
  757. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js +102 -103
  758. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js.map +1 -1
  759. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.d.ts +0 -1
  760. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.d.ts.map +1 -1
  761. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js +25 -29
  762. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js.map +1 -1
  763. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.d.ts +0 -1
  764. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.d.ts.map +1 -1
  765. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js +33 -45
  766. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js.map +1 -1
  767. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.d.ts +0 -1
  768. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.d.ts.map +1 -1
  769. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js +32 -40
  770. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js.map +1 -1
  771. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.d.ts +0 -1
  772. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.d.ts.map +1 -1
  773. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js +54 -60
  774. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js.map +1 -1
  775. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.d.ts +0 -1
  776. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.d.ts.map +1 -1
  777. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js +22 -25
  778. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js.map +1 -1
  779. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.d.ts +0 -1
  780. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.d.ts.map +1 -1
  781. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js +19 -23
  782. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js.map +1 -1
  783. package/dist/lib/generated/Entities/Environment/environment.form.component.d.ts +0 -1
  784. package/dist/lib/generated/Entities/Environment/environment.form.component.d.ts.map +1 -1
  785. package/dist/lib/generated/Entities/Environment/environment.form.component.js +65 -69
  786. package/dist/lib/generated/Entities/Environment/environment.form.component.js.map +1 -1
  787. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.d.ts +0 -1
  788. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.d.ts.map +1 -1
  789. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js +29 -35
  790. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js.map +1 -1
  791. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.d.ts +0 -1
  792. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.d.ts.map +1 -1
  793. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js +23 -25
  794. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js.map +1 -1
  795. package/dist/lib/generated/Entities/File/file.form.component.d.ts +0 -1
  796. package/dist/lib/generated/Entities/File/file.form.component.d.ts.map +1 -1
  797. package/dist/lib/generated/Entities/File/file.form.component.js +55 -62
  798. package/dist/lib/generated/Entities/File/file.form.component.js.map +1 -1
  799. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.d.ts +0 -1
  800. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.d.ts.map +1 -1
  801. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js +35 -40
  802. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js.map +1 -1
  803. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.d.ts +0 -1
  804. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.d.ts.map +1 -1
  805. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js +19 -25
  806. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js.map +1 -1
  807. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.d.ts +0 -1
  808. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.d.ts.map +1 -1
  809. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.js +22 -28
  810. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.js.map +1 -1
  811. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.d.ts +0 -1
  812. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.d.ts.map +1 -1
  813. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js +52 -55
  814. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js.map +1 -1
  815. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.d.ts +0 -1
  816. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.d.ts.map +1 -1
  817. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js +35 -43
  818. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js.map +1 -1
  819. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.d.ts +0 -1
  820. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.d.ts.map +1 -1
  821. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js +35 -40
  822. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js.map +1 -1
  823. package/dist/lib/generated/Entities/Integration/integration.form.component.d.ts +0 -1
  824. package/dist/lib/generated/Entities/Integration/integration.form.component.d.ts.map +1 -1
  825. package/dist/lib/generated/Entities/Integration/integration.form.component.js +41 -44
  826. package/dist/lib/generated/Entities/Integration/integration.form.component.js.map +1 -1
  827. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.d.ts +0 -1
  828. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.d.ts.map +1 -1
  829. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js +27 -31
  830. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js.map +1 -1
  831. package/dist/lib/generated/Entities/Library/library.form.component.d.ts +0 -1
  832. package/dist/lib/generated/Entities/Library/library.form.component.d.ts.map +1 -1
  833. package/dist/lib/generated/Entities/Library/library.form.component.js +32 -35
  834. package/dist/lib/generated/Entities/Library/library.form.component.js.map +1 -1
  835. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.d.ts +0 -1
  836. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.d.ts.map +1 -1
  837. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js +18 -22
  838. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js.map +1 -1
  839. package/dist/lib/generated/Entities/List/list.form.component.d.ts +0 -1
  840. package/dist/lib/generated/Entities/List/list.form.component.d.ts.map +1 -1
  841. package/dist/lib/generated/Entities/List/list.form.component.js +52 -63
  842. package/dist/lib/generated/Entities/List/list.form.component.js.map +1 -1
  843. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.d.ts +0 -1
  844. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.d.ts.map +1 -1
  845. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js +39 -46
  846. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js.map +1 -1
  847. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.d.ts +0 -1
  848. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.d.ts.map +1 -1
  849. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js +23 -27
  850. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js.map +1 -1
  851. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.d.ts +0 -1
  852. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.d.ts.map +1 -1
  853. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js +22 -28
  854. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js.map +1 -1
  855. package/dist/lib/generated/Entities/ListShare/listshare.form.component.d.ts +0 -1
  856. package/dist/lib/generated/Entities/ListShare/listshare.form.component.d.ts.map +1 -1
  857. package/dist/lib/generated/Entities/ListShare/listshare.form.component.js +19 -25
  858. package/dist/lib/generated/Entities/ListShare/listshare.form.component.js.map +1 -1
  859. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.d.ts +0 -1
  860. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.d.ts.map +1 -1
  861. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js +87 -56
  862. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js.map +1 -1
  863. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.d.ts +0 -1
  864. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.d.ts.map +1 -1
  865. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js +110 -65
  866. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js.map +1 -1
  867. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.d.ts +0 -1
  868. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.d.ts.map +1 -1
  869. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js +24 -32
  870. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js.map +1 -1
  871. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.d.ts +0 -1
  872. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.d.ts.map +1 -1
  873. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js +23 -29
  874. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js.map +1 -1
  875. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.d.ts +0 -1
  876. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.d.ts.map +1 -1
  877. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js +48 -57
  878. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js.map +1 -1
  879. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.d.ts +0 -1
  880. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.d.ts.map +1 -1
  881. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js +36 -44
  882. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js.map +1 -1
  883. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.d.ts +10 -0
  884. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.d.ts.map +1 -0
  885. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.js +73 -0
  886. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.js.map +1 -0
  887. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.d.ts +10 -0
  888. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.d.ts.map +1 -0
  889. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.js +75 -0
  890. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.js.map +1 -0
  891. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.d.ts +10 -0
  892. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.d.ts.map +1 -0
  893. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.js +75 -0
  894. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.js.map +1 -0
  895. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.d.ts +10 -0
  896. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.d.ts.map +1 -0
  897. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.js +61 -0
  898. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.js.map +1 -0
  899. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.d.ts +0 -1
  900. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.d.ts.map +1 -1
  901. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js +21 -24
  902. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js.map +1 -1
  903. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.d.ts +0 -1
  904. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.d.ts.map +1 -1
  905. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js +22 -25
  906. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js.map +1 -1
  907. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.d.ts +0 -1
  908. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.d.ts.map +1 -1
  909. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js +21 -24
  910. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js.map +1 -1
  911. package/dist/lib/generated/Entities/Project/project.form.component.d.ts +0 -1
  912. package/dist/lib/generated/Entities/Project/project.form.component.d.ts.map +1 -1
  913. package/dist/lib/generated/Entities/Project/project.form.component.js +49 -56
  914. package/dist/lib/generated/Entities/Project/project.form.component.js.map +1 -1
  915. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.d.ts +0 -1
  916. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.d.ts.map +1 -1
  917. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js +30 -34
  918. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js.map +1 -1
  919. package/dist/lib/generated/Entities/Query/query.form.component.d.ts +0 -1
  920. package/dist/lib/generated/Entities/Query/query.form.component.d.ts.map +1 -1
  921. package/dist/lib/generated/Entities/Query/query.form.component.js +79 -86
  922. package/dist/lib/generated/Entities/Query/query.form.component.js.map +1 -1
  923. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.d.ts +0 -1
  924. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.d.ts.map +1 -1
  925. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js +42 -49
  926. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js.map +1 -1
  927. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.d.ts +0 -1
  928. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.d.ts.map +1 -1
  929. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js +20 -26
  930. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js.map +1 -1
  931. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.d.ts +0 -1
  932. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.d.ts.map +1 -1
  933. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js +32 -38
  934. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js.map +1 -1
  935. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.d.ts +0 -1
  936. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.d.ts.map +1 -1
  937. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js +28 -32
  938. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js.map +1 -1
  939. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.d.ts +0 -1
  940. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.d.ts.map +1 -1
  941. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js +18 -26
  942. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js.map +1 -1
  943. package/dist/lib/generated/Entities/Queue/queue.form.component.d.ts +0 -1
  944. package/dist/lib/generated/Entities/Queue/queue.form.component.d.ts.map +1 -1
  945. package/dist/lib/generated/Entities/Queue/queue.form.component.js +45 -50
  946. package/dist/lib/generated/Entities/Queue/queue.form.component.js.map +1 -1
  947. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.d.ts +0 -1
  948. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.d.ts.map +1 -1
  949. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js +30 -34
  950. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js.map +1 -1
  951. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.d.ts +0 -1
  952. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.d.ts.map +1 -1
  953. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js +25 -28
  954. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js.map +1 -1
  955. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.d.ts +0 -1
  956. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.d.ts.map +1 -1
  957. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js +25 -38
  958. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js.map +1 -1
  959. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.d.ts +0 -1
  960. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.d.ts.map +1 -1
  961. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js +18 -31
  962. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js.map +1 -1
  963. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.d.ts +0 -1
  964. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.d.ts.map +1 -1
  965. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js +21 -24
  966. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js.map +1 -1
  967. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.d.ts +0 -1
  968. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.d.ts.map +1 -1
  969. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js +31 -38
  970. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js.map +1 -1
  971. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.d.ts +0 -1
  972. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.d.ts.map +1 -1
  973. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js +51 -49
  974. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js.map +1 -1
  975. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.d.ts +0 -1
  976. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.d.ts.map +1 -1
  977. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js +30 -35
  978. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js.map +1 -1
  979. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.d.ts +0 -1
  980. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.d.ts.map +1 -1
  981. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js +26 -32
  982. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js.map +1 -1
  983. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.d.ts +0 -1
  984. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.d.ts.map +1 -1
  985. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js +17 -27
  986. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js.map +1 -1
  987. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.d.ts +0 -1
  988. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.d.ts.map +1 -1
  989. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js +46 -55
  990. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js.map +1 -1
  991. package/dist/lib/generated/Entities/Report/report.form.component.d.ts +0 -1
  992. package/dist/lib/generated/Entities/Report/report.form.component.d.ts.map +1 -1
  993. package/dist/lib/generated/Entities/Report/report.form.component.js +60 -89
  994. package/dist/lib/generated/Entities/Report/report.form.component.js.map +1 -1
  995. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.d.ts +0 -1
  996. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.d.ts.map +1 -1
  997. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js +36 -43
  998. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js.map +1 -1
  999. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.d.ts +0 -1
  1000. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.d.ts.map +1 -1
  1001. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js +19 -25
  1002. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js.map +1 -1
  1003. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.d.ts +0 -1
  1004. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.d.ts.map +1 -1
  1005. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js +19 -25
  1006. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js.map +1 -1
  1007. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.d.ts +0 -1
  1008. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.d.ts.map +1 -1
  1009. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js +24 -28
  1010. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js.map +1 -1
  1011. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.d.ts +0 -1
  1012. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.d.ts.map +1 -1
  1013. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js +16 -22
  1014. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js.map +1 -1
  1015. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.d.ts +0 -1
  1016. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.d.ts.map +1 -1
  1017. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js +28 -37
  1018. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js.map +1 -1
  1019. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.d.ts +0 -1
  1020. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.d.ts.map +1 -1
  1021. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js +54 -63
  1022. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js.map +1 -1
  1023. package/dist/lib/generated/Entities/Role/role.form.component.d.ts +0 -1
  1024. package/dist/lib/generated/Entities/Role/role.form.component.d.ts.map +1 -1
  1025. package/dist/lib/generated/Entities/Role/role.form.component.js +72 -75
  1026. package/dist/lib/generated/Entities/Role/role.form.component.js.map +1 -1
  1027. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.d.ts +0 -1
  1028. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.d.ts.map +1 -1
  1029. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js +21 -25
  1030. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js.map +1 -1
  1031. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.d.ts +0 -1
  1032. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.d.ts.map +1 -1
  1033. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js +42 -49
  1034. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js.map +1 -1
  1035. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.d.ts +0 -1
  1036. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.d.ts.map +1 -1
  1037. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js +23 -29
  1038. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js.map +1 -1
  1039. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.d.ts +0 -1
  1040. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.d.ts.map +1 -1
  1041. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js +60 -69
  1042. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js.map +1 -1
  1043. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.d.ts +0 -1
  1044. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.d.ts.map +1 -1
  1045. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js +38 -45
  1046. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js.map +1 -1
  1047. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.d.ts +0 -1
  1048. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.d.ts.map +1 -1
  1049. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js +26 -29
  1050. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js.map +1 -1
  1051. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.d.ts +0 -1
  1052. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.d.ts.map +1 -1
  1053. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js +18 -20
  1054. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js.map +1 -1
  1055. package/dist/lib/generated/Entities/Skill/skill.form.component.d.ts +0 -1
  1056. package/dist/lib/generated/Entities/Skill/skill.form.component.d.ts.map +1 -1
  1057. package/dist/lib/generated/Entities/Skill/skill.form.component.js +34 -39
  1058. package/dist/lib/generated/Entities/Skill/skill.form.component.js.map +1 -1
  1059. package/dist/lib/generated/Entities/Tag/tag.form.component.d.ts +0 -1
  1060. package/dist/lib/generated/Entities/Tag/tag.form.component.d.ts.map +1 -1
  1061. package/dist/lib/generated/Entities/Tag/tag.form.component.js +36 -41
  1062. package/dist/lib/generated/Entities/Tag/tag.form.component.js.map +1 -1
  1063. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.d.ts +0 -1
  1064. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.d.ts.map +1 -1
  1065. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js +21 -27
  1066. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js.map +1 -1
  1067. package/dist/lib/generated/Entities/Task/task.form.component.d.ts +0 -1
  1068. package/dist/lib/generated/Entities/Task/task.form.component.d.ts.map +1 -1
  1069. package/dist/lib/generated/Entities/Task/task.form.component.js +58 -75
  1070. package/dist/lib/generated/Entities/Task/task.form.component.js.map +1 -1
  1071. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.d.ts +0 -1
  1072. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.d.ts.map +1 -1
  1073. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js +21 -27
  1074. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js.map +1 -1
  1075. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.d.ts +0 -1
  1076. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.d.ts.map +1 -1
  1077. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js +21 -24
  1078. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js.map +1 -1
  1079. package/dist/lib/generated/Entities/Template/template.form.component.d.ts +0 -1
  1080. package/dist/lib/generated/Entities/Template/template.form.component.d.ts.map +1 -1
  1081. package/dist/lib/generated/Entities/Template/template.form.component.js +70 -77
  1082. package/dist/lib/generated/Entities/Template/template.form.component.js.map +1 -1
  1083. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.d.ts +0 -1
  1084. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.d.ts.map +1 -1
  1085. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js +39 -46
  1086. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js.map +1 -1
  1087. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.d.ts +0 -1
  1088. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.d.ts.map +1 -1
  1089. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js +31 -38
  1090. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js.map +1 -1
  1091. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.d.ts +0 -1
  1092. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.d.ts.map +1 -1
  1093. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js +21 -25
  1094. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js.map +1 -1
  1095. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.d.ts +0 -1
  1096. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.d.ts.map +1 -1
  1097. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js +34 -48
  1098. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js.map +1 -1
  1099. package/dist/lib/generated/Entities/Test/test.form.component.d.ts +0 -1
  1100. package/dist/lib/generated/Entities/Test/test.form.component.d.ts.map +1 -1
  1101. package/dist/lib/generated/Entities/Test/test.form.component.js +50 -55
  1102. package/dist/lib/generated/Entities/Test/test.form.component.js.map +1 -1
  1103. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.d.ts +0 -1
  1104. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.d.ts.map +1 -1
  1105. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js +19 -23
  1106. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js.map +1 -1
  1107. package/dist/lib/generated/Entities/TestRun/testrun.form.component.d.ts +0 -1
  1108. package/dist/lib/generated/Entities/TestRun/testrun.form.component.d.ts.map +1 -1
  1109. package/dist/lib/generated/Entities/TestRun/testrun.form.component.js +89 -100
  1110. package/dist/lib/generated/Entities/TestRun/testrun.form.component.js.map +1 -1
  1111. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.d.ts +0 -1
  1112. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.d.ts.map +1 -1
  1113. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js +25 -31
  1114. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js.map +1 -1
  1115. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.d.ts +0 -1
  1116. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.d.ts.map +1 -1
  1117. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js +52 -57
  1118. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js.map +1 -1
  1119. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.d.ts +0 -1
  1120. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.d.ts.map +1 -1
  1121. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js +64 -71
  1122. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js.map +1 -1
  1123. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.d.ts +0 -1
  1124. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.d.ts.map +1 -1
  1125. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js +17 -23
  1126. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js.map +1 -1
  1127. package/dist/lib/generated/Entities/TestType/testtype.form.component.d.ts +0 -1
  1128. package/dist/lib/generated/Entities/TestType/testtype.form.component.d.ts.map +1 -1
  1129. package/dist/lib/generated/Entities/TestType/testtype.form.component.js +31 -34
  1130. package/dist/lib/generated/Entities/TestType/testtype.form.component.js.map +1 -1
  1131. package/dist/lib/generated/Entities/User/user.form.component.d.ts +0 -1
  1132. package/dist/lib/generated/Entities/User/user.form.component.d.ts.map +1 -1
  1133. package/dist/lib/generated/Entities/User/user.form.component.js +645 -594
  1134. package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
  1135. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.d.ts +0 -1
  1136. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.d.ts.map +1 -1
  1137. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js +28 -35
  1138. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js.map +1 -1
  1139. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.d.ts +0 -1
  1140. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.d.ts.map +1 -1
  1141. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js +21 -25
  1142. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js.map +1 -1
  1143. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.d.ts +0 -1
  1144. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.d.ts.map +1 -1
  1145. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js +21 -25
  1146. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js.map +1 -1
  1147. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.d.ts +0 -1
  1148. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.d.ts.map +1 -1
  1149. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js +27 -35
  1150. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js.map +1 -1
  1151. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.d.ts +0 -1
  1152. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.d.ts.map +1 -1
  1153. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.js +22 -28
  1154. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.js.map +1 -1
  1155. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.d.ts +0 -1
  1156. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.d.ts.map +1 -1
  1157. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.js +44 -51
  1158. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.js.map +1 -1
  1159. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.d.ts +0 -1
  1160. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.d.ts.map +1 -1
  1161. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js +32 -36
  1162. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js.map +1 -1
  1163. package/dist/lib/generated/Entities/UserRole/userrole.form.component.d.ts +0 -1
  1164. package/dist/lib/generated/Entities/UserRole/userrole.form.component.d.ts.map +1 -1
  1165. package/dist/lib/generated/Entities/UserRole/userrole.form.component.js +17 -23
  1166. package/dist/lib/generated/Entities/UserRole/userrole.form.component.js.map +1 -1
  1167. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.d.ts +0 -1
  1168. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.d.ts.map +1 -1
  1169. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js +18 -22
  1170. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js.map +1 -1
  1171. package/dist/lib/generated/Entities/UserView/userview.form.component.d.ts +0 -1
  1172. package/dist/lib/generated/Entities/UserView/userview.form.component.d.ts.map +1 -1
  1173. package/dist/lib/generated/Entities/UserView/userview.form.component.js +72 -77
  1174. package/dist/lib/generated/Entities/UserView/userview.form.component.js.map +1 -1
  1175. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.d.ts +0 -1
  1176. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.d.ts.map +1 -1
  1177. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js +40 -49
  1178. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js.map +1 -1
  1179. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.d.ts +0 -1
  1180. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.d.ts.map +1 -1
  1181. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js +29 -36
  1182. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js.map +1 -1
  1183. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.d.ts +0 -1
  1184. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.d.ts.map +1 -1
  1185. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js +16 -18
  1186. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js.map +1 -1
  1187. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.d.ts +0 -1
  1188. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.d.ts.map +1 -1
  1189. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js +30 -33
  1190. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js.map +1 -1
  1191. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.d.ts +0 -1
  1192. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.d.ts.map +1 -1
  1193. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js +28 -35
  1194. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js.map +1 -1
  1195. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.d.ts +0 -1
  1196. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.d.ts.map +1 -1
  1197. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js +23 -25
  1198. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js.map +1 -1
  1199. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.d.ts +10 -0
  1200. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.d.ts.map +1 -0
  1201. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.js +159 -0
  1202. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.js.map +1 -0
  1203. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.d.ts +10 -0
  1204. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.d.ts.map +1 -0
  1205. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.js +63 -0
  1206. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.js.map +1 -0
  1207. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.d.ts +10 -0
  1208. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.d.ts.map +1 -0
  1209. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.js +77 -0
  1210. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.js.map +1 -0
  1211. package/dist/lib/generated/Entities/Workflow/workflow.form.component.d.ts +0 -1
  1212. package/dist/lib/generated/Entities/Workflow/workflow.form.component.d.ts.map +1 -1
  1213. package/dist/lib/generated/Entities/Workflow/workflow.form.component.js +36 -39
  1214. package/dist/lib/generated/Entities/Workflow/workflow.form.component.js.map +1 -1
  1215. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.d.ts +0 -1
  1216. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.d.ts.map +1 -1
  1217. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js +23 -26
  1218. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js.map +1 -1
  1219. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.d.ts +0 -1
  1220. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.d.ts.map +1 -1
  1221. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js +25 -29
  1222. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js.map +1 -1
  1223. package/dist/lib/generated/Entities/Workspace/workspace.form.component.d.ts +0 -1
  1224. package/dist/lib/generated/Entities/Workspace/workspace.form.component.d.ts.map +1 -1
  1225. package/dist/lib/generated/Entities/Workspace/workspace.form.component.js +27 -33
  1226. package/dist/lib/generated/Entities/Workspace/workspace.form.component.js.map +1 -1
  1227. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.d.ts +0 -1
  1228. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.d.ts.map +1 -1
  1229. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js +26 -32
  1230. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js.map +1 -1
  1231. package/dist/lib/generated/generated-forms.module.d.ts +272 -271
  1232. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  1233. package/dist/lib/generated/generated-forms.module.js +429 -939
  1234. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  1235. package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
  1236. package/dist/lib/shared/components/template-editor.component.js +167 -164
  1237. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  1238. package/dist/public-api.d.ts +0 -1
  1239. package/dist/public-api.d.ts.map +1 -1
  1240. package/dist/public-api.js +1 -1
  1241. package/dist/public-api.js.map +1 -1
  1242. package/package.json +53 -52
  1243. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.d.ts +0 -109
  1244. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.d.ts.map +0 -1
  1245. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js +0 -2014
  1246. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js.map +0 -1
  1247. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.d.ts +0 -29
  1248. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.d.ts.map +0 -1
  1249. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.js +0 -198
  1250. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.js.map +0 -1
  1251. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.d.ts +0 -14
  1252. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.d.ts.map +0 -1
  1253. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.js +0 -98
  1254. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.js.map +0 -1
  1255. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.d.ts +0 -44
  1256. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.d.ts.map +0 -1
  1257. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.js +0 -282
  1258. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.js.map +0 -1
  1259. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.d.ts +0 -35
  1260. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.d.ts.map +0 -1
  1261. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.js +0 -287
  1262. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.js.map +0 -1
  1263. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.d.ts +0 -106
  1264. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.d.ts.map +0 -1
  1265. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.js +0 -951
  1266. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.js.map +0 -1
  1267. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.d.ts +0 -30
  1268. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.d.ts.map +0 -1
  1269. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.js +0 -450
  1270. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.js.map +0 -1
  1271. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.d.ts +0 -25
  1272. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.d.ts.map +0 -1
  1273. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.js +0 -423
  1274. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.js.map +0 -1
  1275. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.d.ts +0 -21
  1276. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.d.ts.map +0 -1
  1277. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.js +0 -182
  1278. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.js.map +0 -1
  1279. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.d.ts +0 -34
  1280. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.d.ts.map +0 -1
  1281. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.js +0 -171
  1282. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.js.map +0 -1
  1283. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.d.ts +0 -17
  1284. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.d.ts.map +0 -1
  1285. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.js +0 -78
  1286. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.js.map +0 -1
  1287. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/connection.model.d.ts +0 -17
  1288. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/connection.model.d.ts.map +0 -1
  1289. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/connection.model.js +0 -11
  1290. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/connection.model.js.map +0 -1
  1291. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/mj-extended.model.d.ts +0 -21
  1292. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/mj-extended.model.d.ts.map +0 -1
  1293. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/mj-extended.model.js +0 -2
  1294. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/mj-extended.model.js.map +0 -1
  1295. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/module.model.d.ts +0 -33
  1296. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/module.model.d.ts.map +0 -1
  1297. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/module.model.js +0 -2
  1298. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/module.model.js.map +0 -1
  1299. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/step.model.d.ts +0 -44
  1300. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/step.model.d.ts.map +0 -1
  1301. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/step.model.js +0 -166
  1302. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/step.model.js.map +0 -1
  1303. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.d.ts +0 -14
  1304. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.d.ts.map +0 -1
  1305. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.js +0 -31
  1306. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.js.map +0 -1
  1307. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.d.ts +0 -63
  1308. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.d.ts.map +0 -1
  1309. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.js +0 -294
  1310. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.js.map +0 -1
  1311. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.d.ts +0 -77
  1312. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.d.ts.map +0 -1
  1313. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.js +0 -408
  1314. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.js.map +0 -1
  1315. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.d.ts +0 -19
  1316. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.d.ts.map +0 -1
  1317. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.js +0 -116
  1318. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.js.map +0 -1
  1319. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.d.ts +0 -25
  1320. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.d.ts.map +0 -1
  1321. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.js +0 -90
  1322. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.js.map +0 -1
  1323. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.d.ts +0 -52
  1324. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.d.ts.map +0 -1
  1325. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.js +0 -500
  1326. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.js.map +0 -1
  1327. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.d.ts +0 -9
  1328. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.d.ts.map +0 -1
  1329. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js +0 -84
  1330. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js.map +0 -1
  1331. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.d.ts +0 -61
  1332. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.d.ts.map +0 -1
  1333. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js +0 -790
  1334. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js.map +0 -1
@@ -4,35 +4,33 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { Component, ChangeDetectionStrategy, HostListener } from '@angular/core';
7
+ import { Component, ChangeDetectionStrategy, HostListener, ViewContainerRef, inject } from '@angular/core';
8
8
  import { Subject, interval } from 'rxjs';
9
9
  import { takeUntil } from 'rxjs/operators';
10
10
  import { CompositeKey, Metadata, RunView } from '@memberjunction/core';
11
11
  import { UserInfoEngine } from '@memberjunction/core-entities';
12
12
  import { BaseFormComponent } from '@memberjunction/ng-base-forms';
13
13
  import { RegisterClass } from '@memberjunction/global';
14
- import { SharedService } from '@memberjunction/ng-shared';
14
+ import { SharedService, NavigationService } from '@memberjunction/ng-shared';
15
+ import { ApplicationManager } from '@memberjunction/ng-base-application';
15
16
  import { TestSuiteRunFormComponent } from '../../generated/Entities/TestSuiteRun/testsuiterun.form.component';
16
- import { TagsHelper, calculateEvaluationMetrics, normalizeExecutionStatus, getNeedsReviewItems } from '@memberjunction/ng-testing';
17
+ import { TestingDialogService, TagsHelper, EvaluationPreferencesService, calculateEvaluationMetrics, normalizeExecutionStatus, getNeedsReviewItems } from '@memberjunction/ng-testing';
17
18
  import * as i0 from "@angular/core";
18
- import * as i1 from "@memberjunction/ng-shared";
19
- import * as i2 from "@angular/router";
20
- import * as i3 from "@memberjunction/ng-testing";
21
- import * as i4 from "@memberjunction/ng-base-application";
22
- import * as i5 from "@angular/common";
23
- import * as i6 from "@angular/forms";
24
- import * as i7 from "@progress/kendo-angular-dialog";
25
- import * as i8 from "@progress/kendo-angular-buttons";
26
- import * as i9 from "./entity-link-pill.component";
19
+ import * as i1 from "@angular/common";
20
+ import * as i2 from "@angular/forms";
21
+ import * as i3 from "@progress/kendo-angular-dialog";
22
+ import * as i4 from "@progress/kendo-angular-buttons";
23
+ import * as i5 from "@memberjunction/ng-testing";
24
+ import * as i6 from "./entity-link-pill.component";
27
25
  const _c0 = () => [1, 2, 3, 4, 5];
28
26
  const _c1 = () => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
29
- function TestSuiteRunFormComponentExtended_li_9_Template(rf, ctx) { if (rf & 1) {
27
+ function TestSuiteRunFormComponentExtended_Conditional_9_Template(rf, ctx) { if (rf & 1) {
30
28
  const _r1 = i0.ɵɵgetCurrentView();
31
29
  i0.ɵɵelementStart(0, "li");
32
- i0.ɵɵelement(1, "i", 8);
30
+ i0.ɵɵelement(1, "i", 7);
33
31
  i0.ɵɵelementStart(2, "a", 3);
34
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_li_9_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openTestSuite()); });
35
- i0.ɵɵelement(3, "i", 67);
32
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_9_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openTestSuite()); });
33
+ i0.ɵɵelement(3, "i", 66);
36
34
  i0.ɵɵelementStart(4, "span", 5);
37
35
  i0.ɵɵtext(5);
38
36
  i0.ɵɵelementEnd()()();
@@ -41,9 +39,9 @@ function TestSuiteRunFormComponentExtended_li_9_Template(rf, ctx) { if (rf & 1)
41
39
  i0.ɵɵadvance(5);
42
40
  i0.ɵɵtextInterpolate(ctx_r1.testSuite.Name);
43
41
  } }
44
- function TestSuiteRunFormComponentExtended_span_25_Template(rf, ctx) { if (rf & 1) {
45
- i0.ɵɵelementStart(0, "span", 68);
46
- i0.ɵɵelement(1, "i", 69);
42
+ function TestSuiteRunFormComponentExtended_Conditional_25_Template(rf, ctx) { if (rf & 1) {
43
+ i0.ɵɵelementStart(0, "span", 15);
44
+ i0.ɵɵelement(1, "i", 67);
47
45
  i0.ɵɵtext(2);
48
46
  i0.ɵɵelementEnd();
49
47
  } if (rf & 2) {
@@ -51,9 +49,9 @@ function TestSuiteRunFormComponentExtended_span_25_Template(rf, ctx) { if (rf &
51
49
  i0.ɵɵadvance(2);
52
50
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Environment, " ");
53
51
  } }
54
- function TestSuiteRunFormComponentExtended_span_26_Template(rf, ctx) { if (rf & 1) {
55
- i0.ɵɵelementStart(0, "span", 70);
56
- i0.ɵɵelement(1, "i", 71);
52
+ function TestSuiteRunFormComponentExtended_Conditional_26_Template(rf, ctx) { if (rf & 1) {
53
+ i0.ɵɵelementStart(0, "span", 16);
54
+ i0.ɵɵelement(1, "i", 68);
57
55
  i0.ɵɵtext(2);
58
56
  i0.ɵɵelementEnd();
59
57
  } if (rf & 2) {
@@ -61,16 +59,16 @@ function TestSuiteRunFormComponentExtended_span_26_Template(rf, ctx) { if (rf &
61
59
  i0.ɵɵadvance(2);
62
60
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.TriggerType, " ");
63
61
  } }
64
- function TestSuiteRunFormComponentExtended_button_29_Template(rf, ctx) { if (rf & 1) {
62
+ function TestSuiteRunFormComponentExtended_Conditional_29_Template(rf, ctx) { if (rf & 1) {
65
63
  const _r3 = i0.ɵɵgetCurrentView();
66
- i0.ɵɵelementStart(0, "button", 72);
67
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_button_29_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.reRunSuite()); });
68
- i0.ɵɵelement(1, "i", 73);
64
+ i0.ɵɵelementStart(0, "button", 69);
65
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_29_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.reRunSuite()); });
66
+ i0.ɵɵelement(1, "i", 70);
69
67
  i0.ɵɵtext(2, " Re-run Suite ");
70
68
  i0.ɵɵelementEnd();
71
69
  } }
72
- function TestSuiteRunFormComponentExtended_div_107_div_4_span_1_Template(rf, ctx) { if (rf & 1) {
73
- i0.ɵɵelementStart(0, "span", 84);
70
+ function TestSuiteRunFormComponentExtended_Conditional_107_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelementStart(0, "span", 78);
74
72
  i0.ɵɵtext(1);
75
73
  i0.ɵɵelementEnd();
76
74
  } if (rf & 2) {
@@ -78,91 +76,93 @@ function TestSuiteRunFormComponentExtended_div_107_div_4_span_1_Template(rf, ctx
78
76
  i0.ɵɵadvance();
79
77
  i0.ɵɵtextInterpolate(tag_r5);
80
78
  } }
81
- function TestSuiteRunFormComponentExtended_div_107_div_4_Template(rf, ctx) { if (rf & 1) {
82
- i0.ɵɵelementStart(0, "div", 82);
83
- i0.ɵɵtemplate(1, TestSuiteRunFormComponentExtended_div_107_div_4_span_1_Template, 2, 1, "span", 83);
79
+ function TestSuiteRunFormComponentExtended_Conditional_107_Conditional_4_Template(rf, ctx) { if (rf & 1) {
80
+ i0.ɵɵelementStart(0, "div", 74);
81
+ i0.ɵɵrepeaterCreate(1, TestSuiteRunFormComponentExtended_Conditional_107_Conditional_4_For_2_Template, 2, 1, "span", 78, i0.ɵɵrepeaterTrackByIdentity);
84
82
  i0.ɵɵelementEnd();
85
83
  } if (rf & 2) {
86
84
  const ctx_r1 = i0.ɵɵnextContext(2);
87
85
  i0.ɵɵadvance();
88
- i0.ɵɵproperty("ngForOf", ctx_r1.tags);
86
+ i0.ɵɵrepeater(ctx_r1.tags);
89
87
  } }
90
- function TestSuiteRunFormComponentExtended_div_107_span_5_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵelementStart(0, "span", 85);
88
+ function TestSuiteRunFormComponentExtended_Conditional_107_Conditional_5_Template(rf, ctx) { if (rf & 1) {
89
+ i0.ɵɵelementStart(0, "span", 75);
92
90
  i0.ɵɵtext(1, "No tags");
93
91
  i0.ɵɵelementEnd();
94
92
  } }
95
- function TestSuiteRunFormComponentExtended_div_107_Template(rf, ctx) { if (rf & 1) {
93
+ function TestSuiteRunFormComponentExtended_Conditional_107_Template(rf, ctx) { if (rf & 1) {
96
94
  const _r4 = i0.ɵɵgetCurrentView();
97
- i0.ɵɵelementStart(0, "div", 74)(1, "div", 75)(2, "span", 76);
98
- i0.ɵɵelement(3, "i", 77);
99
- i0.ɵɵelementEnd();
100
- i0.ɵɵtemplate(4, TestSuiteRunFormComponentExtended_div_107_div_4_Template, 2, 1, "div", 78)(5, TestSuiteRunFormComponentExtended_div_107_span_5_Template, 2, 0, "span", 79);
101
- i0.ɵɵelementStart(6, "button", 80);
102
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_107_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.startEditingTags()); });
103
- i0.ɵɵelement(7, "i", 81);
95
+ i0.ɵɵelementStart(0, "div", 45)(1, "div", 71)(2, "span", 72);
96
+ i0.ɵɵelement(3, "i", 73);
97
+ i0.ɵɵelementEnd();
98
+ i0.ɵɵconditionalCreate(4, TestSuiteRunFormComponentExtended_Conditional_107_Conditional_4_Template, 3, 0, "div", 74);
99
+ i0.ɵɵconditionalCreate(5, TestSuiteRunFormComponentExtended_Conditional_107_Conditional_5_Template, 2, 0, "span", 75);
100
+ i0.ɵɵelementStart(6, "button", 76);
101
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_107_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.startEditingTags()); });
102
+ i0.ɵɵelement(7, "i", 77);
104
103
  i0.ɵɵtext(8, " Add ");
105
104
  i0.ɵɵelementEnd()()();
106
105
  } if (rf & 2) {
107
106
  const ctx_r1 = i0.ɵɵnextContext();
108
107
  i0.ɵɵadvance(4);
109
- i0.ɵɵproperty("ngIf", ctx_r1.tags.length > 0);
108
+ i0.ɵɵconditional(ctx_r1.tags.length > 0 ? 4 : -1);
110
109
  i0.ɵɵadvance();
111
- i0.ɵɵproperty("ngIf", ctx_r1.tags.length === 0);
110
+ i0.ɵɵconditional(ctx_r1.tags.length === 0 ? 5 : -1);
112
111
  } }
113
- function TestSuiteRunFormComponentExtended_div_108_span_7_Template(rf, ctx) { if (rf & 1) {
112
+ function TestSuiteRunFormComponentExtended_Conditional_108_For_8_Template(rf, ctx) { if (rf & 1) {
114
113
  const _r7 = i0.ɵɵgetCurrentView();
115
- i0.ɵɵelementStart(0, "span", 100);
114
+ i0.ɵɵelementStart(0, "span", 83);
116
115
  i0.ɵɵtext(1);
117
- i0.ɵɵelementStart(2, "button", 101);
118
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_108_span_7_Template_button_click_2_listener() { const tag_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.removeTag(tag_r8)); });
119
- i0.ɵɵelement(3, "i", 102);
116
+ i0.ɵɵelementStart(2, "button", 92);
117
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_108_For_8_Template_button_click_2_listener() { const tag_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.removeTag(tag_r8)); });
118
+ i0.ɵɵelement(3, "i", 93);
120
119
  i0.ɵɵelementEnd()();
121
120
  } if (rf & 2) {
122
121
  const tag_r8 = ctx.$implicit;
123
122
  i0.ɵɵadvance();
124
123
  i0.ɵɵtextInterpolate1(" ", tag_r8, " ");
125
124
  } }
126
- function TestSuiteRunFormComponentExtended_div_108_span_8_Template(rf, ctx) { if (rf & 1) {
127
- i0.ɵɵelementStart(0, "span", 103);
125
+ function TestSuiteRunFormComponentExtended_Conditional_108_Conditional_9_Template(rf, ctx) { if (rf & 1) {
126
+ i0.ɵɵelementStart(0, "span", 84);
128
127
  i0.ɵɵtext(1, "No tags yet");
129
128
  i0.ɵɵelementEnd();
130
129
  } }
131
- function TestSuiteRunFormComponentExtended_div_108_i_15_Template(rf, ctx) { if (rf & 1) {
132
- i0.ɵɵelement(0, "i", 104);
130
+ function TestSuiteRunFormComponentExtended_Conditional_108_Conditional_16_Template(rf, ctx) { if (rf & 1) {
131
+ i0.ɵɵelement(0, "i", 90);
133
132
  } }
134
- function TestSuiteRunFormComponentExtended_div_108_Template(rf, ctx) { if (rf & 1) {
133
+ function TestSuiteRunFormComponentExtended_Conditional_108_Template(rf, ctx) { if (rf & 1) {
135
134
  const _r6 = i0.ɵɵgetCurrentView();
136
- i0.ɵɵelementStart(0, "div", 86)(1, "div", 87)(2, "span", 88);
137
- i0.ɵɵelement(3, "i", 77);
135
+ i0.ɵɵelementStart(0, "div", 46)(1, "div", 79)(2, "span", 80);
136
+ i0.ɵɵelement(3, "i", 73);
138
137
  i0.ɵɵtext(4, " Edit Tags");
139
138
  i0.ɵɵelementEnd()();
140
- i0.ɵɵelementStart(5, "div", 89)(6, "div", 90);
141
- i0.ɵɵtemplate(7, TestSuiteRunFormComponentExtended_div_108_span_7_Template, 4, 1, "span", 91)(8, TestSuiteRunFormComponentExtended_div_108_span_8_Template, 2, 0, "span", 92);
139
+ i0.ɵɵelementStart(5, "div", 81)(6, "div", 82);
140
+ i0.ɵɵrepeaterCreate(7, TestSuiteRunFormComponentExtended_Conditional_108_For_8_Template, 4, 1, "span", 83, i0.ɵɵrepeaterTrackByIdentity);
141
+ i0.ɵɵconditionalCreate(9, TestSuiteRunFormComponentExtended_Conditional_108_Conditional_9_Template, 2, 0, "span", 84);
142
142
  i0.ɵɵelementEnd();
143
- i0.ɵɵelementStart(9, "div", 93)(10, "input", 94);
144
- i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteRunFormComponentExtended_div_108_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.newTag, $event) || (ctx_r1.newTag = $event); return i0.ɵɵresetView($event); });
145
- i0.ɵɵlistener("keyup.enter", function TestSuiteRunFormComponentExtended_div_108_Template_input_keyup_enter_10_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.addTag()); });
143
+ i0.ɵɵelementStart(10, "div", 85)(11, "input", 86);
144
+ i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteRunFormComponentExtended_Conditional_108_Template_input_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.newTag, $event) || (ctx_r1.newTag = $event); return i0.ɵɵresetView($event); });
145
+ i0.ɵɵlistener("keyup.enter", function TestSuiteRunFormComponentExtended_Conditional_108_Template_input_keyup_enter_11_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.addTag()); });
146
146
  i0.ɵɵelementEnd();
147
- i0.ɵɵelementStart(11, "button", 95);
148
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_108_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.addTag()); });
149
- i0.ɵɵelement(12, "i", 81);
147
+ i0.ɵɵelementStart(12, "button", 87);
148
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_108_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.addTag()); });
149
+ i0.ɵɵelement(13, "i", 77);
150
150
  i0.ɵɵelementEnd()()();
151
- i0.ɵɵelementStart(13, "div", 96)(14, "button", 97);
152
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_108_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.saveTags()); });
153
- i0.ɵɵtemplate(15, TestSuiteRunFormComponentExtended_div_108_i_15_Template, 1, 0, "i", 98);
154
- i0.ɵɵtext(16);
155
- i0.ɵɵelementEnd();
156
- i0.ɵɵelementStart(17, "button", 99);
157
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_108_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancelEditingTags()); });
158
- i0.ɵɵtext(18, "Cancel");
151
+ i0.ɵɵelementStart(14, "div", 88)(15, "button", 89);
152
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_108_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.saveTags()); });
153
+ i0.ɵɵconditionalCreate(16, TestSuiteRunFormComponentExtended_Conditional_108_Conditional_16_Template, 1, 0, "i", 90);
154
+ i0.ɵɵtext(17);
155
+ i0.ɵɵelementEnd();
156
+ i0.ɵɵelementStart(18, "button", 91);
157
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_108_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancelEditingTags()); });
158
+ i0.ɵɵtext(19, "Cancel");
159
159
  i0.ɵɵelementEnd()()();
160
160
  } if (rf & 2) {
161
161
  const ctx_r1 = i0.ɵɵnextContext();
162
162
  i0.ɵɵadvance(7);
163
- i0.ɵɵproperty("ngForOf", ctx_r1.tags);
164
- i0.ɵɵadvance();
165
- i0.ɵɵproperty("ngIf", ctx_r1.tags.length === 0);
163
+ i0.ɵɵrepeater(ctx_r1.tags);
164
+ i0.ɵɵadvance(2);
165
+ i0.ɵɵconditional(ctx_r1.tags.length === 0 ? 9 : -1);
166
166
  i0.ɵɵadvance(2);
167
167
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.newTag);
168
168
  i0.ɵɵadvance();
@@ -170,12 +170,12 @@ function TestSuiteRunFormComponentExtended_div_108_Template(rf, ctx) { if (rf &
170
170
  i0.ɵɵadvance(3);
171
171
  i0.ɵɵproperty("disabled", ctx_r1.savingTags);
172
172
  i0.ɵɵadvance();
173
- i0.ɵɵproperty("ngIf", ctx_r1.savingTags);
173
+ i0.ɵɵconditional(ctx_r1.savingTags ? 16 : -1);
174
174
  i0.ɵɵadvance();
175
175
  i0.ɵɵtextInterpolate1(" ", ctx_r1.savingTags ? "Saving..." : "Save", " ");
176
176
  } }
177
- function TestSuiteRunFormComponentExtended_span_117_Template(rf, ctx) { if (rf & 1) {
178
- i0.ɵɵelementStart(0, "span", 105);
177
+ function TestSuiteRunFormComponentExtended_Conditional_117_Template(rf, ctx) { if (rf & 1) {
178
+ i0.ɵɵelementStart(0, "span", 51);
179
179
  i0.ɵɵtext(1);
180
180
  i0.ɵɵelementEnd();
181
181
  } if (rf & 2) {
@@ -183,11 +183,11 @@ function TestSuiteRunFormComponentExtended_span_117_Template(rf, ctx) { if (rf &
183
183
  i0.ɵɵadvance();
184
184
  i0.ɵɵtextInterpolate(ctx_r1.testRuns.length);
185
185
  } }
186
- function TestSuiteRunFormComponentExtended_div_129_div_19_div_2_div_11_Template(rf, ctx) { if (rf & 1) {
187
- i0.ɵɵelementStart(0, "div", 125)(1, "span", 126);
186
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
187
+ i0.ɵɵelementStart(0, "div", 110)(1, "span", 111);
188
188
  i0.ɵɵtext(2, "Avg Rating");
189
189
  i0.ɵɵelementEnd();
190
- i0.ɵɵelementStart(3, "span", 127);
190
+ i0.ɵɵelementStart(3, "span", 112);
191
191
  i0.ɵɵtext(4);
192
192
  i0.ɵɵelementEnd()();
193
193
  } if (rf & 2) {
@@ -195,8 +195,8 @@ function TestSuiteRunFormComponentExtended_div_129_div_19_div_2_div_11_Template(
195
195
  i0.ɵɵadvance(4);
196
196
  i0.ɵɵtextInterpolate1("", ctx_r1.evaluationMetrics.humanAvgRating.toFixed(1), "/10");
197
197
  } }
198
- function TestSuiteRunFormComponentExtended_div_129_div_19_div_2_div_12_span_5_Template(rf, ctx) { if (rf & 1) {
199
- i0.ɵɵelementStart(0, "span", 132);
198
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_2_Conditional_12_Conditional_5_Template(rf, ctx) { if (rf & 1) {
199
+ i0.ɵɵelementStart(0, "span", 115);
200
200
  i0.ɵɵtext(1);
201
201
  i0.ɵɵelementEnd();
202
202
  } if (rf & 2) {
@@ -204,25 +204,25 @@ function TestSuiteRunFormComponentExtended_div_129_div_19_div_2_div_12_span_5_Te
204
204
  i0.ɵɵadvance();
205
205
  i0.ɵɵtextInterpolate1("", ctx_r1.evaluationMetrics.humanIncorrectCount, " incorrect");
206
206
  } }
207
- function TestSuiteRunFormComponentExtended_div_129_div_19_div_2_div_12_Template(rf, ctx) { if (rf & 1) {
208
- i0.ɵɵelementStart(0, "div", 125)(1, "span", 126);
207
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
208
+ i0.ɵɵelementStart(0, "div", 110)(1, "span", 111);
209
209
  i0.ɵɵtext(2, "Correct");
210
210
  i0.ɵɵelementEnd();
211
- i0.ɵɵelementStart(3, "span", 130);
211
+ i0.ɵɵelementStart(3, "span", 114);
212
212
  i0.ɵɵtext(4);
213
213
  i0.ɵɵelementEnd();
214
- i0.ɵɵtemplate(5, TestSuiteRunFormComponentExtended_div_129_div_19_div_2_div_12_span_5_Template, 2, 1, "span", 131);
214
+ i0.ɵɵconditionalCreate(5, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_2_Conditional_12_Conditional_5_Template, 2, 1, "span", 115);
215
215
  i0.ɵɵelementEnd();
216
216
  } if (rf & 2) {
217
217
  const ctx_r1 = i0.ɵɵnextContext(4);
218
218
  i0.ɵɵadvance(4);
219
219
  i0.ɵɵtextInterpolate(ctx_r1.evaluationMetrics.humanCorrectCount);
220
220
  i0.ɵɵadvance();
221
- i0.ɵɵproperty("ngIf", ctx_r1.evaluationMetrics.humanIncorrectCount > 0);
221
+ i0.ɵɵconditional(ctx_r1.evaluationMetrics.humanIncorrectCount > 0 ? 5 : -1);
222
222
  } }
223
- function TestSuiteRunFormComponentExtended_div_129_div_19_div_2_div_13_Template(rf, ctx) { if (rf & 1) {
224
- i0.ɵɵelementStart(0, "div", 133)(1, "span", 134);
225
- i0.ɵɵelement(2, "i", 135);
223
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
224
+ i0.ɵɵelementStart(0, "div", 113)(1, "span", 116);
225
+ i0.ɵɵelement(2, "i", 117);
226
226
  i0.ɵɵtext(3);
227
227
  i0.ɵɵelementEnd()();
228
228
  } if (rf & 2) {
@@ -230,38 +230,39 @@ function TestSuiteRunFormComponentExtended_div_129_div_19_div_2_div_13_Template(
230
230
  i0.ɵɵadvance(3);
231
231
  i0.ɵɵtextInterpolate1(" ", ctx_r1.evaluationMetrics.humanPendingCount, " need review ");
232
232
  } }
233
- function TestSuiteRunFormComponentExtended_div_129_div_19_div_2_Template(rf, ctx) { if (rf & 1) {
234
- i0.ɵɵelementStart(0, "div", 121)(1, "div", 122);
235
- i0.ɵɵelement(2, "i", 123);
233
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_2_Template(rf, ctx) { if (rf & 1) {
234
+ i0.ɵɵelementStart(0, "div", 106)(1, "div", 107);
235
+ i0.ɵɵelement(2, "i", 108);
236
236
  i0.ɵɵelementStart(3, "span");
237
237
  i0.ɵɵtext(4, "Human Feedback");
238
238
  i0.ɵɵelementEnd()();
239
- i0.ɵɵelementStart(5, "div", 124)(6, "div", 125)(7, "span", 126);
239
+ i0.ɵɵelementStart(5, "div", 109)(6, "div", 110)(7, "span", 111);
240
240
  i0.ɵɵtext(8, "Reviewed");
241
241
  i0.ɵɵelementEnd();
242
- i0.ɵɵelementStart(9, "span", 127);
242
+ i0.ɵɵelementStart(9, "span", 112);
243
243
  i0.ɵɵtext(10);
244
244
  i0.ɵɵelementEnd()();
245
- i0.ɵɵtemplate(11, TestSuiteRunFormComponentExtended_div_129_div_19_div_2_div_11_Template, 5, 1, "div", 128)(12, TestSuiteRunFormComponentExtended_div_129_div_19_div_2_div_12_Template, 6, 2, "div", 128);
245
+ i0.ɵɵconditionalCreate(11, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_2_Conditional_11_Template, 5, 1, "div", 110);
246
+ i0.ɵɵconditionalCreate(12, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_2_Conditional_12_Template, 6, 2, "div", 110);
246
247
  i0.ɵɵelementEnd();
247
- i0.ɵɵtemplate(13, TestSuiteRunFormComponentExtended_div_129_div_19_div_2_div_13_Template, 4, 1, "div", 129);
248
+ i0.ɵɵconditionalCreate(13, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_2_Conditional_13_Template, 4, 1, "div", 113);
248
249
  i0.ɵɵelementEnd();
249
250
  } if (rf & 2) {
250
251
  const ctx_r1 = i0.ɵɵnextContext(3);
251
252
  i0.ɵɵadvance(10);
252
- i0.ɵɵtextInterpolate2("", ctx_r1.evaluationMetrics.humanReviewedCount, " / ", ctx_r1.evaluationMetrics.totalRuns, "");
253
+ i0.ɵɵtextInterpolate2("", ctx_r1.evaluationMetrics.humanReviewedCount, " / ", ctx_r1.evaluationMetrics.totalRuns);
253
254
  i0.ɵɵadvance();
254
- i0.ɵɵproperty("ngIf", ctx_r1.evaluationMetrics.humanReviewedCount > 0);
255
+ i0.ɵɵconditional(ctx_r1.evaluationMetrics.humanReviewedCount > 0 ? 11 : -1);
255
256
  i0.ɵɵadvance();
256
- i0.ɵɵproperty("ngIf", ctx_r1.evaluationMetrics.humanReviewedCount > 0);
257
+ i0.ɵɵconditional(ctx_r1.evaluationMetrics.humanReviewedCount > 0 ? 12 : -1);
257
258
  i0.ɵɵadvance();
258
- i0.ɵɵproperty("ngIf", ctx_r1.evaluationMetrics.humanPendingCount > 0);
259
+ i0.ɵɵconditional(ctx_r1.evaluationMetrics.humanPendingCount > 0 ? 13 : -1);
259
260
  } }
260
- function TestSuiteRunFormComponentExtended_div_129_div_19_div_3_div_11_Template(rf, ctx) { if (rf & 1) {
261
- i0.ɵɵelementStart(0, "div", 125)(1, "span", 126);
261
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_3_Conditional_11_Template(rf, ctx) { if (rf & 1) {
262
+ i0.ɵɵelementStart(0, "div", 110)(1, "span", 111);
262
263
  i0.ɵɵtext(2, "Avg Score");
263
264
  i0.ɵɵelementEnd();
264
- i0.ɵɵelementStart(3, "span", 127);
265
+ i0.ɵɵelementStart(3, "span", 112);
265
266
  i0.ɵɵtext(4);
266
267
  i0.ɵɵelementEnd()();
267
268
  } if (rf & 2) {
@@ -269,11 +270,11 @@ function TestSuiteRunFormComponentExtended_div_129_div_19_div_3_div_11_Template(
269
270
  i0.ɵɵadvance(4);
270
271
  i0.ɵɵtextInterpolate1("", (ctx_r1.evaluationMetrics.autoAvgScore * 100).toFixed(0), "%");
271
272
  } }
272
- function TestSuiteRunFormComponentExtended_div_129_div_19_div_3_div_12_Template(rf, ctx) { if (rf & 1) {
273
- i0.ɵɵelementStart(0, "div", 125)(1, "span", 126);
273
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_3_Conditional_12_Template(rf, ctx) { if (rf & 1) {
274
+ i0.ɵɵelementStart(0, "div", 110)(1, "span", 111);
274
275
  i0.ɵɵtext(2, "Pass Rate");
275
276
  i0.ɵɵelementEnd();
276
- i0.ɵɵelementStart(3, "span", 127);
277
+ i0.ɵɵelementStart(3, "span", 112);
277
278
  i0.ɵɵtext(4);
278
279
  i0.ɵɵelementEnd()();
279
280
  } if (rf & 2) {
@@ -281,31 +282,32 @@ function TestSuiteRunFormComponentExtended_div_129_div_19_div_3_div_12_Template(
281
282
  i0.ɵɵadvance(4);
282
283
  i0.ɵɵtextInterpolate1("", ctx_r1.evaluationMetrics.autoPassRate.toFixed(0), "%");
283
284
  } }
284
- function TestSuiteRunFormComponentExtended_div_129_div_19_div_3_Template(rf, ctx) { if (rf & 1) {
285
- i0.ɵɵelementStart(0, "div", 121)(1, "div", 122);
286
- i0.ɵɵelement(2, "i", 136);
285
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_3_Template(rf, ctx) { if (rf & 1) {
286
+ i0.ɵɵelementStart(0, "div", 106)(1, "div", 107);
287
+ i0.ɵɵelement(2, "i", 118);
287
288
  i0.ɵɵelementStart(3, "span");
288
289
  i0.ɵɵtext(4, "Auto Evaluation");
289
290
  i0.ɵɵelementEnd()();
290
- i0.ɵɵelementStart(5, "div", 124)(6, "div", 125)(7, "span", 126);
291
+ i0.ɵɵelementStart(5, "div", 109)(6, "div", 110)(7, "span", 111);
291
292
  i0.ɵɵtext(8, "Evaluated");
292
293
  i0.ɵɵelementEnd();
293
- i0.ɵɵelementStart(9, "span", 127);
294
+ i0.ɵɵelementStart(9, "span", 112);
294
295
  i0.ɵɵtext(10);
295
296
  i0.ɵɵelementEnd()();
296
- i0.ɵɵtemplate(11, TestSuiteRunFormComponentExtended_div_129_div_19_div_3_div_11_Template, 5, 1, "div", 128)(12, TestSuiteRunFormComponentExtended_div_129_div_19_div_3_div_12_Template, 5, 1, "div", 128);
297
+ i0.ɵɵconditionalCreate(11, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_3_Conditional_11_Template, 5, 1, "div", 110);
298
+ i0.ɵɵconditionalCreate(12, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_3_Conditional_12_Template, 5, 1, "div", 110);
297
299
  i0.ɵɵelementEnd()();
298
300
  } if (rf & 2) {
299
301
  const ctx_r1 = i0.ɵɵnextContext(3);
300
302
  i0.ɵɵadvance(10);
301
- i0.ɵɵtextInterpolate2("", ctx_r1.evaluationMetrics.autoEvaluatedCount, " / ", ctx_r1.evaluationMetrics.totalRuns, "");
303
+ i0.ɵɵtextInterpolate2("", ctx_r1.evaluationMetrics.autoEvaluatedCount, " / ", ctx_r1.evaluationMetrics.totalRuns);
302
304
  i0.ɵɵadvance();
303
- i0.ɵɵproperty("ngIf", ctx_r1.evaluationMetrics.autoEvaluatedCount > 0);
305
+ i0.ɵɵconditional(ctx_r1.evaluationMetrics.autoEvaluatedCount > 0 ? 11 : -1);
304
306
  i0.ɵɵadvance();
305
- i0.ɵɵproperty("ngIf", ctx_r1.evaluationMetrics.autoEvaluatedCount > 0);
307
+ i0.ɵɵconditional(ctx_r1.evaluationMetrics.autoEvaluatedCount > 0 ? 12 : -1);
306
308
  } }
307
- function TestSuiteRunFormComponentExtended_div_129_div_19_div_4_div_16_span_3_Template(rf, ctx) { if (rf & 1) {
308
- i0.ɵɵelementStart(0, "span", 140);
309
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_4_Conditional_16_Conditional_3_Template(rf, ctx) { if (rf & 1) {
310
+ i0.ɵɵelementStart(0, "span", 120);
309
311
  i0.ɵɵtext(1);
310
312
  i0.ɵɵelementEnd();
311
313
  } if (rf & 2) {
@@ -313,8 +315,8 @@ function TestSuiteRunFormComponentExtended_div_129_div_19_div_4_div_16_span_3_Te
313
315
  i0.ɵɵadvance();
314
316
  i0.ɵɵtextInterpolate1("", ctx_r1.evaluationMetrics.execErrorCount, " errors");
315
317
  } }
316
- function TestSuiteRunFormComponentExtended_div_129_div_19_div_4_div_16_span_4_Template(rf, ctx) { if (rf & 1) {
317
- i0.ɵɵelementStart(0, "span", 141);
318
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_4_Conditional_16_Conditional_4_Template(rf, ctx) { if (rf & 1) {
319
+ i0.ɵɵelementStart(0, "span", 121);
318
320
  i0.ɵɵtext(1);
319
321
  i0.ɵɵelementEnd();
320
322
  } if (rf & 2) {
@@ -322,104 +324,109 @@ function TestSuiteRunFormComponentExtended_div_129_div_19_div_4_div_16_span_4_Te
322
324
  i0.ɵɵadvance();
323
325
  i0.ɵɵtextInterpolate1("", ctx_r1.evaluationMetrics.execTimeoutCount, " timeouts");
324
326
  } }
325
- function TestSuiteRunFormComponentExtended_div_129_div_19_div_4_div_16_Template(rf, ctx) { if (rf & 1) {
326
- i0.ɵɵelementStart(0, "div", 125)(1, "span", 126);
327
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_4_Conditional_16_Template(rf, ctx) { if (rf & 1) {
328
+ i0.ɵɵelementStart(0, "div", 110)(1, "span", 111);
327
329
  i0.ɵɵtext(2, "Issues");
328
330
  i0.ɵɵelementEnd();
329
- i0.ɵɵtemplate(3, TestSuiteRunFormComponentExtended_div_129_div_19_div_4_div_16_span_3_Template, 2, 1, "span", 138)(4, TestSuiteRunFormComponentExtended_div_129_div_19_div_4_div_16_span_4_Template, 2, 1, "span", 139);
331
+ i0.ɵɵconditionalCreate(3, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_4_Conditional_16_Conditional_3_Template, 2, 1, "span", 120);
332
+ i0.ɵɵconditionalCreate(4, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_4_Conditional_16_Conditional_4_Template, 2, 1, "span", 121);
330
333
  i0.ɵɵelementEnd();
331
334
  } if (rf & 2) {
332
335
  const ctx_r1 = i0.ɵɵnextContext(4);
333
336
  i0.ɵɵadvance(3);
334
- i0.ɵɵproperty("ngIf", ctx_r1.evaluationMetrics.execErrorCount > 0);
337
+ i0.ɵɵconditional(ctx_r1.evaluationMetrics.execErrorCount > 0 ? 3 : -1);
335
338
  i0.ɵɵadvance();
336
- i0.ɵɵproperty("ngIf", ctx_r1.evaluationMetrics.execTimeoutCount > 0);
339
+ i0.ɵɵconditional(ctx_r1.evaluationMetrics.execTimeoutCount > 0 ? 4 : -1);
337
340
  } }
338
- function TestSuiteRunFormComponentExtended_div_129_div_19_div_4_Template(rf, ctx) { if (rf & 1) {
339
- i0.ɵɵelementStart(0, "div", 121)(1, "div", 122);
340
- i0.ɵɵelement(2, "i", 137);
341
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_4_Template(rf, ctx) { if (rf & 1) {
342
+ i0.ɵɵelementStart(0, "div", 106)(1, "div", 107);
343
+ i0.ɵɵelement(2, "i", 119);
341
344
  i0.ɵɵelementStart(3, "span");
342
345
  i0.ɵɵtext(4, "Execution");
343
346
  i0.ɵɵelementEnd()();
344
- i0.ɵɵelementStart(5, "div", 124)(6, "div", 125)(7, "span", 126);
347
+ i0.ɵɵelementStart(5, "div", 109)(6, "div", 110)(7, "span", 111);
345
348
  i0.ɵɵtext(8, "Completed");
346
349
  i0.ɵɵelementEnd();
347
- i0.ɵɵelementStart(9, "span", 127);
350
+ i0.ɵɵelementStart(9, "span", 112);
348
351
  i0.ɵɵtext(10);
349
352
  i0.ɵɵelementEnd()();
350
- i0.ɵɵelementStart(11, "div", 125)(12, "span", 126);
353
+ i0.ɵɵelementStart(11, "div", 110)(12, "span", 111);
351
354
  i0.ɵɵtext(13, "Success Rate");
352
355
  i0.ɵɵelementEnd();
353
- i0.ɵɵelementStart(14, "span", 127);
356
+ i0.ɵɵelementStart(14, "span", 112);
354
357
  i0.ɵɵtext(15);
355
358
  i0.ɵɵelementEnd()();
356
- i0.ɵɵtemplate(16, TestSuiteRunFormComponentExtended_div_129_div_19_div_4_div_16_Template, 5, 2, "div", 128);
359
+ i0.ɵɵconditionalCreate(16, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_4_Conditional_16_Template, 5, 2, "div", 110);
357
360
  i0.ɵɵelementEnd()();
358
361
  } if (rf & 2) {
359
362
  const ctx_r1 = i0.ɵɵnextContext(3);
360
363
  i0.ɵɵadvance(10);
361
- i0.ɵɵtextInterpolate2("", ctx_r1.evaluationMetrics.execCompletedCount, " / ", ctx_r1.evaluationMetrics.totalRuns, "");
364
+ i0.ɵɵtextInterpolate2("", ctx_r1.evaluationMetrics.execCompletedCount, " / ", ctx_r1.evaluationMetrics.totalRuns);
362
365
  i0.ɵɵadvance(5);
363
366
  i0.ɵɵtextInterpolate1("", ctx_r1.evaluationMetrics.execSuccessRate.toFixed(0), "%");
364
367
  i0.ɵɵadvance();
365
- i0.ɵɵproperty("ngIf", ctx_r1.evaluationMetrics.execErrorCount > 0 || ctx_r1.evaluationMetrics.execTimeoutCount > 0);
368
+ i0.ɵɵconditional(ctx_r1.evaluationMetrics.execErrorCount > 0 || ctx_r1.evaluationMetrics.execTimeoutCount > 0 ? 16 : -1);
366
369
  } }
367
- function TestSuiteRunFormComponentExtended_div_129_div_19_Template(rf, ctx) { if (rf & 1) {
368
- i0.ɵɵelementStart(0, "div", 118)(1, "div", 119);
369
- i0.ɵɵtemplate(2, TestSuiteRunFormComponentExtended_div_129_div_19_div_2_Template, 14, 5, "div", 120)(3, TestSuiteRunFormComponentExtended_div_129_div_19_div_3_Template, 13, 4, "div", 120)(4, TestSuiteRunFormComponentExtended_div_129_div_19_div_4_Template, 17, 4, "div", 120);
370
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Template(rf, ctx) { if (rf & 1) {
371
+ i0.ɵɵelementStart(0, "div", 102)(1, "div", 105);
372
+ i0.ɵɵconditionalCreate(2, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_2_Template, 14, 5, "div", 106);
373
+ i0.ɵɵconditionalCreate(3, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_3_Template, 13, 4, "div", 106);
374
+ i0.ɵɵconditionalCreate(4, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Conditional_4_Template, 17, 4, "div", 106);
370
375
  i0.ɵɵelementEnd()();
371
376
  } if (rf & 2) {
372
377
  const ctx_r1 = i0.ɵɵnextContext(2);
373
378
  i0.ɵɵadvance(2);
374
- i0.ɵɵproperty("ngIf", ctx_r1.evalPreferences.showHuman);
379
+ i0.ɵɵconditional(ctx_r1.evalPreferences.showHuman ? 2 : -1);
375
380
  i0.ɵɵadvance();
376
- i0.ɵɵproperty("ngIf", ctx_r1.evalPreferences.showAuto);
381
+ i0.ɵɵconditional(ctx_r1.evalPreferences.showAuto ? 3 : -1);
377
382
  i0.ɵɵadvance();
378
- i0.ɵɵproperty("ngIf", ctx_r1.evalPreferences.showExecution);
383
+ i0.ɵɵconditional(ctx_r1.evalPreferences.showExecution ? 4 : -1);
379
384
  } }
380
- function TestSuiteRunFormComponentExtended_div_129_div_20_div_8_i_2_Template(rf, ctx) { if (rf & 1) {
381
- i0.ɵɵelement(0, "i", 159);
385
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
386
+ i0.ɵɵelement(0, "i", 130);
382
387
  } }
383
- function TestSuiteRunFormComponentExtended_div_129_div_20_div_8_i_3_Template(rf, ctx) { if (rf & 1) {
384
- i0.ɵɵelement(0, "i", 160);
388
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
389
+ i0.ɵɵelement(0, "i", 131);
385
390
  } }
386
- function TestSuiteRunFormComponentExtended_div_129_div_20_div_8_i_4_Template(rf, ctx) { if (rf & 1) {
387
- i0.ɵɵelement(0, "i", 135);
391
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_For_9_Conditional_4_Template(rf, ctx) { if (rf & 1) {
392
+ i0.ɵɵelement(0, "i", 117);
388
393
  } }
389
- function TestSuiteRunFormComponentExtended_div_129_div_20_div_8_Template(rf, ctx) { if (rf & 1) {
394
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_For_9_Template(rf, ctx) { if (rf & 1) {
390
395
  const _r9 = i0.ɵɵgetCurrentView();
391
- i0.ɵɵelementStart(0, "div", 149);
392
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_129_div_20_div_8_Template_div_click_0_listener() { const item_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleRunExpanded(item_r10.run.id)); });
393
- i0.ɵɵelementStart(1, "div", 150);
394
- i0.ɵɵtemplate(2, TestSuiteRunFormComponentExtended_div_129_div_20_div_8_i_2_Template, 1, 0, "i", 151)(3, TestSuiteRunFormComponentExtended_div_129_div_20_div_8_i_3_Template, 1, 0, "i", 152)(4, TestSuiteRunFormComponentExtended_div_129_div_20_div_8_i_4_Template, 1, 0, "i", 153);
395
- i0.ɵɵelementEnd();
396
- i0.ɵɵelementStart(5, "div", 154)(6, "span", 155);
396
+ i0.ɵɵelementStart(0, "div", 128);
397
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_For_9_Template_div_click_0_listener() { const item_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleRunExpanded(item_r10.run.id)); });
398
+ i0.ɵɵelementStart(1, "div", 129);
399
+ i0.ɵɵconditionalCreate(2, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_For_9_Conditional_2_Template, 1, 0, "i", 130);
400
+ i0.ɵɵconditionalCreate(3, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_For_9_Conditional_3_Template, 1, 0, "i", 131);
401
+ i0.ɵɵconditionalCreate(4, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_For_9_Conditional_4_Template, 1, 0, "i", 117);
402
+ i0.ɵɵelementEnd();
403
+ i0.ɵɵelementStart(5, "div", 132)(6, "span", 133);
397
404
  i0.ɵɵtext(7);
398
405
  i0.ɵɵelementEnd();
399
- i0.ɵɵelementStart(8, "span", 156);
406
+ i0.ɵɵelementStart(8, "span", 134);
400
407
  i0.ɵɵtext(9);
401
408
  i0.ɵɵelementEnd()();
402
- i0.ɵɵelementStart(10, "div", 157);
403
- i0.ɵɵelement(11, "i", 158);
409
+ i0.ɵɵelementStart(10, "div", 135);
410
+ i0.ɵɵelement(11, "i", 136);
404
411
  i0.ɵɵelementEnd()();
405
412
  } if (rf & 2) {
406
413
  const item_r10 = ctx.$implicit;
407
414
  i0.ɵɵclassProp("high-priority", item_r10.priority === "high")("medium-priority", item_r10.priority === "medium");
408
415
  i0.ɵɵadvance(2);
409
- i0.ɵɵproperty("ngIf", item_r10.priority === "high");
416
+ i0.ɵɵconditional(item_r10.priority === "high" ? 2 : -1);
410
417
  i0.ɵɵadvance();
411
- i0.ɵɵproperty("ngIf", item_r10.priority === "medium");
418
+ i0.ɵɵconditional(item_r10.priority === "medium" ? 3 : -1);
412
419
  i0.ɵɵadvance();
413
- i0.ɵɵproperty("ngIf", item_r10.priority === "low");
420
+ i0.ɵɵconditional(item_r10.priority === "low" ? 4 : -1);
414
421
  i0.ɵɵadvance(3);
415
422
  i0.ɵɵtextInterpolate(item_r10.run.testName);
416
423
  i0.ɵɵadvance(2);
417
424
  i0.ɵɵtextInterpolate(item_r10.reason);
418
425
  } }
419
- function TestSuiteRunFormComponentExtended_div_129_div_20_div_9_Template(rf, ctx) { if (rf & 1) {
426
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_Conditional_10_Template(rf, ctx) { if (rf & 1) {
420
427
  const _r11 = i0.ɵɵgetCurrentView();
421
- i0.ɵɵelementStart(0, "div", 161)(1, "button", 99);
422
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_129_div_20_div_9_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeTab("runs")); });
428
+ i0.ɵɵelementStart(0, "div", 127)(1, "button", 91);
429
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_Conditional_10_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeTab("runs")); });
423
430
  i0.ɵɵtext(2);
424
431
  i0.ɵɵelementEnd()();
425
432
  } if (rf & 2) {
@@ -427,58 +434,61 @@ function TestSuiteRunFormComponentExtended_div_129_div_20_div_9_Template(rf, ctx
427
434
  i0.ɵɵadvance(2);
428
435
  i0.ɵɵtextInterpolate1(" View all ", ctx_r1.needsReviewItems.length, " items ");
429
436
  } }
430
- function TestSuiteRunFormComponentExtended_div_129_div_20_Template(rf, ctx) { if (rf & 1) {
431
- i0.ɵɵelementStart(0, "div", 142)(1, "div", 143)(2, "h3");
432
- i0.ɵɵelement(3, "i", 144);
437
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_Template(rf, ctx) { if (rf & 1) {
438
+ i0.ɵɵelementStart(0, "div", 103)(1, "div", 122)(2, "h3");
439
+ i0.ɵɵelement(3, "i", 123);
433
440
  i0.ɵɵtext(4, " Needs Review");
434
441
  i0.ɵɵelementEnd();
435
- i0.ɵɵelementStart(5, "span", 145);
442
+ i0.ɵɵelementStart(5, "span", 124);
436
443
  i0.ɵɵtext(6);
437
444
  i0.ɵɵelementEnd()();
438
- i0.ɵɵelementStart(7, "div", 146);
439
- i0.ɵɵtemplate(8, TestSuiteRunFormComponentExtended_div_129_div_20_div_8_Template, 12, 9, "div", 147)(9, TestSuiteRunFormComponentExtended_div_129_div_20_div_9_Template, 3, 1, "div", 148);
445
+ i0.ɵɵelementStart(7, "div", 125);
446
+ i0.ɵɵrepeaterCreate(8, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_For_9_Template, 12, 9, "div", 126, i0.ɵɵrepeaterTrackByIdentity);
447
+ i0.ɵɵconditionalCreate(10, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_Conditional_10_Template, 3, 1, "div", 127);
440
448
  i0.ɵɵelementEnd()();
441
449
  } if (rf & 2) {
442
450
  const ctx_r1 = i0.ɵɵnextContext(2);
443
451
  i0.ɵɵadvance(6);
444
452
  i0.ɵɵtextInterpolate1("", ctx_r1.needsReviewItems.length, " items");
445
453
  i0.ɵɵadvance(2);
446
- i0.ɵɵproperty("ngForOf", ctx_r1.needsReviewItems.slice(0, 5));
447
- i0.ɵɵadvance();
448
- i0.ɵɵproperty("ngIf", ctx_r1.needsReviewItems.length > 5);
454
+ i0.ɵɵrepeater(ctx_r1.needsReviewItems.slice(0, 5));
455
+ i0.ɵɵadvance(2);
456
+ i0.ɵɵconditional(ctx_r1.needsReviewItems.length > 5 ? 10 : -1);
449
457
  } }
450
- function TestSuiteRunFormComponentExtended_div_129_div_21_Template(rf, ctx) { if (rf & 1) {
451
- i0.ɵɵelementStart(0, "div", 162)(1, "div", 163);
452
- i0.ɵɵelement(2, "i", 164);
458
+ function TestSuiteRunFormComponentExtended_Conditional_129_Conditional_21_Template(rf, ctx) { if (rf & 1) {
459
+ i0.ɵɵelementStart(0, "div", 104)(1, "div", 137);
460
+ i0.ɵɵelement(2, "i", 138);
453
461
  i0.ɵɵelementStart(3, "span");
454
462
  i0.ɵɵtext(4, "Suite execution in progress...");
455
463
  i0.ɵɵelementEnd()();
456
- i0.ɵɵelementStart(5, "div", 165);
457
- i0.ɵɵelement(6, "i", 166);
464
+ i0.ɵɵelementStart(5, "div", 139);
465
+ i0.ɵɵelement(6, "i", 140);
458
466
  i0.ɵɵtext(7, " Auto-refreshing every 5 seconds ");
459
467
  i0.ɵɵelementEnd()();
460
468
  } }
461
- function TestSuiteRunFormComponentExtended_div_129_Template(rf, ctx) { if (rf & 1) {
462
- i0.ɵɵelementStart(0, "div", 106)(1, "div", 107)(2, "div", 108);
463
- i0.ɵɵelement(3, "i", 12);
469
+ function TestSuiteRunFormComponentExtended_Conditional_129_Template(rf, ctx) { if (rf & 1) {
470
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 94)(2, "div", 95);
471
+ i0.ɵɵelement(3, "i", 11);
464
472
  i0.ɵɵelementEnd();
465
- i0.ɵɵelementStart(4, "div", 109)(5, "h2");
473
+ i0.ɵɵelementStart(4, "div", 96)(5, "h2");
466
474
  i0.ɵɵtext(6);
467
475
  i0.ɵɵelementEnd();
468
- i0.ɵɵelementStart(7, "div", 110)(8, "div", 111)(9, "span", 112);
476
+ i0.ɵɵelementStart(7, "div", 97)(8, "div", 98)(9, "span", 99);
469
477
  i0.ɵɵtext(10);
470
478
  i0.ɵɵelementEnd();
471
- i0.ɵɵelementStart(11, "span", 113);
479
+ i0.ɵɵelementStart(11, "span", 100);
472
480
  i0.ɵɵtext(12, "Pass Rate");
473
481
  i0.ɵɵelementEnd()();
474
- i0.ɵɵelement(13, "div", 114);
475
- i0.ɵɵelementStart(14, "div", 111)(15, "span", 112);
482
+ i0.ɵɵelement(13, "div", 101);
483
+ i0.ɵɵelementStart(14, "div", 98)(15, "span", 99);
476
484
  i0.ɵɵtext(16);
477
485
  i0.ɵɵelementEnd();
478
- i0.ɵɵelementStart(17, "span", 113);
486
+ i0.ɵɵelementStart(17, "span", 100);
479
487
  i0.ɵɵtext(18, "Tests Passed");
480
488
  i0.ɵɵelementEnd()()()()();
481
- i0.ɵɵtemplate(19, TestSuiteRunFormComponentExtended_div_129_div_19_Template, 5, 3, "div", 115)(20, TestSuiteRunFormComponentExtended_div_129_div_20_Template, 10, 3, "div", 116)(21, TestSuiteRunFormComponentExtended_div_129_div_21_Template, 8, 0, "div", 117);
489
+ i0.ɵɵconditionalCreate(19, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_19_Template, 5, 3, "div", 102);
490
+ i0.ɵɵconditionalCreate(20, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_20_Template, 11, 2, "div", 103);
491
+ i0.ɵɵconditionalCreate(21, TestSuiteRunFormComponentExtended_Conditional_129_Conditional_21_Template, 8, 0, "div", 104);
482
492
  i0.ɵɵelementEnd();
483
493
  } if (rf & 2) {
484
494
  const ctx_r1 = i0.ɵɵnextContext();
@@ -487,23 +497,23 @@ function TestSuiteRunFormComponentExtended_div_129_Template(rf, ctx) { if (rf &
487
497
  i0.ɵɵadvance(2);
488
498
  i0.ɵɵproperty("ngClass", ctx_r1.getStatusIcon());
489
499
  i0.ɵɵadvance(3);
490
- i0.ɵɵtextInterpolate1("SUITE ", ctx_r1.record.Status.toUpperCase() || "UNKNOWN", "");
500
+ i0.ɵɵtextInterpolate1("SUITE ", ctx_r1.record.Status.toUpperCase() || "UNKNOWN");
491
501
  i0.ɵɵadvance(4);
492
502
  i0.ɵɵtextInterpolate1("", ctx_r1.getPassRate().toFixed(1), "%");
493
503
  i0.ɵɵadvance(6);
494
- i0.ɵɵtextInterpolate2("", ctx_r1.record.PassedTests || 0, " / ", ctx_r1.record.TotalTests || 0, "");
504
+ i0.ɵɵtextInterpolate2("", ctx_r1.record.PassedTests || 0, " / ", ctx_r1.record.TotalTests || 0);
495
505
  i0.ɵɵadvance(3);
496
- i0.ɵɵproperty("ngIf", ctx_r1.evaluationMetrics && ctx_r1.feedbacksLoaded);
506
+ i0.ɵɵconditional(ctx_r1.evaluationMetrics && ctx_r1.feedbacksLoaded ? 19 : -1);
497
507
  i0.ɵɵadvance();
498
- i0.ɵɵproperty("ngIf", ctx_r1.evalPreferences.showHuman && ctx_r1.needsReviewItems.length > 0 && ctx_r1.feedbacksLoaded);
508
+ i0.ɵɵconditional(ctx_r1.evalPreferences.showHuman && ctx_r1.needsReviewItems.length > 0 && ctx_r1.feedbacksLoaded ? 20 : -1);
499
509
  i0.ɵɵadvance();
500
- i0.ɵɵproperty("ngIf", ctx_r1.record.Status === "Running" || ctx_r1.record.Status === "Pending");
510
+ i0.ɵɵconditional(ctx_r1.record.Status === "Running" || ctx_r1.record.Status === "Pending" ? 21 : -1);
501
511
  } }
502
- function TestSuiteRunFormComponentExtended_div_130_div_1_button_4_Template(rf, ctx) { if (rf & 1) {
512
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
503
513
  const _r13 = i0.ɵɵgetCurrentView();
504
- i0.ɵɵelementStart(0, "button", 181);
505
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_1_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setRunStatusFilter("Passed")); });
506
- i0.ɵɵelement(1, "i", 182);
514
+ i0.ɵɵelementStart(0, "button", 153);
515
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setRunStatusFilter("Passed")); });
516
+ i0.ɵɵelement(1, "i", 154);
507
517
  i0.ɵɵtext(2);
508
518
  i0.ɵɵelementEnd();
509
519
  } if (rf & 2) {
@@ -512,11 +522,11 @@ function TestSuiteRunFormComponentExtended_div_130_div_1_button_4_Template(rf, c
512
522
  i0.ɵɵadvance(2);
513
523
  i0.ɵɵtextInterpolate1(" Passed (", ctx_r1.getRunCountByStatus("Passed"), ") ");
514
524
  } }
515
- function TestSuiteRunFormComponentExtended_div_130_div_1_button_5_Template(rf, ctx) { if (rf & 1) {
525
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
516
526
  const _r14 = i0.ɵɵgetCurrentView();
517
- i0.ɵɵelementStart(0, "button", 183);
518
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_1_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setRunStatusFilter("Failed")); });
519
- i0.ɵɵelement(1, "i", 102);
527
+ i0.ɵɵelementStart(0, "button", 155);
528
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setRunStatusFilter("Failed")); });
529
+ i0.ɵɵelement(1, "i", 93);
520
530
  i0.ɵɵtext(2);
521
531
  i0.ɵɵelementEnd();
522
532
  } if (rf & 2) {
@@ -525,11 +535,11 @@ function TestSuiteRunFormComponentExtended_div_130_div_1_button_5_Template(rf, c
525
535
  i0.ɵɵadvance(2);
526
536
  i0.ɵɵtextInterpolate1(" Failed (", ctx_r1.getRunCountByStatus("Failed"), ") ");
527
537
  } }
528
- function TestSuiteRunFormComponentExtended_div_130_div_1_button_6_Template(rf, ctx) { if (rf & 1) {
538
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
529
539
  const _r15 = i0.ɵɵgetCurrentView();
530
- i0.ɵɵelementStart(0, "button", 184);
531
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_1_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setRunStatusFilter("Error")); });
532
- i0.ɵɵelement(1, "i", 185);
540
+ i0.ɵɵelementStart(0, "button", 156);
541
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setRunStatusFilter("Error")); });
542
+ i0.ɵɵelement(1, "i", 157);
533
543
  i0.ɵɵtext(2);
534
544
  i0.ɵɵelementEnd();
535
545
  } if (rf & 2) {
@@ -538,17 +548,19 @@ function TestSuiteRunFormComponentExtended_div_130_div_1_button_6_Template(rf, c
538
548
  i0.ɵɵadvance(2);
539
549
  i0.ɵɵtextInterpolate1(" Error (", ctx_r1.getRunCountByStatus("Error"), ") ");
540
550
  } }
541
- function TestSuiteRunFormComponentExtended_div_130_div_1_Template(rf, ctx) { if (rf & 1) {
551
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Template(rf, ctx) { if (rf & 1) {
542
552
  const _r12 = i0.ɵɵgetCurrentView();
543
- i0.ɵɵelementStart(0, "div", 172)(1, "div", 173)(2, "button", 174);
544
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setRunStatusFilter(null)); });
553
+ i0.ɵɵelementStart(0, "div", 141)(1, "div", 145)(2, "button", 146);
554
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setRunStatusFilter(null)); });
545
555
  i0.ɵɵtext(3);
546
556
  i0.ɵɵelementEnd();
547
- i0.ɵɵtemplate(4, TestSuiteRunFormComponentExtended_div_130_div_1_button_4_Template, 3, 3, "button", 175)(5, TestSuiteRunFormComponentExtended_div_130_div_1_button_5_Template, 3, 3, "button", 176)(6, TestSuiteRunFormComponentExtended_div_130_div_1_button_6_Template, 3, 3, "button", 177);
557
+ i0.ɵɵconditionalCreate(4, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Conditional_4_Template, 3, 3, "button", 147);
558
+ i0.ɵɵconditionalCreate(5, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Conditional_5_Template, 3, 3, "button", 148);
559
+ i0.ɵɵconditionalCreate(6, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Conditional_6_Template, 3, 3, "button", 149);
548
560
  i0.ɵɵelementEnd();
549
- i0.ɵɵelementStart(7, "div", 178)(8, "button", 179);
550
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_1_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.exportToCSV()); });
551
- i0.ɵɵelement(9, "i", 180);
561
+ i0.ɵɵelementStart(7, "div", 150)(8, "button", 151);
562
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.exportToCSV()); });
563
+ i0.ɵɵelement(9, "i", 152);
552
564
  i0.ɵɵtext(10, " Export CSV ");
553
565
  i0.ɵɵelementEnd()()();
554
566
  } if (rf & 2) {
@@ -558,30 +570,30 @@ function TestSuiteRunFormComponentExtended_div_130_div_1_Template(rf, ctx) { if
558
570
  i0.ɵɵadvance();
559
571
  i0.ɵɵtextInterpolate1(" All (", ctx_r1.testRuns.length, ") ");
560
572
  i0.ɵɵadvance();
561
- i0.ɵɵproperty("ngIf", ctx_r1.getRunCountByStatus("Passed") > 0);
573
+ i0.ɵɵconditional(ctx_r1.getRunCountByStatus("Passed") > 0 ? 4 : -1);
562
574
  i0.ɵɵadvance();
563
- i0.ɵɵproperty("ngIf", ctx_r1.getRunCountByStatus("Failed") > 0);
575
+ i0.ɵɵconditional(ctx_r1.getRunCountByStatus("Failed") > 0 ? 5 : -1);
564
576
  i0.ɵɵadvance();
565
- i0.ɵɵproperty("ngIf", ctx_r1.getRunCountByStatus("Error") > 0);
577
+ i0.ɵɵconditional(ctx_r1.getRunCountByStatus("Error") > 0 ? 6 : -1);
566
578
  } }
567
- function TestSuiteRunFormComponentExtended_div_130_div_2_div_2_Template(rf, ctx) { if (rf & 1) {
568
- i0.ɵɵelementStart(0, "div", 189);
569
- i0.ɵɵelement(1, "div", 190)(2, "div", 191);
570
- i0.ɵɵelementStart(3, "div", 192);
571
- i0.ɵɵelement(4, "div", 193)(5, "div", 194);
579
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_2_For_3_Template(rf, ctx) { if (rf & 1) {
580
+ i0.ɵɵelementStart(0, "div", 159);
581
+ i0.ɵɵelement(1, "div", 160)(2, "div", 161);
582
+ i0.ɵɵelementStart(3, "div", 162);
583
+ i0.ɵɵelement(4, "div", 163)(5, "div", 164);
572
584
  i0.ɵɵelementEnd()();
573
585
  } }
574
- function TestSuiteRunFormComponentExtended_div_130_div_2_Template(rf, ctx) { if (rf & 1) {
575
- i0.ɵɵelementStart(0, "div", 186)(1, "div", 187);
576
- i0.ɵɵtemplate(2, TestSuiteRunFormComponentExtended_div_130_div_2_div_2_Template, 6, 0, "div", 188);
586
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_2_Template(rf, ctx) { if (rf & 1) {
587
+ i0.ɵɵelementStart(0, "div", 142)(1, "div", 158);
588
+ i0.ɵɵrepeaterCreate(2, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_2_For_3_Template, 6, 0, "div", 159, i0.ɵɵrepeaterTrackByIdentity);
577
589
  i0.ɵɵelementEnd()();
578
590
  } if (rf & 2) {
579
591
  i0.ɵɵadvance(2);
580
- i0.ɵɵproperty("ngForOf", i0.ɵɵpureFunction0(1, _c0));
592
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c0));
581
593
  } }
582
- function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_span_12_Template(rf, ctx) { if (rf & 1) {
583
- i0.ɵɵelementStart(0, "span", 213);
584
- i0.ɵɵelement(1, "i", 24);
594
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
595
+ i0.ɵɵelementStart(0, "span", 174);
596
+ i0.ɵɵelement(1, "i", 23);
585
597
  i0.ɵɵtext(2);
586
598
  i0.ɵɵelementEnd();
587
599
  } if (rf & 2) {
@@ -589,9 +601,9 @@ function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_span_12_Template(
589
601
  i0.ɵɵadvance(2);
590
602
  i0.ɵɵtextInterpolate1(" ", run_r17.DurationSeconds.toFixed(1), "s ");
591
603
  } }
592
- function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_span_13_Template(rf, ctx) { if (rf & 1) {
593
- i0.ɵɵelementStart(0, "span", 214);
594
- i0.ɵɵelement(1, "i", 29);
604
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
605
+ i0.ɵɵelementStart(0, "span", 175);
606
+ i0.ɵɵelement(1, "i", 28);
595
607
  i0.ɵɵtext(2);
596
608
  i0.ɵɵelementEnd();
597
609
  } if (rf & 2) {
@@ -599,14 +611,14 @@ function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_span_13_Template(
599
611
  i0.ɵɵadvance(2);
600
612
  i0.ɵɵtextInterpolate1(" ", run_r17.CostUSD.toFixed(6), " ");
601
613
  } }
602
- function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_mj_entity_link_pill_14_Template(rf, ctx) { if (rf & 1) {
603
- i0.ɵɵelement(0, "mj-entity-link-pill", 215);
614
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
615
+ i0.ɵɵelement(0, "mj-entity-link-pill", 176);
604
616
  } if (rf & 2) {
605
617
  const run_r17 = i0.ɵɵnextContext().$implicit;
606
618
  i0.ɵɵproperty("entityName", run_r17.TargetLogEntity)("recordId", run_r17.TargetLogID);
607
619
  } }
608
- function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_15_span_1_Template(rf, ctx) { if (rf & 1) {
609
- i0.ɵɵelementStart(0, "span", 218);
620
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_15_For_2_Template(rf, ctx) { if (rf & 1) {
621
+ i0.ɵɵelementStart(0, "span", 181);
610
622
  i0.ɵɵtext(1);
611
623
  i0.ɵɵelementEnd();
612
624
  } if (rf & 2) {
@@ -614,20 +626,20 @@ function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_15_span_1_Tem
614
626
  i0.ɵɵadvance();
615
627
  i0.ɵɵtextInterpolate(tag_r18);
616
628
  } }
617
- function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_15_Template(rf, ctx) { if (rf & 1) {
618
- i0.ɵɵelementStart(0, "div", 216);
619
- i0.ɵɵtemplate(1, TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_15_span_1_Template, 2, 1, "span", 217);
629
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
630
+ i0.ɵɵelementStart(0, "div", 177);
631
+ i0.ɵɵrepeaterCreate(1, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_15_For_2_Template, 2, 1, "span", 181, i0.ɵɵrepeaterTrackByIdentity);
620
632
  i0.ɵɵelementEnd();
621
633
  } if (rf & 2) {
622
634
  const run_r17 = i0.ɵɵnextContext().$implicit;
623
635
  const ctx_r1 = i0.ɵɵnextContext(3);
624
636
  i0.ɵɵadvance();
625
- i0.ɵɵproperty("ngForOf", ctx_r1.getRunTags(run_r17));
637
+ i0.ɵɵrepeater(ctx_r1.getRunTags(run_r17));
626
638
  } }
627
- function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_button_7_Template(rf, ctx) { if (rf & 1) {
639
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_For_8_Template(rf, ctx) { if (rf & 1) {
628
640
  const _r20 = i0.ɵɵgetCurrentView();
629
- i0.ɵɵelementStart(0, "button", 236);
630
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_button_7_Template_button_click_0_listener($event) { const num_r21 = i0.ɵɵrestoreView(_r20).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); ctx_r1.setInlineRating(num_r21); return i0.ɵɵresetView($event.stopPropagation()); })("mouseenter", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_button_7_Template_button_mouseenter_0_listener() { const num_r21 = i0.ɵɵrestoreView(_r20).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.inlineHoverRating = num_r21); })("mouseleave", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_button_7_Template_button_mouseleave_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.inlineHoverRating = 0); });
641
+ i0.ɵɵelementStart(0, "button", 198);
642
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_For_8_Template_button_click_0_listener($event) { const num_r21 = i0.ɵɵrestoreView(_r20).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); ctx_r1.setInlineRating(num_r21); return i0.ɵɵresetView($event.stopPropagation()); })("mouseenter", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_For_8_Template_button_mouseenter_0_listener() { const num_r21 = i0.ɵɵrestoreView(_r20).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.inlineHoverRating = num_r21); })("mouseleave", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_For_8_Template_button_mouseleave_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.inlineHoverRating = 0); });
631
643
  i0.ɵɵtext(1);
632
644
  i0.ɵɵelementEnd();
633
645
  } if (rf & 2) {
@@ -637,11 +649,11 @@ function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_button_7_T
637
649
  i0.ɵɵadvance();
638
650
  i0.ɵɵtextInterpolate1(" ", num_r21, " ");
639
651
  } }
640
- function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_div_8_Template(rf, ctx) { if (rf & 1) {
641
- i0.ɵɵelementStart(0, "div", 237)(1, "span", 238);
652
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Conditional_9_Template(rf, ctx) { if (rf & 1) {
653
+ i0.ɵɵelementStart(0, "div", 188)(1, "span", 199);
642
654
  i0.ɵɵtext(2);
643
655
  i0.ɵɵelementEnd();
644
- i0.ɵɵelementStart(3, "span", 239);
656
+ i0.ɵɵelementStart(3, "span", 200);
645
657
  i0.ɵɵtext(4);
646
658
  i0.ɵɵelementEnd()();
647
659
  } if (rf & 2) {
@@ -651,80 +663,77 @@ function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_div_8_Temp
651
663
  i0.ɵɵadvance(2);
652
664
  i0.ɵɵtextInterpolate(ctx_r1.getInlineRatingLabel());
653
665
  } }
654
- function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template(rf, ctx) { if (rf & 1) {
666
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
655
667
  const _r19 = i0.ɵɵgetCurrentView();
656
- i0.ɵɵelementStart(0, "div", 219);
657
- i0.ɵɵelement(1, "div", 220);
658
- i0.ɵɵelementStart(2, "div", 221)(3, "div", 222);
668
+ i0.ɵɵelementStart(0, "div", 180);
669
+ i0.ɵɵelement(1, "div", 182);
670
+ i0.ɵɵelementStart(2, "div", 183)(3, "div", 184);
659
671
  i0.ɵɵtext(4, "Quick Feedback");
660
672
  i0.ɵɵelementEnd();
661
- i0.ɵɵelementStart(5, "div", 223)(6, "div", 224);
662
- i0.ɵɵtemplate(7, TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_button_7_Template, 2, 11, "button", 225);
673
+ i0.ɵɵelementStart(5, "div", 185)(6, "div", 186);
674
+ i0.ɵɵrepeaterCreate(7, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_For_8_Template, 2, 11, "button", 187, i0.ɵɵrepeaterTrackByIdentity);
663
675
  i0.ɵɵelementEnd();
664
- i0.ɵɵtemplate(8, TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_div_8_Template, 5, 2, "div", 226);
676
+ i0.ɵɵconditionalCreate(9, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Conditional_9_Template, 5, 2, "div", 188);
665
677
  i0.ɵɵelementEnd();
666
- i0.ɵɵelementStart(9, "div", 227)(10, "span", 228);
667
- i0.ɵɵtext(11, "Was it correct?");
678
+ i0.ɵɵelementStart(10, "div", 189)(11, "span", 190);
679
+ i0.ɵɵtext(12, "Was it correct?");
668
680
  i0.ɵɵelementEnd();
669
- i0.ɵɵelementStart(12, "div", 229)(13, "label", 230);
670
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template_label_click_13_listener($event) { i0.ɵɵrestoreView(_r19); return i0.ɵɵresetView($event.stopPropagation()); });
671
- i0.ɵɵelementStart(14, "input", 231);
672
- i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template_input_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.inlineIsCorrect, $event) || (ctx_r1.inlineIsCorrect = $event); return i0.ɵɵresetView($event); });
681
+ i0.ɵɵelementStart(13, "div", 191)(14, "label", 192);
682
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template_label_click_14_listener($event) { i0.ɵɵrestoreView(_r19); return i0.ɵɵresetView($event.stopPropagation()); });
683
+ i0.ɵɵelementStart(15, "input", 193);
684
+ i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template_input_ngModelChange_15_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.inlineIsCorrect, $event) || (ctx_r1.inlineIsCorrect = $event); return i0.ɵɵresetView($event); });
673
685
  i0.ɵɵelementEnd();
674
- i0.ɵɵelementStart(15, "span");
675
- i0.ɵɵtext(16, "Yes");
686
+ i0.ɵɵelementStart(16, "span");
687
+ i0.ɵɵtext(17, "Yes");
676
688
  i0.ɵɵelementEnd()();
677
- i0.ɵɵelementStart(17, "label", 230);
678
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template_label_click_17_listener($event) { i0.ɵɵrestoreView(_r19); return i0.ɵɵresetView($event.stopPropagation()); });
679
- i0.ɵɵelementStart(18, "input", 231);
680
- i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template_input_ngModelChange_18_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.inlineIsCorrect, $event) || (ctx_r1.inlineIsCorrect = $event); return i0.ɵɵresetView($event); });
689
+ i0.ɵɵelementStart(18, "label", 192);
690
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template_label_click_18_listener($event) { i0.ɵɵrestoreView(_r19); return i0.ɵɵresetView($event.stopPropagation()); });
691
+ i0.ɵɵelementStart(19, "input", 193);
692
+ i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template_input_ngModelChange_19_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.inlineIsCorrect, $event) || (ctx_r1.inlineIsCorrect = $event); return i0.ɵɵresetView($event); });
681
693
  i0.ɵɵelementEnd();
682
- i0.ɵɵelementStart(19, "span");
683
- i0.ɵɵtext(20, "No");
694
+ i0.ɵɵelementStart(20, "span");
695
+ i0.ɵɵtext(21, "No");
684
696
  i0.ɵɵelementEnd()();
685
- i0.ɵɵelementStart(21, "label", 230);
686
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template_label_click_21_listener($event) { i0.ɵɵrestoreView(_r19); return i0.ɵɵresetView($event.stopPropagation()); });
687
- i0.ɵɵelementStart(22, "input", 231);
688
- i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template_input_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.inlineIsCorrect, $event) || (ctx_r1.inlineIsCorrect = $event); return i0.ɵɵresetView($event); });
697
+ i0.ɵɵelementStart(22, "label", 192);
698
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template_label_click_22_listener($event) { i0.ɵɵrestoreView(_r19); return i0.ɵɵresetView($event.stopPropagation()); });
699
+ i0.ɵɵelementStart(23, "input", 193);
700
+ i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template_input_ngModelChange_23_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.inlineIsCorrect, $event) || (ctx_r1.inlineIsCorrect = $event); return i0.ɵɵresetView($event); });
689
701
  i0.ɵɵelementEnd();
690
- i0.ɵɵelementStart(23, "span");
691
- i0.ɵɵtext(24, "Not Sure");
702
+ i0.ɵɵelementStart(24, "span");
703
+ i0.ɵɵtext(25, "Not Sure");
692
704
  i0.ɵɵelementEnd()()()();
693
- i0.ɵɵelementStart(25, "div", 232);
694
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template_div_click_25_listener($event) { i0.ɵɵrestoreView(_r19); return i0.ɵɵresetView($event.stopPropagation()); });
695
- i0.ɵɵelementStart(26, "textarea", 233);
696
- i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template_textarea_ngModelChange_26_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.inlineComments, $event) || (ctx_r1.inlineComments = $event); return i0.ɵɵresetView($event); });
705
+ i0.ɵɵelementStart(26, "div", 194);
706
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template_div_click_26_listener($event) { i0.ɵɵrestoreView(_r19); return i0.ɵɵresetView($event.stopPropagation()); });
707
+ i0.ɵɵelementStart(27, "textarea", 195);
708
+ i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template_textarea_ngModelChange_27_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.inlineComments, $event) || (ctx_r1.inlineComments = $event); return i0.ɵɵresetView($event); });
697
709
  i0.ɵɵelementEnd()();
698
- i0.ɵɵelementStart(27, "div", 234);
699
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template_div_click_27_listener($event) { i0.ɵɵrestoreView(_r19); return i0.ɵɵresetView($event.stopPropagation()); });
700
- i0.ɵɵelementStart(28, "button", 179);
701
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r19); const run_r17 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openTestRun(run_r17.ID)); });
702
- i0.ɵɵelement(29, "i", 235);
703
- i0.ɵɵtext(30, " View Full Details ");
704
- i0.ɵɵelementEnd();
705
- i0.ɵɵelementStart(31, "button", 97);
706
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template_button_click_31_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.saveInlineFeedback()); });
707
- i0.ɵɵelement(32, "i", 12);
708
- i0.ɵɵtext(33);
710
+ i0.ɵɵelementStart(28, "div", 196);
711
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template_div_click_28_listener($event) { i0.ɵɵrestoreView(_r19); return i0.ɵɵresetView($event.stopPropagation()); });
712
+ i0.ɵɵelementStart(29, "button", 151);
713
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r19); const run_r17 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openTestRun(run_r17.ID)); });
714
+ i0.ɵɵelement(30, "i", 197);
715
+ i0.ɵɵtext(31, " View Full Details ");
716
+ i0.ɵɵelementEnd();
717
+ i0.ɵɵelementStart(32, "button", 89);
718
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template_button_click_32_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.saveInlineFeedback()); });
719
+ i0.ɵɵelement(33, "i", 11);
720
+ i0.ɵɵtext(34);
709
721
  i0.ɵɵelementEnd()()()();
710
722
  } if (rf & 2) {
711
723
  const run_r17 = i0.ɵɵnextContext().$implicit;
712
724
  const ctx_r1 = i0.ɵɵnextContext(3);
713
725
  i0.ɵɵadvance(7);
714
- i0.ɵɵproperty("ngForOf", i0.ɵɵpureFunction0(18, _c1));
715
- i0.ɵɵadvance();
716
- i0.ɵɵproperty("ngIf", ctx_r1.inlineRating > 0);
726
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(17, _c1));
727
+ i0.ɵɵadvance(2);
728
+ i0.ɵɵconditional(ctx_r1.inlineRating > 0 ? 9 : -1);
717
729
  i0.ɵɵadvance(6);
718
- i0.ɵɵpropertyInterpolate1("name", "correct-", run_r17.ID, "");
719
- i0.ɵɵproperty("value", true);
730
+ i0.ɵɵproperty("name", i0.ɵɵinterpolate1("correct-", run_r17.ID))("value", true);
720
731
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.inlineIsCorrect);
721
732
  i0.ɵɵadvance(4);
722
- i0.ɵɵpropertyInterpolate1("name", "correct-", run_r17.ID, "");
723
- i0.ɵɵproperty("value", false);
733
+ i0.ɵɵproperty("name", i0.ɵɵinterpolate1("correct-", run_r17.ID))("value", false);
724
734
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.inlineIsCorrect);
725
735
  i0.ɵɵadvance(4);
726
- i0.ɵɵpropertyInterpolate1("name", "correct-", run_r17.ID, "");
727
- i0.ɵɵproperty("value", null);
736
+ i0.ɵɵproperty("name", i0.ɵɵinterpolate1("correct-", run_r17.ID))("value", null);
728
737
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.inlineIsCorrect);
729
738
  i0.ɵɵadvance(4);
730
739
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.inlineComments);
@@ -735,30 +744,32 @@ function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template(r
735
744
  i0.ɵɵadvance();
736
745
  i0.ɵɵtextInterpolate1(" ", ctx_r1.savingInlineFeedback ? "Saving..." : ctx_r1.hasFeedback(run_r17.ID) ? "Update" : "Save", " ");
737
746
  } }
738
- function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_Template(rf, ctx) { if (rf & 1) {
747
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
739
748
  const _r16 = i0.ɵɵgetCurrentView();
740
- i0.ɵɵelementStart(0, "div", 197)(1, "div", 198);
741
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_Template_div_click_1_listener() { const run_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleRunExpanded(run_r17.ID)); });
742
- i0.ɵɵelementStart(2, "div", 199);
749
+ i0.ɵɵelementStart(0, "div", 165)(1, "div", 166);
750
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Template_div_click_1_listener() { const run_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleRunExpanded(run_r17.ID)); });
751
+ i0.ɵɵelementStart(2, "div", 167);
743
752
  i0.ɵɵtext(3);
744
753
  i0.ɵɵelementEnd();
745
- i0.ɵɵelementStart(4, "div", 200);
746
- i0.ɵɵelement(5, "i", 12);
754
+ i0.ɵɵelementStart(4, "div", 168);
755
+ i0.ɵɵelement(5, "i", 11);
747
756
  i0.ɵɵelementEnd();
748
- i0.ɵɵelementStart(6, "div", 201)(7, "div", 202)(8, "div", 203);
757
+ i0.ɵɵelementStart(6, "div", 169)(7, "div", 170)(8, "div", 171);
749
758
  i0.ɵɵtext(9);
750
759
  i0.ɵɵelementEnd();
751
- i0.ɵɵelement(10, "app-evaluation-badge", 204);
760
+ i0.ɵɵelement(10, "app-evaluation-badge", 172);
752
761
  i0.ɵɵelementEnd();
753
- i0.ɵɵelementStart(11, "div", 205);
754
- i0.ɵɵtemplate(12, TestSuiteRunFormComponentExtended_div_130_div_3_div_1_span_12_Template, 3, 1, "span", 206)(13, TestSuiteRunFormComponentExtended_div_130_div_3_div_1_span_13_Template, 3, 1, "span", 207)(14, TestSuiteRunFormComponentExtended_div_130_div_3_div_1_mj_entity_link_pill_14_Template, 1, 2, "mj-entity-link-pill", 208);
762
+ i0.ɵɵelementStart(11, "div", 173);
763
+ i0.ɵɵconditionalCreate(12, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_12_Template, 3, 1, "span", 174);
764
+ i0.ɵɵconditionalCreate(13, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_13_Template, 3, 1, "span", 175);
765
+ i0.ɵɵconditionalCreate(14, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_14_Template, 1, 2, "mj-entity-link-pill", 176);
755
766
  i0.ɵɵelementEnd();
756
- i0.ɵɵtemplate(15, TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_15_Template, 2, 1, "div", 209);
767
+ i0.ɵɵconditionalCreate(15, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_15_Template, 3, 0, "div", 177);
757
768
  i0.ɵɵelementEnd();
758
- i0.ɵɵelementStart(16, "div", 210);
759
- i0.ɵɵelement(17, "i", 211);
769
+ i0.ɵɵelementStart(16, "div", 178);
770
+ i0.ɵɵelement(17, "i", 179);
760
771
  i0.ɵɵelementEnd()();
761
- i0.ɵɵtemplate(18, TestSuiteRunFormComponentExtended_div_130_div_3_div_1_div_18_Template, 34, 19, "div", 212);
772
+ i0.ɵɵconditionalCreate(18, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Conditional_18_Template, 35, 18, "div", 180);
762
773
  i0.ɵɵelementEnd();
763
774
  } if (rf & 2) {
764
775
  const run_r17 = ctx.$implicit;
@@ -774,30 +785,30 @@ function TestSuiteRunFormComponentExtended_div_130_div_3_div_1_Template(rf, ctx)
774
785
  i0.ɵɵadvance();
775
786
  i0.ɵɵproperty("executionStatus", run_r17.Status)("originalStatus", run_r17.Status)("autoScore", run_r17.Score)("humanRating", ctx_r1.getFeedbackRating(run_r17.ID) || null)("humanIsCorrect", ctx_r1.getHumanIsCorrect(run_r17.ID))("hasHumanFeedback", ctx_r1.hasFeedback(run_r17.ID))("preferences", ctx_r1.evalPreferences)("mode", "compact");
776
787
  i0.ɵɵadvance(2);
777
- i0.ɵɵproperty("ngIf", run_r17.DurationSeconds);
788
+ i0.ɵɵconditional(run_r17.DurationSeconds ? 12 : -1);
778
789
  i0.ɵɵadvance();
779
- i0.ɵɵproperty("ngIf", run_r17.CostUSD);
790
+ i0.ɵɵconditional(run_r17.CostUSD ? 13 : -1);
780
791
  i0.ɵɵadvance();
781
- i0.ɵɵproperty("ngIf", run_r17.TargetLogEntityID && run_r17.TargetLogID);
792
+ i0.ɵɵconditional(run_r17.TargetLogEntityID && run_r17.TargetLogID ? 14 : -1);
782
793
  i0.ɵɵadvance();
783
- i0.ɵɵproperty("ngIf", ctx_r1.getRunTags(run_r17).length > 0);
794
+ i0.ɵɵconditional(ctx_r1.getRunTags(run_r17).length > 0 ? 15 : -1);
784
795
  i0.ɵɵadvance(2);
785
796
  i0.ɵɵclassProp("fa-chevron-down", ctx_r1.expandedRunId !== run_r17.ID)("fa-chevron-up", ctx_r1.expandedRunId === run_r17.ID);
786
797
  i0.ɵɵadvance();
787
- i0.ɵɵproperty("ngIf", ctx_r1.expandedRunId === run_r17.ID);
798
+ i0.ɵɵconditional(ctx_r1.expandedRunId === run_r17.ID ? 18 : -1);
788
799
  } }
789
- function TestSuiteRunFormComponentExtended_div_130_div_3_Template(rf, ctx) { if (rf & 1) {
790
- i0.ɵɵelementStart(0, "div", 195);
791
- i0.ɵɵtemplate(1, TestSuiteRunFormComponentExtended_div_130_div_3_div_1_Template, 19, 22, "div", 196);
800
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_Template(rf, ctx) { if (rf & 1) {
801
+ i0.ɵɵelementStart(0, "div", 143);
802
+ i0.ɵɵrepeaterCreate(1, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_For_2_Template, 19, 22, "div", 165, i0.ɵɵrepeaterTrackByIdentity);
792
803
  i0.ɵɵelementEnd();
793
804
  } if (rf & 2) {
794
805
  const ctx_r1 = i0.ɵɵnextContext(2);
795
806
  i0.ɵɵadvance();
796
- i0.ɵɵproperty("ngForOf", ctx_r1.getFilteredTestRuns());
807
+ i0.ɵɵrepeater(ctx_r1.getFilteredTestRuns());
797
808
  } }
798
- function TestSuiteRunFormComponentExtended_div_130_div_4_Template(rf, ctx) { if (rf & 1) {
799
- i0.ɵɵelementStart(0, "div", 240)(1, "div", 241);
800
- i0.ɵɵelement(2, "i", 242);
809
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_4_Template(rf, ctx) { if (rf & 1) {
810
+ i0.ɵɵelementStart(0, "div", 144)(1, "div", 201);
811
+ i0.ɵɵelement(2, "i", 202);
801
812
  i0.ɵɵelementEnd();
802
813
  i0.ɵɵelementStart(3, "h4");
803
814
  i0.ɵɵtext(4, "No Test Runs Found");
@@ -806,10 +817,10 @@ function TestSuiteRunFormComponentExtended_div_130_div_4_Template(rf, ctx) { if
806
817
  i0.ɵɵtext(6, "No test runs have been recorded for this suite execution.");
807
818
  i0.ɵɵelementEnd()();
808
819
  } }
809
- function TestSuiteRunFormComponentExtended_div_130_div_5_Template(rf, ctx) { if (rf & 1) {
820
+ function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_5_Template(rf, ctx) { if (rf & 1) {
810
821
  const _r22 = i0.ɵɵgetCurrentView();
811
- i0.ɵɵelementStart(0, "div", 240)(1, "div", 241);
812
- i0.ɵɵelement(2, "i", 243);
822
+ i0.ɵɵelementStart(0, "div", 144)(1, "div", 201);
823
+ i0.ɵɵelement(2, "i", 203);
813
824
  i0.ɵɵelementEnd();
814
825
  i0.ɵɵelementStart(3, "h4");
815
826
  i0.ɵɵtext(4, "No Matching Runs");
@@ -817,32 +828,36 @@ function TestSuiteRunFormComponentExtended_div_130_div_5_Template(rf, ctx) { if
817
828
  i0.ɵɵelementStart(5, "p");
818
829
  i0.ɵɵtext(6, "No test runs match the current filter.");
819
830
  i0.ɵɵelementEnd();
820
- i0.ɵɵelementStart(7, "button", 179);
821
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_130_div_5_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setRunStatusFilter(null)); });
831
+ i0.ɵɵelementStart(7, "button", 151);
832
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_130_Conditional_5_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setRunStatusFilter(null)); });
822
833
  i0.ɵɵtext(8, "Clear Filter");
823
834
  i0.ɵɵelementEnd()();
824
835
  } }
825
- function TestSuiteRunFormComponentExtended_div_130_Template(rf, ctx) { if (rf & 1) {
826
- i0.ɵɵelementStart(0, "div", 167);
827
- i0.ɵɵtemplate(1, TestSuiteRunFormComponentExtended_div_130_div_1_Template, 11, 6, "div", 168)(2, TestSuiteRunFormComponentExtended_div_130_div_2_Template, 3, 2, "div", 169)(3, TestSuiteRunFormComponentExtended_div_130_div_3_Template, 2, 1, "div", 170)(4, TestSuiteRunFormComponentExtended_div_130_div_4_Template, 7, 0, "div", 171)(5, TestSuiteRunFormComponentExtended_div_130_div_5_Template, 9, 0, "div", 171);
836
+ function TestSuiteRunFormComponentExtended_Conditional_130_Template(rf, ctx) { if (rf & 1) {
837
+ i0.ɵɵelementStart(0, "div", 59);
838
+ i0.ɵɵconditionalCreate(1, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_1_Template, 11, 6, "div", 141);
839
+ i0.ɵɵconditionalCreate(2, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_2_Template, 4, 1, "div", 142);
840
+ i0.ɵɵconditionalCreate(3, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_3_Template, 3, 0, "div", 143);
841
+ i0.ɵɵconditionalCreate(4, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_4_Template, 7, 0, "div", 144);
842
+ i0.ɵɵconditionalCreate(5, TestSuiteRunFormComponentExtended_Conditional_130_Conditional_5_Template, 9, 0, "div", 144);
828
843
  i0.ɵɵelementEnd();
829
844
  } if (rf & 2) {
830
845
  const ctx_r1 = i0.ɵɵnextContext();
831
846
  i0.ɵɵadvance();
832
- i0.ɵɵproperty("ngIf", ctx_r1.testRunsLoaded && ctx_r1.testRuns.length > 0);
847
+ i0.ɵɵconditional(ctx_r1.testRunsLoaded && ctx_r1.testRuns.length > 0 ? 1 : -1);
833
848
  i0.ɵɵadvance();
834
- i0.ɵɵproperty("ngIf", ctx_r1.loadingTestRuns);
849
+ i0.ɵɵconditional(ctx_r1.loadingTestRuns ? 2 : -1);
835
850
  i0.ɵɵadvance();
836
- i0.ɵɵproperty("ngIf", !ctx_r1.loadingTestRuns && ctx_r1.testRuns.length > 0);
851
+ i0.ɵɵconditional(!ctx_r1.loadingTestRuns && ctx_r1.testRuns.length > 0 ? 3 : -1);
837
852
  i0.ɵɵadvance();
838
- i0.ɵɵproperty("ngIf", ctx_r1.testRunsLoaded && !ctx_r1.loadingTestRuns && ctx_r1.testRuns.length === 0);
853
+ i0.ɵɵconditional(ctx_r1.testRunsLoaded && !ctx_r1.loadingTestRuns && ctx_r1.testRuns.length === 0 ? 4 : -1);
839
854
  i0.ɵɵadvance();
840
- i0.ɵɵproperty("ngIf", ctx_r1.testRunsLoaded && !ctx_r1.loadingTestRuns && ctx_r1.testRuns.length > 0 && ctx_r1.getFilteredTestRuns().length === 0);
855
+ i0.ɵɵconditional(ctx_r1.testRunsLoaded && !ctx_r1.loadingTestRuns && ctx_r1.testRuns.length > 0 && ctx_r1.getFilteredTestRuns().length === 0 ? 5 : -1);
841
856
  } }
842
- function TestSuiteRunFormComponentExtended_div_131_a_15_Template(rf, ctx) { if (rf & 1) {
857
+ function TestSuiteRunFormComponentExtended_Conditional_131_Conditional_15_Template(rf, ctx) { if (rf & 1) {
843
858
  const _r23 = i0.ɵɵgetCurrentView();
844
859
  i0.ɵɵelementStart(0, "a", 3);
845
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_131_a_15_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTestSuite()); });
860
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_131_Conditional_15_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTestSuite()); });
846
861
  i0.ɵɵtext(1);
847
862
  i0.ɵɵelementEnd();
848
863
  } if (rf & 2) {
@@ -850,76 +865,77 @@ function TestSuiteRunFormComponentExtended_div_131_a_15_Template(rf, ctx) { if (
850
865
  i0.ɵɵadvance();
851
866
  i0.ɵɵtextInterpolate(ctx_r1.testSuite.Name);
852
867
  } }
853
- function TestSuiteRunFormComponentExtended_div_131_span_16_Template(rf, ctx) { if (rf & 1) {
868
+ function TestSuiteRunFormComponentExtended_Conditional_131_Conditional_16_Template(rf, ctx) { if (rf & 1) {
854
869
  i0.ɵɵelementStart(0, "span");
855
870
  i0.ɵɵtext(1, "Loading...");
856
871
  i0.ɵɵelementEnd();
857
872
  } }
858
- function TestSuiteRunFormComponentExtended_div_131_Template(rf, ctx) { if (rf & 1) {
859
- i0.ɵɵelementStart(0, "div", 244)(1, "div", 245)(2, "h3");
860
- i0.ɵɵelement(3, "i", 53);
873
+ function TestSuiteRunFormComponentExtended_Conditional_131_Template(rf, ctx) { if (rf & 1) {
874
+ i0.ɵɵelementStart(0, "div", 60)(1, "div", 204)(2, "h3");
875
+ i0.ɵɵelement(3, "i", 52);
861
876
  i0.ɵɵtext(4, " Run Information");
862
877
  i0.ɵɵelementEnd();
863
- i0.ɵɵelementStart(5, "div", 246)(6, "div", 247)(7, "div", 248);
878
+ i0.ɵɵelementStart(5, "div", 205)(6, "div", 206)(7, "div", 207);
864
879
  i0.ɵɵtext(8, "Run ID");
865
880
  i0.ɵɵelementEnd();
866
- i0.ɵɵelementStart(9, "div", 249);
881
+ i0.ɵɵelementStart(9, "div", 208);
867
882
  i0.ɵɵtext(10);
868
883
  i0.ɵɵelementEnd()();
869
- i0.ɵɵelementStart(11, "div", 247)(12, "div", 248);
884
+ i0.ɵɵelementStart(11, "div", 206)(12, "div", 207);
870
885
  i0.ɵɵtext(13, "Test Suite");
871
886
  i0.ɵɵelementEnd();
872
- i0.ɵɵelementStart(14, "div", 250);
873
- i0.ɵɵtemplate(15, TestSuiteRunFormComponentExtended_div_131_a_15_Template, 2, 1, "a", 251)(16, TestSuiteRunFormComponentExtended_div_131_span_16_Template, 2, 0, "span", 6);
887
+ i0.ɵɵelementStart(14, "div", 209);
888
+ i0.ɵɵconditionalCreate(15, TestSuiteRunFormComponentExtended_Conditional_131_Conditional_15_Template, 2, 1, "a", 210);
889
+ i0.ɵɵconditionalCreate(16, TestSuiteRunFormComponentExtended_Conditional_131_Conditional_16_Template, 2, 0, "span");
874
890
  i0.ɵɵelementEnd()();
875
- i0.ɵɵelementStart(17, "div", 247)(18, "div", 248);
891
+ i0.ɵɵelementStart(17, "div", 206)(18, "div", 207);
876
892
  i0.ɵɵtext(19, "Status");
877
893
  i0.ɵɵelementEnd();
878
- i0.ɵɵelementStart(20, "div", 250)(21, "span", 252);
894
+ i0.ɵɵelementStart(20, "div", 209)(21, "span", 211);
879
895
  i0.ɵɵtext(22);
880
896
  i0.ɵɵelementEnd()()();
881
- i0.ɵɵelementStart(23, "div", 247)(24, "div", 248);
897
+ i0.ɵɵelementStart(23, "div", 206)(24, "div", 207);
882
898
  i0.ɵɵtext(25, "Run By");
883
899
  i0.ɵɵelementEnd();
884
- i0.ɵɵelementStart(26, "div", 250);
900
+ i0.ɵɵelementStart(26, "div", 209);
885
901
  i0.ɵɵtext(27);
886
902
  i0.ɵɵelementEnd()();
887
- i0.ɵɵelementStart(28, "div", 247)(29, "div", 248);
903
+ i0.ɵɵelementStart(28, "div", 206)(29, "div", 207);
888
904
  i0.ɵɵtext(30, "Started At");
889
905
  i0.ɵɵelementEnd();
890
- i0.ɵɵelementStart(31, "div", 250);
906
+ i0.ɵɵelementStart(31, "div", 209);
891
907
  i0.ɵɵtext(32);
892
908
  i0.ɵɵpipe(33, "date");
893
909
  i0.ɵɵelementEnd()();
894
- i0.ɵɵelementStart(34, "div", 247)(35, "div", 248);
910
+ i0.ɵɵelementStart(34, "div", 206)(35, "div", 207);
895
911
  i0.ɵɵtext(36, "Completed At");
896
912
  i0.ɵɵelementEnd();
897
- i0.ɵɵelementStart(37, "div", 250);
913
+ i0.ɵɵelementStart(37, "div", 209);
898
914
  i0.ɵɵtext(38);
899
915
  i0.ɵɵpipe(39, "date");
900
916
  i0.ɵɵelementEnd()();
901
- i0.ɵɵelementStart(40, "div", 247)(41, "div", 248);
917
+ i0.ɵɵelementStart(40, "div", 206)(41, "div", 207);
902
918
  i0.ɵɵtext(42, "Environment");
903
919
  i0.ɵɵelementEnd();
904
- i0.ɵɵelementStart(43, "div", 250);
920
+ i0.ɵɵelementStart(43, "div", 209);
905
921
  i0.ɵɵtext(44);
906
922
  i0.ɵɵelementEnd()();
907
- i0.ɵɵelementStart(45, "div", 247)(46, "div", 248);
923
+ i0.ɵɵelementStart(45, "div", 206)(46, "div", 207);
908
924
  i0.ɵɵtext(47, "Trigger Type");
909
925
  i0.ɵɵelementEnd();
910
- i0.ɵɵelementStart(48, "div", 250);
926
+ i0.ɵɵelementStart(48, "div", 209);
911
927
  i0.ɵɵtext(49);
912
928
  i0.ɵɵelementEnd()();
913
- i0.ɵɵelementStart(50, "div", 247)(51, "div", 248);
929
+ i0.ɵɵelementStart(50, "div", 206)(51, "div", 207);
914
930
  i0.ɵɵtext(52, "Git Commit");
915
931
  i0.ɵɵelementEnd();
916
- i0.ɵɵelementStart(53, "div", 249);
932
+ i0.ɵɵelementStart(53, "div", 208);
917
933
  i0.ɵɵtext(54);
918
934
  i0.ɵɵelementEnd()();
919
- i0.ɵɵelementStart(55, "div", 247)(56, "div", 248);
935
+ i0.ɵɵelementStart(55, "div", 206)(56, "div", 207);
920
936
  i0.ɵɵtext(57, "Agent Version");
921
937
  i0.ɵɵelementEnd();
922
- i0.ɵɵelementStart(58, "div", 250);
938
+ i0.ɵɵelementStart(58, "div", 209);
923
939
  i0.ɵɵtext(59);
924
940
  i0.ɵɵelementEnd()()()()();
925
941
  } if (rf & 2) {
@@ -927,9 +943,9 @@ function TestSuiteRunFormComponentExtended_div_131_Template(rf, ctx) { if (rf &
927
943
  i0.ɵɵadvance(10);
928
944
  i0.ɵɵtextInterpolate(ctx_r1.record.ID);
929
945
  i0.ɵɵadvance(5);
930
- i0.ɵɵproperty("ngIf", ctx_r1.testSuite);
946
+ i0.ɵɵconditional(ctx_r1.testSuite ? 15 : -1);
931
947
  i0.ɵɵadvance();
932
- i0.ɵɵproperty("ngIf", !ctx_r1.testSuite);
948
+ i0.ɵɵconditional(!ctx_r1.testSuite ? 16 : -1);
933
949
  i0.ɵɵadvance(5);
934
950
  i0.ɵɵproperty("ngClass", ctx_r1.getStatusClass());
935
951
  i0.ɵɵadvance();
@@ -949,67 +965,67 @@ function TestSuiteRunFormComponentExtended_div_131_Template(rf, ctx) { if (rf &
949
965
  i0.ɵɵadvance(5);
950
966
  i0.ɵɵtextInterpolate(ctx_r1.record.AgentVersion || "N/A");
951
967
  } }
952
- function TestSuiteRunFormComponentExtended_div_132_div_1_Template(rf, ctx) { if (rf & 1) {
953
- i0.ɵɵelementStart(0, "div", 256);
954
- i0.ɵɵelement(1, "i", 104);
968
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_1_Template(rf, ctx) { if (rf & 1) {
969
+ i0.ɵɵelementStart(0, "div", 212);
970
+ i0.ɵɵelement(1, "i", 90);
955
971
  i0.ɵɵelementStart(2, "span");
956
972
  i0.ɵɵtext(3, "Loading test results...");
957
973
  i0.ɵɵelementEnd()();
958
974
  } }
959
- function TestSuiteRunFormComponentExtended_div_132_div_2_Template(rf, ctx) { if (rf & 1) {
960
- i0.ɵɵelementStart(0, "div", 257)(1, "h3");
961
- i0.ɵɵelement(2, "i", 258);
975
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_2_Template(rf, ctx) { if (rf & 1) {
976
+ i0.ɵɵelementStart(0, "div", 213)(1, "h3");
977
+ i0.ɵɵelement(2, "i", 214);
962
978
  i0.ɵɵtext(3, " Summary Statistics");
963
979
  i0.ɵɵelementEnd();
964
- i0.ɵɵelementStart(4, "div", 259)(5, "div", 260)(6, "div", 261);
965
- i0.ɵɵelement(7, "i", 34);
980
+ i0.ɵɵelementStart(4, "div", 215)(5, "div", 216)(6, "div", 217);
981
+ i0.ɵɵelement(7, "i", 33);
966
982
  i0.ɵɵelementEnd();
967
- i0.ɵɵelementStart(8, "div", 262)(9, "div", 112);
983
+ i0.ɵɵelementStart(8, "div", 218)(9, "div", 99);
968
984
  i0.ɵɵtext(10);
969
985
  i0.ɵɵelementEnd();
970
- i0.ɵɵelementStart(11, "div", 113);
986
+ i0.ɵɵelementStart(11, "div", 100);
971
987
  i0.ɵɵtext(12, "Passed");
972
988
  i0.ɵɵelementEnd();
973
- i0.ɵɵelementStart(13, "div", 263);
989
+ i0.ɵɵelementStart(13, "div", 219);
974
990
  i0.ɵɵtext(14);
975
991
  i0.ɵɵelementEnd()()();
976
- i0.ɵɵelementStart(15, "div", 260)(16, "div", 264);
977
- i0.ɵɵelement(17, "i", 39);
992
+ i0.ɵɵelementStart(15, "div", 216)(16, "div", 220);
993
+ i0.ɵɵelement(17, "i", 38);
978
994
  i0.ɵɵelementEnd();
979
- i0.ɵɵelementStart(18, "div", 262)(19, "div", 112);
995
+ i0.ɵɵelementStart(18, "div", 218)(19, "div", 99);
980
996
  i0.ɵɵtext(20);
981
997
  i0.ɵɵelementEnd();
982
- i0.ɵɵelementStart(21, "div", 113);
998
+ i0.ɵɵelementStart(21, "div", 100);
983
999
  i0.ɵɵtext(22, "Failed");
984
1000
  i0.ɵɵelementEnd();
985
- i0.ɵɵelementStart(23, "div", 263);
1001
+ i0.ɵɵelementStart(23, "div", 219);
986
1002
  i0.ɵɵtext(24);
987
1003
  i0.ɵɵelementEnd()()();
988
- i0.ɵɵelementStart(25, "div", 260)(26, "div", 265);
989
- i0.ɵɵelement(27, "i", 266);
1004
+ i0.ɵɵelementStart(25, "div", 216)(26, "div", 221);
1005
+ i0.ɵɵelement(27, "i", 222);
990
1006
  i0.ɵɵelementEnd();
991
- i0.ɵɵelementStart(28, "div", 262)(29, "div", 112);
1007
+ i0.ɵɵelementStart(28, "div", 218)(29, "div", 99);
992
1008
  i0.ɵɵtext(30);
993
1009
  i0.ɵɵelementEnd();
994
- i0.ɵɵelementStart(31, "div", 113);
1010
+ i0.ɵɵelementStart(31, "div", 100);
995
1011
  i0.ɵɵtext(32, "Avg Score");
996
1012
  i0.ɵɵelementEnd()()();
997
- i0.ɵɵelementStart(33, "div", 260)(34, "div", 267);
998
- i0.ɵɵelement(35, "i", 24);
1013
+ i0.ɵɵelementStart(33, "div", 216)(34, "div", 223);
1014
+ i0.ɵɵelement(35, "i", 23);
999
1015
  i0.ɵɵelementEnd();
1000
- i0.ɵɵelementStart(36, "div", 262)(37, "div", 112);
1016
+ i0.ɵɵelementStart(36, "div", 218)(37, "div", 99);
1001
1017
  i0.ɵɵtext(38);
1002
1018
  i0.ɵɵelementEnd();
1003
- i0.ɵɵelementStart(39, "div", 113);
1019
+ i0.ɵɵelementStart(39, "div", 100);
1004
1020
  i0.ɵɵtext(40, "Avg Duration");
1005
1021
  i0.ɵɵelementEnd()()();
1006
- i0.ɵɵelementStart(41, "div", 260)(42, "div", 268);
1007
- i0.ɵɵelement(43, "i", 29);
1022
+ i0.ɵɵelementStart(41, "div", 216)(42, "div", 224);
1023
+ i0.ɵɵelement(43, "i", 28);
1008
1024
  i0.ɵɵelementEnd();
1009
- i0.ɵɵelementStart(44, "div", 262)(45, "div", 112);
1025
+ i0.ɵɵelementStart(44, "div", 218)(45, "div", 99);
1010
1026
  i0.ɵɵtext(46);
1011
1027
  i0.ɵɵelementEnd();
1012
- i0.ɵɵelementStart(47, "div", 113);
1028
+ i0.ɵɵelementStart(47, "div", 100);
1013
1029
  i0.ɵɵtext(48, "Total Cost");
1014
1030
  i0.ɵɵelementEnd()()()()();
1015
1031
  } if (rf & 2) {
@@ -1027,25 +1043,25 @@ function TestSuiteRunFormComponentExtended_div_132_div_2_Template(rf, ctx) { if
1027
1043
  i0.ɵɵadvance(8);
1028
1044
  i0.ɵɵtextInterpolate1("", ctx_r1.getAverageDuration().toFixed(1), "s");
1029
1045
  i0.ɵɵadvance(8);
1030
- i0.ɵɵtextInterpolate1("$", ctx_r1.getTotalCost().toFixed(4), "");
1046
+ i0.ɵɵtextInterpolate1("$", ctx_r1.getTotalCost().toFixed(4));
1031
1047
  } }
1032
- function TestSuiteRunFormComponentExtended_div_132_div_3_th_26_Template(rf, ctx) { if (rf & 1) {
1033
- i0.ɵɵelementStart(0, "th", 286);
1048
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_Conditional_26_Template(rf, ctx) { if (rf & 1) {
1049
+ i0.ɵɵelementStart(0, "th", 236);
1034
1050
  i0.ɵɵtext(1, "Status");
1035
1051
  i0.ɵɵelementEnd();
1036
1052
  } }
1037
- function TestSuiteRunFormComponentExtended_div_132_div_3_th_27_Template(rf, ctx) { if (rf & 1) {
1038
- i0.ɵɵelementStart(0, "th", 287);
1053
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_Conditional_27_Template(rf, ctx) { if (rf & 1) {
1054
+ i0.ɵɵelementStart(0, "th", 237);
1039
1055
  i0.ɵɵtext(1, "Auto Score");
1040
1056
  i0.ɵɵelementEnd();
1041
1057
  } }
1042
- function TestSuiteRunFormComponentExtended_div_132_div_3_th_28_Template(rf, ctx) { if (rf & 1) {
1043
- i0.ɵɵelementStart(0, "th", 288);
1058
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_Conditional_28_Template(rf, ctx) { if (rf & 1) {
1059
+ i0.ɵɵelementStart(0, "th", 238);
1044
1060
  i0.ɵɵtext(1, "Human Score");
1045
1061
  i0.ɵɵelementEnd();
1046
1062
  } }
1047
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_div_7_span_1_Template(rf, ctx) { if (rf & 1) {
1048
- i0.ɵɵelementStart(0, "span", 296);
1063
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
1064
+ i0.ɵɵelementStart(0, "span", 247);
1049
1065
  i0.ɵɵtext(1);
1050
1066
  i0.ɵɵelementEnd();
1051
1067
  } if (rf & 2) {
@@ -1053,19 +1069,19 @@ function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_div_7_span_1_Temp
1053
1069
  i0.ɵɵadvance();
1054
1070
  i0.ɵɵtextInterpolate(tag_r26);
1055
1071
  } }
1056
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_div_7_Template(rf, ctx) { if (rf & 1) {
1057
- i0.ɵɵelementStart(0, "div", 294);
1058
- i0.ɵɵtemplate(1, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_div_7_span_1_Template, 2, 1, "span", 295);
1072
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1073
+ i0.ɵɵelementStart(0, "div", 245);
1074
+ i0.ɵɵrepeaterCreate(1, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_7_For_2_Template, 2, 1, "span", 247, i0.ɵɵrepeaterTrackByIdentity);
1059
1075
  i0.ɵɵelementEnd();
1060
1076
  } if (rf & 2) {
1061
1077
  const run_r25 = i0.ɵɵnextContext().$implicit;
1062
1078
  const ctx_r1 = i0.ɵɵnextContext(3);
1063
1079
  i0.ɵɵadvance();
1064
- i0.ɵɵproperty("ngForOf", ctx_r1.getRunTags(run_r25).slice(0, 2));
1080
+ i0.ɵɵrepeater(ctx_r1.getRunTags(run_r25).slice(0, 2));
1065
1081
  } }
1066
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_8_Template(rf, ctx) { if (rf & 1) {
1067
- i0.ɵɵelementStart(0, "td", 286)(1, "span", 15);
1068
- i0.ɵɵelement(2, "i", 211);
1082
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1083
+ i0.ɵɵelementStart(0, "td", 236)(1, "span", 14);
1084
+ i0.ɵɵelement(2, "i", 179);
1069
1085
  i0.ɵɵtext(3);
1070
1086
  i0.ɵɵelementEnd()();
1071
1087
  } if (rf & 2) {
@@ -1077,11 +1093,11 @@ function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_8_Template(rf,
1077
1093
  i0.ɵɵadvance();
1078
1094
  i0.ɵɵtextInterpolate1(" ", run_r25.Status, " ");
1079
1095
  } }
1080
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_9_div_1_Template(rf, ctx) { if (rf & 1) {
1081
- i0.ɵɵelementStart(0, "div", 298)(1, "div", 299);
1082
- i0.ɵɵelement(2, "div", 300);
1096
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1097
+ i0.ɵɵelementStart(0, "div", 248)(1, "div", 249);
1098
+ i0.ɵɵelement(2, "div", 250);
1083
1099
  i0.ɵɵelementEnd();
1084
- i0.ɵɵelementStart(3, "span", 301);
1100
+ i0.ɵɵelementStart(3, "span", 251);
1085
1101
  i0.ɵɵtext(4);
1086
1102
  i0.ɵɵelementEnd()();
1087
1103
  } if (rf & 2) {
@@ -1092,25 +1108,26 @@ function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_9_div_1_Templa
1092
1108
  i0.ɵɵadvance(2);
1093
1109
  i0.ɵɵtextInterpolate1("", (run_r25.Score * 100).toFixed(0), "%");
1094
1110
  } }
1095
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_9_span_2_Template(rf, ctx) { if (rf & 1) {
1096
- i0.ɵɵelementStart(0, "span", 302);
1111
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1112
+ i0.ɵɵelementStart(0, "span", 246);
1097
1113
  i0.ɵɵtext(1, "\u2014");
1098
1114
  i0.ɵɵelementEnd();
1099
1115
  } }
1100
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_9_Template(rf, ctx) { if (rf & 1) {
1101
- i0.ɵɵelementStart(0, "td", 287);
1102
- i0.ɵɵtemplate(1, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_9_div_1_Template, 5, 9, "div", 297)(2, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_9_span_2_Template, 2, 0, "span", 293);
1116
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1117
+ i0.ɵɵelementStart(0, "td", 237);
1118
+ i0.ɵɵconditionalCreate(1, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_9_Conditional_1_Template, 5, 9, "div", 248);
1119
+ i0.ɵɵconditionalCreate(2, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_9_Conditional_2_Template, 2, 0, "span", 246);
1103
1120
  i0.ɵɵelementEnd();
1104
1121
  } if (rf & 2) {
1105
1122
  const run_r25 = i0.ɵɵnextContext().$implicit;
1106
1123
  i0.ɵɵadvance();
1107
- i0.ɵɵproperty("ngIf", run_r25.Score != null);
1124
+ i0.ɵɵconditional(run_r25.Score != null ? 1 : -1);
1108
1125
  i0.ɵɵadvance();
1109
- i0.ɵɵproperty("ngIf", run_r25.Score == null);
1126
+ i0.ɵɵconditional(run_r25.Score == null ? 2 : -1);
1110
1127
  } }
1111
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_10_div_1_span_3_Template(rf, ctx) { if (rf & 1) {
1112
- i0.ɵɵelementStart(0, "span", 308);
1113
- i0.ɵɵelement(1, "i", 211);
1128
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_10_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1129
+ i0.ɵɵelementStart(0, "span", 255);
1130
+ i0.ɵɵelement(1, "i", 179);
1114
1131
  i0.ɵɵelementEnd();
1115
1132
  } if (rf & 2) {
1116
1133
  const run_r25 = i0.ɵɵnextContext(3).$implicit;
@@ -1118,11 +1135,11 @@ function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_10_div_1_span_
1118
1135
  i0.ɵɵadvance();
1119
1136
  i0.ɵɵclassProp("fa-check", ctx_r1.getHumanIsCorrect(run_r25.ID) === true)("fa-times", ctx_r1.getHumanIsCorrect(run_r25.ID) === false)("correct", ctx_r1.getHumanIsCorrect(run_r25.ID) === true)("incorrect", ctx_r1.getHumanIsCorrect(run_r25.ID) === false);
1120
1137
  } }
1121
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_10_div_1_Template(rf, ctx) { if (rf & 1) {
1122
- i0.ɵɵelementStart(0, "div", 305)(1, "span", 306);
1138
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_10_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1139
+ i0.ɵɵelementStart(0, "div", 252)(1, "span", 254);
1123
1140
  i0.ɵɵtext(2);
1124
1141
  i0.ɵɵelementEnd();
1125
- i0.ɵɵtemplate(3, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_10_div_1_span_3_Template, 2, 8, "span", 307);
1142
+ i0.ɵɵconditionalCreate(3, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_10_Conditional_1_Conditional_3_Template, 2, 8, "span", 255);
1126
1143
  i0.ɵɵelementEnd();
1127
1144
  } if (rf & 2) {
1128
1145
  const run_r25 = i0.ɵɵnextContext(2).$implicit;
@@ -1132,26 +1149,27 @@ function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_10_div_1_Templ
1132
1149
  i0.ɵɵadvance();
1133
1150
  i0.ɵɵtextInterpolate1(" ", ctx_r1.getFeedbackRating(run_r25.ID), "/10 ");
1134
1151
  i0.ɵɵadvance();
1135
- i0.ɵɵproperty("ngIf", ctx_r1.getHumanIsCorrect(run_r25.ID) !== null);
1152
+ i0.ɵɵconditional(ctx_r1.getHumanIsCorrect(run_r25.ID) !== null ? 3 : -1);
1136
1153
  } }
1137
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_10_span_2_Template(rf, ctx) { if (rf & 1) {
1138
- i0.ɵɵelementStart(0, "span", 309);
1139
- i0.ɵɵelement(1, "i", 310);
1154
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_10_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1155
+ i0.ɵɵelementStart(0, "span", 253);
1156
+ i0.ɵɵelement(1, "i", 256);
1140
1157
  i0.ɵɵelementEnd();
1141
1158
  } }
1142
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_10_Template(rf, ctx) { if (rf & 1) {
1143
- i0.ɵɵelementStart(0, "td", 288);
1144
- i0.ɵɵtemplate(1, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_10_div_1_Template, 4, 8, "div", 303)(2, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_10_span_2_Template, 2, 0, "span", 304);
1159
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1160
+ i0.ɵɵelementStart(0, "td", 238);
1161
+ i0.ɵɵconditionalCreate(1, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_10_Conditional_1_Template, 4, 8, "div", 252);
1162
+ i0.ɵɵconditionalCreate(2, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_10_Conditional_2_Template, 2, 0, "span", 253);
1145
1163
  i0.ɵɵelementEnd();
1146
1164
  } if (rf & 2) {
1147
1165
  const run_r25 = i0.ɵɵnextContext().$implicit;
1148
1166
  const ctx_r1 = i0.ɵɵnextContext(3);
1149
1167
  i0.ɵɵadvance();
1150
- i0.ɵɵproperty("ngIf", ctx_r1.hasFeedback(run_r25.ID));
1168
+ i0.ɵɵconditional(ctx_r1.hasFeedback(run_r25.ID) ? 1 : -1);
1151
1169
  i0.ɵɵadvance();
1152
- i0.ɵɵproperty("ngIf", !ctx_r1.hasFeedback(run_r25.ID));
1170
+ i0.ɵɵconditional(!ctx_r1.hasFeedback(run_r25.ID) ? 2 : -1);
1153
1171
  } }
1154
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_span_12_Template(rf, ctx) { if (rf & 1) {
1172
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1155
1173
  i0.ɵɵelementStart(0, "span");
1156
1174
  i0.ɵɵtext(1);
1157
1175
  i0.ɵɵelementEnd();
@@ -1160,121 +1178,127 @@ function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_span_12_Template(
1160
1178
  i0.ɵɵadvance();
1161
1179
  i0.ɵɵtextInterpolate1("", run_r25.DurationSeconds.toFixed(1), "s");
1162
1180
  } }
1163
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_span_13_Template(rf, ctx) { if (rf & 1) {
1164
- i0.ɵɵelementStart(0, "span", 302);
1181
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1182
+ i0.ɵɵelementStart(0, "span", 246);
1165
1183
  i0.ɵɵtext(1, "\u2014");
1166
1184
  i0.ɵɵelementEnd();
1167
1185
  } }
1168
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_span_15_Template(rf, ctx) { if (rf & 1) {
1186
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1169
1187
  i0.ɵɵelementStart(0, "span");
1170
1188
  i0.ɵɵtext(1);
1171
1189
  i0.ɵɵelementEnd();
1172
1190
  } if (rf & 2) {
1173
1191
  const run_r25 = i0.ɵɵnextContext().$implicit;
1174
1192
  i0.ɵɵadvance();
1175
- i0.ɵɵtextInterpolate1("$", run_r25.CostUSD.toFixed(4), "");
1193
+ i0.ɵɵtextInterpolate1("$", run_r25.CostUSD.toFixed(4));
1176
1194
  } }
1177
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_span_16_Template(rf, ctx) { if (rf & 1) {
1178
- i0.ɵɵelementStart(0, "span", 302);
1195
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1196
+ i0.ɵɵelementStart(0, "span", 246);
1179
1197
  i0.ɵɵtext(1, "\u2014");
1180
1198
  i0.ɵɵelementEnd();
1181
1199
  } }
1182
- function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_Template(rf, ctx) { if (rf & 1) {
1200
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Template(rf, ctx) { if (rf & 1) {
1183
1201
  const _r24 = i0.ɵɵgetCurrentView();
1184
- i0.ɵɵelementStart(0, "tr", 289);
1185
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_Template_tr_click_0_listener() { const run_r25 = i0.ɵɵrestoreView(_r24).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openTestRun(run_r25.ID)); });
1186
- i0.ɵɵelementStart(1, "td", 278);
1202
+ i0.ɵɵelementStart(0, "tr", 242);
1203
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Template_tr_click_0_listener() { const run_r25 = i0.ɵɵrestoreView(_r24).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openTestRun(run_r25.ID)); });
1204
+ i0.ɵɵelementStart(1, "td", 234);
1187
1205
  i0.ɵɵtext(2);
1188
1206
  i0.ɵɵelementEnd();
1189
- i0.ɵɵelementStart(3, "td", 279)(4, "div", 290)(5, "span", 291);
1207
+ i0.ɵɵelementStart(3, "td", 235)(4, "div", 243)(5, "span", 244);
1190
1208
  i0.ɵɵtext(6);
1191
1209
  i0.ɵɵelementEnd();
1192
- i0.ɵɵtemplate(7, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_div_7_Template, 2, 1, "div", 292);
1210
+ i0.ɵɵconditionalCreate(7, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_7_Template, 3, 0, "div", 245);
1193
1211
  i0.ɵɵelementEnd()();
1194
- i0.ɵɵtemplate(8, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_8_Template, 4, 16, "td", 280)(9, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_9_Template, 3, 2, "td", 281)(10, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_td_10_Template, 3, 2, "td", 282);
1195
- i0.ɵɵelementStart(11, "td", 283);
1196
- i0.ɵɵtemplate(12, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_span_12_Template, 2, 1, "span", 6)(13, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_span_13_Template, 2, 0, "span", 293);
1197
- i0.ɵɵelementEnd();
1198
- i0.ɵɵelementStart(14, "td", 284);
1199
- i0.ɵɵtemplate(15, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_span_15_Template, 2, 1, "span", 6)(16, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_span_16_Template, 2, 0, "span", 293);
1212
+ i0.ɵɵconditionalCreate(8, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_8_Template, 4, 16, "td", 236);
1213
+ i0.ɵɵconditionalCreate(9, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_9_Template, 3, 2, "td", 237);
1214
+ i0.ɵɵconditionalCreate(10, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_10_Template, 3, 2, "td", 238);
1215
+ i0.ɵɵelementStart(11, "td", 239);
1216
+ i0.ɵɵconditionalCreate(12, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_12_Template, 2, 1, "span");
1217
+ i0.ɵɵconditionalCreate(13, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_13_Template, 2, 0, "span", 246);
1218
+ i0.ɵɵelementEnd();
1219
+ i0.ɵɵelementStart(14, "td", 240);
1220
+ i0.ɵɵconditionalCreate(15, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_15_Template, 2, 1, "span");
1221
+ i0.ɵɵconditionalCreate(16, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Conditional_16_Template, 2, 0, "span", 246);
1200
1222
  i0.ɵɵelementEnd()();
1201
1223
  } if (rf & 2) {
1202
1224
  const run_r25 = ctx.$implicit;
1203
- const i_r27 = ctx.index;
1225
+ const ɵ$index_1024_r27 = ctx.$index;
1204
1226
  const ctx_r1 = i0.ɵɵnextContext(3);
1205
1227
  i0.ɵɵclassProp("row-passed", run_r25.Status === "Passed")("row-failed", run_r25.Status === "Failed")("row-error", run_r25.Status === "Error")("row-skipped", run_r25.Status === "Skipped");
1206
1228
  i0.ɵɵadvance(2);
1207
- i0.ɵɵtextInterpolate(i_r27 + 1);
1229
+ i0.ɵɵtextInterpolate(ɵ$index_1024_r27 + 1);
1208
1230
  i0.ɵɵadvance(4);
1209
1231
  i0.ɵɵtextInterpolate(run_r25.Test || "Unknown Test");
1210
1232
  i0.ɵɵadvance();
1211
- i0.ɵɵproperty("ngIf", ctx_r1.getRunTags(run_r25).length > 0);
1233
+ i0.ɵɵconditional(ctx_r1.getRunTags(run_r25).length > 0 ? 7 : -1);
1212
1234
  i0.ɵɵadvance();
1213
- i0.ɵɵproperty("ngIf", ctx_r1.evalPreferences.showExecution);
1235
+ i0.ɵɵconditional(ctx_r1.evalPreferences.showExecution ? 8 : -1);
1214
1236
  i0.ɵɵadvance();
1215
- i0.ɵɵproperty("ngIf", ctx_r1.evalPreferences.showAuto);
1237
+ i0.ɵɵconditional(ctx_r1.evalPreferences.showAuto ? 9 : -1);
1216
1238
  i0.ɵɵadvance();
1217
- i0.ɵɵproperty("ngIf", ctx_r1.evalPreferences.showHuman);
1239
+ i0.ɵɵconditional(ctx_r1.evalPreferences.showHuman ? 10 : -1);
1218
1240
  i0.ɵɵadvance(2);
1219
- i0.ɵɵproperty("ngIf", run_r25.DurationSeconds);
1241
+ i0.ɵɵconditional(run_r25.DurationSeconds ? 12 : -1);
1220
1242
  i0.ɵɵadvance();
1221
- i0.ɵɵproperty("ngIf", !run_r25.DurationSeconds);
1243
+ i0.ɵɵconditional(!run_r25.DurationSeconds ? 13 : -1);
1222
1244
  i0.ɵɵadvance(2);
1223
- i0.ɵɵproperty("ngIf", run_r25.CostUSD);
1245
+ i0.ɵɵconditional(run_r25.CostUSD ? 15 : -1);
1224
1246
  i0.ɵɵadvance();
1225
- i0.ɵɵproperty("ngIf", !run_r25.CostUSD);
1247
+ i0.ɵɵconditional(!run_r25.CostUSD ? 16 : -1);
1226
1248
  } }
1227
- function TestSuiteRunFormComponentExtended_div_132_div_3_Template(rf, ctx) { if (rf & 1) {
1228
- i0.ɵɵelementStart(0, "div", 257)(1, "div", 269)(2, "h3");
1229
- i0.ɵɵelement(3, "i", 270);
1249
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1250
+ i0.ɵɵelementStart(0, "div", 213)(1, "div", 225)(2, "h3");
1251
+ i0.ɵɵelement(3, "i", 226);
1230
1252
  i0.ɵɵtext(4, " Test Results");
1231
1253
  i0.ɵɵelementEnd();
1232
- i0.ɵɵelementStart(5, "div", 271)(6, "span", 272);
1233
- i0.ɵɵelement(7, "i", 34);
1254
+ i0.ɵɵelementStart(5, "div", 227)(6, "span", 228);
1255
+ i0.ɵɵelement(7, "i", 33);
1234
1256
  i0.ɵɵtext(8, " Passed");
1235
1257
  i0.ɵɵelementEnd();
1236
- i0.ɵɵelementStart(9, "span", 273);
1237
- i0.ɵɵelement(10, "i", 39);
1258
+ i0.ɵɵelementStart(9, "span", 229);
1259
+ i0.ɵɵelement(10, "i", 38);
1238
1260
  i0.ɵɵtext(11, " Failed");
1239
1261
  i0.ɵɵelementEnd();
1240
- i0.ɵɵelementStart(12, "span", 274);
1241
- i0.ɵɵelement(13, "i", 41);
1262
+ i0.ɵɵelementStart(12, "span", 230);
1263
+ i0.ɵɵelement(13, "i", 40);
1242
1264
  i0.ɵɵtext(14, " Error");
1243
1265
  i0.ɵɵelementEnd();
1244
- i0.ɵɵelementStart(15, "span", 275);
1245
- i0.ɵɵelement(16, "i", 43);
1266
+ i0.ɵɵelementStart(15, "span", 231);
1267
+ i0.ɵɵelement(16, "i", 42);
1246
1268
  i0.ɵɵtext(17, " Skipped");
1247
1269
  i0.ɵɵelementEnd()()();
1248
- i0.ɵɵelementStart(18, "div", 276)(19, "table", 277)(20, "thead")(21, "tr")(22, "th", 278);
1270
+ i0.ɵɵelementStart(18, "div", 232)(19, "table", 233)(20, "thead")(21, "tr")(22, "th", 234);
1249
1271
  i0.ɵɵtext(23, "#");
1250
1272
  i0.ɵɵelementEnd();
1251
- i0.ɵɵelementStart(24, "th", 279);
1273
+ i0.ɵɵelementStart(24, "th", 235);
1252
1274
  i0.ɵɵtext(25, "Test Name");
1253
1275
  i0.ɵɵelementEnd();
1254
- i0.ɵɵtemplate(26, TestSuiteRunFormComponentExtended_div_132_div_3_th_26_Template, 2, 0, "th", 280)(27, TestSuiteRunFormComponentExtended_div_132_div_3_th_27_Template, 2, 0, "th", 281)(28, TestSuiteRunFormComponentExtended_div_132_div_3_th_28_Template, 2, 0, "th", 282);
1255
- i0.ɵɵelementStart(29, "th", 283);
1276
+ i0.ɵɵconditionalCreate(26, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_Conditional_26_Template, 2, 0, "th", 236);
1277
+ i0.ɵɵconditionalCreate(27, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_Conditional_27_Template, 2, 0, "th", 237);
1278
+ i0.ɵɵconditionalCreate(28, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_Conditional_28_Template, 2, 0, "th", 238);
1279
+ i0.ɵɵelementStart(29, "th", 239);
1256
1280
  i0.ɵɵtext(30, "Duration");
1257
1281
  i0.ɵɵelementEnd();
1258
- i0.ɵɵelementStart(31, "th", 284);
1282
+ i0.ɵɵelementStart(31, "th", 240);
1259
1283
  i0.ɵɵtext(32, "Cost");
1260
1284
  i0.ɵɵelementEnd()()();
1261
1285
  i0.ɵɵelementStart(33, "tbody");
1262
- i0.ɵɵtemplate(34, TestSuiteRunFormComponentExtended_div_132_div_3_tr_34_Template, 17, 18, "tr", 285);
1286
+ i0.ɵɵrepeaterCreate(34, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_For_35_Template, 17, 18, "tr", 241, i0.ɵɵrepeaterTrackByIdentity);
1263
1287
  i0.ɵɵelementEnd()()()();
1264
1288
  } if (rf & 2) {
1265
1289
  const ctx_r1 = i0.ɵɵnextContext(2);
1266
1290
  i0.ɵɵadvance(26);
1267
- i0.ɵɵproperty("ngIf", ctx_r1.evalPreferences.showExecution);
1291
+ i0.ɵɵconditional(ctx_r1.evalPreferences.showExecution ? 26 : -1);
1268
1292
  i0.ɵɵadvance();
1269
- i0.ɵɵproperty("ngIf", ctx_r1.evalPreferences.showAuto);
1293
+ i0.ɵɵconditional(ctx_r1.evalPreferences.showAuto ? 27 : -1);
1270
1294
  i0.ɵɵadvance();
1271
- i0.ɵɵproperty("ngIf", ctx_r1.evalPreferences.showHuman);
1295
+ i0.ɵɵconditional(ctx_r1.evalPreferences.showHuman ? 28 : -1);
1272
1296
  i0.ɵɵadvance(6);
1273
- i0.ɵɵproperty("ngForOf", ctx_r1.testRuns);
1297
+ i0.ɵɵrepeater(ctx_r1.testRuns);
1274
1298
  } }
1275
- function TestSuiteRunFormComponentExtended_div_132_div_4_Template(rf, ctx) { if (rf & 1) {
1276
- i0.ɵɵelementStart(0, "div", 240)(1, "div", 241);
1277
- i0.ɵɵelement(2, "i", 55);
1299
+ function TestSuiteRunFormComponentExtended_Conditional_132_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1300
+ i0.ɵɵelementStart(0, "div", 144)(1, "div", 201);
1301
+ i0.ɵɵelement(2, "i", 54);
1278
1302
  i0.ɵɵelementEnd();
1279
1303
  i0.ɵɵelementStart(3, "h4");
1280
1304
  i0.ɵɵtext(4, "No Test Results Yet");
@@ -1283,52 +1307,55 @@ function TestSuiteRunFormComponentExtended_div_132_div_4_Template(rf, ctx) { if
1283
1307
  i0.ɵɵtext(6, "Test runs will appear here once the suite execution completes.");
1284
1308
  i0.ɵɵelementEnd()();
1285
1309
  } }
1286
- function TestSuiteRunFormComponentExtended_div_132_Template(rf, ctx) { if (rf & 1) {
1287
- i0.ɵɵelementStart(0, "div", 253);
1288
- i0.ɵɵtemplate(1, TestSuiteRunFormComponentExtended_div_132_div_1_Template, 4, 0, "div", 254)(2, TestSuiteRunFormComponentExtended_div_132_div_2_Template, 49, 7, "div", 255)(3, TestSuiteRunFormComponentExtended_div_132_div_3_Template, 35, 4, "div", 255)(4, TestSuiteRunFormComponentExtended_div_132_div_4_Template, 7, 0, "div", 171);
1310
+ function TestSuiteRunFormComponentExtended_Conditional_132_Template(rf, ctx) { if (rf & 1) {
1311
+ i0.ɵɵelementStart(0, "div", 61);
1312
+ i0.ɵɵconditionalCreate(1, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_1_Template, 4, 0, "div", 212);
1313
+ i0.ɵɵconditionalCreate(2, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_2_Template, 49, 7, "div", 213);
1314
+ i0.ɵɵconditionalCreate(3, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_3_Template, 36, 3, "div", 213);
1315
+ i0.ɵɵconditionalCreate(4, TestSuiteRunFormComponentExtended_Conditional_132_Conditional_4_Template, 7, 0, "div", 144);
1289
1316
  i0.ɵɵelementEnd();
1290
1317
  } if (rf & 2) {
1291
1318
  const ctx_r1 = i0.ɵɵnextContext();
1292
1319
  i0.ɵɵadvance();
1293
- i0.ɵɵproperty("ngIf", ctx_r1.loadingTestRuns);
1320
+ i0.ɵɵconditional(ctx_r1.loadingTestRuns ? 1 : -1);
1294
1321
  i0.ɵɵadvance();
1295
- i0.ɵɵproperty("ngIf", !ctx_r1.loadingTestRuns && ctx_r1.testRuns.length > 0);
1322
+ i0.ɵɵconditional(!ctx_r1.loadingTestRuns && ctx_r1.testRuns.length > 0 ? 2 : -1);
1296
1323
  i0.ɵɵadvance();
1297
- i0.ɵɵproperty("ngIf", !ctx_r1.loadingTestRuns && ctx_r1.testRuns.length > 0);
1324
+ i0.ɵɵconditional(!ctx_r1.loadingTestRuns && ctx_r1.testRuns.length > 0 ? 3 : -1);
1298
1325
  i0.ɵɵadvance();
1299
- i0.ɵɵproperty("ngIf", !ctx_r1.loadingTestRuns && ctx_r1.testRunsLoaded && ctx_r1.testRuns.length === 0);
1326
+ i0.ɵɵconditional(!ctx_r1.loadingTestRuns && ctx_r1.testRunsLoaded && ctx_r1.testRuns.length === 0 ? 4 : -1);
1300
1327
  } }
1301
- function TestSuiteRunFormComponentExtended_div_133_Template(rf, ctx) { if (rf & 1) {
1302
- i0.ɵɵelementStart(0, "div", 311);
1303
- i0.ɵɵelement(1, "mj-execution-context", 312);
1328
+ function TestSuiteRunFormComponentExtended_Conditional_133_Template(rf, ctx) { if (rf & 1) {
1329
+ i0.ɵɵelementStart(0, "div", 62);
1330
+ i0.ɵɵelement(1, "mj-execution-context", 257);
1304
1331
  i0.ɵɵelementEnd();
1305
1332
  } if (rf & 2) {
1306
1333
  const ctx_r1 = i0.ɵɵnextContext();
1307
1334
  i0.ɵɵadvance();
1308
1335
  i0.ɵɵproperty("machineName", ctx_r1.record.MachineName)("machineId", ctx_r1.record.MachineID)("runByUserName", ctx_r1.record.RunByUserName)("runByUserEmail", ctx_r1.record.RunByUserEmail)("runContextDetailsJson", ctx_r1.record.RunContextDetails);
1309
1336
  } }
1310
- function TestSuiteRunFormComponentExtended_div_136_Template(rf, ctx) { if (rf & 1) {
1337
+ function TestSuiteRunFormComponentExtended_Conditional_136_Template(rf, ctx) { if (rf & 1) {
1311
1338
  const _r28 = i0.ɵɵgetCurrentView();
1312
- i0.ɵɵelementStart(0, "div", 313)(1, "div", 314);
1313
- i0.ɵɵelement(2, "i", 65);
1339
+ i0.ɵɵelementStart(0, "div", 65)(1, "div", 258);
1340
+ i0.ɵɵelement(2, "i", 64);
1314
1341
  i0.ɵɵtext(3, " Shortcuts ");
1315
- i0.ɵɵelementStart(4, "button", 315);
1316
- i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_div_136_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r28); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleShortcuts()); });
1317
- i0.ɵɵelement(5, "i", 102);
1342
+ i0.ɵɵelementStart(4, "button", 259);
1343
+ i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Conditional_136_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r28); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleShortcuts()); });
1344
+ i0.ɵɵelement(5, "i", 93);
1318
1345
  i0.ɵɵelementEnd()();
1319
- i0.ɵɵelementStart(6, "div", 316)(7, "div", 317)(8, "span");
1346
+ i0.ɵɵelementStart(6, "div", 260)(7, "div", 261)(8, "span");
1320
1347
  i0.ɵɵtext(9, "Refresh");
1321
1348
  i0.ɵɵelementEnd();
1322
- i0.ɵɵelementStart(10, "span", 318)(11, "kbd");
1349
+ i0.ɵɵelementStart(10, "span", 262)(11, "kbd");
1323
1350
  i0.ɵɵtext(12, "Cmd");
1324
1351
  i0.ɵɵelementEnd();
1325
1352
  i0.ɵɵelementStart(13, "kbd");
1326
1353
  i0.ɵɵtext(14, "R");
1327
1354
  i0.ɵɵelementEnd()()();
1328
- i0.ɵɵelementStart(15, "div", 317)(16, "span");
1355
+ i0.ɵɵelementStart(15, "div", 261)(16, "span");
1329
1356
  i0.ɵɵtext(17, "Re-run Suite");
1330
1357
  i0.ɵɵelementEnd();
1331
- i0.ɵɵelementStart(18, "span", 318)(19, "kbd");
1358
+ i0.ɵɵelementStart(18, "span", 262)(19, "kbd");
1332
1359
  i0.ɵɵtext(20, "Cmd");
1333
1360
  i0.ɵɵelementEnd();
1334
1361
  i0.ɵɵelementStart(21, "kbd");
@@ -1337,10 +1364,10 @@ function TestSuiteRunFormComponentExtended_div_136_Template(rf, ctx) { if (rf &
1337
1364
  i0.ɵɵelementStart(23, "kbd");
1338
1365
  i0.ɵɵtext(24, "R");
1339
1366
  i0.ɵɵelementEnd()()();
1340
- i0.ɵɵelementStart(25, "div", 317)(26, "span");
1367
+ i0.ɵɵelementStart(25, "div", 261)(26, "span");
1341
1368
  i0.ɵɵtext(27, "Switch Tabs");
1342
1369
  i0.ɵɵelementEnd();
1343
- i0.ɵɵelementStart(28, "span", 318)(29, "kbd");
1370
+ i0.ɵɵelementStart(28, "span", 262)(29, "kbd");
1344
1371
  i0.ɵɵtext(30, "1");
1345
1372
  i0.ɵɵelementEnd();
1346
1373
  i0.ɵɵtext(31, "-");
@@ -1351,14 +1378,8 @@ function TestSuiteRunFormComponentExtended_div_136_Template(rf, ctx) { if (rf &
1351
1378
  /** Settings key for keyboard shortcuts visibility */
1352
1379
  const SHORTCUTS_SETTINGS_KEY = '__mj.Testing.ShowKeyboardShortcuts';
1353
1380
  let TestSuiteRunFormComponentExtended = class TestSuiteRunFormComponentExtended extends TestSuiteRunFormComponent {
1354
- constructor(elementRef, sharedService, router, route, cdr, testingDialogService, evalPrefsService, viewContainerRef, appManager) {
1355
- super(elementRef, sharedService, router, route, cdr);
1356
- this.router = router;
1357
- this.cdr = cdr;
1358
- this.testingDialogService = testingDialogService;
1359
- this.evalPrefsService = evalPrefsService;
1360
- this.viewContainerRef = viewContainerRef;
1361
- this.appManager = appManager;
1381
+ constructor() {
1382
+ super(...arguments);
1362
1383
  this.destroy$ = new Subject();
1363
1384
  // UI state
1364
1385
  this.activeTab = 'overview';
@@ -1402,6 +1423,12 @@ let TestSuiteRunFormComponentExtended = class TestSuiteRunFormComponentExtended
1402
1423
  this.testRunsWithFeedback = [];
1403
1424
  this.evaluationMetrics = null;
1404
1425
  this.needsReviewItems = [];
1426
+ // Service injections
1427
+ this.navigationService = inject(NavigationService);
1428
+ this.testingDialogService = inject(TestingDialogService);
1429
+ this.evalPrefsService = inject(EvaluationPreferencesService);
1430
+ this.viewContainerRef = inject(ViewContainerRef);
1431
+ this.appManager = inject(ApplicationManager);
1405
1432
  }
1406
1433
  async ngOnInit() {
1407
1434
  await super.ngOnInit();
@@ -2046,166 +2073,172 @@ let TestSuiteRunFormComponentExtended = class TestSuiteRunFormComponentExtended
2046
2073
  URL.revokeObjectURL(link.href);
2047
2074
  SharedService.Instance.CreateSimpleNotification('Export complete', 'success', 2000);
2048
2075
  }
2049
- static { this.ɵfac = function TestSuiteRunFormComponentExtended_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TestSuiteRunFormComponentExtended)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.TestingDialogService), i0.ɵɵdirectiveInject(i3.EvaluationPreferencesService), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i4.ApplicationManager)); }; }
2076
+ static { this.ɵfac = /*@__PURE__*/ (() => { let ɵTestSuiteRunFormComponentExtended_BaseFactory; return function TestSuiteRunFormComponentExtended_Factory(__ngFactoryType__) { return (ɵTestSuiteRunFormComponentExtended_BaseFactory || (ɵTestSuiteRunFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(TestSuiteRunFormComponentExtended)))(__ngFactoryType__ || TestSuiteRunFormComponentExtended); }; })(); }
2050
2077
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestSuiteRunFormComponentExtended, selectors: [["mj-test-suite-run-form"]], hostBindings: function TestSuiteRunFormComponentExtended_HostBindings(rf, ctx) { if (rf & 1) {
2051
- i0.ɵɵlistener("keydown", function TestSuiteRunFormComponentExtended_keydown_HostBindingHandler($event) { return ctx.handleKeyboardShortcut($event); }, false, i0.ɵɵresolveDocument);
2052
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 137, vars: 48, consts: [["kendoDialogContainer", "", 1, "test-suite-run-form"], [1, "suite-run-header"], ["aria-label", "Breadcrumb", 1, "breadcrumb"], ["href", "javascript:void(0)", 3, "click"], [1, "fas", "fa-vial"], [1, "breadcrumb-text"], [4, "ngIf"], [1, "current"], [1, "fas", "fa-chevron-right", "separator"], [1, "header-content"], [1, "header-left"], [1, "suite-run-icon"], [1, "fas", 3, "ngClass"], [1, "suite-run-info"], [1, "suite-run-meta"], [1, "status-badge", 3, "ngClass"], ["class", "meta-tag environment", 4, "ngIf"], ["class", "meta-tag trigger", 4, "ngIf"], [1, "header-actions"], ["kendoButton", "", "themeColor", "primary", 3, "click", 4, "ngIf"], ["kendoButton", "", 3, "click", "disabled"], [1, "metrics-bar"], [1, "metric-card"], [1, "metric-icon"], [1, "fas", "fa-clock"], [1, "metric-content"], [1, "metric-value"], [1, "metric-label"], [1, "fas", "fa-percentage"], [1, "fas", "fa-dollar-sign"], [1, "fas", "fa-calendar"], [1, "results-summary"], [1, "result-item", "passed"], [1, "result-icon"], [1, "fas", "fa-check-circle"], [1, "result-content"], [1, "result-count"], [1, "result-label"], [1, "result-item", "failed"], [1, "fas", "fa-times-circle"], [1, "result-item", "error"], [1, "fas", "fa-exclamation-circle"], [1, "result-item", "skipped"], [1, "fas", "fa-forward"], [1, "result-item", "total"], [1, "fas", "fa-list"], ["class", "tags-bar", 4, "ngIf"], ["class", "tags-editor-panel", 4, "ngIf"], [1, "tabs-container"], ["role", "tablist", 1, "tabs"], ["role", "tab", 1, "tab", 3, "click"], [1, "fas", "fa-th-large"], ["class", "tab-badge", 4, "ngIf"], [1, "fas", "fa-info-circle"], ["role", "tab", "title", "Press 4", 1, "tab", 3, "click"], [1, "fas", "fa-chart-bar"], ["role", "tab", "title", "Press 5", 1, "tab", 3, "click"], [1, "fas", "fa-microchip"], [1, "tab-content"], ["class", "overview-tab", 4, "ngIf"], ["class", "runs-tab", 4, "ngIf"], ["class", "details-tab", 4, "ngIf"], ["class", "analytics-tab", 4, "ngIf"], ["class", "execution-tab", 4, "ngIf"], [1, "shortcuts-toggle", 3, "click", "title"], [1, "fas", "fa-keyboard"], ["class", "keyboard-shortcuts", 4, "ngIf"], [1, "fas", "fa-layer-group"], [1, "meta-tag", "environment"], [1, "fas", "fa-server"], [1, "meta-tag", "trigger"], [1, "fas", "fa-bolt"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "fas", "fa-play"], [1, "tags-bar"], [1, "tags-bar-content"], [1, "tags-bar-label"], [1, "fas", "fa-tags"], ["class", "tags-bar-chips", 4, "ngIf"], ["class", "tags-bar-empty", 4, "ngIf"], ["title", "Edit tags", 1, "tags-bar-edit", 3, "click"], [1, "fas", "fa-plus"], [1, "tags-bar-chips"], ["class", "tag-inline", 4, "ngFor", "ngForOf"], [1, "tag-inline"], [1, "tags-bar-empty"], [1, "tags-editor-panel"], [1, "tags-editor-header"], [1, "tags-editor-title"], [1, "tags-editor-body"], [1, "tags-editor-chips"], ["class", "tag-editable", 4, "ngFor", "ngForOf"], ["class", "tags-empty-hint", 4, "ngIf"], [1, "tags-editor-input"], ["type", "text", "placeholder", "Type a tag and press Enter...", 1, "tag-text-input", 3, "ngModelChange", "keyup.enter", "ngModel"], ["kendoButton", "", "fillMode", "flat", 3, "click", "disabled"], [1, "tags-editor-footer"], ["kendoButton", "", "themeColor", "primary", 3, "click", "disabled"], ["class", "fas fa-spinner fa-spin", 4, "ngIf"], ["kendoButton", "", "fillMode", "flat", 3, "click"], [1, "tag-editable"], ["title", "Remove tag", 1, "tag-remove-btn", 3, "click"], [1, "fas", "fa-times"], [1, "tags-empty-hint"], [1, "fas", "fa-spinner", "fa-spin"], [1, "tab-badge"], [1, "overview-tab"], [1, "result-hero"], [1, "result-hero-icon"], [1, "result-hero-text"], [1, "result-hero-stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "stat-divider"], ["class", "evaluation-summary", 4, "ngIf"], ["class", "needs-review-section", 4, "ngIf"], ["class", "progress-section", 4, "ngIf"], [1, "evaluation-summary"], [1, "eval-summary-grid"], ["class", "eval-summary-card", 4, "ngIf"], [1, "eval-summary-card"], [1, "eval-card-header"], [1, "fa-solid", "fa-user"], [1, "eval-card-body"], [1, "eval-stat-row"], [1, "eval-stat-label"], [1, "eval-stat-value"], ["class", "eval-stat-row", 4, "ngIf"], ["class", "eval-card-footer", 4, "ngIf"], [1, "eval-stat-value", "correct"], ["class", "eval-stat-value incorrect", 4, "ngIf"], [1, "eval-stat-value", "incorrect"], [1, "eval-card-footer"], [1, "pending-badge"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-robot"], [1, "fa-solid", "fa-circle-check"], ["class", "eval-stat-value error", 4, "ngIf"], ["class", "eval-stat-value timeout", 4, "ngIf"], [1, "eval-stat-value", "error"], [1, "eval-stat-value", "timeout"], [1, "needs-review-section"], [1, "needs-review-header"], [1, "fa-solid", "fa-user-clock"], [1, "review-count"], [1, "needs-review-list"], ["class", "review-item", 3, "high-priority", "medium-priority", "click", 4, "ngFor", "ngForOf"], ["class", "review-more", 4, "ngIf"], [1, "review-item", 3, "click"], [1, "review-item-icon"], ["class", "fa-solid fa-exclamation-triangle", 4, "ngIf"], ["class", "fa-solid fa-circle-dot", 4, "ngIf"], ["class", "fa-solid fa-clock", 4, "ngIf"], [1, "review-item-content"], [1, "review-item-name"], [1, "review-item-reason"], [1, "review-item-action"], [1, "fa-solid", "fa-chevron-right"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "fa-solid", "fa-circle-dot"], [1, "review-more"], [1, "progress-section"], [1, "progress-info"], [1, "fas", "fa-circle-notch", "fa-spin"], [1, "auto-refresh-notice"], [1, "fas", "fa-sync"], [1, "runs-tab"], ["class", "runs-toolbar", 4, "ngIf"], ["class", "loading-state", 4, "ngIf"], ["class", "test-runs-list", 4, "ngIf"], ["class", "empty-state", 4, "ngIf"], [1, "runs-toolbar"], [1, "run-filters"], [1, "filter-btn", 3, "click"], ["class", "filter-btn passed", 3, "active", "click", 4, "ngIf"], ["class", "filter-btn failed", 3, "active", "click", 4, "ngIf"], ["class", "filter-btn error", 3, "active", "click", 4, "ngIf"], [1, "runs-actions"], ["kendoButton", "", 3, "click"], [1, "fas", "fa-download"], [1, "filter-btn", "passed", 3, "click"], [1, "fas", "fa-check"], [1, "filter-btn", "failed", 3, "click"], [1, "filter-btn", "error", 3, "click"], [1, "fas", "fa-exclamation"], [1, "loading-state"], [1, "skeleton-list"], ["class", "skeleton-card", 4, "ngFor", "ngForOf"], [1, "skeleton-card"], [1, "skeleton-sequence"], [1, "skeleton-icon"], [1, "skeleton-content"], [1, "skeleton-line", "wide"], [1, "skeleton-line", "narrow"], [1, "test-runs-list"], ["class", "test-run-card", 4, "ngFor", "ngForOf"], [1, "test-run-card"], [1, "test-run-item", 3, "click"], [1, "run-sequence"], [1, "run-icon"], [1, "run-content"], [1, "run-header-row"], [1, "run-name"], [3, "executionStatus", "originalStatus", "autoScore", "humanRating", "humanIsCorrect", "hasHumanFeedback", "preferences", "mode"], [1, "run-meta"], ["class", "run-duration", 4, "ngIf"], ["class", "run-cost", 4, "ngIf"], [3, "entityName", "recordId", 4, "ngIf"], ["class", "run-tags", 4, "ngIf"], [1, "run-expand"], [1, "fas"], ["class", "inline-feedback", 4, "ngIf"], [1, "run-duration"], [1, "run-cost"], [3, "entityName", "recordId"], [1, "run-tags"], ["class", "tag-chip", 4, "ngFor", "ngForOf"], [1, "tag-chip"], [1, "inline-feedback"], [1, "feedback-divider"], [1, "feedback-section"], [1, "feedback-label"], [1, "inline-rating"], [1, "rating-numbers"], ["type", "button", "class", "rating-btn", 3, "selected", "hover", "low", "mid", "high", "click", "mouseenter", "mouseleave", 4, "ngFor", "ngForOf"], ["class", "rating-info", 4, "ngIf"], [1, "correctness-row"], [1, "correctness-label"], [1, "correctness-options"], [1, "radio-opt", 3, "click"], ["type", "radio", 3, "ngModelChange", "name", "value", "ngModel"], [1, "comments-row", 3, "click"], ["placeholder", "Add comments or corrections...", "rows", "3", 1, "feedback-textarea", 3, "ngModelChange", "ngModel"], [1, "feedback-actions", 3, "click"], [1, "fas", "fa-external-link-alt"], ["type", "button", 1, "rating-btn", 3, "click", "mouseenter", "mouseleave"], [1, "rating-info"], [1, "rating-value"], [1, "rating-label-text"], [1, "empty-state"], [1, "empty-icon"], [1, "fas", "fa-inbox"], [1, "fas", "fa-filter"], [1, "details-tab"], [1, "details-card"], [1, "details-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value", "monospace"], [1, "detail-value"], ["href", "javascript:void(0)", 3, "click", 4, "ngIf"], [1, "status-inline", 3, "ngClass"], [1, "analytics-tab"], ["class", "analytics-loading", 4, "ngIf"], ["class", "analytics-section", 4, "ngIf"], [1, "analytics-loading"], [1, "analytics-section"], [1, "fas", "fa-chart-pie"], [1, "stats-grid"], [1, "stat-card"], [1, "stat-icon", "passed"], [1, "stat-content"], [1, "stat-percent"], [1, "stat-icon", "failed"], [1, "stat-icon", "score"], [1, "fas", "fa-star"], [1, "stat-icon", "duration"], [1, "stat-icon", "cost"], [1, "analytics-header"], [1, "fas", "fa-table"], [1, "analytics-legend"], [1, "legend-item", "passed"], [1, "legend-item", "failed"], [1, "legend-item", "error"], [1, "legend-item", "skipped"], [1, "results-table-wrapper"], [1, "results-table"], [1, "seq-col"], [1, "name-col"], ["class", "status-col", 4, "ngIf"], ["class", "score-col", 4, "ngIf"], ["class", "feedback-col", 4, "ngIf"], [1, "duration-col"], [1, "cost-col"], ["class", "result-row", 3, "row-passed", "row-failed", "row-error", "row-skipped", "click", 4, "ngFor", "ngForOf"], [1, "status-col"], [1, "score-col"], [1, "feedback-col"], [1, "result-row", 3, "click"], [1, "test-name-wrapper"], [1, "test-name"], ["class", "test-tags", 4, "ngIf"], ["class", "na-value", 4, "ngIf"], [1, "test-tags"], ["class", "tag-mini", 4, "ngFor", "ngForOf"], [1, "tag-mini"], ["class", "score-display", 4, "ngIf"], [1, "score-display"], [1, "score-bar-mini"], [1, "score-fill"], [1, "score-text"], [1, "na-value"], ["class", "feedback-display", 4, "ngIf"], ["class", "na-value needs-review", 4, "ngIf"], [1, "feedback-display"], [1, "feedback-rating"], ["class", "feedback-correctness", 4, "ngIf"], [1, "feedback-correctness"], [1, "na-value", "needs-review"], [1, "fas", "fa-user-clock"], [1, "execution-tab"], [3, "machineName", "machineId", "runByUserName", "runByUserEmail", "runContextDetailsJson"], [1, "keyboard-shortcuts"], [1, "shortcuts-header"], ["title", "Hide shortcuts", 1, "shortcuts-close", 3, "click"], [1, "shortcut-list"], [1, "shortcut-item"], [1, "shortcut-keys"]], template: function TestSuiteRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
2078
+ i0.ɵɵlistener("keydown", function TestSuiteRunFormComponentExtended_keydown_HostBindingHandler($event) { return ctx.handleKeyboardShortcut($event); }, i0.ɵɵresolveDocument);
2079
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 137, vars: 48, consts: [["kendoDialogContainer", "", 1, "test-suite-run-form"], [1, "suite-run-header"], ["aria-label", "Breadcrumb", 1, "breadcrumb"], ["href", "javascript:void(0)", 3, "click"], [1, "fas", "fa-vial"], [1, "breadcrumb-text"], [1, "current"], [1, "fas", "fa-chevron-right", "separator"], [1, "header-content"], [1, "header-left"], [1, "suite-run-icon"], [1, "fas", 3, "ngClass"], [1, "suite-run-info"], [1, "suite-run-meta"], [1, "status-badge", 3, "ngClass"], [1, "meta-tag", "environment"], [1, "meta-tag", "trigger"], [1, "header-actions"], ["kendoButton", "", "themeColor", "primary"], ["kendoButton", "", 3, "click", "disabled"], [1, "metrics-bar"], [1, "metric-card"], [1, "metric-icon"], [1, "fas", "fa-clock"], [1, "metric-content"], [1, "metric-value"], [1, "metric-label"], [1, "fas", "fa-percentage"], [1, "fas", "fa-dollar-sign"], [1, "fas", "fa-calendar"], [1, "results-summary"], [1, "result-item", "passed"], [1, "result-icon"], [1, "fas", "fa-check-circle"], [1, "result-content"], [1, "result-count"], [1, "result-label"], [1, "result-item", "failed"], [1, "fas", "fa-times-circle"], [1, "result-item", "error"], [1, "fas", "fa-exclamation-circle"], [1, "result-item", "skipped"], [1, "fas", "fa-forward"], [1, "result-item", "total"], [1, "fas", "fa-list"], [1, "tags-bar"], [1, "tags-editor-panel"], [1, "tabs-container"], ["role", "tablist", 1, "tabs"], ["role", "tab", 1, "tab", 3, "click"], [1, "fas", "fa-th-large"], [1, "tab-badge"], [1, "fas", "fa-info-circle"], ["role", "tab", "title", "Press 4", 1, "tab", 3, "click"], [1, "fas", "fa-chart-bar"], ["role", "tab", "title", "Press 5", 1, "tab", 3, "click"], [1, "fas", "fa-microchip"], [1, "tab-content"], [1, "overview-tab"], [1, "runs-tab"], [1, "details-tab"], [1, "analytics-tab"], [1, "execution-tab"], [1, "shortcuts-toggle", 3, "click", "title"], [1, "fas", "fa-keyboard"], [1, "keyboard-shortcuts"], [1, "fas", "fa-layer-group"], [1, "fas", "fa-server"], [1, "fas", "fa-bolt"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "fas", "fa-play"], [1, "tags-bar-content"], [1, "tags-bar-label"], [1, "fas", "fa-tags"], [1, "tags-bar-chips"], [1, "tags-bar-empty"], ["title", "Edit tags", 1, "tags-bar-edit", 3, "click"], [1, "fas", "fa-plus"], [1, "tag-inline"], [1, "tags-editor-header"], [1, "tags-editor-title"], [1, "tags-editor-body"], [1, "tags-editor-chips"], [1, "tag-editable"], [1, "tags-empty-hint"], [1, "tags-editor-input"], ["type", "text", "placeholder", "Type a tag and press Enter...", 1, "tag-text-input", 3, "ngModelChange", "keyup.enter", "ngModel"], ["kendoButton", "", "fillMode", "flat", 3, "click", "disabled"], [1, "tags-editor-footer"], ["kendoButton", "", "themeColor", "primary", 3, "click", "disabled"], [1, "fas", "fa-spinner", "fa-spin"], ["kendoButton", "", "fillMode", "flat", 3, "click"], ["title", "Remove tag", 1, "tag-remove-btn", 3, "click"], [1, "fas", "fa-times"], [1, "result-hero"], [1, "result-hero-icon"], [1, "result-hero-text"], [1, "result-hero-stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "stat-divider"], [1, "evaluation-summary"], [1, "needs-review-section"], [1, "progress-section"], [1, "eval-summary-grid"], [1, "eval-summary-card"], [1, "eval-card-header"], [1, "fa-solid", "fa-user"], [1, "eval-card-body"], [1, "eval-stat-row"], [1, "eval-stat-label"], [1, "eval-stat-value"], [1, "eval-card-footer"], [1, "eval-stat-value", "correct"], [1, "eval-stat-value", "incorrect"], [1, "pending-badge"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-robot"], [1, "fa-solid", "fa-circle-check"], [1, "eval-stat-value", "error"], [1, "eval-stat-value", "timeout"], [1, "needs-review-header"], [1, "fa-solid", "fa-user-clock"], [1, "review-count"], [1, "needs-review-list"], [1, "review-item", 3, "high-priority", "medium-priority"], [1, "review-more"], [1, "review-item", 3, "click"], [1, "review-item-icon"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "fa-solid", "fa-circle-dot"], [1, "review-item-content"], [1, "review-item-name"], [1, "review-item-reason"], [1, "review-item-action"], [1, "fa-solid", "fa-chevron-right"], [1, "progress-info"], [1, "fas", "fa-circle-notch", "fa-spin"], [1, "auto-refresh-notice"], [1, "fas", "fa-sync"], [1, "runs-toolbar"], [1, "loading-state"], [1, "test-runs-list"], [1, "empty-state"], [1, "run-filters"], [1, "filter-btn", 3, "click"], [1, "filter-btn", "passed", 3, "active"], [1, "filter-btn", "failed", 3, "active"], [1, "filter-btn", "error", 3, "active"], [1, "runs-actions"], ["kendoButton", "", 3, "click"], [1, "fas", "fa-download"], [1, "filter-btn", "passed", 3, "click"], [1, "fas", "fa-check"], [1, "filter-btn", "failed", 3, "click"], [1, "filter-btn", "error", 3, "click"], [1, "fas", "fa-exclamation"], [1, "skeleton-list"], [1, "skeleton-card"], [1, "skeleton-sequence"], [1, "skeleton-icon"], [1, "skeleton-content"], [1, "skeleton-line", "wide"], [1, "skeleton-line", "narrow"], [1, "test-run-card"], [1, "test-run-item", 3, "click"], [1, "run-sequence"], [1, "run-icon"], [1, "run-content"], [1, "run-header-row"], [1, "run-name"], [3, "executionStatus", "originalStatus", "autoScore", "humanRating", "humanIsCorrect", "hasHumanFeedback", "preferences", "mode"], [1, "run-meta"], [1, "run-duration"], [1, "run-cost"], [3, "entityName", "recordId"], [1, "run-tags"], [1, "run-expand"], [1, "fas"], [1, "inline-feedback"], [1, "tag-chip"], [1, "feedback-divider"], [1, "feedback-section"], [1, "feedback-label"], [1, "inline-rating"], [1, "rating-numbers"], ["type", "button", 1, "rating-btn", 3, "selected", "hover", "low", "mid", "high"], [1, "rating-info"], [1, "correctness-row"], [1, "correctness-label"], [1, "correctness-options"], [1, "radio-opt", 3, "click"], ["type", "radio", 3, "ngModelChange", "name", "value", "ngModel"], [1, "comments-row", 3, "click"], ["placeholder", "Add comments or corrections...", "rows", "3", 1, "feedback-textarea", 3, "ngModelChange", "ngModel"], [1, "feedback-actions", 3, "click"], [1, "fas", "fa-external-link-alt"], ["type", "button", 1, "rating-btn", 3, "click", "mouseenter", "mouseleave"], [1, "rating-value"], [1, "rating-label-text"], [1, "empty-icon"], [1, "fas", "fa-inbox"], [1, "fas", "fa-filter"], [1, "details-card"], [1, "details-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value", "monospace"], [1, "detail-value"], ["href", "javascript:void(0)"], [1, "status-inline", 3, "ngClass"], [1, "analytics-loading"], [1, "analytics-section"], [1, "fas", "fa-chart-pie"], [1, "stats-grid"], [1, "stat-card"], [1, "stat-icon", "passed"], [1, "stat-content"], [1, "stat-percent"], [1, "stat-icon", "failed"], [1, "stat-icon", "score"], [1, "fas", "fa-star"], [1, "stat-icon", "duration"], [1, "stat-icon", "cost"], [1, "analytics-header"], [1, "fas", "fa-table"], [1, "analytics-legend"], [1, "legend-item", "passed"], [1, "legend-item", "failed"], [1, "legend-item", "error"], [1, "legend-item", "skipped"], [1, "results-table-wrapper"], [1, "results-table"], [1, "seq-col"], [1, "name-col"], [1, "status-col"], [1, "score-col"], [1, "feedback-col"], [1, "duration-col"], [1, "cost-col"], [1, "result-row", 3, "row-passed", "row-failed", "row-error", "row-skipped"], [1, "result-row", 3, "click"], [1, "test-name-wrapper"], [1, "test-name"], [1, "test-tags"], [1, "na-value"], [1, "tag-mini"], [1, "score-display"], [1, "score-bar-mini"], [1, "score-fill"], [1, "score-text"], [1, "feedback-display"], [1, "na-value", "needs-review"], [1, "feedback-rating"], [1, "feedback-correctness"], [1, "fas", "fa-user-clock"], [3, "machineName", "machineId", "runByUserName", "runByUserEmail", "runContextDetailsJson"], [1, "shortcuts-header"], ["title", "Hide shortcuts", 1, "shortcuts-close", 3, "click"], [1, "shortcut-list"], [1, "shortcut-item"], [1, "shortcut-keys"]], template: function TestSuiteRunFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
2053
2080
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "nav", 2)(3, "ol")(4, "li")(5, "a", 3);
2054
2081
  i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Template_a_click_5_listener() { return ctx.navigateToTestingDashboard(); });
2055
2082
  i0.ɵɵelement(6, "i", 4);
2056
2083
  i0.ɵɵelementStart(7, "span", 5);
2057
2084
  i0.ɵɵtext(8, "Testing");
2058
2085
  i0.ɵɵelementEnd()()();
2059
- i0.ɵɵtemplate(9, TestSuiteRunFormComponentExtended_li_9_Template, 6, 1, "li", 6);
2060
- i0.ɵɵelementStart(10, "li", 7);
2061
- i0.ɵɵelement(11, "i", 8);
2086
+ i0.ɵɵconditionalCreate(9, TestSuiteRunFormComponentExtended_Conditional_9_Template, 6, 1, "li");
2087
+ i0.ɵɵelementStart(10, "li", 6);
2088
+ i0.ɵɵelement(11, "i", 7);
2062
2089
  i0.ɵɵelementStart(12, "span");
2063
2090
  i0.ɵɵtext(13);
2064
2091
  i0.ɵɵelementEnd()()()();
2065
- i0.ɵɵelementStart(14, "div", 9)(15, "div", 10)(16, "div", 11);
2066
- i0.ɵɵelement(17, "i", 12);
2092
+ i0.ɵɵelementStart(14, "div", 8)(15, "div", 9)(16, "div", 10);
2093
+ i0.ɵɵelement(17, "i", 11);
2067
2094
  i0.ɵɵelementEnd();
2068
- i0.ɵɵelementStart(18, "div", 13)(19, "h1");
2095
+ i0.ɵɵelementStart(18, "div", 12)(19, "h1");
2069
2096
  i0.ɵɵtext(20, "Suite Run");
2070
2097
  i0.ɵɵelementEnd();
2071
- i0.ɵɵelementStart(21, "div", 14)(22, "span", 15);
2072
- i0.ɵɵelement(23, "i", 12);
2098
+ i0.ɵɵelementStart(21, "div", 13)(22, "span", 14);
2099
+ i0.ɵɵelement(23, "i", 11);
2073
2100
  i0.ɵɵtext(24);
2074
2101
  i0.ɵɵelementEnd();
2075
- i0.ɵɵtemplate(25, TestSuiteRunFormComponentExtended_span_25_Template, 3, 1, "span", 16)(26, TestSuiteRunFormComponentExtended_span_26_Template, 3, 1, "span", 17);
2102
+ i0.ɵɵconditionalCreate(25, TestSuiteRunFormComponentExtended_Conditional_25_Template, 3, 1, "span", 15);
2103
+ i0.ɵɵconditionalCreate(26, TestSuiteRunFormComponentExtended_Conditional_26_Template, 3, 1, "span", 16);
2076
2104
  i0.ɵɵelementEnd()()();
2077
- i0.ɵɵelementStart(27, "div", 18);
2105
+ i0.ɵɵelementStart(27, "div", 17);
2078
2106
  i0.ɵɵelement(28, "app-evaluation-mode-toggle");
2079
- i0.ɵɵtemplate(29, TestSuiteRunFormComponentExtended_button_29_Template, 3, 0, "button", 19);
2080
- i0.ɵɵelementStart(30, "button", 20);
2107
+ i0.ɵɵconditionalCreate(29, TestSuiteRunFormComponentExtended_Conditional_29_Template, 3, 0, "button", 18);
2108
+ i0.ɵɵelementStart(30, "button", 19);
2081
2109
  i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Template_button_click_30_listener() { return ctx.refresh(); });
2082
- i0.ɵɵelement(31, "i", 12);
2110
+ i0.ɵɵelement(31, "i", 11);
2083
2111
  i0.ɵɵtext(32);
2084
2112
  i0.ɵɵelementEnd()()();
2085
- i0.ɵɵelementStart(33, "div", 21)(34, "div", 22)(35, "div", 23);
2086
- i0.ɵɵelement(36, "i", 24);
2113
+ i0.ɵɵelementStart(33, "div", 20)(34, "div", 21)(35, "div", 22);
2114
+ i0.ɵɵelement(36, "i", 23);
2087
2115
  i0.ɵɵelementEnd();
2088
- i0.ɵɵelementStart(37, "div", 25)(38, "div", 26);
2116
+ i0.ɵɵelementStart(37, "div", 24)(38, "div", 25);
2089
2117
  i0.ɵɵtext(39);
2090
2118
  i0.ɵɵelementEnd();
2091
- i0.ɵɵelementStart(40, "div", 27);
2119
+ i0.ɵɵelementStart(40, "div", 26);
2092
2120
  i0.ɵɵtext(41, "Duration");
2093
2121
  i0.ɵɵelementEnd()()();
2094
- i0.ɵɵelementStart(42, "div", 22)(43, "div", 23);
2095
- i0.ɵɵelement(44, "i", 28);
2122
+ i0.ɵɵelementStart(42, "div", 21)(43, "div", 22);
2123
+ i0.ɵɵelement(44, "i", 27);
2096
2124
  i0.ɵɵelementEnd();
2097
- i0.ɵɵelementStart(45, "div", 25)(46, "div", 26);
2125
+ i0.ɵɵelementStart(45, "div", 24)(46, "div", 25);
2098
2126
  i0.ɵɵtext(47);
2099
2127
  i0.ɵɵelementEnd();
2100
- i0.ɵɵelementStart(48, "div", 27);
2128
+ i0.ɵɵelementStart(48, "div", 26);
2101
2129
  i0.ɵɵtext(49, "Pass Rate");
2102
2130
  i0.ɵɵelementEnd()()();
2103
- i0.ɵɵelementStart(50, "div", 22)(51, "div", 23);
2104
- i0.ɵɵelement(52, "i", 29);
2131
+ i0.ɵɵelementStart(50, "div", 21)(51, "div", 22);
2132
+ i0.ɵɵelement(52, "i", 28);
2105
2133
  i0.ɵɵelementEnd();
2106
- i0.ɵɵelementStart(53, "div", 25)(54, "div", 26);
2134
+ i0.ɵɵelementStart(53, "div", 24)(54, "div", 25);
2107
2135
  i0.ɵɵtext(55);
2108
2136
  i0.ɵɵelementEnd();
2109
- i0.ɵɵelementStart(56, "div", 27);
2137
+ i0.ɵɵelementStart(56, "div", 26);
2110
2138
  i0.ɵɵtext(57, "Total Cost");
2111
2139
  i0.ɵɵelementEnd()()();
2112
- i0.ɵɵelementStart(58, "div", 22)(59, "div", 23);
2113
- i0.ɵɵelement(60, "i", 30);
2140
+ i0.ɵɵelementStart(58, "div", 21)(59, "div", 22);
2141
+ i0.ɵɵelement(60, "i", 29);
2114
2142
  i0.ɵɵelementEnd();
2115
- i0.ɵɵelementStart(61, "div", 25)(62, "div", 26);
2143
+ i0.ɵɵelementStart(61, "div", 24)(62, "div", 25);
2116
2144
  i0.ɵɵtext(63);
2117
2145
  i0.ɵɵelementEnd();
2118
- i0.ɵɵelementStart(64, "div", 27);
2146
+ i0.ɵɵelementStart(64, "div", 26);
2119
2147
  i0.ɵɵtext(65, "Started");
2120
2148
  i0.ɵɵelementEnd()()()();
2121
- i0.ɵɵelementStart(66, "div", 31)(67, "div", 32)(68, "div", 33);
2122
- i0.ɵɵelement(69, "i", 34);
2149
+ i0.ɵɵelementStart(66, "div", 30)(67, "div", 31)(68, "div", 32);
2150
+ i0.ɵɵelement(69, "i", 33);
2123
2151
  i0.ɵɵelementEnd();
2124
- i0.ɵɵelementStart(70, "div", 35)(71, "span", 36);
2152
+ i0.ɵɵelementStart(70, "div", 34)(71, "span", 35);
2125
2153
  i0.ɵɵtext(72);
2126
2154
  i0.ɵɵelementEnd();
2127
- i0.ɵɵelementStart(73, "span", 37);
2155
+ i0.ɵɵelementStart(73, "span", 36);
2128
2156
  i0.ɵɵtext(74, "Passed");
2129
2157
  i0.ɵɵelementEnd()()();
2130
- i0.ɵɵelementStart(75, "div", 38)(76, "div", 33);
2131
- i0.ɵɵelement(77, "i", 39);
2158
+ i0.ɵɵelementStart(75, "div", 37)(76, "div", 32);
2159
+ i0.ɵɵelement(77, "i", 38);
2132
2160
  i0.ɵɵelementEnd();
2133
- i0.ɵɵelementStart(78, "div", 35)(79, "span", 36);
2161
+ i0.ɵɵelementStart(78, "div", 34)(79, "span", 35);
2134
2162
  i0.ɵɵtext(80);
2135
2163
  i0.ɵɵelementEnd();
2136
- i0.ɵɵelementStart(81, "span", 37);
2164
+ i0.ɵɵelementStart(81, "span", 36);
2137
2165
  i0.ɵɵtext(82, "Failed");
2138
2166
  i0.ɵɵelementEnd()()();
2139
- i0.ɵɵelementStart(83, "div", 40)(84, "div", 33);
2140
- i0.ɵɵelement(85, "i", 41);
2167
+ i0.ɵɵelementStart(83, "div", 39)(84, "div", 32);
2168
+ i0.ɵɵelement(85, "i", 40);
2141
2169
  i0.ɵɵelementEnd();
2142
- i0.ɵɵelementStart(86, "div", 35)(87, "span", 36);
2170
+ i0.ɵɵelementStart(86, "div", 34)(87, "span", 35);
2143
2171
  i0.ɵɵtext(88);
2144
2172
  i0.ɵɵelementEnd();
2145
- i0.ɵɵelementStart(89, "span", 37);
2173
+ i0.ɵɵelementStart(89, "span", 36);
2146
2174
  i0.ɵɵtext(90, "Errors");
2147
2175
  i0.ɵɵelementEnd()()();
2148
- i0.ɵɵelementStart(91, "div", 42)(92, "div", 33);
2149
- i0.ɵɵelement(93, "i", 43);
2176
+ i0.ɵɵelementStart(91, "div", 41)(92, "div", 32);
2177
+ i0.ɵɵelement(93, "i", 42);
2150
2178
  i0.ɵɵelementEnd();
2151
- i0.ɵɵelementStart(94, "div", 35)(95, "span", 36);
2179
+ i0.ɵɵelementStart(94, "div", 34)(95, "span", 35);
2152
2180
  i0.ɵɵtext(96);
2153
2181
  i0.ɵɵelementEnd();
2154
- i0.ɵɵelementStart(97, "span", 37);
2182
+ i0.ɵɵelementStart(97, "span", 36);
2155
2183
  i0.ɵɵtext(98, "Skipped");
2156
2184
  i0.ɵɵelementEnd()()();
2157
- i0.ɵɵelementStart(99, "div", 44)(100, "div", 33);
2158
- i0.ɵɵelement(101, "i", 45);
2185
+ i0.ɵɵelementStart(99, "div", 43)(100, "div", 32);
2186
+ i0.ɵɵelement(101, "i", 44);
2159
2187
  i0.ɵɵelementEnd();
2160
- i0.ɵɵelementStart(102, "div", 35)(103, "span", 36);
2188
+ i0.ɵɵelementStart(102, "div", 34)(103, "span", 35);
2161
2189
  i0.ɵɵtext(104);
2162
2190
  i0.ɵɵelementEnd();
2163
- i0.ɵɵelementStart(105, "span", 37);
2191
+ i0.ɵɵelementStart(105, "span", 36);
2164
2192
  i0.ɵɵtext(106, "Total");
2165
2193
  i0.ɵɵelementEnd()()()();
2166
- i0.ɵɵtemplate(107, TestSuiteRunFormComponentExtended_div_107_Template, 9, 2, "div", 46)(108, TestSuiteRunFormComponentExtended_div_108_Template, 19, 7, "div", 47);
2194
+ i0.ɵɵconditionalCreate(107, TestSuiteRunFormComponentExtended_Conditional_107_Template, 9, 2, "div", 45);
2195
+ i0.ɵɵconditionalCreate(108, TestSuiteRunFormComponentExtended_Conditional_108_Template, 20, 6, "div", 46);
2167
2196
  i0.ɵɵelementEnd();
2168
- i0.ɵɵelementStart(109, "div", 48)(110, "div", 49)(111, "button", 50);
2197
+ i0.ɵɵelementStart(109, "div", 47)(110, "div", 48)(111, "button", 49);
2169
2198
  i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Template_button_click_111_listener() { return ctx.changeTab("overview"); });
2170
- i0.ɵɵelement(112, "i", 51);
2199
+ i0.ɵɵelement(112, "i", 50);
2171
2200
  i0.ɵɵtext(113, " Overview ");
2172
2201
  i0.ɵɵelementEnd();
2173
- i0.ɵɵelementStart(114, "button", 50);
2202
+ i0.ɵɵelementStart(114, "button", 49);
2174
2203
  i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Template_button_click_114_listener() { return ctx.changeTab("runs"); });
2175
- i0.ɵɵelement(115, "i", 45);
2204
+ i0.ɵɵelement(115, "i", 44);
2176
2205
  i0.ɵɵtext(116, " Test Runs ");
2177
- i0.ɵɵtemplate(117, TestSuiteRunFormComponentExtended_span_117_Template, 2, 1, "span", 52);
2206
+ i0.ɵɵconditionalCreate(117, TestSuiteRunFormComponentExtended_Conditional_117_Template, 2, 1, "span", 51);
2178
2207
  i0.ɵɵelementEnd();
2179
- i0.ɵɵelementStart(118, "button", 50);
2208
+ i0.ɵɵelementStart(118, "button", 49);
2180
2209
  i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Template_button_click_118_listener() { return ctx.changeTab("details"); });
2181
- i0.ɵɵelement(119, "i", 53);
2210
+ i0.ɵɵelement(119, "i", 52);
2182
2211
  i0.ɵɵtext(120, " Details ");
2183
2212
  i0.ɵɵelementEnd();
2184
- i0.ɵɵelementStart(121, "button", 54);
2213
+ i0.ɵɵelementStart(121, "button", 53);
2185
2214
  i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Template_button_click_121_listener() { return ctx.changeTab("analytics"); });
2186
- i0.ɵɵelement(122, "i", 55);
2215
+ i0.ɵɵelement(122, "i", 54);
2187
2216
  i0.ɵɵtext(123, " Analytics ");
2188
2217
  i0.ɵɵelementEnd();
2189
- i0.ɵɵelementStart(124, "button", 56);
2218
+ i0.ɵɵelementStart(124, "button", 55);
2190
2219
  i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Template_button_click_124_listener() { return ctx.changeTab("execution"); });
2191
- i0.ɵɵelement(125, "i", 57);
2220
+ i0.ɵɵelement(125, "i", 56);
2192
2221
  i0.ɵɵelementStart(126, "span");
2193
2222
  i0.ɵɵtext(127, "Execution");
2194
2223
  i0.ɵɵelementEnd()()()();
2195
- i0.ɵɵelementStart(128, "div", 58);
2196
- i0.ɵɵtemplate(129, TestSuiteRunFormComponentExtended_div_129_Template, 22, 16, "div", 59)(130, TestSuiteRunFormComponentExtended_div_130_Template, 6, 5, "div", 60)(131, TestSuiteRunFormComponentExtended_div_131_Template, 60, 18, "div", 61)(132, TestSuiteRunFormComponentExtended_div_132_Template, 5, 4, "div", 62)(133, TestSuiteRunFormComponentExtended_div_133_Template, 2, 5, "div", 63);
2224
+ i0.ɵɵelementStart(128, "div", 57);
2225
+ i0.ɵɵconditionalCreate(129, TestSuiteRunFormComponentExtended_Conditional_129_Template, 22, 16, "div", 58);
2226
+ i0.ɵɵconditionalCreate(130, TestSuiteRunFormComponentExtended_Conditional_130_Template, 6, 5, "div", 59);
2227
+ i0.ɵɵconditionalCreate(131, TestSuiteRunFormComponentExtended_Conditional_131_Template, 60, 18, "div", 60);
2228
+ i0.ɵɵconditionalCreate(132, TestSuiteRunFormComponentExtended_Conditional_132_Template, 5, 4, "div", 61);
2229
+ i0.ɵɵconditionalCreate(133, TestSuiteRunFormComponentExtended_Conditional_133_Template, 2, 5, "div", 62);
2197
2230
  i0.ɵɵelementEnd();
2198
- i0.ɵɵelementStart(134, "button", 64);
2231
+ i0.ɵɵelementStart(134, "button", 63);
2199
2232
  i0.ɵɵlistener("click", function TestSuiteRunFormComponentExtended_Template_button_click_134_listener() { return ctx.toggleShortcuts(); });
2200
- i0.ɵɵelement(135, "i", 65);
2233
+ i0.ɵɵelement(135, "i", 64);
2201
2234
  i0.ɵɵelementEnd();
2202
- i0.ɵɵtemplate(136, TestSuiteRunFormComponentExtended_div_136_Template, 34, 0, "div", 66);
2235
+ i0.ɵɵconditionalCreate(136, TestSuiteRunFormComponentExtended_Conditional_136_Template, 34, 0, "div", 65);
2203
2236
  i0.ɵɵelementEnd();
2204
2237
  } if (rf & 2) {
2205
2238
  i0.ɵɵadvance(9);
2206
- i0.ɵɵproperty("ngIf", ctx.testSuite);
2239
+ i0.ɵɵconditional(ctx.testSuite ? 9 : -1);
2207
2240
  i0.ɵɵadvance(4);
2208
- i0.ɵɵtextInterpolate1("Run #", ctx.record.ID.substring(0, 8), "");
2241
+ i0.ɵɵtextInterpolate1("Run #", ctx.record.ID.substring(0, 8));
2209
2242
  i0.ɵɵadvance(3);
2210
2243
  i0.ɵɵstyleProp("background-color", ctx.getStatusColor());
2211
2244
  i0.ɵɵadvance();
@@ -2217,11 +2250,11 @@ let TestSuiteRunFormComponentExtended = class TestSuiteRunFormComponentExtended
2217
2250
  i0.ɵɵadvance();
2218
2251
  i0.ɵɵtextInterpolate1(" ", ctx.record.Status, " ");
2219
2252
  i0.ɵɵadvance();
2220
- i0.ɵɵproperty("ngIf", ctx.record.Environment);
2253
+ i0.ɵɵconditional(ctx.record.Environment ? 25 : -1);
2221
2254
  i0.ɵɵadvance();
2222
- i0.ɵɵproperty("ngIf", ctx.record.TriggerType);
2255
+ i0.ɵɵconditional(ctx.record.TriggerType ? 26 : -1);
2223
2256
  i0.ɵɵadvance(3);
2224
- i0.ɵɵproperty("ngIf", ctx.record.SuiteID);
2257
+ i0.ɵɵconditional(ctx.record.SuiteID ? 29 : -1);
2225
2258
  i0.ɵɵadvance();
2226
2259
  i0.ɵɵproperty("disabled", ctx.isRefreshing);
2227
2260
  i0.ɵɵadvance();
@@ -2247,9 +2280,9 @@ let TestSuiteRunFormComponentExtended = class TestSuiteRunFormComponentExtended
2247
2280
  i0.ɵɵadvance(8);
2248
2281
  i0.ɵɵtextInterpolate(ctx.record.TotalTests || 0);
2249
2282
  i0.ɵɵadvance(3);
2250
- i0.ɵɵproperty("ngIf", !ctx.editingTags);
2283
+ i0.ɵɵconditional(!ctx.editingTags ? 107 : -1);
2251
2284
  i0.ɵɵadvance();
2252
- i0.ɵɵproperty("ngIf", ctx.editingTags);
2285
+ i0.ɵɵconditional(ctx.editingTags ? 108 : -1);
2253
2286
  i0.ɵɵadvance(3);
2254
2287
  i0.ɵɵclassProp("active", ctx.activeTab === "overview");
2255
2288
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "overview");
@@ -2257,7 +2290,7 @@ let TestSuiteRunFormComponentExtended = class TestSuiteRunFormComponentExtended
2257
2290
  i0.ɵɵclassProp("active", ctx.activeTab === "runs");
2258
2291
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "runs");
2259
2292
  i0.ɵɵadvance(3);
2260
- i0.ɵɵproperty("ngIf", ctx.testRunsLoaded);
2293
+ i0.ɵɵconditional(ctx.testRunsLoaded ? 117 : -1);
2261
2294
  i0.ɵɵadvance();
2262
2295
  i0.ɵɵclassProp("active", ctx.activeTab === "details");
2263
2296
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "details");
@@ -2268,20 +2301,20 @@ let TestSuiteRunFormComponentExtended = class TestSuiteRunFormComponentExtended
2268
2301
  i0.ɵɵclassProp("active", ctx.activeTab === "execution");
2269
2302
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "execution");
2270
2303
  i0.ɵɵadvance(5);
2271
- i0.ɵɵproperty("ngIf", ctx.activeTab === "overview");
2304
+ i0.ɵɵconditional(ctx.activeTab === "overview" ? 129 : -1);
2272
2305
  i0.ɵɵadvance();
2273
- i0.ɵɵproperty("ngIf", ctx.activeTab === "runs");
2306
+ i0.ɵɵconditional(ctx.activeTab === "runs" ? 130 : -1);
2274
2307
  i0.ɵɵadvance();
2275
- i0.ɵɵproperty("ngIf", ctx.activeTab === "details");
2308
+ i0.ɵɵconditional(ctx.activeTab === "details" ? 131 : -1);
2276
2309
  i0.ɵɵadvance();
2277
- i0.ɵɵproperty("ngIf", ctx.activeTab === "analytics");
2310
+ i0.ɵɵconditional(ctx.activeTab === "analytics" ? 132 : -1);
2278
2311
  i0.ɵɵadvance();
2279
- i0.ɵɵproperty("ngIf", ctx.activeTab === "execution");
2312
+ i0.ɵɵconditional(ctx.activeTab === "execution" ? 133 : -1);
2280
2313
  i0.ɵɵadvance();
2281
2314
  i0.ɵɵproperty("title", ctx.showShortcuts ? "Hide keyboard shortcuts" : "Show keyboard shortcuts");
2282
2315
  i0.ɵɵadvance(2);
2283
- i0.ɵɵproperty("ngIf", ctx.showShortcuts);
2284
- } }, dependencies: [i5.NgClass, i5.NgForOf, i5.NgIf, i6.DefaultValueAccessor, i6.RadioControlValueAccessor, i6.NgControlStatus, i6.NgModel, i7.DialogContainerDirective, i8.ButtonComponent, i3.EvaluationBadgeComponent, i3.EvaluationModeToggleComponent, i3.ExecutionContextComponent, i9.EntityLinkPillComponent, i5.DatePipe], styles: ["\n\n\n\n\n\n\n\n[_nghost-%COMP%] {\n --suite-run-primary: #3b82f6;\n --suite-run-primary-light: #eff6ff;\n --suite-run-success: #10b981;\n --suite-run-success-light: #ecfdf5;\n --suite-run-danger: #ef4444;\n --suite-run-danger-light: #fef2f2;\n --suite-run-warning: #f59e0b;\n --suite-run-warning-light: #fffbeb;\n --suite-run-info: #8b5cf6;\n --suite-run-info-light: #f5f3ff;\n --suite-run-neutral: #6b7280;\n --suite-run-neutral-light: #f9fafb;\n --suite-run-bg: #f8fafc;\n --suite-run-card: #ffffff;\n --suite-run-border: #e2e8f0;\n --suite-run-text: #1e293b;\n --suite-run-text-secondary: #64748b;\n --suite-run-radius: 12px;\n --suite-run-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);\n --suite-run-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --suite-run-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n\n\n.test-suite-run-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--suite-run-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n}\n\n\n\n\n\n.suite-run-header[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border-bottom: 1px solid var(--suite-run-border);\n padding: 20px 24px;\n}\n\n\n\n.breadcrumb[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] ol[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: 13px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] li[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover {\n background: rgba(59, 130, 246, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .separator[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--suite-run-text-secondary);\n margin: 0 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .current[_ngcontent-%COMP%] {\n color: var(--suite-run-text-secondary);\n font-weight: 500;\n}\n\n.breadcrumb-text[_ngcontent-%COMP%] {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n align-items: flex-start;\n}\n\n.suite-run-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: var(--suite-run-radius);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n flex-shrink: 0;\n box-shadow: var(--suite-run-shadow);\n}\n\n.suite-run-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 24px;\n font-weight: 700;\n color: var(--suite-run-text);\n letter-spacing: -0.025em;\n}\n\n.suite-run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.025em;\n}\n\n.status-badge.status-completed[_ngcontent-%COMP%] {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.status-badge.status-failed[_ngcontent-%COMP%] {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.status-badge.status-running[_ngcontent-%COMP%] {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.status-badge.status-pending[_ngcontent-%COMP%] {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.status-badge.status-cancelled[_ngcontent-%COMP%] {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: var(--suite-run-neutral-light);\n border-radius: 6px;\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n.meta-tag[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.7;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n\n\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border: 1px solid var(--suite-run-border);\n border-radius: 10px;\n padding: 14px;\n transition: var(--suite-run-transition);\n}\n\n.metric-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--suite-run-shadow);\n}\n\n.metric-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-card);\n border-radius: 10px;\n color: var(--suite-run-primary);\n font-size: 16px;\n box-shadow: var(--suite-run-shadow);\n}\n\n.metric-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--suite-run-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n margin-top: 2px;\n}\n\n\n\n\n\n.results-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding-top: 20px;\n border-top: 1px solid var(--suite-run-border);\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.result-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: 10px;\n flex-shrink: 0;\n transition: var(--suite-run-transition);\n}\n\n.result-item[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--suite-run-shadow);\n}\n\n.result-icon[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.result-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.result-count[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n line-height: 1.2;\n}\n\n.result-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.result-item.passed[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%], \n.result-item.passed[_ngcontent-%COMP%] .result-count[_ngcontent-%COMP%] {\n color: var(--suite-run-success);\n}\n\n.result-item.failed[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%], \n.result-item.failed[_ngcontent-%COMP%] .result-count[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n}\n\n.result-item.error[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%], \n.result-item.error[_ngcontent-%COMP%] .result-count[_ngcontent-%COMP%] {\n color: var(--suite-run-warning);\n}\n\n.result-item.skipped[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%], \n.result-item.skipped[_ngcontent-%COMP%] .result-count[_ngcontent-%COMP%] {\n color: var(--suite-run-neutral);\n}\n\n.result-item.total[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%], \n.result-item.total[_ngcontent-%COMP%] .result-count[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n\n\n\n\n.tabs-container[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border-bottom: 1px solid var(--suite-run-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n padding: 0 24px;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n}\n\n.tabs[_ngcontent-%COMP%]::-webkit-scrollbar {\n display: none;\n}\n\n.tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--suite-run-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--suite-run-transition);\n white-space: nowrap;\n position: relative;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--suite-run-primary);\n background: var(--suite-run-primary-light);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n border-bottom-color: var(--suite-run-primary);\n font-weight: 600;\n}\n\n.tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 15px;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n background: var(--suite-run-border);\n color: var(--suite-run-text-secondary);\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.tab.active[_ngcontent-%COMP%] .tab-badge[_ngcontent-%COMP%] {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.tab-shortcut[_ngcontent-%COMP%] {\n display: none;\n width: 18px;\n height: 18px;\n background: var(--suite-run-neutral-light);\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n color: var(--suite-run-text-secondary);\n align-items: center;\n justify-content: center;\n margin-left: 4px;\n}\n\n\n\n\n\n.tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n\n\n\n\n.overview-tab[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n max-width: 800px;\n margin: 0 auto;\n width: 100%;\n}\n\n.result-hero[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n padding: 48px 32px;\n text-align: center;\n border: 2px solid var(--suite-run-border);\n transition: var(--suite-run-transition);\n}\n\n.result-hero.passed[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);\n border-color: var(--suite-run-success);\n}\n\n.result-hero.failed[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fef2f2 0%, #fecaca 100%);\n border-color: var(--suite-run-danger);\n}\n\n.result-hero.running[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border-color: var(--suite-run-primary);\n}\n\n.result-hero.pending[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%);\n border-color: var(--suite-run-info);\n}\n\n.result-hero-icon[_ngcontent-%COMP%] {\n font-size: 72px;\n margin-bottom: 20px;\n}\n\n.result-hero.passed[_ngcontent-%COMP%] .result-hero-icon[_ngcontent-%COMP%] {\n color: var(--suite-run-success);\n}\n\n.result-hero.failed[_ngcontent-%COMP%] .result-hero-icon[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n}\n\n.result-hero.running[_ngcontent-%COMP%] .result-hero-icon[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.result-hero.pending[_ngcontent-%COMP%] .result-hero-icon[_ngcontent-%COMP%] {\n color: var(--suite-run-info);\n}\n\n.result-hero-text[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 32px;\n font-weight: 800;\n color: var(--suite-run-text);\n letter-spacing: -0.025em;\n}\n\n.result-hero-stats[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 32px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--suite-run-text);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: 40px;\n background: var(--suite-run-border);\n}\n\n\n\n.progress-section[_ngcontent-%COMP%] {\n background: var(--suite-run-primary-light);\n border: 1px solid rgba(59, 130, 246, 0.2);\n border-radius: var(--suite-run-radius);\n padding: 20px;\n text-align: center;\n}\n\n.progress-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 500;\n color: var(--suite-run-primary);\n margin-bottom: 8px;\n}\n\n.progress-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.auto-refresh-notice[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n\n\n\n\n.runs-tab[_ngcontent-%COMP%] {\n max-width: 900px;\n margin: 0 auto;\n width: 100%;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.skeleton-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.skeleton-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n border: 1px solid var(--suite-run-border);\n}\n\n.skeleton-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n border-radius: 50%;\n}\n\n.skeleton-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n border-radius: 8px;\n}\n\n.skeleton-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.skeleton-line[_ngcontent-%COMP%] {\n height: 14px;\n background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n border-radius: 4px;\n}\n\n.skeleton-line.wide[_ngcontent-%COMP%] {\n width: 70%;\n}\n\n.skeleton-line.narrow[_ngcontent-%COMP%] {\n width: 40%;\n}\n\n@keyframes _ngcontent-%COMP%_shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n\n\n.test-runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.test-run-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.test-run-item[_ngcontent-%COMP%]:hover {\n background: var(--suite-run-primary-light);\n border-color: #93c5fd;\n transform: translateX(4px);\n}\n\n.test-run-item[_ngcontent-%COMP%]:active {\n transform: translateX(2px);\n}\n\n.run-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-neutral-light);\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n color: var(--suite-run-text-secondary);\n flex-shrink: 0;\n}\n\n.run-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n color: white;\n font-size: 16px;\n flex-shrink: 0;\n box-shadow: var(--suite-run-shadow);\n}\n\n.run-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--suite-run-text);\n margin-bottom: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n flex-wrap: wrap;\n}\n\n.run-status[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.run-score[_ngcontent-%COMP%], \n.run-duration[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.run-score[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.run-duration[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.7;\n}\n\n.test-run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: #cbd5e1;\n font-size: 14px;\n transition: var(--suite-run-transition);\n}\n\n.test-run-item[_ngcontent-%COMP%]:hover > i[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n transform: translateX(4px);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n border: 2px dashed var(--suite-run-border);\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-neutral-light);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: #cbd5e1;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--suite-run-text-secondary);\n max-width: 300px;\n}\n\n\n\n\n\n.details-tab[_ngcontent-%COMP%] {\n max-width: 900px;\n margin: 0 auto;\n width: 100%;\n}\n\n.details-card[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n padding: 24px;\n box-shadow: var(--suite-run-shadow);\n}\n\n.details-card[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 20px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--suite-run-text);\n padding-bottom: 12px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.details-card[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--suite-run-text);\n word-wrap: break-word;\n}\n\n.detail-value.monospace[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n font-size: 12px;\n background: var(--suite-run-neutral-light);\n padding: 6px 10px;\n border-radius: 6px;\n}\n\n.detail-value[_ngcontent-%COMP%] a[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n text-decoration: none;\n font-weight: 500;\n transition: var(--suite-run-transition);\n}\n\n.detail-value[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover {\n color: #2563eb;\n text-decoration: underline;\n}\n\n.status-inline[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.status-inline.status-completed[_ngcontent-%COMP%] {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.status-inline.status-failed[_ngcontent-%COMP%] {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.status-inline.status-running[_ngcontent-%COMP%] {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.status-inline.status-pending[_ngcontent-%COMP%] {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.status-inline.status-cancelled[_ngcontent-%COMP%] {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n\n\n\n\n\n\n.shortcuts-toggle[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n box-shadow: var(--suite-run-shadow);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--suite-run-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--suite-run-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle[_ngcontent-%COMP%]:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--suite-run-primary);\n border-color: var(--suite-run-primary);\n}\n\n.keyboard-shortcuts[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n padding: 12px 16px;\n box-shadow: var(--suite-run-shadow-lg);\n font-size: 12px;\n z-index: 100;\n opacity: 0.9;\n transition: var(--suite-run-transition);\n}\n\n.keyboard-shortcuts[_ngcontent-%COMP%]:hover {\n opacity: 1;\n}\n\n.shortcuts-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n color: var(--suite-run-text);\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.shortcuts-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.shortcuts-close[_ngcontent-%COMP%] {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--suite-run-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--suite-run-transition);\n}\n\n.shortcuts-close[_ngcontent-%COMP%]:hover {\n color: var(--suite-run-text);\n background: var(--suite-run-border);\n}\n\n.shortcut-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.shortcut-item[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n}\n\n.shortcut-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-child {\n color: var(--suite-run-text-secondary);\n}\n\n.shortcut-keys[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\nkbd[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n font-family: inherit;\n font-size: 10px;\n font-weight: 600;\n color: var(--suite-run-text);\n box-shadow: 0 1px 0 #94a3b8;\n}\n\n\n\n\n\n@media (max-width: 1024px) {\n .suite-run-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n }\n\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .result-hero-stats[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .stat-divider[_ngcontent-%COMP%] {\n display: none;\n }\n\n .details-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .tab-shortcut[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n\n\n\n\n@media (max-width: 768px) {\n .suite-run-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-left[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .suite-run-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n font-size: 20px;\n }\n\n .suite-run-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n flex: 1;\n }\n\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n gap: 8px;\n }\n\n .metric-card[_ngcontent-%COMP%] {\n padding: 12px;\n flex-direction: column;\n text-align: center;\n gap: 8px;\n }\n\n .metric-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n }\n\n .metric-value[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .results-summary[_ngcontent-%COMP%] {\n gap: 8px;\n padding-top: 16px;\n flex-wrap: nowrap;\n overflow-x: auto;\n padding-bottom: 8px;\n margin-bottom: -8px;\n }\n\n .result-item[_ngcontent-%COMP%] {\n padding: 10px 12px;\n min-width: 90px;\n }\n\n .result-icon[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .result-count[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n\n .tabs[_ngcontent-%COMP%] {\n padding: 0 16px;\n }\n\n .tab[_ngcontent-%COMP%] {\n padding: 14px 16px;\n font-size: 13px;\n }\n\n .tab-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .result-hero[_ngcontent-%COMP%] {\n padding: 32px 20px;\n }\n\n .result-hero-icon[_ngcontent-%COMP%] {\n font-size: 56px;\n }\n\n .result-hero-text[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 24px;\n }\n\n .stat-value[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .test-run-item[_ngcontent-%COMP%] {\n padding: 14px;\n }\n\n .run-sequence[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n font-size: 12px;\n }\n\n .run-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n font-size: 14px;\n }\n\n .run-name[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n\n .run-meta[_ngcontent-%COMP%] {\n gap: 10px;\n font-size: 11px;\n }\n\n .empty-state[_ngcontent-%COMP%] {\n padding: 40px 16px;\n }\n\n .empty-icon[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n }\n\n .empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 28px;\n }\n\n .details-card[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .details-grid[_ngcontent-%COMP%] {\n gap: 16px;\n }\n\n .keyboard-shortcuts[_ngcontent-%COMP%], .shortcuts-toggle[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n\n\n\n\n@media (max-width: 480px) {\n .suite-run-header[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .breadcrumb[_ngcontent-%COMP%] {\n font-size: 12px;\n margin-bottom: 12px;\n }\n\n .suite-run-icon[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n font-size: 18px;\n }\n\n .suite-run-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n\n .suite-run-meta[_ngcontent-%COMP%] {\n gap: 8px;\n }\n\n .status-badge[_ngcontent-%COMP%] {\n padding: 4px 10px;\n font-size: 11px;\n }\n\n .meta-tag[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 3px 8px;\n }\n\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: 1fr 1fr;\n }\n\n .metric-card[_ngcontent-%COMP%] {\n padding: 10px;\n gap: 6px;\n }\n\n .metric-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n font-size: 14px;\n }\n\n .metric-value[_ngcontent-%COMP%] {\n font-size: 14px;\n }\n\n .metric-label[_ngcontent-%COMP%] {\n font-size: 9px;\n }\n\n .result-item[_ngcontent-%COMP%] {\n padding: 8px 10px;\n min-width: 80px;\n gap: 8px;\n }\n\n .result-icon[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n\n .result-count[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .result-label[_ngcontent-%COMP%] {\n font-size: 9px;\n }\n\n .tabs[_ngcontent-%COMP%] {\n padding: 0 12px;\n }\n\n .tab[_ngcontent-%COMP%] {\n padding: 12px 14px;\n gap: 6px;\n }\n\n .tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n }\n\n .tab-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .result-hero[_ngcontent-%COMP%] {\n padding: 24px 16px;\n }\n\n .result-hero-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n }\n\n .result-hero-text[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 20px;\n margin-bottom: 12px;\n }\n\n .stat-value[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n\n .stat-label[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n\n .progress-section[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .progress-info[_ngcontent-%COMP%] {\n font-size: 14px;\n }\n\n .test-run-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 10px;\n }\n\n .run-sequence[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n font-size: 11px;\n }\n\n .run-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n font-size: 12px;\n border-radius: 8px;\n }\n\n .run-name[_ngcontent-%COMP%] {\n font-size: 12px;\n margin-bottom: 3px;\n }\n\n .run-meta[_ngcontent-%COMP%] {\n gap: 8px;\n font-size: 10px;\n }\n\n .empty-state[_ngcontent-%COMP%] {\n padding: 32px 12px;\n }\n\n .empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n\n .details-card[_ngcontent-%COMP%] {\n padding: 14px;\n }\n\n .details-card[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-bottom: 16px;\n }\n\n .detail-label[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n\n .detail-value[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n}\n\n\n\n\n\n@media (hover: none) and (pointer: coarse) {\n .test-run-item[_ngcontent-%COMP%] {\n min-height: 64px;\n }\n\n .test-run-item[_ngcontent-%COMP%]:hover {\n transform: none;\n background: var(--suite-run-card);\n border-color: var(--suite-run-border);\n }\n\n .test-run-item[_ngcontent-%COMP%]:active {\n background: var(--suite-run-primary-light);\n border-color: #93c5fd;\n }\n\n .tab[_ngcontent-%COMP%]:hover {\n background: transparent;\n color: var(--suite-run-text-secondary);\n }\n\n .tab[_ngcontent-%COMP%]:active {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n }\n\n .metric-card[_ngcontent-%COMP%]:hover {\n transform: none;\n box-shadow: none;\n }\n\n .result-item[_ngcontent-%COMP%]:hover {\n transform: none;\n box-shadow: none;\n }\n\n .keyboard-shortcuts[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n\n\n\n\n@media print {\n .suite-run-header[_ngcontent-%COMP%] {\n background: white;\n box-shadow: none;\n border-bottom: 2px solid #000;\n }\n\n .tabs-container[_ngcontent-%COMP%], \n .header-actions[_ngcontent-%COMP%], \n .keyboard-shortcuts[_ngcontent-%COMP%] {\n display: none;\n }\n\n .tab-content[_ngcontent-%COMP%] {\n padding: 20px 0;\n }\n\n .result-hero[_ngcontent-%COMP%], \n .test-run-item[_ngcontent-%COMP%], \n .details-card[_ngcontent-%COMP%] {\n box-shadow: none;\n border: 1px solid #ccc;\n }\n}\n\n\n\n\n\n@media (prefers-color-scheme: dark) {\n \n\n}\n\n\n\n\n\n.tags-bar[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 8px 14px;\n background: linear-gradient(135deg, rgba(59, 130, 246, 0.04) 0%, rgba(59, 130, 246, 0.08) 100%);\n border: 1px solid rgba(59, 130, 246, 0.15);\n border-radius: 8px;\n max-width: 600px;\n}\n\n.tags-bar-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.tags-bar-label[_ngcontent-%COMP%] {\n color: var(--suite-run-text-secondary);\n font-size: 14px;\n}\n\n.tags-bar-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 0.6;\n}\n\n.tags-bar-chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n flex: 1;\n}\n\n.tag-inline[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n letter-spacing: 0.01em;\n}\n\n.tags-bar-empty[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n opacity: 0.7;\n flex: 1;\n}\n\n.tags-bar-edit[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n background: transparent;\n border: 1px dashed var(--suite-run-border);\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.tags-bar-edit[_ngcontent-%COMP%]:hover {\n border-color: var(--suite-run-primary);\n color: var(--suite-run-primary);\n background: var(--suite-run-primary-light);\n}\n\n.tags-bar-edit[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n\n\n.tags-editor-panel[_ngcontent-%COMP%] {\n margin-top: 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-primary);\n border-radius: 10px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(59, 130, 246, 0.1);\n max-width: 600px;\n}\n\n.tags-editor-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n background: var(--suite-run-primary-light);\n border-bottom: 1px solid rgba(59, 130, 246, 0.2);\n}\n\n.tags-editor-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--suite-run-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.tags-editor-body[_ngcontent-%COMP%] {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.tags-editor-chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n min-height: 32px;\n}\n\n.tag-editable[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 5px 8px 5px 12px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-primary);\n color: var(--suite-run-primary);\n border-radius: 14px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.tag-remove-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n background: transparent;\n border: none;\n color: var(--suite-run-primary);\n cursor: pointer;\n border-radius: 50%;\n font-size: 9px;\n opacity: 0.6;\n transition: var(--suite-run-transition);\n}\n\n.tag-remove-btn[_ngcontent-%COMP%]:hover {\n opacity: 1;\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.tags-empty-hint[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n font-style: italic;\n padding: 4px 0;\n}\n\n.tags-editor-input[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.tag-text-input[_ngcontent-%COMP%] {\n flex: 1;\n padding: 10px 14px;\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n font-size: 13px;\n background: var(--suite-run-neutral-light);\n}\n\n.tag-text-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--suite-run-primary);\n background: var(--suite-run-card);\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.tag-text-input[_ngcontent-%COMP%]::placeholder {\n color: var(--suite-run-text-secondary);\n opacity: 0.6;\n}\n\n.tags-editor-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-start;\n gap: 8px;\n padding: 12px 16px;\n background: var(--suite-run-neutral-light);\n border-top: 1px solid var(--suite-run-border);\n}\n\n\n\n\n\n.runs-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding: 12px 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.run-filters[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.filter-btn[_ngcontent-%COMP%] {\n padding: 6px 14px;\n border: 1px solid var(--suite-run-border);\n background: var(--suite-run-card);\n border-radius: 20px;\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n cursor: pointer;\n transition: var(--suite-run-transition);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--suite-run-primary);\n color: var(--suite-run-primary);\n}\n\n.filter-btn.active[_ngcontent-%COMP%] {\n background: var(--suite-run-primary);\n border-color: var(--suite-run-primary);\n color: white;\n}\n\n.filter-btn.passed[_ngcontent-%COMP%]:hover, \n.filter-btn.passed.active[_ngcontent-%COMP%] {\n background: var(--suite-run-success);\n border-color: var(--suite-run-success);\n color: white;\n}\n\n.filter-btn.failed[_ngcontent-%COMP%]:hover, \n.filter-btn.failed.active[_ngcontent-%COMP%] {\n background: var(--suite-run-danger);\n border-color: var(--suite-run-danger);\n color: white;\n}\n\n.filter-btn.error[_ngcontent-%COMP%]:hover, \n.filter-btn.error.active[_ngcontent-%COMP%] {\n background: var(--suite-run-warning);\n border-color: var(--suite-run-warning);\n color: white;\n}\n\n.runs-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n\n\n.test-run-card[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n overflow: hidden;\n transition: var(--suite-run-transition);\n margin-bottom: 10px;\n}\n\n.test-run-card[_ngcontent-%COMP%]:hover {\n box-shadow: var(--suite-run-shadow);\n}\n\n.test-run-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.test-run-item[_ngcontent-%COMP%]:hover {\n background: var(--suite-run-primary-light);\n}\n\n.run-header-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n}\n\n.run-feedback-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.run-feedback-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.run-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 6px;\n}\n\n.tag-mini[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 8px;\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-text-secondary);\n border-radius: 10px;\n font-size: 10px;\n font-weight: 500;\n}\n\n.tag-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border: 1px solid #bfdbfe;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: #1d4ed8;\n}\n\n.run-expand[_ngcontent-%COMP%] {\n color: var(--suite-run-text-secondary);\n transition: var(--suite-run-transition);\n}\n\n.test-run-item[_ngcontent-%COMP%]:hover .run-expand[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.run-cost[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.run-cost[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.7;\n}\n\n\n\n\n\n.inline-feedback[_ngcontent-%COMP%] {\n padding: 0 16px 16px;\n animation: _ngcontent-%COMP%_slideDown 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.feedback-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: var(--suite-run-border);\n margin-bottom: 16px;\n}\n\n.feedback-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.feedback-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.inline-rating[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.rating-numbers[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.rating-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: 2px solid var(--suite-run-border);\n border-radius: 8px;\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-text-secondary);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.rating-btn[_ngcontent-%COMP%]:hover, \n.rating-btn.hover[_ngcontent-%COMP%] {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.rating-btn.low[_ngcontent-%COMP%]:hover, \n.rating-btn.low.hover[_ngcontent-%COMP%] {\n border-color: var(--suite-run-danger);\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.rating-btn.mid[_ngcontent-%COMP%]:hover, \n.rating-btn.mid.hover[_ngcontent-%COMP%] {\n border-color: var(--suite-run-warning);\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.rating-btn.high[_ngcontent-%COMP%]:hover, \n.rating-btn.high.hover[_ngcontent-%COMP%] {\n border-color: var(--suite-run-success);\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.rating-btn.selected[_ngcontent-%COMP%] {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.rating-btn.selected.low[_ngcontent-%COMP%] {\n border-color: var(--suite-run-danger);\n background: var(--suite-run-danger);\n color: white;\n}\n\n.rating-btn.selected.mid[_ngcontent-%COMP%] {\n border-color: var(--suite-run-warning);\n background: var(--suite-run-warning);\n color: white;\n}\n\n.rating-btn.selected.high[_ngcontent-%COMP%] {\n border-color: var(--suite-run-success);\n background: var(--suite-run-success);\n color: white;\n}\n\n.rating-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 14px;\n background: var(--suite-run-neutral-light);\n border-radius: 8px;\n}\n\n.rating-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--suite-run-text);\n}\n\n.rating-label-text[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--suite-run-text-secondary);\n}\n\n.correctness-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.correctness-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--suite-run-text);\n}\n\n.correctness-options[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n}\n\n.radio-opt[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 13px;\n color: var(--suite-run-text-secondary);\n}\n\n.radio-opt[_ngcontent-%COMP%] input[type=\"radio\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.comments-row[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.feedback-textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px;\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n resize: vertical;\n min-height: 80px;\n}\n\n.feedback-textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--suite-run-primary);\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);\n}\n\n.feedback-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n padding-top: 8px;\n}\n\n\n\n\n\n@media (max-width: 768px) {\n .tags-bar[_ngcontent-%COMP%] {\n padding: 8px 12px;\n }\n\n .tags-bar-content[_ngcontent-%COMP%] {\n gap: 8px;\n }\n\n .tag-inline[_ngcontent-%COMP%] {\n padding: 3px 8px;\n font-size: 10px;\n }\n\n .tags-editor-panel[_ngcontent-%COMP%] {\n margin-top: 12px;\n }\n\n .tags-editor-body[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .tags-editor-footer[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n\n .runs-toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .run-filters[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .runs-actions[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .rating-numbers[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .rating-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n font-size: 12px;\n }\n\n .correctness-row[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .feedback-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .feedback-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n width: 100%;\n }\n}\n\n\n\n\n\n@keyframes _ngcontent-%COMP%_pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n}\n\n.result-hero.running[_ngcontent-%COMP%] .result-hero-icon[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_pulse 2s ease-in-out infinite;\n}\n\n\n\n.overview-tab[_ngcontent-%COMP%], \n.runs-tab[_ngcontent-%COMP%], \n.details-tab[_ngcontent-%COMP%], \n.analytics-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease;\n}\n\n\n\n\n\n.analytics-tab[_ngcontent-%COMP%] {\n max-width: 1200px;\n margin: 0 auto;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.analytics-section[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n padding: 24px;\n box-shadow: var(--suite-run-shadow);\n}\n\n.analytics-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 20px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--suite-run-text);\n padding-bottom: 12px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.analytics-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.analytics-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.analytics-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n padding: 0;\n border: none;\n}\n\n.analytics-legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.legend-item.passed[_ngcontent-%COMP%] {\n color: var(--suite-run-success);\n}\n\n.legend-item.failed[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n}\n\n.legend-item.error[_ngcontent-%COMP%] {\n color: var(--suite-run-warning);\n}\n\n.legend-item.skipped[_ngcontent-%COMP%] {\n color: var(--suite-run-neutral);\n}\n\n\n\n.performance-matrix[_ngcontent-%COMP%] {\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.matrix-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 2fr 120px 150px 100px 100px;\n border-bottom: 1px solid var(--suite-run-border);\n transition: var(--suite-run-transition);\n cursor: pointer;\n}\n\n.matrix-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.matrix-row[_ngcontent-%COMP%]:hover:not(.matrix-header-row) {\n background: var(--suite-run-primary-light);\n}\n\n.matrix-row.passed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-success);\n}\n\n.matrix-row.failed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-danger);\n}\n\n.matrix-row.error[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-warning);\n}\n\n.matrix-row.skipped[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-neutral);\n}\n\n.matrix-header-row[_ngcontent-%COMP%] {\n background: var(--suite-run-neutral-light);\n font-weight: 600;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n cursor: default;\n}\n\n.matrix-cell[_ngcontent-%COMP%] {\n padding: 12px 16px;\n display: flex;\n align-items: center;\n}\n\n.test-name-cell[_ngcontent-%COMP%] {\n gap: 12px;\n}\n\n.test-sequence[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-neutral-light);\n border-radius: 50%;\n font-size: 11px;\n font-weight: 600;\n color: var(--suite-run-text-secondary);\n flex-shrink: 0;\n}\n\n.test-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--suite-run-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.status-indicator.status-passed[_ngcontent-%COMP%] {\n color: var(--suite-run-success);\n}\n\n.status-indicator.status-failed[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n}\n\n.status-indicator.status-error[_ngcontent-%COMP%] {\n color: var(--suite-run-warning);\n}\n\n.status-indicator.status-skipped[_ngcontent-%COMP%] {\n color: var(--suite-run-neutral);\n}\n\n.status-indicator.status-pending[_ngcontent-%COMP%] {\n color: var(--suite-run-info);\n}\n\n.status-indicator.status-running[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.score-bar[_ngcontent-%COMP%] {\n position: relative;\n width: 100%;\n height: 20px;\n background: var(--suite-run-neutral-light);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.score-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 10px;\n transition: width 0.3s ease;\n}\n\n.score-fill.high[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, var(--suite-run-success) 0%, #34d399 100%);\n}\n\n.score-fill.medium[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, var(--suite-run-warning) 0%, #fbbf24 100%);\n}\n\n.score-fill.low[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, var(--suite-run-danger) 0%, #f87171 100%);\n}\n\n.score-text[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 11px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.na-value[_ngcontent-%COMP%] {\n color: var(--suite-run-text-secondary);\n opacity: 0.6;\n}\n\n\n\n.stats-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n}\n\n.stat-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border: 1px solid var(--suite-run-border);\n border-radius: 12px;\n transition: var(--suite-run-transition);\n}\n\n.stat-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--suite-run-shadow);\n}\n\n.stat-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n font-size: 20px;\n}\n\n.stat-icon.passed[_ngcontent-%COMP%] {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.stat-icon.failed[_ngcontent-%COMP%] {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.stat-icon.score[_ngcontent-%COMP%] {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.stat-icon.duration[_ngcontent-%COMP%] {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.stat-icon.cost[_ngcontent-%COMP%] {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.stat-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.stat-card[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--suite-run-text);\n}\n\n.stat-card[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-percent[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n\n\n@media (max-width: 768px) {\n .analytics-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .matrix-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 8px;\n padding: 12px;\n }\n\n .matrix-header-row[_ngcontent-%COMP%] {\n display: none;\n }\n\n .matrix-cell[_ngcontent-%COMP%] {\n padding: 4px 0;\n }\n\n .test-name-cell[_ngcontent-%COMP%]::before, \n .status-cell[_ngcontent-%COMP%]::before, \n .score-cell[_ngcontent-%COMP%]::before, \n .duration-cell[_ngcontent-%COMP%]::before, \n .cost-cell[_ngcontent-%COMP%]::before {\n font-size: 10px;\n font-weight: 600;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n margin-right: 8px;\n min-width: 80px;\n }\n\n .status-cell[_ngcontent-%COMP%]::before { content: 'Status:'; }\n .score-cell[_ngcontent-%COMP%]::before { content: 'Score:'; }\n .duration-cell[_ngcontent-%COMP%]::before { content: 'Duration:'; }\n .cost-cell[_ngcontent-%COMP%]::before { content: 'Cost:'; }\n\n .stats-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr 1fr;\n }\n\n .stat-card[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .stat-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n font-size: 16px;\n }\n\n .stat-card[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n}\n\n\n\n.tab[_ngcontent-%COMP%]:focus-visible, \n.test-run-item[_ngcontent-%COMP%]:focus-visible, \nbutton[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--suite-run-primary);\n outline-offset: 2px;\n}\n\n\n\n\n\n.analytics-loading[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n padding: 60px 20px;\n color: var(--suite-run-text-secondary);\n}\n\n.analytics-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--suite-run-primary);\n}\n\n\n\n\n\n.results-table-wrapper[_ngcontent-%COMP%] {\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.results-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.results-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n background: var(--suite-run-neutral-light);\n}\n\n.results-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: left;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.results-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid #f1f5f9;\n vertical-align: middle;\n}\n\n.results-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n\n\n.seq-col[_ngcontent-%COMP%] {\n width: 40px;\n min-width: 40px;\n text-align: center;\n white-space: nowrap;\n}\n\n.name-col[_ngcontent-%COMP%] {\n \n\n width: auto;\n max-width: 50%;\n}\n\n.status-col[_ngcontent-%COMP%] {\n width: 1%; \n\n white-space: nowrap;\n}\n\n.score-col[_ngcontent-%COMP%] {\n width: 1%; \n\n min-width: 120px; \n\n white-space: nowrap;\n}\n\n.duration-col[_ngcontent-%COMP%] {\n width: 1%; \n\n white-space: nowrap;\n text-align: right;\n}\n\n.cost-col[_ngcontent-%COMP%] {\n width: 1%; \n\n white-space: nowrap;\n text-align: right;\n}\n\n\n\n.result-row[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.result-row[_ngcontent-%COMP%]:hover {\n background: var(--suite-run-primary-light);\n}\n\n.result-row.row-passed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-success);\n}\n\n.result-row.row-failed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-danger);\n}\n\n.result-row.row-error[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-warning);\n}\n\n.result-row.row-skipped[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-neutral);\n}\n\n\n\n.test-name-wrapper[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.test-name-wrapper[_ngcontent-%COMP%] .test-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--suite-run-text);\n}\n\n.test-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n\n\n.score-display[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.score-bar-mini[_ngcontent-%COMP%] {\n flex: 1;\n height: 6px;\n background: var(--suite-run-neutral-light);\n border-radius: 3px;\n overflow: hidden;\n min-width: 60px;\n}\n\n.score-bar-mini[_ngcontent-%COMP%] .score-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.score-bar-mini[_ngcontent-%COMP%] .score-fill.high[_ngcontent-%COMP%] {\n background: var(--suite-run-success);\n}\n\n.score-bar-mini[_ngcontent-%COMP%] .score-fill.medium[_ngcontent-%COMP%] {\n background: var(--suite-run-warning);\n}\n\n.score-bar-mini[_ngcontent-%COMP%] .score-fill.low[_ngcontent-%COMP%] {\n background: var(--suite-run-danger);\n}\n\n.score-display[_ngcontent-%COMP%] .score-text[_ngcontent-%COMP%] {\n position: static;\n transform: none;\n font-size: 12px;\n font-weight: 600;\n color: var(--suite-run-text);\n min-width: 35px;\n text-align: right;\n}\n\n\n\n.results-table[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.results-table[_ngcontent-%COMP%] .status-badge.status-passed[_ngcontent-%COMP%] {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.results-table[_ngcontent-%COMP%] .status-badge.status-failed[_ngcontent-%COMP%] {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.results-table[_ngcontent-%COMP%] .status-badge.status-error[_ngcontent-%COMP%] {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.results-table[_ngcontent-%COMP%] .status-badge.status-skipped[_ngcontent-%COMP%] {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n.results-table[_ngcontent-%COMP%] .status-badge.status-pending[_ngcontent-%COMP%] {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.results-table[_ngcontent-%COMP%] .status-badge.status-running[_ngcontent-%COMP%] {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n\n\n@media (max-width: 768px) {\n .results-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n }\n\n .results-table[_ngcontent-%COMP%] {\n min-width: 600px;\n }\n\n .results-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .results-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n\n .name-col[_ngcontent-%COMP%] {\n min-width: 150px;\n }\n}\n\n\n\n\n\n@media (prefers-contrast: high) {\n .status-badge[_ngcontent-%COMP%], \n .status-inline[_ngcontent-%COMP%] {\n border: 2px solid currentColor;\n }\n\n .test-run-item[_ngcontent-%COMP%] {\n border-width: 2px;\n }\n\n .tab.active[_ngcontent-%COMP%] {\n border-bottom-width: 4px;\n }\n}\n\n\n\n\n\n.evaluation-summary[_ngcontent-%COMP%] {\n margin-top: 20px;\n}\n\n.eval-summary-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 16px;\n}\n\n.eval-summary-card[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n overflow: hidden;\n transition: var(--suite-run-transition);\n}\n\n.eval-summary-card[_ngcontent-%COMP%]:hover {\n box-shadow: var(--suite-run-shadow);\n}\n\n.eval-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--suite-run-neutral-light);\n border-bottom: 1px solid var(--suite-run-border);\n font-size: 13px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.eval-card-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.eval-card-body[_ngcontent-%COMP%] {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.eval-stat-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n}\n\n.eval-stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n.eval-stat-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.eval-stat-value.correct[_ngcontent-%COMP%] {\n color: var(--suite-run-success);\n}\n\n.eval-stat-value.incorrect[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n font-weight: 500;\n font-size: 12px;\n}\n\n.eval-stat-value.error[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n}\n\n.eval-stat-value.timeout[_ngcontent-%COMP%] {\n color: var(--suite-run-warning);\n}\n\n.eval-card-footer[_ngcontent-%COMP%] {\n padding: 10px 16px;\n background: var(--suite-run-warning-light);\n border-top: 1px solid rgba(245, 158, 11, 0.2);\n}\n\n.pending-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-warning);\n}\n\n.pending-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n\n\n.needs-review-section[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n overflow: hidden;\n}\n\n.needs-review-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 20px;\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border-bottom: 1px solid rgba(245, 158, 11, 0.3);\n}\n\n.needs-review-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #92400e;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.needs-review-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.review-count[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: #92400e;\n background: rgba(255, 255, 255, 0.6);\n padding: 2px 10px;\n border-radius: 12px;\n}\n\n.needs-review-list[_ngcontent-%COMP%] {\n padding: 8px;\n}\n\n.review-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-radius: 8px;\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.review-item[_ngcontent-%COMP%]:hover {\n background: var(--suite-run-primary-light);\n}\n\n.review-item-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.review-item.high-priority[_ngcontent-%COMP%] .review-item-icon[_ngcontent-%COMP%] {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.review-item.medium-priority[_ngcontent-%COMP%] .review-item-icon[_ngcontent-%COMP%] {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.review-item[_ngcontent-%COMP%]:not(.high-priority):not(.medium-priority) .review-item-icon[_ngcontent-%COMP%] {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n.review-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.review-item-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--suite-run-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.review-item-reason[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--suite-run-text-secondary);\n}\n\n.review-item-action[_ngcontent-%COMP%] {\n color: var(--suite-run-text-secondary);\n font-size: 12px;\n}\n\n.review-item[_ngcontent-%COMP%]:hover .review-item-action[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.review-more[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 8px;\n border-top: 1px solid var(--suite-run-border);\n}\n\n\n\n@media (max-width: 768px) {\n .eval-summary-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .eval-card-header[_ngcontent-%COMP%] {\n padding: 10px 14px;\n font-size: 12px;\n }\n\n .eval-card-body[_ngcontent-%COMP%] {\n padding: 12px 14px;\n }\n\n .needs-review-header[_ngcontent-%COMP%] {\n padding: 12px 16px;\n }\n\n .needs-review-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n\n .review-item[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n\n .review-item-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n font-size: 12px;\n }\n}\n\n\n\n\n\n.feedback-col[_ngcontent-%COMP%] {\n width: 1%; \n\n white-space: nowrap;\n text-align: center;\n}\n\n.feedback-display[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.feedback-rating[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: 4px;\n background: var(--suite-run-neutral-light);\n}\n\n.feedback-rating.low[_ngcontent-%COMP%] {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.feedback-rating.mid[_ngcontent-%COMP%] {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.feedback-rating.high[_ngcontent-%COMP%] {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.feedback-correctness[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.feedback-correctness[_ngcontent-%COMP%] i.correct[_ngcontent-%COMP%] {\n color: var(--suite-run-success);\n}\n\n.feedback-correctness[_ngcontent-%COMP%] i.incorrect[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n}\n\n.na-value.needs-review[_ngcontent-%COMP%] {\n color: var(--suite-run-warning);\n opacity: 0.7;\n}\n\n.na-value.needs-review[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}"], changeDetection: 0 }); }
2316
+ i0.ɵɵconditional(ctx.showShortcuts ? 136 : -1);
2317
+ } }, dependencies: [i1.NgClass, i2.DefaultValueAccessor, i2.RadioControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.DialogContainerDirective, i4.ButtonComponent, i5.EvaluationBadgeComponent, i5.EvaluationModeToggleComponent, i5.ExecutionContextComponent, i6.EntityLinkPillComponent, i1.DatePipe], styles: ["\n\n\n\n\n\n\n\n[_nghost-%COMP%] {\n --suite-run-primary: #3b82f6;\n --suite-run-primary-light: #eff6ff;\n --suite-run-success: #10b981;\n --suite-run-success-light: #ecfdf5;\n --suite-run-danger: #ef4444;\n --suite-run-danger-light: #fef2f2;\n --suite-run-warning: #f59e0b;\n --suite-run-warning-light: #fffbeb;\n --suite-run-info: #8b5cf6;\n --suite-run-info-light: #f5f3ff;\n --suite-run-neutral: #6b7280;\n --suite-run-neutral-light: #f9fafb;\n --suite-run-bg: #f8fafc;\n --suite-run-card: #ffffff;\n --suite-run-border: #e2e8f0;\n --suite-run-text: #1e293b;\n --suite-run-text-secondary: #64748b;\n --suite-run-radius: 12px;\n --suite-run-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);\n --suite-run-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --suite-run-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n\n\n.test-suite-run-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--suite-run-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n}\n\n\n\n\n\n.suite-run-header[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border-bottom: 1px solid var(--suite-run-border);\n padding: 20px 24px;\n}\n\n\n\n.breadcrumb[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] ol[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: 13px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] li[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover {\n background: rgba(59, 130, 246, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .separator[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--suite-run-text-secondary);\n margin: 0 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .current[_ngcontent-%COMP%] {\n color: var(--suite-run-text-secondary);\n font-weight: 500;\n}\n\n.breadcrumb-text[_ngcontent-%COMP%] {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n align-items: flex-start;\n}\n\n.suite-run-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: var(--suite-run-radius);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n flex-shrink: 0;\n box-shadow: var(--suite-run-shadow);\n}\n\n.suite-run-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 24px;\n font-weight: 700;\n color: var(--suite-run-text);\n letter-spacing: -0.025em;\n}\n\n.suite-run-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.025em;\n}\n\n.status-badge.status-completed[_ngcontent-%COMP%] {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.status-badge.status-failed[_ngcontent-%COMP%] {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.status-badge.status-running[_ngcontent-%COMP%] {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.status-badge.status-pending[_ngcontent-%COMP%] {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.status-badge.status-cancelled[_ngcontent-%COMP%] {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: var(--suite-run-neutral-light);\n border-radius: 6px;\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n.meta-tag[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.7;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n\n\n\n\n.metrics-bar[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border: 1px solid var(--suite-run-border);\n border-radius: 10px;\n padding: 14px;\n transition: var(--suite-run-transition);\n}\n\n.metric-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--suite-run-shadow);\n}\n\n.metric-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-card);\n border-radius: 10px;\n color: var(--suite-run-primary);\n font-size: 16px;\n box-shadow: var(--suite-run-shadow);\n}\n\n.metric-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.metric-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--suite-run-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.metric-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n margin-top: 2px;\n}\n\n\n\n\n\n.results-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding-top: 20px;\n border-top: 1px solid var(--suite-run-border);\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.result-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: 10px;\n flex-shrink: 0;\n transition: var(--suite-run-transition);\n}\n\n.result-item[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--suite-run-shadow);\n}\n\n.result-icon[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.result-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.result-count[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n line-height: 1.2;\n}\n\n.result-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.result-item.passed[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%], \n.result-item.passed[_ngcontent-%COMP%] .result-count[_ngcontent-%COMP%] {\n color: var(--suite-run-success);\n}\n\n.result-item.failed[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%], \n.result-item.failed[_ngcontent-%COMP%] .result-count[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n}\n\n.result-item.error[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%], \n.result-item.error[_ngcontent-%COMP%] .result-count[_ngcontent-%COMP%] {\n color: var(--suite-run-warning);\n}\n\n.result-item.skipped[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%], \n.result-item.skipped[_ngcontent-%COMP%] .result-count[_ngcontent-%COMP%] {\n color: var(--suite-run-neutral);\n}\n\n.result-item.total[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%], \n.result-item.total[_ngcontent-%COMP%] .result-count[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n\n\n\n\n.tabs-container[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border-bottom: 1px solid var(--suite-run-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n padding: 0 24px;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n}\n\n.tabs[_ngcontent-%COMP%]::-webkit-scrollbar {\n display: none;\n}\n\n.tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--suite-run-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--suite-run-transition);\n white-space: nowrap;\n position: relative;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--suite-run-primary);\n background: var(--suite-run-primary-light);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n border-bottom-color: var(--suite-run-primary);\n font-weight: 600;\n}\n\n.tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 15px;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n background: var(--suite-run-border);\n color: var(--suite-run-text-secondary);\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.tab.active[_ngcontent-%COMP%] .tab-badge[_ngcontent-%COMP%] {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.tab-shortcut[_ngcontent-%COMP%] {\n display: none;\n width: 18px;\n height: 18px;\n background: var(--suite-run-neutral-light);\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n color: var(--suite-run-text-secondary);\n align-items: center;\n justify-content: center;\n margin-left: 4px;\n}\n\n\n\n\n\n.tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n\n\n\n\n.overview-tab[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n max-width: 800px;\n margin: 0 auto;\n width: 100%;\n}\n\n.result-hero[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n padding: 48px 32px;\n text-align: center;\n border: 2px solid var(--suite-run-border);\n transition: var(--suite-run-transition);\n}\n\n.result-hero.passed[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);\n border-color: var(--suite-run-success);\n}\n\n.result-hero.failed[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fef2f2 0%, #fecaca 100%);\n border-color: var(--suite-run-danger);\n}\n\n.result-hero.running[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border-color: var(--suite-run-primary);\n}\n\n.result-hero.pending[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%);\n border-color: var(--suite-run-info);\n}\n\n.result-hero-icon[_ngcontent-%COMP%] {\n font-size: 72px;\n margin-bottom: 20px;\n}\n\n.result-hero.passed[_ngcontent-%COMP%] .result-hero-icon[_ngcontent-%COMP%] {\n color: var(--suite-run-success);\n}\n\n.result-hero.failed[_ngcontent-%COMP%] .result-hero-icon[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n}\n\n.result-hero.running[_ngcontent-%COMP%] .result-hero-icon[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.result-hero.pending[_ngcontent-%COMP%] .result-hero-icon[_ngcontent-%COMP%] {\n color: var(--suite-run-info);\n}\n\n.result-hero-text[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 32px;\n font-weight: 800;\n color: var(--suite-run-text);\n letter-spacing: -0.025em;\n}\n\n.result-hero-stats[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 32px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--suite-run-text);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: 40px;\n background: var(--suite-run-border);\n}\n\n\n\n.progress-section[_ngcontent-%COMP%] {\n background: var(--suite-run-primary-light);\n border: 1px solid rgba(59, 130, 246, 0.2);\n border-radius: var(--suite-run-radius);\n padding: 20px;\n text-align: center;\n}\n\n.progress-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 500;\n color: var(--suite-run-primary);\n margin-bottom: 8px;\n}\n\n.progress-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.auto-refresh-notice[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n\n\n\n\n.runs-tab[_ngcontent-%COMP%] {\n max-width: 900px;\n margin: 0 auto;\n width: 100%;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.skeleton-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.skeleton-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n border: 1px solid var(--suite-run-border);\n}\n\n.skeleton-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n border-radius: 50%;\n}\n\n.skeleton-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n border-radius: 8px;\n}\n\n.skeleton-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.skeleton-line[_ngcontent-%COMP%] {\n height: 14px;\n background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n border-radius: 4px;\n}\n\n.skeleton-line.wide[_ngcontent-%COMP%] {\n width: 70%;\n}\n\n.skeleton-line.narrow[_ngcontent-%COMP%] {\n width: 40%;\n}\n\n@keyframes _ngcontent-%COMP%_shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n\n\n.test-runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.test-run-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.test-run-item[_ngcontent-%COMP%]:hover {\n background: var(--suite-run-primary-light);\n border-color: #93c5fd;\n transform: translateX(4px);\n}\n\n.test-run-item[_ngcontent-%COMP%]:active {\n transform: translateX(2px);\n}\n\n.run-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-neutral-light);\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n color: var(--suite-run-text-secondary);\n flex-shrink: 0;\n}\n\n.run-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n color: white;\n font-size: 16px;\n flex-shrink: 0;\n box-shadow: var(--suite-run-shadow);\n}\n\n.run-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.run-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--suite-run-text);\n margin-bottom: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n flex-wrap: wrap;\n}\n\n.run-status[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.run-score[_ngcontent-%COMP%], \n.run-duration[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.run-score[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.run-duration[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.7;\n}\n\n.test-run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: #cbd5e1;\n font-size: 14px;\n transition: var(--suite-run-transition);\n}\n\n.test-run-item[_ngcontent-%COMP%]:hover > i[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n transform: translateX(4px);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n border: 2px dashed var(--suite-run-border);\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-neutral-light);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: #cbd5e1;\n}\n\n.empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--suite-run-text-secondary);\n max-width: 300px;\n}\n\n\n\n\n\n.details-tab[_ngcontent-%COMP%] {\n max-width: 900px;\n margin: 0 auto;\n width: 100%;\n}\n\n.details-card[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n padding: 24px;\n box-shadow: var(--suite-run-shadow);\n}\n\n.details-card[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 20px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--suite-run-text);\n padding-bottom: 12px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.details-card[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--suite-run-text);\n word-wrap: break-word;\n}\n\n.detail-value.monospace[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n font-size: 12px;\n background: var(--suite-run-neutral-light);\n padding: 6px 10px;\n border-radius: 6px;\n}\n\n.detail-value[_ngcontent-%COMP%] a[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n text-decoration: none;\n font-weight: 500;\n transition: var(--suite-run-transition);\n}\n\n.detail-value[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover {\n color: #2563eb;\n text-decoration: underline;\n}\n\n.status-inline[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.status-inline.status-completed[_ngcontent-%COMP%] {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.status-inline.status-failed[_ngcontent-%COMP%] {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.status-inline.status-running[_ngcontent-%COMP%] {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.status-inline.status-pending[_ngcontent-%COMP%] {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.status-inline.status-cancelled[_ngcontent-%COMP%] {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n\n\n\n\n\n\n.shortcuts-toggle[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n box-shadow: var(--suite-run-shadow);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--suite-run-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--suite-run-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle[_ngcontent-%COMP%]:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--suite-run-primary);\n border-color: var(--suite-run-primary);\n}\n\n.keyboard-shortcuts[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n padding: 12px 16px;\n box-shadow: var(--suite-run-shadow-lg);\n font-size: 12px;\n z-index: 100;\n opacity: 0.9;\n transition: var(--suite-run-transition);\n}\n\n.keyboard-shortcuts[_ngcontent-%COMP%]:hover {\n opacity: 1;\n}\n\n.shortcuts-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n color: var(--suite-run-text);\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.shortcuts-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.shortcuts-close[_ngcontent-%COMP%] {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--suite-run-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--suite-run-transition);\n}\n\n.shortcuts-close[_ngcontent-%COMP%]:hover {\n color: var(--suite-run-text);\n background: var(--suite-run-border);\n}\n\n.shortcut-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.shortcut-item[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n}\n\n.shortcut-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-child {\n color: var(--suite-run-text-secondary);\n}\n\n.shortcut-keys[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\nkbd[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n font-family: inherit;\n font-size: 10px;\n font-weight: 600;\n color: var(--suite-run-text);\n box-shadow: 0 1px 0 #94a3b8;\n}\n\n\n\n\n\n@media (max-width: 1024px) {\n .suite-run-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n }\n\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .result-hero-stats[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .stat-divider[_ngcontent-%COMP%] {\n display: none;\n }\n\n .details-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .tab-shortcut[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n\n\n\n\n@media (max-width: 768px) {\n .suite-run-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-left[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .suite-run-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n font-size: 20px;\n }\n\n .suite-run-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n flex: 1;\n }\n\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n gap: 8px;\n }\n\n .metric-card[_ngcontent-%COMP%] {\n padding: 12px;\n flex-direction: column;\n text-align: center;\n gap: 8px;\n }\n\n .metric-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n }\n\n .metric-value[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .results-summary[_ngcontent-%COMP%] {\n gap: 8px;\n padding-top: 16px;\n flex-wrap: nowrap;\n overflow-x: auto;\n padding-bottom: 8px;\n margin-bottom: -8px;\n }\n\n .result-item[_ngcontent-%COMP%] {\n padding: 10px 12px;\n min-width: 90px;\n }\n\n .result-icon[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .result-count[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n\n .tabs[_ngcontent-%COMP%] {\n padding: 0 16px;\n }\n\n .tab[_ngcontent-%COMP%] {\n padding: 14px 16px;\n font-size: 13px;\n }\n\n .tab-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .result-hero[_ngcontent-%COMP%] {\n padding: 32px 20px;\n }\n\n .result-hero-icon[_ngcontent-%COMP%] {\n font-size: 56px;\n }\n\n .result-hero-text[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 24px;\n }\n\n .stat-value[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .test-run-item[_ngcontent-%COMP%] {\n padding: 14px;\n }\n\n .run-sequence[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n font-size: 12px;\n }\n\n .run-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n font-size: 14px;\n }\n\n .run-name[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n\n .run-meta[_ngcontent-%COMP%] {\n gap: 10px;\n font-size: 11px;\n }\n\n .empty-state[_ngcontent-%COMP%] {\n padding: 40px 16px;\n }\n\n .empty-icon[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n }\n\n .empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 28px;\n }\n\n .details-card[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .details-grid[_ngcontent-%COMP%] {\n gap: 16px;\n }\n\n .keyboard-shortcuts[_ngcontent-%COMP%], .shortcuts-toggle[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n\n\n\n\n@media (max-width: 480px) {\n .suite-run-header[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .breadcrumb[_ngcontent-%COMP%] {\n font-size: 12px;\n margin-bottom: 12px;\n }\n\n .suite-run-icon[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n font-size: 18px;\n }\n\n .suite-run-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n\n .suite-run-meta[_ngcontent-%COMP%] {\n gap: 8px;\n }\n\n .status-badge[_ngcontent-%COMP%] {\n padding: 4px 10px;\n font-size: 11px;\n }\n\n .meta-tag[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 3px 8px;\n }\n\n .metrics-bar[_ngcontent-%COMP%] {\n grid-template-columns: 1fr 1fr;\n }\n\n .metric-card[_ngcontent-%COMP%] {\n padding: 10px;\n gap: 6px;\n }\n\n .metric-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n font-size: 14px;\n }\n\n .metric-value[_ngcontent-%COMP%] {\n font-size: 14px;\n }\n\n .metric-label[_ngcontent-%COMP%] {\n font-size: 9px;\n }\n\n .result-item[_ngcontent-%COMP%] {\n padding: 8px 10px;\n min-width: 80px;\n gap: 8px;\n }\n\n .result-icon[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n\n .result-count[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .result-label[_ngcontent-%COMP%] {\n font-size: 9px;\n }\n\n .tabs[_ngcontent-%COMP%] {\n padding: 0 12px;\n }\n\n .tab[_ngcontent-%COMP%] {\n padding: 12px 14px;\n gap: 6px;\n }\n\n .tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n }\n\n .tab-content[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .result-hero[_ngcontent-%COMP%] {\n padding: 24px 16px;\n }\n\n .result-hero-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n }\n\n .result-hero-text[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 20px;\n margin-bottom: 12px;\n }\n\n .stat-value[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n\n .stat-label[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n\n .progress-section[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .progress-info[_ngcontent-%COMP%] {\n font-size: 14px;\n }\n\n .test-run-item[_ngcontent-%COMP%] {\n padding: 12px;\n gap: 10px;\n }\n\n .run-sequence[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n font-size: 11px;\n }\n\n .run-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n font-size: 12px;\n border-radius: 8px;\n }\n\n .run-name[_ngcontent-%COMP%] {\n font-size: 12px;\n margin-bottom: 3px;\n }\n\n .run-meta[_ngcontent-%COMP%] {\n gap: 8px;\n font-size: 10px;\n }\n\n .empty-state[_ngcontent-%COMP%] {\n padding: 32px 12px;\n }\n\n .empty-state[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n\n .details-card[_ngcontent-%COMP%] {\n padding: 14px;\n }\n\n .details-card[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-bottom: 16px;\n }\n\n .detail-label[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n\n .detail-value[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n}\n\n\n\n\n\n@media (hover: none) and (pointer: coarse) {\n .test-run-item[_ngcontent-%COMP%] {\n min-height: 64px;\n }\n\n .test-run-item[_ngcontent-%COMP%]:hover {\n transform: none;\n background: var(--suite-run-card);\n border-color: var(--suite-run-border);\n }\n\n .test-run-item[_ngcontent-%COMP%]:active {\n background: var(--suite-run-primary-light);\n border-color: #93c5fd;\n }\n\n .tab[_ngcontent-%COMP%]:hover {\n background: transparent;\n color: var(--suite-run-text-secondary);\n }\n\n .tab[_ngcontent-%COMP%]:active {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n }\n\n .metric-card[_ngcontent-%COMP%]:hover {\n transform: none;\n box-shadow: none;\n }\n\n .result-item[_ngcontent-%COMP%]:hover {\n transform: none;\n box-shadow: none;\n }\n\n .keyboard-shortcuts[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n\n\n\n\n@media print {\n .suite-run-header[_ngcontent-%COMP%] {\n background: white;\n box-shadow: none;\n border-bottom: 2px solid #000;\n }\n\n .tabs-container[_ngcontent-%COMP%], \n .header-actions[_ngcontent-%COMP%], \n .keyboard-shortcuts[_ngcontent-%COMP%] {\n display: none;\n }\n\n .tab-content[_ngcontent-%COMP%] {\n padding: 20px 0;\n }\n\n .result-hero[_ngcontent-%COMP%], \n .test-run-item[_ngcontent-%COMP%], \n .details-card[_ngcontent-%COMP%] {\n box-shadow: none;\n border: 1px solid #ccc;\n }\n}\n\n\n\n\n\n@media (prefers-color-scheme: dark) {\n \n\n}\n\n\n\n\n\n.tags-bar[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 8px 14px;\n background: linear-gradient(135deg, rgba(59, 130, 246, 0.04) 0%, rgba(59, 130, 246, 0.08) 100%);\n border: 1px solid rgba(59, 130, 246, 0.15);\n border-radius: 8px;\n max-width: 600px;\n}\n\n.tags-bar-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.tags-bar-label[_ngcontent-%COMP%] {\n color: var(--suite-run-text-secondary);\n font-size: 14px;\n}\n\n.tags-bar-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 0.6;\n}\n\n.tags-bar-chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n flex: 1;\n}\n\n.tag-inline[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n letter-spacing: 0.01em;\n}\n\n.tags-bar-empty[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n opacity: 0.7;\n flex: 1;\n}\n\n.tags-bar-edit[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n background: transparent;\n border: 1px dashed var(--suite-run-border);\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.tags-bar-edit[_ngcontent-%COMP%]:hover {\n border-color: var(--suite-run-primary);\n color: var(--suite-run-primary);\n background: var(--suite-run-primary-light);\n}\n\n.tags-bar-edit[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n\n\n.tags-editor-panel[_ngcontent-%COMP%] {\n margin-top: 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-primary);\n border-radius: 10px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(59, 130, 246, 0.1);\n max-width: 600px;\n}\n\n.tags-editor-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n background: var(--suite-run-primary-light);\n border-bottom: 1px solid rgba(59, 130, 246, 0.2);\n}\n\n.tags-editor-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--suite-run-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.tags-editor-body[_ngcontent-%COMP%] {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.tags-editor-chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n min-height: 32px;\n}\n\n.tag-editable[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 5px 8px 5px 12px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-primary);\n color: var(--suite-run-primary);\n border-radius: 14px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.tag-remove-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n background: transparent;\n border: none;\n color: var(--suite-run-primary);\n cursor: pointer;\n border-radius: 50%;\n font-size: 9px;\n opacity: 0.6;\n transition: var(--suite-run-transition);\n}\n\n.tag-remove-btn[_ngcontent-%COMP%]:hover {\n opacity: 1;\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.tags-empty-hint[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n font-style: italic;\n padding: 4px 0;\n}\n\n.tags-editor-input[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.tag-text-input[_ngcontent-%COMP%] {\n flex: 1;\n padding: 10px 14px;\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n font-size: 13px;\n background: var(--suite-run-neutral-light);\n}\n\n.tag-text-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--suite-run-primary);\n background: var(--suite-run-card);\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.tag-text-input[_ngcontent-%COMP%]::placeholder {\n color: var(--suite-run-text-secondary);\n opacity: 0.6;\n}\n\n.tags-editor-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-start;\n gap: 8px;\n padding: 12px 16px;\n background: var(--suite-run-neutral-light);\n border-top: 1px solid var(--suite-run-border);\n}\n\n\n\n\n\n.runs-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding: 12px 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.run-filters[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.filter-btn[_ngcontent-%COMP%] {\n padding: 6px 14px;\n border: 1px solid var(--suite-run-border);\n background: var(--suite-run-card);\n border-radius: 20px;\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n cursor: pointer;\n transition: var(--suite-run-transition);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--suite-run-primary);\n color: var(--suite-run-primary);\n}\n\n.filter-btn.active[_ngcontent-%COMP%] {\n background: var(--suite-run-primary);\n border-color: var(--suite-run-primary);\n color: white;\n}\n\n.filter-btn.passed[_ngcontent-%COMP%]:hover, \n.filter-btn.passed.active[_ngcontent-%COMP%] {\n background: var(--suite-run-success);\n border-color: var(--suite-run-success);\n color: white;\n}\n\n.filter-btn.failed[_ngcontent-%COMP%]:hover, \n.filter-btn.failed.active[_ngcontent-%COMP%] {\n background: var(--suite-run-danger);\n border-color: var(--suite-run-danger);\n color: white;\n}\n\n.filter-btn.error[_ngcontent-%COMP%]:hover, \n.filter-btn.error.active[_ngcontent-%COMP%] {\n background: var(--suite-run-warning);\n border-color: var(--suite-run-warning);\n color: white;\n}\n\n.runs-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n\n\n.test-run-card[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n overflow: hidden;\n transition: var(--suite-run-transition);\n margin-bottom: 10px;\n}\n\n.test-run-card[_ngcontent-%COMP%]:hover {\n box-shadow: var(--suite-run-shadow);\n}\n\n.test-run-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.test-run-item[_ngcontent-%COMP%]:hover {\n background: var(--suite-run-primary-light);\n}\n\n.run-header-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n}\n\n.run-feedback-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.run-feedback-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.run-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 6px;\n}\n\n.tag-mini[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 8px;\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-text-secondary);\n border-radius: 10px;\n font-size: 10px;\n font-weight: 500;\n}\n\n.tag-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border: 1px solid #bfdbfe;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: #1d4ed8;\n}\n\n.run-expand[_ngcontent-%COMP%] {\n color: var(--suite-run-text-secondary);\n transition: var(--suite-run-transition);\n}\n\n.test-run-item[_ngcontent-%COMP%]:hover .run-expand[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.run-cost[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.run-cost[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.7;\n}\n\n\n\n\n\n.inline-feedback[_ngcontent-%COMP%] {\n padding: 0 16px 16px;\n animation: _ngcontent-%COMP%_slideDown 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.feedback-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: var(--suite-run-border);\n margin-bottom: 16px;\n}\n\n.feedback-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.feedback-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.inline-rating[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.rating-numbers[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.rating-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: 2px solid var(--suite-run-border);\n border-radius: 8px;\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-text-secondary);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.rating-btn[_ngcontent-%COMP%]:hover, \n.rating-btn.hover[_ngcontent-%COMP%] {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.rating-btn.low[_ngcontent-%COMP%]:hover, \n.rating-btn.low.hover[_ngcontent-%COMP%] {\n border-color: var(--suite-run-danger);\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.rating-btn.mid[_ngcontent-%COMP%]:hover, \n.rating-btn.mid.hover[_ngcontent-%COMP%] {\n border-color: var(--suite-run-warning);\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.rating-btn.high[_ngcontent-%COMP%]:hover, \n.rating-btn.high.hover[_ngcontent-%COMP%] {\n border-color: var(--suite-run-success);\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.rating-btn.selected[_ngcontent-%COMP%] {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.rating-btn.selected.low[_ngcontent-%COMP%] {\n border-color: var(--suite-run-danger);\n background: var(--suite-run-danger);\n color: white;\n}\n\n.rating-btn.selected.mid[_ngcontent-%COMP%] {\n border-color: var(--suite-run-warning);\n background: var(--suite-run-warning);\n color: white;\n}\n\n.rating-btn.selected.high[_ngcontent-%COMP%] {\n border-color: var(--suite-run-success);\n background: var(--suite-run-success);\n color: white;\n}\n\n.rating-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 14px;\n background: var(--suite-run-neutral-light);\n border-radius: 8px;\n}\n\n.rating-value[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--suite-run-text);\n}\n\n.rating-label-text[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--suite-run-text-secondary);\n}\n\n.correctness-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.correctness-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--suite-run-text);\n}\n\n.correctness-options[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n}\n\n.radio-opt[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 13px;\n color: var(--suite-run-text-secondary);\n}\n\n.radio-opt[_ngcontent-%COMP%] input[type=\"radio\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.comments-row[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.feedback-textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px;\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n resize: vertical;\n min-height: 80px;\n}\n\n.feedback-textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--suite-run-primary);\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);\n}\n\n.feedback-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n padding-top: 8px;\n}\n\n\n\n\n\n@media (max-width: 768px) {\n .tags-bar[_ngcontent-%COMP%] {\n padding: 8px 12px;\n }\n\n .tags-bar-content[_ngcontent-%COMP%] {\n gap: 8px;\n }\n\n .tag-inline[_ngcontent-%COMP%] {\n padding: 3px 8px;\n font-size: 10px;\n }\n\n .tags-editor-panel[_ngcontent-%COMP%] {\n margin-top: 12px;\n }\n\n .tags-editor-body[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .tags-editor-footer[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n\n .runs-toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .run-filters[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .runs-actions[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .rating-numbers[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .rating-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n font-size: 12px;\n }\n\n .correctness-row[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .feedback-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .feedback-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n width: 100%;\n }\n}\n\n\n\n\n\n@keyframes _ngcontent-%COMP%_pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n}\n\n.result-hero.running[_ngcontent-%COMP%] .result-hero-icon[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_pulse 2s ease-in-out infinite;\n}\n\n\n\n.overview-tab[_ngcontent-%COMP%], \n.runs-tab[_ngcontent-%COMP%], \n.details-tab[_ngcontent-%COMP%], \n.analytics-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease;\n}\n\n\n\n\n\n.analytics-tab[_ngcontent-%COMP%] {\n max-width: 1200px;\n margin: 0 auto;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.analytics-section[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n padding: 24px;\n box-shadow: var(--suite-run-shadow);\n}\n\n.analytics-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 20px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--suite-run-text);\n padding-bottom: 12px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.analytics-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.analytics-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.analytics-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n padding: 0;\n border: none;\n}\n\n.analytics-legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.legend-item.passed[_ngcontent-%COMP%] {\n color: var(--suite-run-success);\n}\n\n.legend-item.failed[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n}\n\n.legend-item.error[_ngcontent-%COMP%] {\n color: var(--suite-run-warning);\n}\n\n.legend-item.skipped[_ngcontent-%COMP%] {\n color: var(--suite-run-neutral);\n}\n\n\n\n.performance-matrix[_ngcontent-%COMP%] {\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.matrix-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 2fr 120px 150px 100px 100px;\n border-bottom: 1px solid var(--suite-run-border);\n transition: var(--suite-run-transition);\n cursor: pointer;\n}\n\n.matrix-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.matrix-row[_ngcontent-%COMP%]:hover:not(.matrix-header-row) {\n background: var(--suite-run-primary-light);\n}\n\n.matrix-row.passed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-success);\n}\n\n.matrix-row.failed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-danger);\n}\n\n.matrix-row.error[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-warning);\n}\n\n.matrix-row.skipped[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-neutral);\n}\n\n.matrix-header-row[_ngcontent-%COMP%] {\n background: var(--suite-run-neutral-light);\n font-weight: 600;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n cursor: default;\n}\n\n.matrix-cell[_ngcontent-%COMP%] {\n padding: 12px 16px;\n display: flex;\n align-items: center;\n}\n\n.test-name-cell[_ngcontent-%COMP%] {\n gap: 12px;\n}\n\n.test-sequence[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-neutral-light);\n border-radius: 50%;\n font-size: 11px;\n font-weight: 600;\n color: var(--suite-run-text-secondary);\n flex-shrink: 0;\n}\n\n.test-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--suite-run-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.status-indicator.status-passed[_ngcontent-%COMP%] {\n color: var(--suite-run-success);\n}\n\n.status-indicator.status-failed[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n}\n\n.status-indicator.status-error[_ngcontent-%COMP%] {\n color: var(--suite-run-warning);\n}\n\n.status-indicator.status-skipped[_ngcontent-%COMP%] {\n color: var(--suite-run-neutral);\n}\n\n.status-indicator.status-pending[_ngcontent-%COMP%] {\n color: var(--suite-run-info);\n}\n\n.status-indicator.status-running[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.score-bar[_ngcontent-%COMP%] {\n position: relative;\n width: 100%;\n height: 20px;\n background: var(--suite-run-neutral-light);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.score-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 10px;\n transition: width 0.3s ease;\n}\n\n.score-fill.high[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, var(--suite-run-success) 0%, #34d399 100%);\n}\n\n.score-fill.medium[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, var(--suite-run-warning) 0%, #fbbf24 100%);\n}\n\n.score-fill.low[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, var(--suite-run-danger) 0%, #f87171 100%);\n}\n\n.score-text[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 11px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.na-value[_ngcontent-%COMP%] {\n color: var(--suite-run-text-secondary);\n opacity: 0.6;\n}\n\n\n\n.stats-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n}\n\n.stat-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border: 1px solid var(--suite-run-border);\n border-radius: 12px;\n transition: var(--suite-run-transition);\n}\n\n.stat-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--suite-run-shadow);\n}\n\n.stat-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n font-size: 20px;\n}\n\n.stat-icon.passed[_ngcontent-%COMP%] {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.stat-icon.failed[_ngcontent-%COMP%] {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.stat-icon.score[_ngcontent-%COMP%] {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.stat-icon.duration[_ngcontent-%COMP%] {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.stat-icon.cost[_ngcontent-%COMP%] {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.stat-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.stat-card[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--suite-run-text);\n}\n\n.stat-card[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-percent[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n\n\n@media (max-width: 768px) {\n .analytics-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .matrix-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 8px;\n padding: 12px;\n }\n\n .matrix-header-row[_ngcontent-%COMP%] {\n display: none;\n }\n\n .matrix-cell[_ngcontent-%COMP%] {\n padding: 4px 0;\n }\n\n .test-name-cell[_ngcontent-%COMP%]::before, \n .status-cell[_ngcontent-%COMP%]::before, \n .score-cell[_ngcontent-%COMP%]::before, \n .duration-cell[_ngcontent-%COMP%]::before, \n .cost-cell[_ngcontent-%COMP%]::before {\n font-size: 10px;\n font-weight: 600;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n margin-right: 8px;\n min-width: 80px;\n }\n\n .status-cell[_ngcontent-%COMP%]::before { content: 'Status:'; }\n .score-cell[_ngcontent-%COMP%]::before { content: 'Score:'; }\n .duration-cell[_ngcontent-%COMP%]::before { content: 'Duration:'; }\n .cost-cell[_ngcontent-%COMP%]::before { content: 'Cost:'; }\n\n .stats-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr 1fr;\n }\n\n .stat-card[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .stat-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n font-size: 16px;\n }\n\n .stat-card[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n}\n\n\n\n.tab[_ngcontent-%COMP%]:focus-visible, \n.test-run-item[_ngcontent-%COMP%]:focus-visible, \nbutton[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--suite-run-primary);\n outline-offset: 2px;\n}\n\n\n\n\n\n.analytics-loading[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n padding: 60px 20px;\n color: var(--suite-run-text-secondary);\n}\n\n.analytics-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--suite-run-primary);\n}\n\n\n\n\n\n.results-table-wrapper[_ngcontent-%COMP%] {\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.results-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.results-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n background: var(--suite-run-neutral-light);\n}\n\n.results-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: left;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.results-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid #f1f5f9;\n vertical-align: middle;\n}\n\n.results-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n\n\n.seq-col[_ngcontent-%COMP%] {\n width: 40px;\n min-width: 40px;\n text-align: center;\n white-space: nowrap;\n}\n\n.name-col[_ngcontent-%COMP%] {\n \n\n width: auto;\n max-width: 50%;\n}\n\n.status-col[_ngcontent-%COMP%] {\n width: 1%; \n\n white-space: nowrap;\n}\n\n.score-col[_ngcontent-%COMP%] {\n width: 1%; \n\n min-width: 120px; \n\n white-space: nowrap;\n}\n\n.duration-col[_ngcontent-%COMP%] {\n width: 1%; \n\n white-space: nowrap;\n text-align: right;\n}\n\n.cost-col[_ngcontent-%COMP%] {\n width: 1%; \n\n white-space: nowrap;\n text-align: right;\n}\n\n\n\n.result-row[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.result-row[_ngcontent-%COMP%]:hover {\n background: var(--suite-run-primary-light);\n}\n\n.result-row.row-passed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-success);\n}\n\n.result-row.row-failed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-danger);\n}\n\n.result-row.row-error[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-warning);\n}\n\n.result-row.row-skipped[_ngcontent-%COMP%] {\n border-left: 4px solid var(--suite-run-neutral);\n}\n\n\n\n.test-name-wrapper[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.test-name-wrapper[_ngcontent-%COMP%] .test-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--suite-run-text);\n}\n\n.test-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n\n\n.score-display[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.score-bar-mini[_ngcontent-%COMP%] {\n flex: 1;\n height: 6px;\n background: var(--suite-run-neutral-light);\n border-radius: 3px;\n overflow: hidden;\n min-width: 60px;\n}\n\n.score-bar-mini[_ngcontent-%COMP%] .score-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.score-bar-mini[_ngcontent-%COMP%] .score-fill.high[_ngcontent-%COMP%] {\n background: var(--suite-run-success);\n}\n\n.score-bar-mini[_ngcontent-%COMP%] .score-fill.medium[_ngcontent-%COMP%] {\n background: var(--suite-run-warning);\n}\n\n.score-bar-mini[_ngcontent-%COMP%] .score-fill.low[_ngcontent-%COMP%] {\n background: var(--suite-run-danger);\n}\n\n.score-display[_ngcontent-%COMP%] .score-text[_ngcontent-%COMP%] {\n position: static;\n transform: none;\n font-size: 12px;\n font-weight: 600;\n color: var(--suite-run-text);\n min-width: 35px;\n text-align: right;\n}\n\n\n\n.results-table[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.results-table[_ngcontent-%COMP%] .status-badge.status-passed[_ngcontent-%COMP%] {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.results-table[_ngcontent-%COMP%] .status-badge.status-failed[_ngcontent-%COMP%] {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.results-table[_ngcontent-%COMP%] .status-badge.status-error[_ngcontent-%COMP%] {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.results-table[_ngcontent-%COMP%] .status-badge.status-skipped[_ngcontent-%COMP%] {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n.results-table[_ngcontent-%COMP%] .status-badge.status-pending[_ngcontent-%COMP%] {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.results-table[_ngcontent-%COMP%] .status-badge.status-running[_ngcontent-%COMP%] {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n\n\n@media (max-width: 768px) {\n .results-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n }\n\n .results-table[_ngcontent-%COMP%] {\n min-width: 600px;\n }\n\n .results-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .results-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n\n .name-col[_ngcontent-%COMP%] {\n min-width: 150px;\n }\n}\n\n\n\n\n\n@media (prefers-contrast: high) {\n .status-badge[_ngcontent-%COMP%], \n .status-inline[_ngcontent-%COMP%] {\n border: 2px solid currentColor;\n }\n\n .test-run-item[_ngcontent-%COMP%] {\n border-width: 2px;\n }\n\n .tab.active[_ngcontent-%COMP%] {\n border-bottom-width: 4px;\n }\n}\n\n\n\n\n\n.evaluation-summary[_ngcontent-%COMP%] {\n margin-top: 20px;\n}\n\n.eval-summary-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 16px;\n}\n\n.eval-summary-card[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n overflow: hidden;\n transition: var(--suite-run-transition);\n}\n\n.eval-summary-card[_ngcontent-%COMP%]:hover {\n box-shadow: var(--suite-run-shadow);\n}\n\n.eval-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--suite-run-neutral-light);\n border-bottom: 1px solid var(--suite-run-border);\n font-size: 13px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.eval-card-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.eval-card-body[_ngcontent-%COMP%] {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.eval-stat-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n}\n\n.eval-stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n.eval-stat-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.eval-stat-value.correct[_ngcontent-%COMP%] {\n color: var(--suite-run-success);\n}\n\n.eval-stat-value.incorrect[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n font-weight: 500;\n font-size: 12px;\n}\n\n.eval-stat-value.error[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n}\n\n.eval-stat-value.timeout[_ngcontent-%COMP%] {\n color: var(--suite-run-warning);\n}\n\n.eval-card-footer[_ngcontent-%COMP%] {\n padding: 10px 16px;\n background: var(--suite-run-warning-light);\n border-top: 1px solid rgba(245, 158, 11, 0.2);\n}\n\n.pending-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-warning);\n}\n\n.pending-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n\n\n.needs-review-section[_ngcontent-%COMP%] {\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n overflow: hidden;\n}\n\n.needs-review-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 20px;\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border-bottom: 1px solid rgba(245, 158, 11, 0.3);\n}\n\n.needs-review-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #92400e;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.needs-review-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.review-count[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: #92400e;\n background: rgba(255, 255, 255, 0.6);\n padding: 2px 10px;\n border-radius: 12px;\n}\n\n.needs-review-list[_ngcontent-%COMP%] {\n padding: 8px;\n}\n\n.review-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-radius: 8px;\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.review-item[_ngcontent-%COMP%]:hover {\n background: var(--suite-run-primary-light);\n}\n\n.review-item-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.review-item.high-priority[_ngcontent-%COMP%] .review-item-icon[_ngcontent-%COMP%] {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.review-item.medium-priority[_ngcontent-%COMP%] .review-item-icon[_ngcontent-%COMP%] {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.review-item[_ngcontent-%COMP%]:not(.high-priority):not(.medium-priority) .review-item-icon[_ngcontent-%COMP%] {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n.review-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.review-item-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--suite-run-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.review-item-reason[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--suite-run-text-secondary);\n}\n\n.review-item-action[_ngcontent-%COMP%] {\n color: var(--suite-run-text-secondary);\n font-size: 12px;\n}\n\n.review-item[_ngcontent-%COMP%]:hover .review-item-action[_ngcontent-%COMP%] {\n color: var(--suite-run-primary);\n}\n\n.review-more[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 8px;\n border-top: 1px solid var(--suite-run-border);\n}\n\n\n\n@media (max-width: 768px) {\n .eval-summary-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .eval-card-header[_ngcontent-%COMP%] {\n padding: 10px 14px;\n font-size: 12px;\n }\n\n .eval-card-body[_ngcontent-%COMP%] {\n padding: 12px 14px;\n }\n\n .needs-review-header[_ngcontent-%COMP%] {\n padding: 12px 16px;\n }\n\n .needs-review-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n\n .review-item[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n\n .review-item-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n font-size: 12px;\n }\n}\n\n\n\n\n\n.feedback-col[_ngcontent-%COMP%] {\n width: 1%; \n\n white-space: nowrap;\n text-align: center;\n}\n\n.feedback-display[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.feedback-rating[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: 4px;\n background: var(--suite-run-neutral-light);\n}\n\n.feedback-rating.low[_ngcontent-%COMP%] {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.feedback-rating.mid[_ngcontent-%COMP%] {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.feedback-rating.high[_ngcontent-%COMP%] {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.feedback-correctness[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.feedback-correctness[_ngcontent-%COMP%] i.correct[_ngcontent-%COMP%] {\n color: var(--suite-run-success);\n}\n\n.feedback-correctness[_ngcontent-%COMP%] i.incorrect[_ngcontent-%COMP%] {\n color: var(--suite-run-danger);\n}\n\n.na-value.needs-review[_ngcontent-%COMP%] {\n color: var(--suite-run-warning);\n opacity: 0.7;\n}\n\n.na-value.needs-review[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}"], changeDetection: 0 }); }
2285
2318
  };
2286
2319
  TestSuiteRunFormComponentExtended = __decorate([
2287
2320
  RegisterClass(BaseFormComponent, 'MJ: Test Suite Runs')
@@ -2289,14 +2322,10 @@ TestSuiteRunFormComponentExtended = __decorate([
2289
2322
  export { TestSuiteRunFormComponentExtended };
2290
2323
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestSuiteRunFormComponentExtended, [{
2291
2324
  type: Component,
2292
- args: [{ selector: 'mj-test-suite-run-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"test-suite-run-form\" kendoDialogContainer>\n <!-- Header Section -->\n <div class=\"suite-run-header\">\n <!-- Breadcrumb Navigation -->\n <nav class=\"breadcrumb\" aria-label=\"Breadcrumb\">\n <ol>\n <li>\n <a href=\"javascript:void(0)\" (click)=\"navigateToTestingDashboard()\">\n <i class=\"fas fa-vial\"></i>\n <span class=\"breadcrumb-text\">Testing</span>\n </a>\n </li>\n <li *ngIf=\"testSuite\">\n <i class=\"fas fa-chevron-right separator\"></i>\n <a href=\"javascript:void(0)\" (click)=\"openTestSuite()\">\n <i class=\"fas fa-layer-group\"></i>\n <span class=\"breadcrumb-text\">{{ testSuite.Name }}</span>\n </a>\n </li>\n <li class=\"current\">\n <i class=\"fas fa-chevron-right separator\"></i>\n <span>Run #{{ record.ID.substring(0, 8) }}</span>\n </li>\n </ol>\n </nav>\n\n <!-- Header Content -->\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"suite-run-icon\" [style.background-color]=\"getStatusColor()\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon()\"></i>\n </div>\n <div class=\"suite-run-info\">\n <h1>Suite Run</h1>\n <div class=\"suite-run-meta\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass()\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon()\"></i>\n {{ record.Status }}\n </span>\n <span class=\"meta-tag environment\" *ngIf=\"record.Environment\">\n <i class=\"fas fa-server\"></i>\n {{ record.Environment }}\n </span>\n <span class=\"meta-tag trigger\" *ngIf=\"record.TriggerType\">\n <i class=\"fas fa-bolt\"></i>\n {{ record.TriggerType }}\n </span>\n </div>\n </div>\n </div>\n <div class=\"header-actions\">\n <!-- Evaluation Mode Toggle -->\n <app-evaluation-mode-toggle></app-evaluation-mode-toggle>\n <button kendoButton (click)=\"reRunSuite()\" themeColor=\"primary\" *ngIf=\"record.SuiteID\">\n <i class=\"fas fa-play\"></i> Re-run Suite\n </button>\n <button kendoButton (click)=\"refresh()\" [disabled]=\"isRefreshing\">\n <i class=\"fas\" [ngClass]=\"isRefreshing ? 'fa-sync fa-spin' : 'fa-sync'\"></i>\n {{ isRefreshing ? 'Refreshing...' : 'Refresh' }}\n </button>\n </div>\n </div>\n\n <!-- Metrics Bar -->\n <div class=\"metrics-bar\">\n <div class=\"metric-card\">\n <div class=\"metric-icon\">\n <i class=\"fas fa-clock\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ calculateDuration() }}</div>\n <div class=\"metric-label\">Duration</div>\n </div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-icon\">\n <i class=\"fas fa-percentage\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ getPassRate().toFixed(1) }}%</div>\n <div class=\"metric-label\">Pass Rate</div>\n </div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-icon\">\n <i class=\"fas fa-dollar-sign\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ formatCost(record.TotalCostUSD) }}</div>\n <div class=\"metric-label\">Total Cost</div>\n </div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-icon\">\n <i class=\"fas fa-calendar\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ getRelativeTime(record.StartedAt) }}</div>\n <div class=\"metric-label\">Started</div>\n </div>\n </div>\n </div>\n\n <!-- Results Summary -->\n <div class=\"results-summary\">\n <div class=\"result-item passed\">\n <div class=\"result-icon\">\n <i class=\"fas fa-check-circle\"></i>\n </div>\n <div class=\"result-content\">\n <span class=\"result-count\">{{ record.PassedTests || 0 }}</span>\n <span class=\"result-label\">Passed</span>\n </div>\n </div>\n <div class=\"result-item failed\">\n <div class=\"result-icon\">\n <i class=\"fas fa-times-circle\"></i>\n </div>\n <div class=\"result-content\">\n <span class=\"result-count\">{{ record.FailedTests || 0 }}</span>\n <span class=\"result-label\">Failed</span>\n </div>\n </div>\n <div class=\"result-item error\">\n <div class=\"result-icon\">\n <i class=\"fas fa-exclamation-circle\"></i>\n </div>\n <div class=\"result-content\">\n <span class=\"result-count\">{{ record.ErrorTests || 0 }}</span>\n <span class=\"result-label\">Errors</span>\n </div>\n </div>\n <div class=\"result-item skipped\">\n <div class=\"result-icon\">\n <i class=\"fas fa-forward\"></i>\n </div>\n <div class=\"result-content\">\n <span class=\"result-count\">{{ record.SkippedTests || 0 }}</span>\n <span class=\"result-label\">Skipped</span>\n </div>\n </div>\n <div class=\"result-item total\">\n <div class=\"result-icon\">\n <i class=\"fas fa-list\"></i>\n </div>\n <div class=\"result-content\">\n <span class=\"result-count\">{{ record.TotalTests || 0 }}</span>\n <span class=\"result-label\">Total</span>\n </div>\n </div>\n </div>\n\n <!-- Tags Section - Sleek inline design -->\n <div class=\"tags-bar\" *ngIf=\"!editingTags\">\n <div class=\"tags-bar-content\">\n <span class=\"tags-bar-label\"><i class=\"fas fa-tags\"></i></span>\n <div class=\"tags-bar-chips\" *ngIf=\"tags.length > 0\">\n <span class=\"tag-inline\" *ngFor=\"let tag of tags\">{{ tag }}</span>\n </div>\n <span class=\"tags-bar-empty\" *ngIf=\"tags.length === 0\">No tags</span>\n <button class=\"tags-bar-edit\" (click)=\"startEditingTags()\" title=\"Edit tags\">\n <i class=\"fas fa-plus\"></i> Add\n </button>\n </div>\n </div>\n\n <!-- Tags Editor - Expanded when editing -->\n <div class=\"tags-editor-panel\" *ngIf=\"editingTags\">\n <div class=\"tags-editor-header\">\n <span class=\"tags-editor-title\"><i class=\"fas fa-tags\"></i> Edit Tags</span>\n </div>\n <div class=\"tags-editor-body\">\n <div class=\"tags-editor-chips\">\n <span class=\"tag-editable\" *ngFor=\"let tag of tags\">\n {{ tag }}\n <button class=\"tag-remove-btn\" (click)=\"removeTag(tag)\" title=\"Remove tag\">\n <i class=\"fas fa-times\"></i>\n </button>\n </span>\n <span class=\"tags-empty-hint\" *ngIf=\"tags.length === 0\">No tags yet</span>\n </div>\n <div class=\"tags-editor-input\">\n <input type=\"text\"\n [(ngModel)]=\"newTag\"\n placeholder=\"Type a tag and press Enter...\"\n (keyup.enter)=\"addTag()\"\n class=\"tag-text-input\" />\n <button kendoButton (click)=\"addTag()\" [disabled]=\"!newTag.trim()\" fillMode=\"flat\">\n <i class=\"fas fa-plus\"></i>\n </button>\n </div>\n </div>\n <div class=\"tags-editor-footer\">\n <button kendoButton (click)=\"saveTags()\" themeColor=\"primary\" [disabled]=\"savingTags\">\n <i class=\"fas fa-spinner fa-spin\" *ngIf=\"savingTags\"></i>\n {{ savingTags ? 'Saving...' : 'Save' }}\n </button>\n <button kendoButton (click)=\"cancelEditingTags()\" fillMode=\"flat\">Cancel</button>\n </div>\n </div>\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs-container\">\n <div class=\"tabs\" role=\"tablist\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 'overview'\"\n (click)=\"changeTab('overview')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'overview'\">\n <i class=\"fas fa-th-large\"></i> Overview\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'runs'\"\n (click)=\"changeTab('runs')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'runs'\">\n <i class=\"fas fa-list\"></i> Test Runs\n <span class=\"tab-badge\" *ngIf=\"testRunsLoaded\">{{ testRuns.length }}</span>\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'details'\"\n (click)=\"changeTab('details')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'details'\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'analytics'\"\n (click)=\"changeTab('analytics')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'analytics'\"\n title=\"Press 4\">\n <i class=\"fas fa-chart-bar\"></i> Analytics\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'execution'\"\n (click)=\"changeTab('execution')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'execution'\"\n title=\"Press 5\">\n <i class=\"fas fa-microchip\"></i>\n <span>Execution</span>\n </button>\n </div>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Overview Tab -->\n <div class=\"overview-tab\" *ngIf=\"activeTab === 'overview'\">\n <!-- Result Hero -->\n <div class=\"result-hero\"\n [class.passed]=\"record.Status === 'Completed' && getPassRate() >= 90\"\n [class.failed]=\"record.Status === 'Failed' || getPassRate() < 50\"\n [class.running]=\"record.Status === 'Running'\"\n [class.pending]=\"record.Status === 'Pending'\">\n <div class=\"result-hero-icon\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon()\"></i>\n </div>\n <div class=\"result-hero-text\">\n <h2>SUITE {{ record.Status.toUpperCase() || 'UNKNOWN' }}</h2>\n <div class=\"result-hero-stats\">\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ getPassRate().toFixed(1) }}%</span>\n <span class=\"stat-label\">Pass Rate</span>\n </div>\n <div class=\"stat-divider\"></div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ record.PassedTests || 0 }} / {{ record.TotalTests || 0 }}</span>\n <span class=\"stat-label\">Tests Passed</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Evaluation Metrics Summary -->\n <div class=\"evaluation-summary\" *ngIf=\"evaluationMetrics && feedbacksLoaded\">\n <div class=\"eval-summary-grid\">\n <!-- Human Feedback Card -->\n <div class=\"eval-summary-card\" *ngIf=\"evalPreferences.showHuman\">\n <div class=\"eval-card-header\">\n <i class=\"fa-solid fa-user\"></i>\n <span>Human Feedback</span>\n </div>\n <div class=\"eval-card-body\">\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Reviewed</span>\n <span class=\"eval-stat-value\">{{ evaluationMetrics.humanReviewedCount }} / {{ evaluationMetrics.totalRuns }}</span>\n </div>\n <div class=\"eval-stat-row\" *ngIf=\"evaluationMetrics.humanReviewedCount > 0\">\n <span class=\"eval-stat-label\">Avg Rating</span>\n <span class=\"eval-stat-value\">{{ evaluationMetrics.humanAvgRating.toFixed(1) }}/10</span>\n </div>\n <div class=\"eval-stat-row\" *ngIf=\"evaluationMetrics.humanReviewedCount > 0\">\n <span class=\"eval-stat-label\">Correct</span>\n <span class=\"eval-stat-value correct\">{{ evaluationMetrics.humanCorrectCount }}</span>\n <span class=\"eval-stat-value incorrect\" *ngIf=\"evaluationMetrics.humanIncorrectCount > 0\">{{ evaluationMetrics.humanIncorrectCount }} incorrect</span>\n </div>\n </div>\n <div class=\"eval-card-footer\" *ngIf=\"evaluationMetrics.humanPendingCount > 0\">\n <span class=\"pending-badge\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ evaluationMetrics.humanPendingCount }} need review\n </span>\n </div>\n </div>\n\n <!-- Auto Score Card -->\n <div class=\"eval-summary-card\" *ngIf=\"evalPreferences.showAuto\">\n <div class=\"eval-card-header\">\n <i class=\"fa-solid fa-robot\"></i>\n <span>Auto Evaluation</span>\n </div>\n <div class=\"eval-card-body\">\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Evaluated</span>\n <span class=\"eval-stat-value\">{{ evaluationMetrics.autoEvaluatedCount }} / {{ evaluationMetrics.totalRuns }}</span>\n </div>\n <div class=\"eval-stat-row\" *ngIf=\"evaluationMetrics.autoEvaluatedCount > 0\">\n <span class=\"eval-stat-label\">Avg Score</span>\n <span class=\"eval-stat-value\">{{ (evaluationMetrics.autoAvgScore * 100).toFixed(0) }}%</span>\n </div>\n <div class=\"eval-stat-row\" *ngIf=\"evaluationMetrics.autoEvaluatedCount > 0\">\n <span class=\"eval-stat-label\">Pass Rate</span>\n <span class=\"eval-stat-value\">{{ evaluationMetrics.autoPassRate.toFixed(0) }}%</span>\n </div>\n </div>\n </div>\n\n <!-- Execution Card -->\n <div class=\"eval-summary-card\" *ngIf=\"evalPreferences.showExecution\">\n <div class=\"eval-card-header\">\n <i class=\"fa-solid fa-circle-check\"></i>\n <span>Execution</span>\n </div>\n <div class=\"eval-card-body\">\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Completed</span>\n <span class=\"eval-stat-value\">{{ evaluationMetrics.execCompletedCount }} / {{ evaluationMetrics.totalRuns }}</span>\n </div>\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Success Rate</span>\n <span class=\"eval-stat-value\">{{ evaluationMetrics.execSuccessRate.toFixed(0) }}%</span>\n </div>\n <div class=\"eval-stat-row\" *ngIf=\"evaluationMetrics.execErrorCount > 0 || evaluationMetrics.execTimeoutCount > 0\">\n <span class=\"eval-stat-label\">Issues</span>\n <span class=\"eval-stat-value error\" *ngIf=\"evaluationMetrics.execErrorCount > 0\">{{ evaluationMetrics.execErrorCount }} errors</span>\n <span class=\"eval-stat-value timeout\" *ngIf=\"evaluationMetrics.execTimeoutCount > 0\">{{ evaluationMetrics.execTimeoutCount }} timeouts</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Needs Review Section -->\n <div class=\"needs-review-section\" *ngIf=\"evalPreferences.showHuman && needsReviewItems.length > 0 && feedbacksLoaded\">\n <div class=\"needs-review-header\">\n <h3><i class=\"fa-solid fa-user-clock\"></i> Needs Review</h3>\n <span class=\"review-count\">{{ needsReviewItems.length }} items</span>\n </div>\n <div class=\"needs-review-list\">\n <div class=\"review-item\" *ngFor=\"let item of needsReviewItems.slice(0, 5)\"\n [class.high-priority]=\"item.priority === 'high'\"\n [class.medium-priority]=\"item.priority === 'medium'\"\n (click)=\"toggleRunExpanded(item.run.id)\">\n <div class=\"review-item-icon\">\n <i class=\"fa-solid fa-exclamation-triangle\" *ngIf=\"item.priority === 'high'\"></i>\n <i class=\"fa-solid fa-circle-dot\" *ngIf=\"item.priority === 'medium'\"></i>\n <i class=\"fa-solid fa-clock\" *ngIf=\"item.priority === 'low'\"></i>\n </div>\n <div class=\"review-item-content\">\n <span class=\"review-item-name\">{{ item.run.testName }}</span>\n <span class=\"review-item-reason\">{{ item.reason }}</span>\n </div>\n <div class=\"review-item-action\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </div>\n </div>\n <div class=\"review-more\" *ngIf=\"needsReviewItems.length > 5\">\n <button kendoButton fillMode=\"flat\" (click)=\"changeTab('runs')\">\n View all {{ needsReviewItems.length }} items\n </button>\n </div>\n </div>\n </div>\n\n <!-- Progress Ring (when running) -->\n <div class=\"progress-section\" *ngIf=\"record.Status === 'Running' || record.Status === 'Pending'\">\n <div class=\"progress-info\">\n <i class=\"fas fa-circle-notch fa-spin\"></i>\n <span>Suite execution in progress...</span>\n </div>\n <div class=\"auto-refresh-notice\">\n <i class=\"fas fa-sync\"></i>\n Auto-refreshing every 5 seconds\n </div>\n </div>\n </div>\n\n <!-- Test Runs Tab -->\n <div class=\"runs-tab\" *ngIf=\"activeTab === 'runs'\">\n <!-- Toolbar -->\n <div class=\"runs-toolbar\" *ngIf=\"testRunsLoaded && testRuns.length > 0\">\n <div class=\"run-filters\">\n <button class=\"filter-btn\"\n [class.active]=\"runStatusFilter === null\"\n (click)=\"setRunStatusFilter(null)\">\n All ({{ testRuns.length }})\n </button>\n <button class=\"filter-btn passed\"\n [class.active]=\"runStatusFilter === 'Passed'\"\n (click)=\"setRunStatusFilter('Passed')\"\n *ngIf=\"getRunCountByStatus('Passed') > 0\">\n <i class=\"fas fa-check\"></i> Passed ({{ getRunCountByStatus('Passed') }})\n </button>\n <button class=\"filter-btn failed\"\n [class.active]=\"runStatusFilter === 'Failed'\"\n (click)=\"setRunStatusFilter('Failed')\"\n *ngIf=\"getRunCountByStatus('Failed') > 0\">\n <i class=\"fas fa-times\"></i> Failed ({{ getRunCountByStatus('Failed') }})\n </button>\n <button class=\"filter-btn error\"\n [class.active]=\"runStatusFilter === 'Error'\"\n (click)=\"setRunStatusFilter('Error')\"\n *ngIf=\"getRunCountByStatus('Error') > 0\">\n <i class=\"fas fa-exclamation\"></i> Error ({{ getRunCountByStatus('Error') }})\n </button>\n </div>\n <div class=\"runs-actions\">\n <button kendoButton (click)=\"exportToCSV()\">\n <i class=\"fas fa-download\"></i> Export CSV\n </button>\n </div>\n </div>\n\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"loadingTestRuns\">\n <div class=\"skeleton-list\">\n <div class=\"skeleton-card\" *ngFor=\"let i of [1,2,3,4,5]\">\n <div class=\"skeleton-sequence\"></div>\n <div class=\"skeleton-icon\"></div>\n <div class=\"skeleton-content\">\n <div class=\"skeleton-line wide\"></div>\n <div class=\"skeleton-line narrow\"></div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Test Runs List -->\n <div class=\"test-runs-list\" *ngIf=\"!loadingTestRuns && testRuns.length > 0\">\n <div class=\"test-run-card\" *ngFor=\"let run of getFilteredTestRuns()\">\n <div class=\"test-run-item\" (click)=\"toggleRunExpanded(run.ID)\">\n <div class=\"run-sequence\">{{ run.Sequence || '-' }}</div>\n <div class=\"run-icon\" [style.background-color]=\"getRunStatusColor(run.Status)\">\n <i class=\"fas\" [ngClass]=\"getRunStatusIcon(run.Status)\"></i>\n </div>\n <div class=\"run-content\">\n <div class=\"run-header-row\">\n <div class=\"run-name\">{{ run.Test }}</div>\n <!-- Evaluation Badge -->\n <app-evaluation-badge\n [executionStatus]=\"run.Status\"\n [originalStatus]=\"run.Status\"\n [autoScore]=\"run.Score\"\n [humanRating]=\"getFeedbackRating(run.ID) || null\"\n [humanIsCorrect]=\"getHumanIsCorrect(run.ID)\"\n [hasHumanFeedback]=\"hasFeedback(run.ID)\"\n [preferences]=\"evalPreferences\"\n [mode]=\"'compact'\">\n </app-evaluation-badge>\n </div>\n <div class=\"run-meta\">\n <span class=\"run-duration\" *ngIf=\"run.DurationSeconds\">\n <i class=\"fas fa-clock\"></i> {{ run.DurationSeconds.toFixed(1) }}s\n </span>\n <span class=\"run-cost\" *ngIf=\"run.CostUSD\">\n <i class=\"fas fa-dollar-sign\"></i> {{ run.CostUSD.toFixed(6) }}\n </span>\n <mj-entity-link-pill\n *ngIf=\"run.TargetLogEntityID && run.TargetLogID\"\n [entityName]=\"run.TargetLogEntity\"\n [recordId]=\"run.TargetLogID\">\n </mj-entity-link-pill>\n </div>\n <div class=\"run-tags\" *ngIf=\"getRunTags(run).length > 0\">\n <span class=\"tag-chip\" *ngFor=\"let tag of getRunTags(run)\">{{ tag }}</span>\n </div>\n </div>\n <div class=\"run-expand\">\n <i class=\"fas\" [class.fa-chevron-down]=\"expandedRunId !== run.ID\" [class.fa-chevron-up]=\"expandedRunId === run.ID\"></i>\n </div>\n </div>\n\n <!-- Expanded Inline Feedback -->\n <div class=\"inline-feedback\" *ngIf=\"expandedRunId === run.ID\">\n <div class=\"feedback-divider\"></div>\n\n <div class=\"feedback-section\">\n <div class=\"feedback-label\">Quick Feedback</div>\n\n <div class=\"inline-rating\">\n <div class=\"rating-numbers\">\n <button *ngFor=\"let num of [1,2,3,4,5,6,7,8,9,10]\"\n type=\"button\"\n class=\"rating-btn\"\n [class.selected]=\"num === inlineRating\"\n [class.hover]=\"num === inlineHoverRating\"\n [class.low]=\"num <= 3\"\n [class.mid]=\"num >= 4 && num <= 6\"\n [class.high]=\"num >= 7\"\n (click)=\"setInlineRating(num); $event.stopPropagation()\"\n (mouseenter)=\"inlineHoverRating = num\"\n (mouseleave)=\"inlineHoverRating = 0\">\n {{ num }}\n </button>\n </div>\n <div class=\"rating-info\" *ngIf=\"inlineRating > 0\">\n <span class=\"rating-value\">{{ inlineRating }}/10</span>\n <span class=\"rating-label-text\">{{ getInlineRatingLabel() }}</span>\n </div>\n </div>\n\n <div class=\"correctness-row\">\n <span class=\"correctness-label\">Was it correct?</span>\n <div class=\"correctness-options\">\n <label class=\"radio-opt\" (click)=\"$event.stopPropagation()\">\n <input type=\"radio\" name=\"correct-{{run.ID}}\" [value]=\"true\" [(ngModel)]=\"inlineIsCorrect\">\n <span>Yes</span>\n </label>\n <label class=\"radio-opt\" (click)=\"$event.stopPropagation()\">\n <input type=\"radio\" name=\"correct-{{run.ID}}\" [value]=\"false\" [(ngModel)]=\"inlineIsCorrect\">\n <span>No</span>\n </label>\n <label class=\"radio-opt\" (click)=\"$event.stopPropagation()\">\n <input type=\"radio\" name=\"correct-{{run.ID}}\" [value]=\"null\" [(ngModel)]=\"inlineIsCorrect\">\n <span>Not Sure</span>\n </label>\n </div>\n </div>\n\n <div class=\"comments-row\" (click)=\"$event.stopPropagation()\">\n <textarea\n class=\"feedback-textarea\"\n [(ngModel)]=\"inlineComments\"\n placeholder=\"Add comments or corrections...\"\n rows=\"3\"></textarea>\n </div>\n\n <div class=\"feedback-actions\" (click)=\"$event.stopPropagation()\">\n <button kendoButton (click)=\"openTestRun(run.ID)\">\n <i class=\"fas fa-external-link-alt\"></i> View Full Details\n </button>\n <button kendoButton\n themeColor=\"primary\"\n (click)=\"saveInlineFeedback()\"\n [disabled]=\"!canSubmitInlineFeedback() || savingInlineFeedback\">\n <i class=\"fas\" [ngClass]=\"savingInlineFeedback ? 'fa-spinner fa-spin' : 'fa-save'\"></i>\n {{ savingInlineFeedback ? 'Saving...' : (hasFeedback(run.ID) ? 'Update' : 'Save') }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"testRunsLoaded && !loadingTestRuns && testRuns.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-inbox\"></i>\n </div>\n <h4>No Test Runs Found</h4>\n <p>No test runs have been recorded for this suite execution.</p>\n </div>\n\n <!-- Filtered Empty -->\n <div class=\"empty-state\" *ngIf=\"testRunsLoaded && !loadingTestRuns && testRuns.length > 0 && getFilteredTestRuns().length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-filter\"></i>\n </div>\n <h4>No Matching Runs</h4>\n <p>No test runs match the current filter.</p>\n <button kendoButton (click)=\"setRunStatusFilter(null)\">Clear Filter</button>\n </div>\n </div>\n\n <!-- Details Tab -->\n <div class=\"details-tab\" *ngIf=\"activeTab === 'details'\">\n <div class=\"details-card\">\n <h3><i class=\"fas fa-info-circle\"></i> Run Information</h3>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <div class=\"detail-label\">Run ID</div>\n <div class=\"detail-value monospace\">{{ record.ID }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Test Suite</div>\n <div class=\"detail-value\">\n <a href=\"javascript:void(0)\" (click)=\"openTestSuite()\" *ngIf=\"testSuite\">{{ testSuite.Name }}</a>\n <span *ngIf=\"!testSuite\">Loading...</span>\n </div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Status</div>\n <div class=\"detail-value\">\n <span class=\"status-inline\" [ngClass]=\"getStatusClass()\">{{ record.Status }}</span>\n </div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Run By</div>\n <div class=\"detail-value\">{{ record.RunByUser || 'N/A' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Started At</div>\n <div class=\"detail-value\">{{ record.StartedAt | date:'medium' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Completed At</div>\n <div class=\"detail-value\">{{ record.CompletedAt | date:'medium' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Environment</div>\n <div class=\"detail-value\">{{ record.Environment || 'N/A' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Trigger Type</div>\n <div class=\"detail-value\">{{ record.TriggerType || 'N/A' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Git Commit</div>\n <div class=\"detail-value monospace\">{{ record.GitCommit || 'N/A' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Agent Version</div>\n <div class=\"detail-value\">{{ record.AgentVersion || 'N/A' }}</div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Analytics Tab -->\n <div class=\"analytics-tab\" *ngIf=\"activeTab === 'analytics'\">\n <!-- Loading State -->\n <div class=\"analytics-loading\" *ngIf=\"loadingTestRuns\">\n <i class=\"fas fa-spinner fa-spin\"></i>\n <span>Loading test results...</span>\n </div>\n\n <!-- Summary Statistics - Moved to top for better overview -->\n <div class=\"analytics-section\" *ngIf=\"!loadingTestRuns && testRuns.length > 0\">\n <h3><i class=\"fas fa-chart-pie\"></i> Summary Statistics</h3>\n <div class=\"stats-grid\">\n <div class=\"stat-card\">\n <div class=\"stat-icon passed\"><i class=\"fas fa-check-circle\"></i></div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ getPassedCount() }}</div>\n <div class=\"stat-label\">Passed</div>\n <div class=\"stat-percent\">{{ getPassedPercent().toFixed(1) }}%</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon failed\"><i class=\"fas fa-times-circle\"></i></div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ getFailedCount() }}</div>\n <div class=\"stat-label\">Failed</div>\n <div class=\"stat-percent\">{{ getFailedPercent().toFixed(1) }}%</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon score\"><i class=\"fas fa-star\"></i></div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ (getAverageScore() * 100).toFixed(1) }}%</div>\n <div class=\"stat-label\">Avg Score</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon duration\"><i class=\"fas fa-clock\"></i></div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ getAverageDuration().toFixed(1) }}s</div>\n <div class=\"stat-label\">Avg Duration</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon cost\"><i class=\"fas fa-dollar-sign\"></i></div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">${{ getTotalCost().toFixed(4) }}</div>\n <div class=\"stat-label\">Total Cost</div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Test Results Table -->\n <div class=\"analytics-section\" *ngIf=\"!loadingTestRuns && testRuns.length > 0\">\n <div class=\"analytics-header\">\n <h3><i class=\"fas fa-table\"></i> Test Results</h3>\n <div class=\"analytics-legend\">\n <span class=\"legend-item passed\"><i class=\"fas fa-check-circle\"></i> Passed</span>\n <span class=\"legend-item failed\"><i class=\"fas fa-times-circle\"></i> Failed</span>\n <span class=\"legend-item error\"><i class=\"fas fa-exclamation-circle\"></i> Error</span>\n <span class=\"legend-item skipped\"><i class=\"fas fa-forward\"></i> Skipped</span>\n </div>\n </div>\n\n <!-- Results Table -->\n <div class=\"results-table-wrapper\">\n <table class=\"results-table\">\n <thead>\n <tr>\n <th class=\"seq-col\">#</th>\n <th class=\"name-col\">Test Name</th>\n <th class=\"status-col\" *ngIf=\"evalPreferences.showExecution\">Status</th>\n <th class=\"score-col\" *ngIf=\"evalPreferences.showAuto\">Auto Score</th>\n <th class=\"feedback-col\" *ngIf=\"evalPreferences.showHuman\">Human Score</th>\n <th class=\"duration-col\">Duration</th>\n <th class=\"cost-col\">Cost</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let run of testRuns; let i = index\"\n class=\"result-row\"\n [class.row-passed]=\"run.Status === 'Passed'\"\n [class.row-failed]=\"run.Status === 'Failed'\"\n [class.row-error]=\"run.Status === 'Error'\"\n [class.row-skipped]=\"run.Status === 'Skipped'\"\n (click)=\"openTestRun(run.ID)\">\n <td class=\"seq-col\">{{ i + 1 }}</td>\n <td class=\"name-col\">\n <div class=\"test-name-wrapper\">\n <span class=\"test-name\">{{ run.Test || 'Unknown Test' }}</span>\n <div class=\"test-tags\" *ngIf=\"getRunTags(run).length > 0\">\n <span class=\"tag-mini\" *ngFor=\"let tag of getRunTags(run).slice(0, 2)\">{{ tag }}</span>\n </div>\n </div>\n </td>\n <td class=\"status-col\" *ngIf=\"evalPreferences.showExecution\">\n <span class=\"status-badge\" [ngClass]=\"'status-' + run.Status.toLowerCase()\">\n <i class=\"fas\"\n [class.fa-check-circle]=\"run.Status === 'Passed'\"\n [class.fa-times-circle]=\"run.Status === 'Failed'\"\n [class.fa-exclamation-circle]=\"run.Status === 'Error'\"\n [class.fa-forward]=\"run.Status === 'Skipped'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-spin]=\"run.Status === 'Running'\"></i>\n {{ run.Status }}\n </span>\n </td>\n <td class=\"score-col\" *ngIf=\"evalPreferences.showAuto\">\n <div class=\"score-display\" *ngIf=\"run.Score != null\">\n <div class=\"score-bar-mini\">\n <div class=\"score-fill\"\n [style.width.%]=\"run.Score * 100\"\n [class.high]=\"run.Score >= 0.8\"\n [class.medium]=\"run.Score >= 0.5 && run.Score < 0.8\"\n [class.low]=\"run.Score < 0.5\"></div>\n </div>\n <span class=\"score-text\">{{ (run.Score * 100).toFixed(0) }}%</span>\n </div>\n <span class=\"na-value\" *ngIf=\"run.Score == null\">\u2014</span>\n </td>\n <td class=\"feedback-col\" *ngIf=\"evalPreferences.showHuman\">\n <div class=\"feedback-display\" *ngIf=\"hasFeedback(run.ID)\">\n <span class=\"feedback-rating\" [class.low]=\"getFeedbackRating(run.ID) <= 3\" [class.mid]=\"getFeedbackRating(run.ID) >= 4 && getFeedbackRating(run.ID) <= 6\" [class.high]=\"getFeedbackRating(run.ID) >= 7\">\n {{ getFeedbackRating(run.ID) }}/10\n </span>\n <span class=\"feedback-correctness\" *ngIf=\"getHumanIsCorrect(run.ID) !== null\">\n <i class=\"fas\" [class.fa-check]=\"getHumanIsCorrect(run.ID) === true\" [class.fa-times]=\"getHumanIsCorrect(run.ID) === false\" [class.correct]=\"getHumanIsCorrect(run.ID) === true\" [class.incorrect]=\"getHumanIsCorrect(run.ID) === false\"></i>\n </span>\n </div>\n <span class=\"na-value needs-review\" *ngIf=\"!hasFeedback(run.ID)\">\n <i class=\"fas fa-user-clock\"></i>\n </span>\n </td>\n <td class=\"duration-col\">\n <span *ngIf=\"run.DurationSeconds\">{{ run.DurationSeconds.toFixed(1) }}s</span>\n <span class=\"na-value\" *ngIf=\"!run.DurationSeconds\">\u2014</span>\n </td>\n <td class=\"cost-col\">\n <span *ngIf=\"run.CostUSD\">${{ run.CostUSD.toFixed(4) }}</span>\n <span class=\"na-value\" *ngIf=\"!run.CostUSD\">\u2014</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"!loadingTestRuns && testRunsLoaded && testRuns.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-chart-bar\"></i>\n </div>\n <h4>No Test Results Yet</h4>\n <p>Test runs will appear here once the suite execution completes.</p>\n </div>\n </div>\n\n <!-- Execution Tab -->\n <div class=\"execution-tab\" *ngIf=\"activeTab === 'execution'\">\n <mj-execution-context\n [machineName]=\"record.MachineName\"\n [machineId]=\"record.MachineID\"\n [runByUserName]=\"record.RunByUserName\"\n [runByUserEmail]=\"record.RunByUserEmail\"\n [runContextDetailsJson]=\"record.RunContextDetails\">\n </mj-execution-context>\n </div>\n </div>\n\n <!-- Keyboard Shortcuts Toggle Button -->\n <button class=\"shortcuts-toggle\" (click)=\"toggleShortcuts()\" [title]=\"showShortcuts ? 'Hide keyboard shortcuts' : 'Show keyboard shortcuts'\">\n <i class=\"fas fa-keyboard\"></i>\n </button>\n\n <!-- Keyboard Shortcuts Hint (Desktop Only) -->\n <div class=\"keyboard-shortcuts\" *ngIf=\"showShortcuts\">\n <div class=\"shortcuts-header\">\n <i class=\"fas fa-keyboard\"></i>\n Shortcuts\n <button class=\"shortcuts-close\" (click)=\"toggleShortcuts()\" title=\"Hide shortcuts\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"shortcut-list\">\n <div class=\"shortcut-item\">\n <span>Refresh</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>R</kbd></span>\n </div>\n <div class=\"shortcut-item\">\n <span>Re-run Suite</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>Shift</kbd><kbd>R</kbd></span>\n </div>\n <div class=\"shortcut-item\">\n <span>Switch Tabs</span>\n <span class=\"shortcut-keys\"><kbd>1</kbd>-<kbd>5</kbd></span>\n </div>\n </div>\n </div>\n</div>\n", styles: ["/* ===================================\n Test Suite Run Form - Premium UX\n World-class responsive design\n =================================== */\n\n/* CSS Custom Properties */\n:host {\n --suite-run-primary: #3b82f6;\n --suite-run-primary-light: #eff6ff;\n --suite-run-success: #10b981;\n --suite-run-success-light: #ecfdf5;\n --suite-run-danger: #ef4444;\n --suite-run-danger-light: #fef2f2;\n --suite-run-warning: #f59e0b;\n --suite-run-warning-light: #fffbeb;\n --suite-run-info: #8b5cf6;\n --suite-run-info-light: #f5f3ff;\n --suite-run-neutral: #6b7280;\n --suite-run-neutral-light: #f9fafb;\n --suite-run-bg: #f8fafc;\n --suite-run-card: #ffffff;\n --suite-run-border: #e2e8f0;\n --suite-run-text: #1e293b;\n --suite-run-text-secondary: #64748b;\n --suite-run-radius: 12px;\n --suite-run-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);\n --suite-run-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --suite-run-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* Base Container */\n.test-suite-run-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--suite-run-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n}\n\n/* ===================================\n Header Section\n =================================== */\n.suite-run-header {\n background: var(--suite-run-card);\n border-bottom: 1px solid var(--suite-run-border);\n padding: 20px 24px;\n}\n\n/* Breadcrumb */\n.breadcrumb {\n margin-bottom: 16px;\n}\n\n.breadcrumb ol {\n display: flex;\n align-items: center;\n gap: 4px;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: 13px;\n}\n\n.breadcrumb li {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.breadcrumb a {\n color: var(--suite-run-primary);\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.breadcrumb a:hover {\n background: rgba(59, 130, 246, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb .separator {\n font-size: 10px;\n color: var(--suite-run-text-secondary);\n margin: 0 4px;\n}\n\n.breadcrumb .current {\n color: var(--suite-run-text-secondary);\n font-weight: 500;\n}\n\n.breadcrumb-text {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Header Content */\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.header-left {\n display: flex;\n gap: 16px;\n align-items: flex-start;\n}\n\n.suite-run-icon {\n width: 56px;\n height: 56px;\n border-radius: var(--suite-run-radius);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n flex-shrink: 0;\n box-shadow: var(--suite-run-shadow);\n}\n\n.suite-run-info h1 {\n margin: 0 0 8px 0;\n font-size: 24px;\n font-weight: 700;\n color: var(--suite-run-text);\n letter-spacing: -0.025em;\n}\n\n.suite-run-meta {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.025em;\n}\n\n.status-badge.status-completed {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.status-badge.status-failed {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.status-badge.status-running {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.status-badge.status-pending {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.status-badge.status-cancelled {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n.meta-tag {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: var(--suite-run-neutral-light);\n border-radius: 6px;\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n.meta-tag i {\n font-size: 10px;\n opacity: 0.7;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n/* ===================================\n Metrics Bar\n =================================== */\n.metrics-bar {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card {\n display: flex;\n align-items: center;\n gap: 12px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border: 1px solid var(--suite-run-border);\n border-radius: 10px;\n padding: 14px;\n transition: var(--suite-run-transition);\n}\n\n.metric-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--suite-run-shadow);\n}\n\n.metric-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-card);\n border-radius: 10px;\n color: var(--suite-run-primary);\n font-size: 16px;\n box-shadow: var(--suite-run-shadow);\n}\n\n.metric-content {\n flex: 1;\n min-width: 0;\n}\n\n.metric-value {\n font-size: 18px;\n font-weight: 700;\n color: var(--suite-run-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.metric-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n margin-top: 2px;\n}\n\n/* ===================================\n Results Summary\n =================================== */\n.results-summary {\n display: flex;\n gap: 12px;\n padding-top: 20px;\n border-top: 1px solid var(--suite-run-border);\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.result-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: 10px;\n flex-shrink: 0;\n transition: var(--suite-run-transition);\n}\n\n.result-item:hover {\n transform: translateY(-2px);\n box-shadow: var(--suite-run-shadow);\n}\n\n.result-icon {\n font-size: 24px;\n}\n\n.result-content {\n display: flex;\n flex-direction: column;\n}\n\n.result-count {\n font-size: 20px;\n font-weight: 700;\n line-height: 1.2;\n}\n\n.result-label {\n font-size: 11px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.result-item.passed .result-icon,\n.result-item.passed .result-count {\n color: var(--suite-run-success);\n}\n\n.result-item.failed .result-icon,\n.result-item.failed .result-count {\n color: var(--suite-run-danger);\n}\n\n.result-item.error .result-icon,\n.result-item.error .result-count {\n color: var(--suite-run-warning);\n}\n\n.result-item.skipped .result-icon,\n.result-item.skipped .result-count {\n color: var(--suite-run-neutral);\n}\n\n.result-item.total .result-icon,\n.result-item.total .result-count {\n color: var(--suite-run-primary);\n}\n\n/* ===================================\n Tabs\n =================================== */\n.tabs-container {\n background: var(--suite-run-card);\n border-bottom: 1px solid var(--suite-run-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs {\n display: flex;\n padding: 0 24px;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n}\n\n.tabs::-webkit-scrollbar {\n display: none;\n}\n\n.tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--suite-run-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--suite-run-transition);\n white-space: nowrap;\n position: relative;\n}\n\n.tab:hover {\n color: var(--suite-run-primary);\n background: var(--suite-run-primary-light);\n}\n\n.tab.active {\n color: var(--suite-run-primary);\n border-bottom-color: var(--suite-run-primary);\n font-weight: 600;\n}\n\n.tab i {\n font-size: 15px;\n}\n\n.tab-badge {\n background: var(--suite-run-border);\n color: var(--suite-run-text-secondary);\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.tab.active .tab-badge {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.tab-shortcut {\n display: none;\n width: 18px;\n height: 18px;\n background: var(--suite-run-neutral-light);\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n color: var(--suite-run-text-secondary);\n align-items: center;\n justify-content: center;\n margin-left: 4px;\n}\n\n/* ===================================\n Tab Content\n =================================== */\n.tab-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n/* ===================================\n Overview Tab\n =================================== */\n.overview-tab {\n display: flex;\n flex-direction: column;\n gap: 20px;\n max-width: 800px;\n margin: 0 auto;\n width: 100%;\n}\n\n.result-hero {\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n padding: 48px 32px;\n text-align: center;\n border: 2px solid var(--suite-run-border);\n transition: var(--suite-run-transition);\n}\n\n.result-hero.passed {\n background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);\n border-color: var(--suite-run-success);\n}\n\n.result-hero.failed {\n background: linear-gradient(135deg, #fef2f2 0%, #fecaca 100%);\n border-color: var(--suite-run-danger);\n}\n\n.result-hero.running {\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border-color: var(--suite-run-primary);\n}\n\n.result-hero.pending {\n background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%);\n border-color: var(--suite-run-info);\n}\n\n.result-hero-icon {\n font-size: 72px;\n margin-bottom: 20px;\n}\n\n.result-hero.passed .result-hero-icon {\n color: var(--suite-run-success);\n}\n\n.result-hero.failed .result-hero-icon {\n color: var(--suite-run-danger);\n}\n\n.result-hero.running .result-hero-icon {\n color: var(--suite-run-primary);\n}\n\n.result-hero.pending .result-hero-icon {\n color: var(--suite-run-info);\n}\n\n.result-hero-text h2 {\n margin: 0 0 16px 0;\n font-size: 32px;\n font-weight: 800;\n color: var(--suite-run-text);\n letter-spacing: -0.025em;\n}\n\n.result-hero-stats {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 32px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--suite-run-text);\n}\n\n.stat-label {\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-divider {\n width: 1px;\n height: 40px;\n background: var(--suite-run-border);\n}\n\n/* Progress Section */\n.progress-section {\n background: var(--suite-run-primary-light);\n border: 1px solid rgba(59, 130, 246, 0.2);\n border-radius: var(--suite-run-radius);\n padding: 20px;\n text-align: center;\n}\n\n.progress-info {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 500;\n color: var(--suite-run-primary);\n margin-bottom: 8px;\n}\n\n.progress-info i {\n font-size: 20px;\n}\n\n.auto-refresh-notice {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n/* ===================================\n Test Runs Tab\n =================================== */\n.runs-tab {\n max-width: 900px;\n margin: 0 auto;\n width: 100%;\n}\n\n/* Loading Skeleton */\n.loading-state {\n animation: fadeIn 0.3s ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.skeleton-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.skeleton-card {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n border: 1px solid var(--suite-run-border);\n}\n\n.skeleton-sequence {\n width: 32px;\n height: 32px;\n background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n border-radius: 50%;\n}\n\n.skeleton-icon {\n width: 40px;\n height: 40px;\n background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n border-radius: 8px;\n}\n\n.skeleton-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.skeleton-line {\n height: 14px;\n background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n border-radius: 4px;\n}\n\n.skeleton-line.wide {\n width: 70%;\n}\n\n.skeleton-line.narrow {\n width: 40%;\n}\n\n@keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n/* Test Runs List */\n.test-runs-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.test-run-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.test-run-item:hover {\n background: var(--suite-run-primary-light);\n border-color: #93c5fd;\n transform: translateX(4px);\n}\n\n.test-run-item:active {\n transform: translateX(2px);\n}\n\n.run-sequence {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-neutral-light);\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n color: var(--suite-run-text-secondary);\n flex-shrink: 0;\n}\n\n.run-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n color: white;\n font-size: 16px;\n flex-shrink: 0;\n box-shadow: var(--suite-run-shadow);\n}\n\n.run-content {\n flex: 1;\n min-width: 0;\n}\n\n.run-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--suite-run-text);\n margin-bottom: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n flex-wrap: wrap;\n}\n\n.run-status {\n font-weight: 700;\n}\n\n.run-score,\n.run-duration {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.run-score i,\n.run-duration i {\n font-size: 10px;\n opacity: 0.7;\n}\n\n.test-run-item > i {\n color: #cbd5e1;\n font-size: 14px;\n transition: var(--suite-run-transition);\n}\n\n.test-run-item:hover > i {\n color: var(--suite-run-primary);\n transform: translateX(4px);\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n border: 2px dashed var(--suite-run-border);\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-neutral-light);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 32px;\n color: #cbd5e1;\n}\n\n.empty-state h4 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n color: var(--suite-run-text-secondary);\n max-width: 300px;\n}\n\n/* ===================================\n Details Tab\n =================================== */\n.details-tab {\n max-width: 900px;\n margin: 0 auto;\n width: 100%;\n}\n\n.details-card {\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n padding: 24px;\n box-shadow: var(--suite-run-shadow);\n}\n\n.details-card h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 20px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--suite-run-text);\n padding-bottom: 12px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.details-card h3 i {\n color: var(--suite-run-primary);\n}\n\n.details-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--suite-run-text);\n word-wrap: break-word;\n}\n\n.detail-value.monospace {\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n font-size: 12px;\n background: var(--suite-run-neutral-light);\n padding: 6px 10px;\n border-radius: 6px;\n}\n\n.detail-value a {\n color: var(--suite-run-primary);\n text-decoration: none;\n font-weight: 500;\n transition: var(--suite-run-transition);\n}\n\n.detail-value a:hover {\n color: #2563eb;\n text-decoration: underline;\n}\n\n.status-inline {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.status-inline.status-completed {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.status-inline.status-failed {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.status-inline.status-running {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.status-inline.status-pending {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.status-inline.status-cancelled {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n/* ===================================\n Keyboard Shortcuts\n =================================== */\n/* Toggle button - visible when shortcuts are hidden */\n.shortcuts-toggle {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n box-shadow: var(--suite-run-shadow);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--suite-run-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--suite-run-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--suite-run-primary);\n border-color: var(--suite-run-primary);\n}\n\n.keyboard-shortcuts {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n padding: 12px 16px;\n box-shadow: var(--suite-run-shadow-lg);\n font-size: 12px;\n z-index: 100;\n opacity: 0.9;\n transition: var(--suite-run-transition);\n}\n\n.keyboard-shortcuts:hover {\n opacity: 1;\n}\n\n.shortcuts-header {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n color: var(--suite-run-text);\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.shortcuts-header i {\n color: var(--suite-run-primary);\n}\n\n.shortcuts-close {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--suite-run-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--suite-run-transition);\n}\n\n.shortcuts-close:hover {\n color: var(--suite-run-text);\n background: var(--suite-run-border);\n}\n\n.shortcut-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.shortcut-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n}\n\n.shortcut-item span:first-child {\n color: var(--suite-run-text-secondary);\n}\n\n.shortcut-keys {\n display: flex;\n gap: 4px;\n}\n\nkbd {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n font-family: inherit;\n font-size: 10px;\n font-weight: 600;\n color: var(--suite-run-text);\n box-shadow: 0 1px 0 #94a3b8;\n}\n\n/* ===================================\n Responsive Design - Tablet\n =================================== */\n@media (max-width: 1024px) {\n .suite-run-header {\n padding: 16px 20px;\n }\n\n .metrics-bar {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .result-hero-stats {\n flex-direction: column;\n gap: 16px;\n }\n\n .stat-divider {\n display: none;\n }\n\n .details-grid {\n grid-template-columns: 1fr;\n }\n\n .tab-shortcut {\n display: none;\n }\n}\n\n/* ===================================\n Responsive Design - Mobile\n =================================== */\n@media (max-width: 768px) {\n .suite-run-header {\n padding: 16px;\n }\n\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-left {\n width: 100%;\n }\n\n .suite-run-icon {\n width: 48px;\n height: 48px;\n font-size: 20px;\n }\n\n .suite-run-info h1 {\n font-size: 20px;\n }\n\n .header-actions {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions button {\n flex: 1;\n }\n\n .metrics-bar {\n grid-template-columns: repeat(2, 1fr);\n gap: 8px;\n }\n\n .metric-card {\n padding: 12px;\n flex-direction: column;\n text-align: center;\n gap: 8px;\n }\n\n .metric-icon {\n width: 36px;\n height: 36px;\n }\n\n .metric-value {\n font-size: 16px;\n }\n\n .results-summary {\n gap: 8px;\n padding-top: 16px;\n flex-wrap: nowrap;\n overflow-x: auto;\n padding-bottom: 8px;\n margin-bottom: -8px;\n }\n\n .result-item {\n padding: 10px 12px;\n min-width: 90px;\n }\n\n .result-icon {\n font-size: 20px;\n }\n\n .result-count {\n font-size: 18px;\n }\n\n .tabs {\n padding: 0 16px;\n }\n\n .tab {\n padding: 14px 16px;\n font-size: 13px;\n }\n\n .tab-content {\n padding: 16px;\n }\n\n .result-hero {\n padding: 32px 20px;\n }\n\n .result-hero-icon {\n font-size: 56px;\n }\n\n .result-hero-text h2 {\n font-size: 24px;\n }\n\n .stat-value {\n font-size: 20px;\n }\n\n .test-run-item {\n padding: 14px;\n }\n\n .run-sequence {\n width: 28px;\n height: 28px;\n font-size: 12px;\n }\n\n .run-icon {\n width: 36px;\n height: 36px;\n font-size: 14px;\n }\n\n .run-name {\n font-size: 13px;\n }\n\n .run-meta {\n gap: 10px;\n font-size: 11px;\n }\n\n .empty-state {\n padding: 40px 16px;\n }\n\n .empty-icon {\n width: 64px;\n height: 64px;\n }\n\n .empty-icon i {\n font-size: 28px;\n }\n\n .details-card {\n padding: 16px;\n }\n\n .details-grid {\n gap: 16px;\n }\n\n .keyboard-shortcuts, .shortcuts-toggle {\n display: none;\n }\n}\n\n/* ===================================\n Responsive Design - Small Mobile\n =================================== */\n@media (max-width: 480px) {\n .suite-run-header {\n padding: 12px;\n }\n\n .breadcrumb {\n font-size: 12px;\n margin-bottom: 12px;\n }\n\n .suite-run-icon {\n width: 44px;\n height: 44px;\n font-size: 18px;\n }\n\n .suite-run-info h1 {\n font-size: 18px;\n }\n\n .suite-run-meta {\n gap: 8px;\n }\n\n .status-badge {\n padding: 4px 10px;\n font-size: 11px;\n }\n\n .meta-tag {\n font-size: 11px;\n padding: 3px 8px;\n }\n\n .metrics-bar {\n grid-template-columns: 1fr 1fr;\n }\n\n .metric-card {\n padding: 10px;\n gap: 6px;\n }\n\n .metric-icon {\n width: 32px;\n height: 32px;\n font-size: 14px;\n }\n\n .metric-value {\n font-size: 14px;\n }\n\n .metric-label {\n font-size: 9px;\n }\n\n .result-item {\n padding: 8px 10px;\n min-width: 80px;\n gap: 8px;\n }\n\n .result-icon {\n font-size: 18px;\n }\n\n .result-count {\n font-size: 16px;\n }\n\n .result-label {\n font-size: 9px;\n }\n\n .tabs {\n padding: 0 12px;\n }\n\n .tab {\n padding: 12px 14px;\n gap: 6px;\n }\n\n .tab i {\n font-size: 14px;\n }\n\n .tab-content {\n padding: 12px;\n }\n\n .result-hero {\n padding: 24px 16px;\n }\n\n .result-hero-icon {\n font-size: 48px;\n margin-bottom: 16px;\n }\n\n .result-hero-text h2 {\n font-size: 20px;\n margin-bottom: 12px;\n }\n\n .stat-value {\n font-size: 18px;\n }\n\n .stat-label {\n font-size: 10px;\n }\n\n .progress-section {\n padding: 16px;\n }\n\n .progress-info {\n font-size: 14px;\n }\n\n .test-run-item {\n padding: 12px;\n gap: 10px;\n }\n\n .run-sequence {\n width: 24px;\n height: 24px;\n font-size: 11px;\n }\n\n .run-icon {\n width: 32px;\n height: 32px;\n font-size: 12px;\n border-radius: 8px;\n }\n\n .run-name {\n font-size: 12px;\n margin-bottom: 3px;\n }\n\n .run-meta {\n gap: 8px;\n font-size: 10px;\n }\n\n .empty-state {\n padding: 32px 12px;\n }\n\n .empty-state h4 {\n font-size: 16px;\n }\n\n .empty-state p {\n font-size: 13px;\n }\n\n .details-card {\n padding: 14px;\n }\n\n .details-card h3 {\n font-size: 14px;\n margin-bottom: 16px;\n }\n\n .detail-label {\n font-size: 10px;\n }\n\n .detail-value {\n font-size: 13px;\n }\n}\n\n/* ===================================\n Touch Device Optimizations\n =================================== */\n@media (hover: none) and (pointer: coarse) {\n .test-run-item {\n min-height: 64px;\n }\n\n .test-run-item:hover {\n transform: none;\n background: var(--suite-run-card);\n border-color: var(--suite-run-border);\n }\n\n .test-run-item:active {\n background: var(--suite-run-primary-light);\n border-color: #93c5fd;\n }\n\n .tab:hover {\n background: transparent;\n color: var(--suite-run-text-secondary);\n }\n\n .tab:active {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n }\n\n .metric-card:hover {\n transform: none;\n box-shadow: none;\n }\n\n .result-item:hover {\n transform: none;\n box-shadow: none;\n }\n\n .keyboard-shortcuts {\n display: none;\n }\n}\n\n/* ===================================\n Print Styles\n =================================== */\n@media print {\n .suite-run-header {\n background: white;\n box-shadow: none;\n border-bottom: 2px solid #000;\n }\n\n .tabs-container,\n .header-actions,\n .keyboard-shortcuts {\n display: none;\n }\n\n .tab-content {\n padding: 20px 0;\n }\n\n .result-hero,\n .test-run-item,\n .details-card {\n box-shadow: none;\n border: 1px solid #ccc;\n }\n}\n\n/* ===================================\n Dark Mode Support (Future)\n =================================== */\n@media (prefers-color-scheme: dark) {\n /* Ready for dark mode implementation */\n}\n\n/* ===================================\n Tags Bar - Sleek Inline Display\n =================================== */\n.tags-bar {\n margin-top: 16px;\n padding: 8px 14px;\n background: linear-gradient(135deg, rgba(59, 130, 246, 0.04) 0%, rgba(59, 130, 246, 0.08) 100%);\n border: 1px solid rgba(59, 130, 246, 0.15);\n border-radius: 8px;\n max-width: 600px;\n}\n\n.tags-bar-content {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.tags-bar-label {\n color: var(--suite-run-text-secondary);\n font-size: 14px;\n}\n\n.tags-bar-label i {\n opacity: 0.6;\n}\n\n.tags-bar-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n flex: 1;\n}\n\n.tag-inline {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n letter-spacing: 0.01em;\n}\n\n.tags-bar-empty {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n opacity: 0.7;\n flex: 1;\n}\n\n.tags-bar-edit {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n background: transparent;\n border: 1px dashed var(--suite-run-border);\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.tags-bar-edit:hover {\n border-color: var(--suite-run-primary);\n color: var(--suite-run-primary);\n background: var(--suite-run-primary-light);\n}\n\n.tags-bar-edit i {\n font-size: 10px;\n}\n\n/* ===================================\n Tags Editor Panel - Expanded Edit Mode\n =================================== */\n.tags-editor-panel {\n margin-top: 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-primary);\n border-radius: 10px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(59, 130, 246, 0.1);\n max-width: 600px;\n}\n\n.tags-editor-header {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n background: var(--suite-run-primary-light);\n border-bottom: 1px solid rgba(59, 130, 246, 0.2);\n}\n\n.tags-editor-title {\n font-size: 13px;\n font-weight: 600;\n color: var(--suite-run-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.tags-editor-body {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.tags-editor-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n min-height: 32px;\n}\n\n.tag-editable {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 5px 8px 5px 12px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-primary);\n color: var(--suite-run-primary);\n border-radius: 14px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.tag-remove-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n background: transparent;\n border: none;\n color: var(--suite-run-primary);\n cursor: pointer;\n border-radius: 50%;\n font-size: 9px;\n opacity: 0.6;\n transition: var(--suite-run-transition);\n}\n\n.tag-remove-btn:hover {\n opacity: 1;\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.tags-empty-hint {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n font-style: italic;\n padding: 4px 0;\n}\n\n.tags-editor-input {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.tag-text-input {\n flex: 1;\n padding: 10px 14px;\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n font-size: 13px;\n background: var(--suite-run-neutral-light);\n}\n\n.tag-text-input:focus {\n outline: none;\n border-color: var(--suite-run-primary);\n background: var(--suite-run-card);\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.tag-text-input::placeholder {\n color: var(--suite-run-text-secondary);\n opacity: 0.6;\n}\n\n.tags-editor-footer {\n display: flex;\n justify-content: flex-start;\n gap: 8px;\n padding: 12px 16px;\n background: var(--suite-run-neutral-light);\n border-top: 1px solid var(--suite-run-border);\n}\n\n/* ===================================\n Runs Toolbar\n =================================== */\n.runs-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding: 12px 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.run-filters {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.filter-btn {\n padding: 6px 14px;\n border: 1px solid var(--suite-run-border);\n background: var(--suite-run-card);\n border-radius: 20px;\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n cursor: pointer;\n transition: var(--suite-run-transition);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn:hover {\n border-color: var(--suite-run-primary);\n color: var(--suite-run-primary);\n}\n\n.filter-btn.active {\n background: var(--suite-run-primary);\n border-color: var(--suite-run-primary);\n color: white;\n}\n\n.filter-btn.passed:hover,\n.filter-btn.passed.active {\n background: var(--suite-run-success);\n border-color: var(--suite-run-success);\n color: white;\n}\n\n.filter-btn.failed:hover,\n.filter-btn.failed.active {\n background: var(--suite-run-danger);\n border-color: var(--suite-run-danger);\n color: white;\n}\n\n.filter-btn.error:hover,\n.filter-btn.error.active {\n background: var(--suite-run-warning);\n border-color: var(--suite-run-warning);\n color: white;\n}\n\n.runs-actions {\n display: flex;\n gap: 8px;\n}\n\n/* ===================================\n Test Run Card (Expandable)\n =================================== */\n.test-run-card {\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n overflow: hidden;\n transition: var(--suite-run-transition);\n margin-bottom: 10px;\n}\n\n.test-run-card:hover {\n box-shadow: var(--suite-run-shadow);\n}\n\n.test-run-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.test-run-item:hover {\n background: var(--suite-run-primary-light);\n}\n\n.run-header-row {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n}\n\n.run-feedback-indicator {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.run-feedback-indicator i {\n font-size: 10px;\n}\n\n.run-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 6px;\n}\n\n.tag-mini {\n display: inline-flex;\n padding: 2px 8px;\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-text-secondary);\n border-radius: 10px;\n font-size: 10px;\n font-weight: 500;\n}\n\n.tag-chip {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border: 1px solid #bfdbfe;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: #1d4ed8;\n}\n\n.run-expand {\n color: var(--suite-run-text-secondary);\n transition: var(--suite-run-transition);\n}\n\n.test-run-item:hover .run-expand {\n color: var(--suite-run-primary);\n}\n\n.run-cost {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.run-cost i {\n font-size: 10px;\n opacity: 0.7;\n}\n\n/* ===================================\n Inline Feedback\n =================================== */\n.inline-feedback {\n padding: 0 16px 16px;\n animation: slideDown 0.2s ease-out;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.feedback-divider {\n height: 1px;\n background: var(--suite-run-border);\n margin-bottom: 16px;\n}\n\n.feedback-section {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.feedback-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.inline-rating {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.rating-numbers {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.rating-btn {\n width: 36px;\n height: 36px;\n border: 2px solid var(--suite-run-border);\n border-radius: 8px;\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-text-secondary);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.rating-btn:hover,\n.rating-btn.hover {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.rating-btn.low:hover,\n.rating-btn.low.hover {\n border-color: var(--suite-run-danger);\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.rating-btn.mid:hover,\n.rating-btn.mid.hover {\n border-color: var(--suite-run-warning);\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.rating-btn.high:hover,\n.rating-btn.high.hover {\n border-color: var(--suite-run-success);\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.rating-btn.selected {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.rating-btn.selected.low {\n border-color: var(--suite-run-danger);\n background: var(--suite-run-danger);\n color: white;\n}\n\n.rating-btn.selected.mid {\n border-color: var(--suite-run-warning);\n background: var(--suite-run-warning);\n color: white;\n}\n\n.rating-btn.selected.high {\n border-color: var(--suite-run-success);\n background: var(--suite-run-success);\n color: white;\n}\n\n.rating-info {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 14px;\n background: var(--suite-run-neutral-light);\n border-radius: 8px;\n}\n\n.rating-value {\n font-size: 18px;\n font-weight: 700;\n color: var(--suite-run-text);\n}\n\n.rating-label-text {\n font-size: 13px;\n color: var(--suite-run-text-secondary);\n}\n\n.correctness-row {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.correctness-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--suite-run-text);\n}\n\n.correctness-options {\n display: flex;\n gap: 16px;\n}\n\n.radio-opt {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 13px;\n color: var(--suite-run-text-secondary);\n}\n\n.radio-opt input[type=\"radio\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.comments-row {\n width: 100%;\n}\n\n.feedback-textarea {\n width: 100%;\n padding: 12px;\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n resize: vertical;\n min-height: 80px;\n}\n\n.feedback-textarea:focus {\n outline: none;\n border-color: var(--suite-run-primary);\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);\n}\n\n.feedback-actions {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n padding-top: 8px;\n}\n\n/* ===================================\n Mobile Responsive Updates\n =================================== */\n@media (max-width: 768px) {\n .tags-bar {\n padding: 8px 12px;\n }\n\n .tags-bar-content {\n gap: 8px;\n }\n\n .tag-inline {\n padding: 3px 8px;\n font-size: 10px;\n }\n\n .tags-editor-panel {\n margin-top: 12px;\n }\n\n .tags-editor-body {\n padding: 12px;\n }\n\n .tags-editor-footer {\n padding: 10px 12px;\n }\n\n .runs-toolbar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .run-filters {\n justify-content: center;\n }\n\n .runs-actions {\n justify-content: center;\n }\n\n .rating-numbers {\n justify-content: center;\n }\n\n .rating-btn {\n width: 32px;\n height: 32px;\n font-size: 12px;\n }\n\n .correctness-row {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .feedback-actions {\n flex-direction: column;\n }\n\n .feedback-actions button {\n width: 100%;\n }\n}\n\n/* ===================================\n Animations\n =================================== */\n@keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n}\n\n.result-hero.running .result-hero-icon {\n animation: pulse 2s ease-in-out infinite;\n}\n\n/* Tab content fade in */\n.overview-tab,\n.runs-tab,\n.details-tab,\n.analytics-tab {\n animation: fadeIn 0.3s ease;\n}\n\n/* ===================================\n Analytics Tab\n =================================== */\n.analytics-tab {\n max-width: 1200px;\n margin: 0 auto;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.analytics-section {\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n padding: 24px;\n box-shadow: var(--suite-run-shadow);\n}\n\n.analytics-section h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 20px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--suite-run-text);\n padding-bottom: 12px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.analytics-section h3 i {\n color: var(--suite-run-primary);\n}\n\n.analytics-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.analytics-header h3 {\n margin: 0;\n padding: 0;\n border: none;\n}\n\n.analytics-legend {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.legend-item.passed {\n color: var(--suite-run-success);\n}\n\n.legend-item.failed {\n color: var(--suite-run-danger);\n}\n\n.legend-item.error {\n color: var(--suite-run-warning);\n}\n\n.legend-item.skipped {\n color: var(--suite-run-neutral);\n}\n\n/* Performance Matrix */\n.performance-matrix {\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.matrix-row {\n display: grid;\n grid-template-columns: 2fr 120px 150px 100px 100px;\n border-bottom: 1px solid var(--suite-run-border);\n transition: var(--suite-run-transition);\n cursor: pointer;\n}\n\n.matrix-row:last-child {\n border-bottom: none;\n}\n\n.matrix-row:hover:not(.matrix-header-row) {\n background: var(--suite-run-primary-light);\n}\n\n.matrix-row.passed {\n border-left: 4px solid var(--suite-run-success);\n}\n\n.matrix-row.failed {\n border-left: 4px solid var(--suite-run-danger);\n}\n\n.matrix-row.error {\n border-left: 4px solid var(--suite-run-warning);\n}\n\n.matrix-row.skipped {\n border-left: 4px solid var(--suite-run-neutral);\n}\n\n.matrix-header-row {\n background: var(--suite-run-neutral-light);\n font-weight: 600;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n cursor: default;\n}\n\n.matrix-cell {\n padding: 12px 16px;\n display: flex;\n align-items: center;\n}\n\n.test-name-cell {\n gap: 12px;\n}\n\n.test-sequence {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-neutral-light);\n border-radius: 50%;\n font-size: 11px;\n font-weight: 600;\n color: var(--suite-run-text-secondary);\n flex-shrink: 0;\n}\n\n.test-name {\n font-weight: 500;\n color: var(--suite-run-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.status-indicator {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.status-indicator.status-passed {\n color: var(--suite-run-success);\n}\n\n.status-indicator.status-failed {\n color: var(--suite-run-danger);\n}\n\n.status-indicator.status-error {\n color: var(--suite-run-warning);\n}\n\n.status-indicator.status-skipped {\n color: var(--suite-run-neutral);\n}\n\n.status-indicator.status-pending {\n color: var(--suite-run-info);\n}\n\n.status-indicator.status-running {\n color: var(--suite-run-primary);\n}\n\n.score-bar {\n position: relative;\n width: 100%;\n height: 20px;\n background: var(--suite-run-neutral-light);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.score-fill {\n height: 100%;\n border-radius: 10px;\n transition: width 0.3s ease;\n}\n\n.score-fill.high {\n background: linear-gradient(90deg, var(--suite-run-success) 0%, #34d399 100%);\n}\n\n.score-fill.medium {\n background: linear-gradient(90deg, var(--suite-run-warning) 0%, #fbbf24 100%);\n}\n\n.score-fill.low {\n background: linear-gradient(90deg, var(--suite-run-danger) 0%, #f87171 100%);\n}\n\n.score-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 11px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.na-value {\n color: var(--suite-run-text-secondary);\n opacity: 0.6;\n}\n\n/* Summary Statistics Grid */\n.stats-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n}\n\n.stat-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border: 1px solid var(--suite-run-border);\n border-radius: 12px;\n transition: var(--suite-run-transition);\n}\n\n.stat-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--suite-run-shadow);\n}\n\n.stat-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n font-size: 20px;\n}\n\n.stat-icon.passed {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.stat-icon.failed {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.stat-icon.score {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.stat-icon.duration {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.stat-icon.cost {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.stat-content {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.stat-card .stat-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--suite-run-text);\n}\n\n.stat-card .stat-label {\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-percent {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n/* Responsive Analytics */\n@media (max-width: 768px) {\n .analytics-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .matrix-row {\n grid-template-columns: 1fr;\n gap: 8px;\n padding: 12px;\n }\n\n .matrix-header-row {\n display: none;\n }\n\n .matrix-cell {\n padding: 4px 0;\n }\n\n .test-name-cell::before,\n .status-cell::before,\n .score-cell::before,\n .duration-cell::before,\n .cost-cell::before {\n font-size: 10px;\n font-weight: 600;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n margin-right: 8px;\n min-width: 80px;\n }\n\n .status-cell::before { content: 'Status:'; }\n .score-cell::before { content: 'Score:'; }\n .duration-cell::before { content: 'Duration:'; }\n .cost-cell::before { content: 'Cost:'; }\n\n .stats-grid {\n grid-template-columns: 1fr 1fr;\n }\n\n .stat-card {\n padding: 16px;\n }\n\n .stat-icon {\n width: 40px;\n height: 40px;\n font-size: 16px;\n }\n\n .stat-card .stat-value {\n font-size: 20px;\n }\n}\n\n/* Focus States for Accessibility */\n.tab:focus-visible,\n.test-run-item:focus-visible,\nbutton:focus-visible {\n outline: 2px solid var(--suite-run-primary);\n outline-offset: 2px;\n}\n\n/* ===================================\n Analytics Loading State\n =================================== */\n.analytics-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n padding: 60px 20px;\n color: var(--suite-run-text-secondary);\n}\n\n.analytics-loading i {\n font-size: 32px;\n color: var(--suite-run-primary);\n}\n\n/* ===================================\n Results Table\n =================================== */\n.results-table-wrapper {\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.results-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.results-table thead {\n background: var(--suite-run-neutral-light);\n}\n\n.results-table th {\n padding: 12px 16px;\n text-align: left;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.results-table td {\n padding: 12px 16px;\n border-bottom: 1px solid #f1f5f9;\n vertical-align: middle;\n}\n\n.results-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n/* Column widths - Fixed columns fit content, name column takes remainder (max 50%) */\n.seq-col {\n width: 40px;\n min-width: 40px;\n text-align: center;\n white-space: nowrap;\n}\n\n.name-col {\n /* Take remaining space, but cap at 50% of table width */\n width: auto;\n max-width: 50%;\n}\n\n.status-col {\n width: 1%; /* Shrink to fit content */\n white-space: nowrap;\n}\n\n.score-col {\n width: 1%; /* Shrink to fit content */\n min-width: 120px; /* Score bar needs some minimum width */\n white-space: nowrap;\n}\n\n.duration-col {\n width: 1%; /* Shrink to fit content */\n white-space: nowrap;\n text-align: right;\n}\n\n.cost-col {\n width: 1%; /* Shrink to fit content */\n white-space: nowrap;\n text-align: right;\n}\n\n/* Result Row */\n.result-row {\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.result-row:hover {\n background: var(--suite-run-primary-light);\n}\n\n.result-row.row-passed {\n border-left: 4px solid var(--suite-run-success);\n}\n\n.result-row.row-failed {\n border-left: 4px solid var(--suite-run-danger);\n}\n\n.result-row.row-error {\n border-left: 4px solid var(--suite-run-warning);\n}\n\n.result-row.row-skipped {\n border-left: 4px solid var(--suite-run-neutral);\n}\n\n/* Test Name Wrapper */\n.test-name-wrapper {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.test-name-wrapper .test-name {\n font-weight: 500;\n color: var(--suite-run-text);\n}\n\n.test-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n/* Score Display */\n.score-display {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.score-bar-mini {\n flex: 1;\n height: 6px;\n background: var(--suite-run-neutral-light);\n border-radius: 3px;\n overflow: hidden;\n min-width: 60px;\n}\n\n.score-bar-mini .score-fill {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.score-bar-mini .score-fill.high {\n background: var(--suite-run-success);\n}\n\n.score-bar-mini .score-fill.medium {\n background: var(--suite-run-warning);\n}\n\n.score-bar-mini .score-fill.low {\n background: var(--suite-run-danger);\n}\n\n.score-display .score-text {\n position: static;\n transform: none;\n font-size: 12px;\n font-weight: 600;\n color: var(--suite-run-text);\n min-width: 35px;\n text-align: right;\n}\n\n/* Status Badge in Table */\n.results-table .status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.results-table .status-badge.status-passed {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.results-table .status-badge.status-failed {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.results-table .status-badge.status-error {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.results-table .status-badge.status-skipped {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n.results-table .status-badge.status-pending {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.results-table .status-badge.status-running {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n/* Responsive Results Table */\n@media (max-width: 768px) {\n .results-table-wrapper {\n overflow-x: auto;\n }\n\n .results-table {\n min-width: 600px;\n }\n\n .results-table th,\n .results-table td {\n padding: 10px 12px;\n }\n\n .name-col {\n min-width: 150px;\n }\n}\n\n/* ===================================\n High Contrast Mode\n =================================== */\n@media (prefers-contrast: high) {\n .status-badge,\n .status-inline {\n border: 2px solid currentColor;\n }\n\n .test-run-item {\n border-width: 2px;\n }\n\n .tab.active {\n border-bottom-width: 4px;\n }\n}\n\n/* ===================================\n Evaluation Summary\n =================================== */\n.evaluation-summary {\n margin-top: 20px;\n}\n\n.eval-summary-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 16px;\n}\n\n.eval-summary-card {\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n overflow: hidden;\n transition: var(--suite-run-transition);\n}\n\n.eval-summary-card:hover {\n box-shadow: var(--suite-run-shadow);\n}\n\n.eval-card-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--suite-run-neutral-light);\n border-bottom: 1px solid var(--suite-run-border);\n font-size: 13px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.eval-card-header i {\n color: var(--suite-run-primary);\n}\n\n.eval-card-body {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.eval-stat-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n}\n\n.eval-stat-label {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n.eval-stat-value {\n font-size: 14px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.eval-stat-value.correct {\n color: var(--suite-run-success);\n}\n\n.eval-stat-value.incorrect {\n color: var(--suite-run-danger);\n font-weight: 500;\n font-size: 12px;\n}\n\n.eval-stat-value.error {\n color: var(--suite-run-danger);\n}\n\n.eval-stat-value.timeout {\n color: var(--suite-run-warning);\n}\n\n.eval-card-footer {\n padding: 10px 16px;\n background: var(--suite-run-warning-light);\n border-top: 1px solid rgba(245, 158, 11, 0.2);\n}\n\n.pending-badge {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-warning);\n}\n\n.pending-badge i {\n font-size: 11px;\n}\n\n/* ===================================\n Needs Review Section\n =================================== */\n.needs-review-section {\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n overflow: hidden;\n}\n\n.needs-review-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 20px;\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border-bottom: 1px solid rgba(245, 158, 11, 0.3);\n}\n\n.needs-review-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #92400e;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.needs-review-header h3 i {\n font-size: 16px;\n}\n\n.review-count {\n font-size: 12px;\n font-weight: 500;\n color: #92400e;\n background: rgba(255, 255, 255, 0.6);\n padding: 2px 10px;\n border-radius: 12px;\n}\n\n.needs-review-list {\n padding: 8px;\n}\n\n.review-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-radius: 8px;\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.review-item:hover {\n background: var(--suite-run-primary-light);\n}\n\n.review-item-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.review-item.high-priority .review-item-icon {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.review-item.medium-priority .review-item-icon {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.review-item:not(.high-priority):not(.medium-priority) .review-item-icon {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n.review-item-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.review-item-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--suite-run-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.review-item-reason {\n font-size: 11px;\n color: var(--suite-run-text-secondary);\n}\n\n.review-item-action {\n color: var(--suite-run-text-secondary);\n font-size: 12px;\n}\n\n.review-item:hover .review-item-action {\n color: var(--suite-run-primary);\n}\n\n.review-more {\n display: flex;\n justify-content: center;\n padding: 8px;\n border-top: 1px solid var(--suite-run-border);\n}\n\n/* Mobile Responsive for Evaluation */\n@media (max-width: 768px) {\n .eval-summary-grid {\n grid-template-columns: 1fr;\n }\n\n .eval-card-header {\n padding: 10px 14px;\n font-size: 12px;\n }\n\n .eval-card-body {\n padding: 12px 14px;\n }\n\n .needs-review-header {\n padding: 12px 16px;\n }\n\n .needs-review-header h3 {\n font-size: 13px;\n }\n\n .review-item {\n padding: 10px 12px;\n }\n\n .review-item-icon {\n width: 28px;\n height: 28px;\n font-size: 12px;\n }\n}\n\n/* ===================================\n Feedback Column in Analytics Table\n =================================== */\n.feedback-col {\n width: 1%; /* Shrink to fit content */\n white-space: nowrap;\n text-align: center;\n}\n\n.feedback-display {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.feedback-rating {\n font-size: 13px;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: 4px;\n background: var(--suite-run-neutral-light);\n}\n\n.feedback-rating.low {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.feedback-rating.mid {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.feedback-rating.high {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.feedback-correctness i {\n font-size: 12px;\n}\n\n.feedback-correctness i.correct {\n color: var(--suite-run-success);\n}\n\n.feedback-correctness i.incorrect {\n color: var(--suite-run-danger);\n}\n\n.na-value.needs-review {\n color: var(--suite-run-warning);\n opacity: 0.7;\n}\n\n.na-value.needs-review i {\n font-size: 14px;\n}\n"] }]
2293
- }], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.TestingDialogService }, { type: i3.EvaluationPreferencesService }, { type: i0.ViewContainerRef }, { type: i4.ApplicationManager }], { handleKeyboardShortcut: [{
2325
+ args: [{ standalone: false, selector: 'mj-test-suite-run-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"test-suite-run-form\" kendoDialogContainer>\n <!-- Header Section -->\n <div class=\"suite-run-header\">\n <!-- Breadcrumb Navigation -->\n <nav class=\"breadcrumb\" aria-label=\"Breadcrumb\">\n <ol>\n <li>\n <a href=\"javascript:void(0)\" (click)=\"navigateToTestingDashboard()\">\n <i class=\"fas fa-vial\"></i>\n <span class=\"breadcrumb-text\">Testing</span>\n </a>\n </li>\n @if (testSuite) {\n <li>\n <i class=\"fas fa-chevron-right separator\"></i>\n <a href=\"javascript:void(0)\" (click)=\"openTestSuite()\">\n <i class=\"fas fa-layer-group\"></i>\n <span class=\"breadcrumb-text\">{{ testSuite.Name }}</span>\n </a>\n </li>\n }\n <li class=\"current\">\n <i class=\"fas fa-chevron-right separator\"></i>\n <span>Run #{{ record.ID.substring(0, 8) }}</span>\n </li>\n </ol>\n </nav>\n\n <!-- Header Content -->\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"suite-run-icon\" [style.background-color]=\"getStatusColor()\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon()\"></i>\n </div>\n <div class=\"suite-run-info\">\n <h1>Suite Run</h1>\n <div class=\"suite-run-meta\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass()\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon()\"></i>\n {{ record.Status }}\n </span>\n @if (record.Environment) {\n <span class=\"meta-tag environment\">\n <i class=\"fas fa-server\"></i>\n {{ record.Environment }}\n </span>\n }\n @if (record.TriggerType) {\n <span class=\"meta-tag trigger\">\n <i class=\"fas fa-bolt\"></i>\n {{ record.TriggerType }}\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-actions\">\n <!-- Evaluation Mode Toggle -->\n <app-evaluation-mode-toggle></app-evaluation-mode-toggle>\n @if (record.SuiteID) {\n <button kendoButton (click)=\"reRunSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Re-run Suite\n </button>\n }\n <button kendoButton (click)=\"refresh()\" [disabled]=\"isRefreshing\">\n <i class=\"fas\" [ngClass]=\"isRefreshing ? 'fa-sync fa-spin' : 'fa-sync'\"></i>\n {{ isRefreshing ? 'Refreshing...' : 'Refresh' }}\n </button>\n </div>\n </div>\n\n <!-- Metrics Bar -->\n <div class=\"metrics-bar\">\n <div class=\"metric-card\">\n <div class=\"metric-icon\">\n <i class=\"fas fa-clock\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ calculateDuration() }}</div>\n <div class=\"metric-label\">Duration</div>\n </div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-icon\">\n <i class=\"fas fa-percentage\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ getPassRate().toFixed(1) }}%</div>\n <div class=\"metric-label\">Pass Rate</div>\n </div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-icon\">\n <i class=\"fas fa-dollar-sign\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ formatCost(record.TotalCostUSD) }}</div>\n <div class=\"metric-label\">Total Cost</div>\n </div>\n </div>\n <div class=\"metric-card\">\n <div class=\"metric-icon\">\n <i class=\"fas fa-calendar\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ getRelativeTime(record.StartedAt) }}</div>\n <div class=\"metric-label\">Started</div>\n </div>\n </div>\n </div>\n\n <!-- Results Summary -->\n <div class=\"results-summary\">\n <div class=\"result-item passed\">\n <div class=\"result-icon\">\n <i class=\"fas fa-check-circle\"></i>\n </div>\n <div class=\"result-content\">\n <span class=\"result-count\">{{ record.PassedTests || 0 }}</span>\n <span class=\"result-label\">Passed</span>\n </div>\n </div>\n <div class=\"result-item failed\">\n <div class=\"result-icon\">\n <i class=\"fas fa-times-circle\"></i>\n </div>\n <div class=\"result-content\">\n <span class=\"result-count\">{{ record.FailedTests || 0 }}</span>\n <span class=\"result-label\">Failed</span>\n </div>\n </div>\n <div class=\"result-item error\">\n <div class=\"result-icon\">\n <i class=\"fas fa-exclamation-circle\"></i>\n </div>\n <div class=\"result-content\">\n <span class=\"result-count\">{{ record.ErrorTests || 0 }}</span>\n <span class=\"result-label\">Errors</span>\n </div>\n </div>\n <div class=\"result-item skipped\">\n <div class=\"result-icon\">\n <i class=\"fas fa-forward\"></i>\n </div>\n <div class=\"result-content\">\n <span class=\"result-count\">{{ record.SkippedTests || 0 }}</span>\n <span class=\"result-label\">Skipped</span>\n </div>\n </div>\n <div class=\"result-item total\">\n <div class=\"result-icon\">\n <i class=\"fas fa-list\"></i>\n </div>\n <div class=\"result-content\">\n <span class=\"result-count\">{{ record.TotalTests || 0 }}</span>\n <span class=\"result-label\">Total</span>\n </div>\n </div>\n </div>\n\n <!-- Tags Section - Sleek inline design -->\n @if (!editingTags) {\n <div class=\"tags-bar\">\n <div class=\"tags-bar-content\">\n <span class=\"tags-bar-label\"><i class=\"fas fa-tags\"></i></span>\n @if (tags.length > 0) {\n <div class=\"tags-bar-chips\">\n @for (tag of tags; track tag) {\n <span class=\"tag-inline\">{{ tag }}</span>\n }\n </div>\n }\n @if (tags.length === 0) {\n <span class=\"tags-bar-empty\">No tags</span>\n }\n <button class=\"tags-bar-edit\" (click)=\"startEditingTags()\" title=\"Edit tags\">\n <i class=\"fas fa-plus\"></i> Add\n </button>\n </div>\n </div>\n }\n\n <!-- Tags Editor - Expanded when editing -->\n @if (editingTags) {\n <div class=\"tags-editor-panel\">\n <div class=\"tags-editor-header\">\n <span class=\"tags-editor-title\"><i class=\"fas fa-tags\"></i> Edit Tags</span>\n </div>\n <div class=\"tags-editor-body\">\n <div class=\"tags-editor-chips\">\n @for (tag of tags; track tag) {\n <span class=\"tag-editable\">\n {{ tag }}\n <button class=\"tag-remove-btn\" (click)=\"removeTag(tag)\" title=\"Remove tag\">\n <i class=\"fas fa-times\"></i>\n </button>\n </span>\n }\n @if (tags.length === 0) {\n <span class=\"tags-empty-hint\">No tags yet</span>\n }\n </div>\n <div class=\"tags-editor-input\">\n <input type=\"text\"\n [(ngModel)]=\"newTag\"\n placeholder=\"Type a tag and press Enter...\"\n (keyup.enter)=\"addTag()\"\n class=\"tag-text-input\" />\n <button kendoButton (click)=\"addTag()\" [disabled]=\"!newTag.trim()\" fillMode=\"flat\">\n <i class=\"fas fa-plus\"></i>\n </button>\n </div>\n </div>\n <div class=\"tags-editor-footer\">\n <button kendoButton (click)=\"saveTags()\" themeColor=\"primary\" [disabled]=\"savingTags\">\n @if (savingTags) {\n <i class=\"fas fa-spinner fa-spin\"></i>\n }\n {{ savingTags ? 'Saving...' : 'Save' }}\n </button>\n <button kendoButton (click)=\"cancelEditingTags()\" fillMode=\"flat\">Cancel</button>\n </div>\n </div>\n }\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs-container\">\n <div class=\"tabs\" role=\"tablist\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 'overview'\"\n (click)=\"changeTab('overview')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'overview'\">\n <i class=\"fas fa-th-large\"></i> Overview\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'runs'\"\n (click)=\"changeTab('runs')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'runs'\">\n <i class=\"fas fa-list\"></i> Test Runs\n @if (testRunsLoaded) {\n <span class=\"tab-badge\">{{ testRuns.length }}</span>\n }\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'details'\"\n (click)=\"changeTab('details')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'details'\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'analytics'\"\n (click)=\"changeTab('analytics')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'analytics'\"\n title=\"Press 4\">\n <i class=\"fas fa-chart-bar\"></i> Analytics\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'execution'\"\n (click)=\"changeTab('execution')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'execution'\"\n title=\"Press 5\">\n <i class=\"fas fa-microchip\"></i>\n <span>Execution</span>\n </button>\n </div>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Overview Tab -->\n @if (activeTab === 'overview') {\n <div class=\"overview-tab\">\n <!-- Result Hero -->\n <div class=\"result-hero\"\n [class.passed]=\"record.Status === 'Completed' && getPassRate() >= 90\"\n [class.failed]=\"record.Status === 'Failed' || getPassRate() < 50\"\n [class.running]=\"record.Status === 'Running'\"\n [class.pending]=\"record.Status === 'Pending'\">\n <div class=\"result-hero-icon\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon()\"></i>\n </div>\n <div class=\"result-hero-text\">\n <h2>SUITE {{ record.Status.toUpperCase() || 'UNKNOWN' }}</h2>\n <div class=\"result-hero-stats\">\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ getPassRate().toFixed(1) }}%</span>\n <span class=\"stat-label\">Pass Rate</span>\n </div>\n <div class=\"stat-divider\"></div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ record.PassedTests || 0 }} / {{ record.TotalTests || 0 }}</span>\n <span class=\"stat-label\">Tests Passed</span>\n </div>\n </div>\n </div>\n </div>\n <!-- Evaluation Metrics Summary -->\n @if (evaluationMetrics && feedbacksLoaded) {\n <div class=\"evaluation-summary\">\n <div class=\"eval-summary-grid\">\n <!-- Human Feedback Card -->\n @if (evalPreferences.showHuman) {\n <div class=\"eval-summary-card\">\n <div class=\"eval-card-header\">\n <i class=\"fa-solid fa-user\"></i>\n <span>Human Feedback</span>\n </div>\n <div class=\"eval-card-body\">\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Reviewed</span>\n <span class=\"eval-stat-value\">{{ evaluationMetrics.humanReviewedCount }} / {{ evaluationMetrics.totalRuns }}</span>\n </div>\n @if (evaluationMetrics.humanReviewedCount > 0) {\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Avg Rating</span>\n <span class=\"eval-stat-value\">{{ evaluationMetrics.humanAvgRating.toFixed(1) }}/10</span>\n </div>\n }\n @if (evaluationMetrics.humanReviewedCount > 0) {\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Correct</span>\n <span class=\"eval-stat-value correct\">{{ evaluationMetrics.humanCorrectCount }}</span>\n @if (evaluationMetrics.humanIncorrectCount > 0) {\n <span class=\"eval-stat-value incorrect\">{{ evaluationMetrics.humanIncorrectCount }} incorrect</span>\n }\n </div>\n }\n </div>\n @if (evaluationMetrics.humanPendingCount > 0) {\n <div class=\"eval-card-footer\">\n <span class=\"pending-badge\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ evaluationMetrics.humanPendingCount }} need review\n </span>\n </div>\n }\n </div>\n }\n <!-- Auto Score Card -->\n @if (evalPreferences.showAuto) {\n <div class=\"eval-summary-card\">\n <div class=\"eval-card-header\">\n <i class=\"fa-solid fa-robot\"></i>\n <span>Auto Evaluation</span>\n </div>\n <div class=\"eval-card-body\">\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Evaluated</span>\n <span class=\"eval-stat-value\">{{ evaluationMetrics.autoEvaluatedCount }} / {{ evaluationMetrics.totalRuns }}</span>\n </div>\n @if (evaluationMetrics.autoEvaluatedCount > 0) {\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Avg Score</span>\n <span class=\"eval-stat-value\">{{ (evaluationMetrics.autoAvgScore * 100).toFixed(0) }}%</span>\n </div>\n }\n @if (evaluationMetrics.autoEvaluatedCount > 0) {\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Pass Rate</span>\n <span class=\"eval-stat-value\">{{ evaluationMetrics.autoPassRate.toFixed(0) }}%</span>\n </div>\n }\n </div>\n </div>\n }\n <!-- Execution Card -->\n @if (evalPreferences.showExecution) {\n <div class=\"eval-summary-card\">\n <div class=\"eval-card-header\">\n <i class=\"fa-solid fa-circle-check\"></i>\n <span>Execution</span>\n </div>\n <div class=\"eval-card-body\">\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Completed</span>\n <span class=\"eval-stat-value\">{{ evaluationMetrics.execCompletedCount }} / {{ evaluationMetrics.totalRuns }}</span>\n </div>\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Success Rate</span>\n <span class=\"eval-stat-value\">{{ evaluationMetrics.execSuccessRate.toFixed(0) }}%</span>\n </div>\n @if (evaluationMetrics.execErrorCount > 0 || evaluationMetrics.execTimeoutCount > 0) {\n <div class=\"eval-stat-row\">\n <span class=\"eval-stat-label\">Issues</span>\n @if (evaluationMetrics.execErrorCount > 0) {\n <span class=\"eval-stat-value error\">{{ evaluationMetrics.execErrorCount }} errors</span>\n }\n @if (evaluationMetrics.execTimeoutCount > 0) {\n <span class=\"eval-stat-value timeout\">{{ evaluationMetrics.execTimeoutCount }} timeouts</span>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n <!-- Needs Review Section -->\n @if (evalPreferences.showHuman && needsReviewItems.length > 0 && feedbacksLoaded) {\n <div class=\"needs-review-section\">\n <div class=\"needs-review-header\">\n <h3><i class=\"fa-solid fa-user-clock\"></i> Needs Review</h3>\n <span class=\"review-count\">{{ needsReviewItems.length }} items</span>\n </div>\n <div class=\"needs-review-list\">\n @for (item of needsReviewItems.slice(0, 5); track item) {\n <div class=\"review-item\"\n [class.high-priority]=\"item.priority === 'high'\"\n [class.medium-priority]=\"item.priority === 'medium'\"\n (click)=\"toggleRunExpanded(item.run.id)\">\n <div class=\"review-item-icon\">\n @if (item.priority === 'high') {\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n }\n @if (item.priority === 'medium') {\n <i class=\"fa-solid fa-circle-dot\"></i>\n }\n @if (item.priority === 'low') {\n <i class=\"fa-solid fa-clock\"></i>\n }\n </div>\n <div class=\"review-item-content\">\n <span class=\"review-item-name\">{{ item.run.testName }}</span>\n <span class=\"review-item-reason\">{{ item.reason }}</span>\n </div>\n <div class=\"review-item-action\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </div>\n </div>\n }\n @if (needsReviewItems.length > 5) {\n <div class=\"review-more\">\n <button kendoButton fillMode=\"flat\" (click)=\"changeTab('runs')\">\n View all {{ needsReviewItems.length }} items\n </button>\n </div>\n }\n </div>\n </div>\n }\n <!-- Progress Ring (when running) -->\n @if (record.Status === 'Running' || record.Status === 'Pending') {\n <div class=\"progress-section\">\n <div class=\"progress-info\">\n <i class=\"fas fa-circle-notch fa-spin\"></i>\n <span>Suite execution in progress...</span>\n </div>\n <div class=\"auto-refresh-notice\">\n <i class=\"fas fa-sync\"></i>\n Auto-refreshing every 5 seconds\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Test Runs Tab -->\n @if (activeTab === 'runs') {\n <div class=\"runs-tab\">\n <!-- Toolbar -->\n @if (testRunsLoaded && testRuns.length > 0) {\n <div class=\"runs-toolbar\">\n <div class=\"run-filters\">\n <button class=\"filter-btn\"\n [class.active]=\"runStatusFilter === null\"\n (click)=\"setRunStatusFilter(null)\">\n All ({{ testRuns.length }})\n </button>\n @if (getRunCountByStatus('Passed') > 0) {\n <button class=\"filter-btn passed\"\n [class.active]=\"runStatusFilter === 'Passed'\"\n (click)=\"setRunStatusFilter('Passed')\"\n >\n <i class=\"fas fa-check\"></i> Passed ({{ getRunCountByStatus('Passed') }})\n </button>\n }\n @if (getRunCountByStatus('Failed') > 0) {\n <button class=\"filter-btn failed\"\n [class.active]=\"runStatusFilter === 'Failed'\"\n (click)=\"setRunStatusFilter('Failed')\"\n >\n <i class=\"fas fa-times\"></i> Failed ({{ getRunCountByStatus('Failed') }})\n </button>\n }\n @if (getRunCountByStatus('Error') > 0) {\n <button class=\"filter-btn error\"\n [class.active]=\"runStatusFilter === 'Error'\"\n (click)=\"setRunStatusFilter('Error')\"\n >\n <i class=\"fas fa-exclamation\"></i> Error ({{ getRunCountByStatus('Error') }})\n </button>\n }\n </div>\n <div class=\"runs-actions\">\n <button kendoButton (click)=\"exportToCSV()\">\n <i class=\"fas fa-download\"></i> Export CSV\n </button>\n </div>\n </div>\n }\n <!-- Loading State -->\n @if (loadingTestRuns) {\n <div class=\"loading-state\">\n <div class=\"skeleton-list\">\n @for (i of [1,2,3,4,5]; track i) {\n <div class=\"skeleton-card\">\n <div class=\"skeleton-sequence\"></div>\n <div class=\"skeleton-icon\"></div>\n <div class=\"skeleton-content\">\n <div class=\"skeleton-line wide\"></div>\n <div class=\"skeleton-line narrow\"></div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <!-- Test Runs List -->\n @if (!loadingTestRuns && testRuns.length > 0) {\n <div class=\"test-runs-list\">\n @for (run of getFilteredTestRuns(); track run) {\n <div class=\"test-run-card\">\n <div class=\"test-run-item\" (click)=\"toggleRunExpanded(run.ID)\">\n <div class=\"run-sequence\">{{ run.Sequence || '-' }}</div>\n <div class=\"run-icon\" [style.background-color]=\"getRunStatusColor(run.Status)\">\n <i class=\"fas\" [ngClass]=\"getRunStatusIcon(run.Status)\"></i>\n </div>\n <div class=\"run-content\">\n <div class=\"run-header-row\">\n <div class=\"run-name\">{{ run.Test }}</div>\n <!-- Evaluation Badge -->\n <app-evaluation-badge\n [executionStatus]=\"run.Status\"\n [originalStatus]=\"run.Status\"\n [autoScore]=\"run.Score\"\n [humanRating]=\"getFeedbackRating(run.ID) || null\"\n [humanIsCorrect]=\"getHumanIsCorrect(run.ID)\"\n [hasHumanFeedback]=\"hasFeedback(run.ID)\"\n [preferences]=\"evalPreferences\"\n [mode]=\"'compact'\">\n </app-evaluation-badge>\n </div>\n <div class=\"run-meta\">\n @if (run.DurationSeconds) {\n <span class=\"run-duration\">\n <i class=\"fas fa-clock\"></i> {{ run.DurationSeconds.toFixed(1) }}s\n </span>\n }\n @if (run.CostUSD) {\n <span class=\"run-cost\">\n <i class=\"fas fa-dollar-sign\"></i> {{ run.CostUSD.toFixed(6) }}\n </span>\n }\n @if (run.TargetLogEntityID && run.TargetLogID) {\n <mj-entity-link-pill\n [entityName]=\"run.TargetLogEntity\"\n [recordId]=\"run.TargetLogID\">\n </mj-entity-link-pill>\n }\n </div>\n @if (getRunTags(run).length > 0) {\n <div class=\"run-tags\">\n @for (tag of getRunTags(run); track tag) {\n <span class=\"tag-chip\">{{ tag }}</span>\n }\n </div>\n }\n </div>\n <div class=\"run-expand\">\n <i class=\"fas\" [class.fa-chevron-down]=\"expandedRunId !== run.ID\" [class.fa-chevron-up]=\"expandedRunId === run.ID\"></i>\n </div>\n </div>\n <!-- Expanded Inline Feedback -->\n @if (expandedRunId === run.ID) {\n <div class=\"inline-feedback\">\n <div class=\"feedback-divider\"></div>\n <div class=\"feedback-section\">\n <div class=\"feedback-label\">Quick Feedback</div>\n <div class=\"inline-rating\">\n <div class=\"rating-numbers\">\n @for (num of [1,2,3,4,5,6,7,8,9,10]; track num) {\n <button\n type=\"button\"\n class=\"rating-btn\"\n [class.selected]=\"num === inlineRating\"\n [class.hover]=\"num === inlineHoverRating\"\n [class.low]=\"num <= 3\"\n [class.mid]=\"num >= 4 && num <= 6\"\n [class.high]=\"num >= 7\"\n (click)=\"setInlineRating(num); $event.stopPropagation()\"\n (mouseenter)=\"inlineHoverRating = num\"\n (mouseleave)=\"inlineHoverRating = 0\">\n {{ num }}\n </button>\n }\n </div>\n @if (inlineRating > 0) {\n <div class=\"rating-info\">\n <span class=\"rating-value\">{{ inlineRating }}/10</span>\n <span class=\"rating-label-text\">{{ getInlineRatingLabel() }}</span>\n </div>\n }\n </div>\n <div class=\"correctness-row\">\n <span class=\"correctness-label\">Was it correct?</span>\n <div class=\"correctness-options\">\n <label class=\"radio-opt\" (click)=\"$event.stopPropagation()\">\n <input type=\"radio\" name=\"correct-{{run.ID}}\" [value]=\"true\" [(ngModel)]=\"inlineIsCorrect\">\n <span>Yes</span>\n </label>\n <label class=\"radio-opt\" (click)=\"$event.stopPropagation()\">\n <input type=\"radio\" name=\"correct-{{run.ID}}\" [value]=\"false\" [(ngModel)]=\"inlineIsCorrect\">\n <span>No</span>\n </label>\n <label class=\"radio-opt\" (click)=\"$event.stopPropagation()\">\n <input type=\"radio\" name=\"correct-{{run.ID}}\" [value]=\"null\" [(ngModel)]=\"inlineIsCorrect\">\n <span>Not Sure</span>\n </label>\n </div>\n </div>\n <div class=\"comments-row\" (click)=\"$event.stopPropagation()\">\n <textarea\n class=\"feedback-textarea\"\n [(ngModel)]=\"inlineComments\"\n placeholder=\"Add comments or corrections...\"\n rows=\"3\"></textarea>\n </div>\n <div class=\"feedback-actions\" (click)=\"$event.stopPropagation()\">\n <button kendoButton (click)=\"openTestRun(run.ID)\">\n <i class=\"fas fa-external-link-alt\"></i> View Full Details\n </button>\n <button kendoButton\n themeColor=\"primary\"\n (click)=\"saveInlineFeedback()\"\n [disabled]=\"!canSubmitInlineFeedback() || savingInlineFeedback\">\n <i class=\"fas\" [ngClass]=\"savingInlineFeedback ? 'fa-spinner fa-spin' : 'fa-save'\"></i>\n {{ savingInlineFeedback ? 'Saving...' : (hasFeedback(run.ID) ? 'Update' : 'Save') }}\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- Empty State -->\n @if (testRunsLoaded && !loadingTestRuns && testRuns.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-inbox\"></i>\n </div>\n <h4>No Test Runs Found</h4>\n <p>No test runs have been recorded for this suite execution.</p>\n </div>\n }\n <!-- Filtered Empty -->\n @if (testRunsLoaded && !loadingTestRuns && testRuns.length > 0 && getFilteredTestRuns().length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-filter\"></i>\n </div>\n <h4>No Matching Runs</h4>\n <p>No test runs match the current filter.</p>\n <button kendoButton (click)=\"setRunStatusFilter(null)\">Clear Filter</button>\n </div>\n }\n </div>\n }\n\n <!-- Details Tab -->\n @if (activeTab === 'details') {\n <div class=\"details-tab\">\n <div class=\"details-card\">\n <h3><i class=\"fas fa-info-circle\"></i> Run Information</h3>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <div class=\"detail-label\">Run ID</div>\n <div class=\"detail-value monospace\">{{ record.ID }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Test Suite</div>\n <div class=\"detail-value\">\n @if (testSuite) {\n <a href=\"javascript:void(0)\" (click)=\"openTestSuite()\">{{ testSuite.Name }}</a>\n }\n @if (!testSuite) {\n <span>Loading...</span>\n }\n </div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Status</div>\n <div class=\"detail-value\">\n <span class=\"status-inline\" [ngClass]=\"getStatusClass()\">{{ record.Status }}</span>\n </div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Run By</div>\n <div class=\"detail-value\">{{ record.RunByUser || 'N/A' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Started At</div>\n <div class=\"detail-value\">{{ record.StartedAt | date:'medium' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Completed At</div>\n <div class=\"detail-value\">{{ record.CompletedAt | date:'medium' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Environment</div>\n <div class=\"detail-value\">{{ record.Environment || 'N/A' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Trigger Type</div>\n <div class=\"detail-value\">{{ record.TriggerType || 'N/A' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Git Commit</div>\n <div class=\"detail-value monospace\">{{ record.GitCommit || 'N/A' }}</div>\n </div>\n <div class=\"detail-item\">\n <div class=\"detail-label\">Agent Version</div>\n <div class=\"detail-value\">{{ record.AgentVersion || 'N/A' }}</div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <!-- Analytics Tab -->\n @if (activeTab === 'analytics') {\n <div class=\"analytics-tab\">\n <!-- Loading State -->\n @if (loadingTestRuns) {\n <div class=\"analytics-loading\">\n <i class=\"fas fa-spinner fa-spin\"></i>\n <span>Loading test results...</span>\n </div>\n }\n <!-- Summary Statistics - Moved to top for better overview -->\n @if (!loadingTestRuns && testRuns.length > 0) {\n <div class=\"analytics-section\">\n <h3><i class=\"fas fa-chart-pie\"></i> Summary Statistics</h3>\n <div class=\"stats-grid\">\n <div class=\"stat-card\">\n <div class=\"stat-icon passed\"><i class=\"fas fa-check-circle\"></i></div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ getPassedCount() }}</div>\n <div class=\"stat-label\">Passed</div>\n <div class=\"stat-percent\">{{ getPassedPercent().toFixed(1) }}%</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon failed\"><i class=\"fas fa-times-circle\"></i></div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ getFailedCount() }}</div>\n <div class=\"stat-label\">Failed</div>\n <div class=\"stat-percent\">{{ getFailedPercent().toFixed(1) }}%</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon score\"><i class=\"fas fa-star\"></i></div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ (getAverageScore() * 100).toFixed(1) }}%</div>\n <div class=\"stat-label\">Avg Score</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon duration\"><i class=\"fas fa-clock\"></i></div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ getAverageDuration().toFixed(1) }}s</div>\n <div class=\"stat-label\">Avg Duration</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon cost\"><i class=\"fas fa-dollar-sign\"></i></div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">${{ getTotalCost().toFixed(4) }}</div>\n <div class=\"stat-label\">Total Cost</div>\n </div>\n </div>\n </div>\n </div>\n }\n <!-- Test Results Table -->\n @if (!loadingTestRuns && testRuns.length > 0) {\n <div class=\"analytics-section\">\n <div class=\"analytics-header\">\n <h3><i class=\"fas fa-table\"></i> Test Results</h3>\n <div class=\"analytics-legend\">\n <span class=\"legend-item passed\"><i class=\"fas fa-check-circle\"></i> Passed</span>\n <span class=\"legend-item failed\"><i class=\"fas fa-times-circle\"></i> Failed</span>\n <span class=\"legend-item error\"><i class=\"fas fa-exclamation-circle\"></i> Error</span>\n <span class=\"legend-item skipped\"><i class=\"fas fa-forward\"></i> Skipped</span>\n </div>\n </div>\n <!-- Results Table -->\n <div class=\"results-table-wrapper\">\n <table class=\"results-table\">\n <thead>\n <tr>\n <th class=\"seq-col\">#</th>\n <th class=\"name-col\">Test Name</th>\n @if (evalPreferences.showExecution) {\n <th class=\"status-col\">Status</th>\n }\n @if (evalPreferences.showAuto) {\n <th class=\"score-col\">Auto Score</th>\n }\n @if (evalPreferences.showHuman) {\n <th class=\"feedback-col\">Human Score</th>\n }\n <th class=\"duration-col\">Duration</th>\n <th class=\"cost-col\">Cost</th>\n </tr>\n </thead>\n <tbody>\n @for (run of testRuns; track run; let i = $index) {\n <tr\n class=\"result-row\"\n [class.row-passed]=\"run.Status === 'Passed'\"\n [class.row-failed]=\"run.Status === 'Failed'\"\n [class.row-error]=\"run.Status === 'Error'\"\n [class.row-skipped]=\"run.Status === 'Skipped'\"\n (click)=\"openTestRun(run.ID)\">\n <td class=\"seq-col\">{{ i + 1 }}</td>\n <td class=\"name-col\">\n <div class=\"test-name-wrapper\">\n <span class=\"test-name\">{{ run.Test || 'Unknown Test' }}</span>\n @if (getRunTags(run).length > 0) {\n <div class=\"test-tags\">\n @for (tag of getRunTags(run).slice(0, 2); track tag) {\n <span class=\"tag-mini\">{{ tag }}</span>\n }\n </div>\n }\n </div>\n </td>\n @if (evalPreferences.showExecution) {\n <td class=\"status-col\">\n <span class=\"status-badge\" [ngClass]=\"'status-' + run.Status.toLowerCase()\">\n <i class=\"fas\"\n [class.fa-check-circle]=\"run.Status === 'Passed'\"\n [class.fa-times-circle]=\"run.Status === 'Failed'\"\n [class.fa-exclamation-circle]=\"run.Status === 'Error'\"\n [class.fa-forward]=\"run.Status === 'Skipped'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-spin]=\"run.Status === 'Running'\"></i>\n {{ run.Status }}\n </span>\n </td>\n }\n @if (evalPreferences.showAuto) {\n <td class=\"score-col\">\n @if (run.Score != null) {\n <div class=\"score-display\">\n <div class=\"score-bar-mini\">\n <div class=\"score-fill\"\n [style.width.%]=\"run.Score * 100\"\n [class.high]=\"run.Score >= 0.8\"\n [class.medium]=\"run.Score >= 0.5 && run.Score < 0.8\"\n [class.low]=\"run.Score < 0.5\"></div>\n </div>\n <span class=\"score-text\">{{ (run.Score * 100).toFixed(0) }}%</span>\n </div>\n }\n @if (run.Score == null) {\n <span class=\"na-value\">\u2014</span>\n }\n </td>\n }\n @if (evalPreferences.showHuman) {\n <td class=\"feedback-col\">\n @if (hasFeedback(run.ID)) {\n <div class=\"feedback-display\">\n <span class=\"feedback-rating\" [class.low]=\"getFeedbackRating(run.ID) <= 3\" [class.mid]=\"getFeedbackRating(run.ID) >= 4 && getFeedbackRating(run.ID) <= 6\" [class.high]=\"getFeedbackRating(run.ID) >= 7\">\n {{ getFeedbackRating(run.ID) }}/10\n </span>\n @if (getHumanIsCorrect(run.ID) !== null) {\n <span class=\"feedback-correctness\">\n <i class=\"fas\" [class.fa-check]=\"getHumanIsCorrect(run.ID) === true\" [class.fa-times]=\"getHumanIsCorrect(run.ID) === false\" [class.correct]=\"getHumanIsCorrect(run.ID) === true\" [class.incorrect]=\"getHumanIsCorrect(run.ID) === false\"></i>\n </span>\n }\n </div>\n }\n @if (!hasFeedback(run.ID)) {\n <span class=\"na-value needs-review\">\n <i class=\"fas fa-user-clock\"></i>\n </span>\n }\n </td>\n }\n <td class=\"duration-col\">\n @if (run.DurationSeconds) {\n <span>{{ run.DurationSeconds.toFixed(1) }}s</span>\n }\n @if (!run.DurationSeconds) {\n <span class=\"na-value\">\u2014</span>\n }\n </td>\n <td class=\"cost-col\">\n @if (run.CostUSD) {\n <span>${{ run.CostUSD.toFixed(4) }}</span>\n }\n @if (!run.CostUSD) {\n <span class=\"na-value\">\u2014</span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n }\n <!-- Empty State -->\n @if (!loadingTestRuns && testRunsLoaded && testRuns.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-chart-bar\"></i>\n </div>\n <h4>No Test Results Yet</h4>\n <p>Test runs will appear here once the suite execution completes.</p>\n </div>\n }\n </div>\n }\n\n <!-- Execution Tab -->\n @if (activeTab === 'execution') {\n <div class=\"execution-tab\">\n <mj-execution-context\n [machineName]=\"record.MachineName\"\n [machineId]=\"record.MachineID\"\n [runByUserName]=\"record.RunByUserName\"\n [runByUserEmail]=\"record.RunByUserEmail\"\n [runContextDetailsJson]=\"record.RunContextDetails\">\n </mj-execution-context>\n </div>\n }\n </div>\n\n <!-- Keyboard Shortcuts Toggle Button -->\n <button class=\"shortcuts-toggle\" (click)=\"toggleShortcuts()\" [title]=\"showShortcuts ? 'Hide keyboard shortcuts' : 'Show keyboard shortcuts'\">\n <i class=\"fas fa-keyboard\"></i>\n </button>\n\n <!-- Keyboard Shortcuts Hint (Desktop Only) -->\n @if (showShortcuts) {\n <div class=\"keyboard-shortcuts\">\n <div class=\"shortcuts-header\">\n <i class=\"fas fa-keyboard\"></i>\n Shortcuts\n <button class=\"shortcuts-close\" (click)=\"toggleShortcuts()\" title=\"Hide shortcuts\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"shortcut-list\">\n <div class=\"shortcut-item\">\n <span>Refresh</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>R</kbd></span>\n </div>\n <div class=\"shortcut-item\">\n <span>Re-run Suite</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>Shift</kbd><kbd>R</kbd></span>\n </div>\n <div class=\"shortcut-item\">\n <span>Switch Tabs</span>\n <span class=\"shortcut-keys\"><kbd>1</kbd>-<kbd>5</kbd></span>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: ["/* ===================================\n Test Suite Run Form - Premium UX\n World-class responsive design\n =================================== */\n\n/* CSS Custom Properties */\n:host {\n --suite-run-primary: #3b82f6;\n --suite-run-primary-light: #eff6ff;\n --suite-run-success: #10b981;\n --suite-run-success-light: #ecfdf5;\n --suite-run-danger: #ef4444;\n --suite-run-danger-light: #fef2f2;\n --suite-run-warning: #f59e0b;\n --suite-run-warning-light: #fffbeb;\n --suite-run-info: #8b5cf6;\n --suite-run-info-light: #f5f3ff;\n --suite-run-neutral: #6b7280;\n --suite-run-neutral-light: #f9fafb;\n --suite-run-bg: #f8fafc;\n --suite-run-card: #ffffff;\n --suite-run-border: #e2e8f0;\n --suite-run-text: #1e293b;\n --suite-run-text-secondary: #64748b;\n --suite-run-radius: 12px;\n --suite-run-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);\n --suite-run-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --suite-run-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* Base Container */\n.test-suite-run-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--suite-run-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n}\n\n/* ===================================\n Header Section\n =================================== */\n.suite-run-header {\n background: var(--suite-run-card);\n border-bottom: 1px solid var(--suite-run-border);\n padding: 20px 24px;\n}\n\n/* Breadcrumb */\n.breadcrumb {\n margin-bottom: 16px;\n}\n\n.breadcrumb ol {\n display: flex;\n align-items: center;\n gap: 4px;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: 13px;\n}\n\n.breadcrumb li {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.breadcrumb a {\n color: var(--suite-run-primary);\n text-decoration: none;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.15s;\n}\n\n.breadcrumb a:hover {\n background: rgba(59, 130, 246, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb .separator {\n font-size: 10px;\n color: var(--suite-run-text-secondary);\n margin: 0 4px;\n}\n\n.breadcrumb .current {\n color: var(--suite-run-text-secondary);\n font-weight: 500;\n}\n\n.breadcrumb-text {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Header Content */\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.header-left {\n display: flex;\n gap: 16px;\n align-items: flex-start;\n}\n\n.suite-run-icon {\n width: 56px;\n height: 56px;\n border-radius: var(--suite-run-radius);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n flex-shrink: 0;\n box-shadow: var(--suite-run-shadow);\n}\n\n.suite-run-info h1 {\n margin: 0 0 8px 0;\n font-size: 24px;\n font-weight: 700;\n color: var(--suite-run-text);\n letter-spacing: -0.025em;\n}\n\n.suite-run-meta {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.025em;\n}\n\n.status-badge.status-completed {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.status-badge.status-failed {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.status-badge.status-running {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.status-badge.status-pending {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.status-badge.status-cancelled {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n.meta-tag {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: var(--suite-run-neutral-light);\n border-radius: 6px;\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n.meta-tag i {\n font-size: 10px;\n opacity: 0.7;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n/* ===================================\n Metrics Bar\n =================================== */\n.metrics-bar {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.metric-card {\n display: flex;\n align-items: center;\n gap: 12px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border: 1px solid var(--suite-run-border);\n border-radius: 10px;\n padding: 14px;\n transition: var(--suite-run-transition);\n}\n\n.metric-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--suite-run-shadow);\n}\n\n.metric-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-card);\n border-radius: 10px;\n color: var(--suite-run-primary);\n font-size: 16px;\n box-shadow: var(--suite-run-shadow);\n}\n\n.metric-content {\n flex: 1;\n min-width: 0;\n}\n\n.metric-value {\n font-size: 18px;\n font-weight: 700;\n color: var(--suite-run-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.metric-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n margin-top: 2px;\n}\n\n/* ===================================\n Results Summary\n =================================== */\n.results-summary {\n display: flex;\n gap: 12px;\n padding-top: 20px;\n border-top: 1px solid var(--suite-run-border);\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.result-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: 10px;\n flex-shrink: 0;\n transition: var(--suite-run-transition);\n}\n\n.result-item:hover {\n transform: translateY(-2px);\n box-shadow: var(--suite-run-shadow);\n}\n\n.result-icon {\n font-size: 24px;\n}\n\n.result-content {\n display: flex;\n flex-direction: column;\n}\n\n.result-count {\n font-size: 20px;\n font-weight: 700;\n line-height: 1.2;\n}\n\n.result-label {\n font-size: 11px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.result-item.passed .result-icon,\n.result-item.passed .result-count {\n color: var(--suite-run-success);\n}\n\n.result-item.failed .result-icon,\n.result-item.failed .result-count {\n color: var(--suite-run-danger);\n}\n\n.result-item.error .result-icon,\n.result-item.error .result-count {\n color: var(--suite-run-warning);\n}\n\n.result-item.skipped .result-icon,\n.result-item.skipped .result-count {\n color: var(--suite-run-neutral);\n}\n\n.result-item.total .result-icon,\n.result-item.total .result-count {\n color: var(--suite-run-primary);\n}\n\n/* ===================================\n Tabs\n =================================== */\n.tabs-container {\n background: var(--suite-run-card);\n border-bottom: 1px solid var(--suite-run-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs {\n display: flex;\n padding: 0 24px;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n}\n\n.tabs::-webkit-scrollbar {\n display: none;\n}\n\n.tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--suite-run-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--suite-run-transition);\n white-space: nowrap;\n position: relative;\n}\n\n.tab:hover {\n color: var(--suite-run-primary);\n background: var(--suite-run-primary-light);\n}\n\n.tab.active {\n color: var(--suite-run-primary);\n border-bottom-color: var(--suite-run-primary);\n font-weight: 600;\n}\n\n.tab i {\n font-size: 15px;\n}\n\n.tab-badge {\n background: var(--suite-run-border);\n color: var(--suite-run-text-secondary);\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.tab.active .tab-badge {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.tab-shortcut {\n display: none;\n width: 18px;\n height: 18px;\n background: var(--suite-run-neutral-light);\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n color: var(--suite-run-text-secondary);\n align-items: center;\n justify-content: center;\n margin-left: 4px;\n}\n\n/* ===================================\n Tab Content\n =================================== */\n.tab-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n/* ===================================\n Overview Tab\n =================================== */\n.overview-tab {\n display: flex;\n flex-direction: column;\n gap: 20px;\n max-width: 800px;\n margin: 0 auto;\n width: 100%;\n}\n\n.result-hero {\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n padding: 48px 32px;\n text-align: center;\n border: 2px solid var(--suite-run-border);\n transition: var(--suite-run-transition);\n}\n\n.result-hero.passed {\n background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);\n border-color: var(--suite-run-success);\n}\n\n.result-hero.failed {\n background: linear-gradient(135deg, #fef2f2 0%, #fecaca 100%);\n border-color: var(--suite-run-danger);\n}\n\n.result-hero.running {\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border-color: var(--suite-run-primary);\n}\n\n.result-hero.pending {\n background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%);\n border-color: var(--suite-run-info);\n}\n\n.result-hero-icon {\n font-size: 72px;\n margin-bottom: 20px;\n}\n\n.result-hero.passed .result-hero-icon {\n color: var(--suite-run-success);\n}\n\n.result-hero.failed .result-hero-icon {\n color: var(--suite-run-danger);\n}\n\n.result-hero.running .result-hero-icon {\n color: var(--suite-run-primary);\n}\n\n.result-hero.pending .result-hero-icon {\n color: var(--suite-run-info);\n}\n\n.result-hero-text h2 {\n margin: 0 0 16px 0;\n font-size: 32px;\n font-weight: 800;\n color: var(--suite-run-text);\n letter-spacing: -0.025em;\n}\n\n.result-hero-stats {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 32px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--suite-run-text);\n}\n\n.stat-label {\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-divider {\n width: 1px;\n height: 40px;\n background: var(--suite-run-border);\n}\n\n/* Progress Section */\n.progress-section {\n background: var(--suite-run-primary-light);\n border: 1px solid rgba(59, 130, 246, 0.2);\n border-radius: var(--suite-run-radius);\n padding: 20px;\n text-align: center;\n}\n\n.progress-info {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 500;\n color: var(--suite-run-primary);\n margin-bottom: 8px;\n}\n\n.progress-info i {\n font-size: 20px;\n}\n\n.auto-refresh-notice {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n/* ===================================\n Test Runs Tab\n =================================== */\n.runs-tab {\n max-width: 900px;\n margin: 0 auto;\n width: 100%;\n}\n\n/* Loading Skeleton */\n.loading-state {\n animation: fadeIn 0.3s ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.skeleton-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.skeleton-card {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n border: 1px solid var(--suite-run-border);\n}\n\n.skeleton-sequence {\n width: 32px;\n height: 32px;\n background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n border-radius: 50%;\n}\n\n.skeleton-icon {\n width: 40px;\n height: 40px;\n background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n border-radius: 8px;\n}\n\n.skeleton-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.skeleton-line {\n height: 14px;\n background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n border-radius: 4px;\n}\n\n.skeleton-line.wide {\n width: 70%;\n}\n\n.skeleton-line.narrow {\n width: 40%;\n}\n\n@keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n/* Test Runs List */\n.test-runs-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.test-run-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.test-run-item:hover {\n background: var(--suite-run-primary-light);\n border-color: #93c5fd;\n transform: translateX(4px);\n}\n\n.test-run-item:active {\n transform: translateX(2px);\n}\n\n.run-sequence {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-neutral-light);\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n color: var(--suite-run-text-secondary);\n flex-shrink: 0;\n}\n\n.run-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n color: white;\n font-size: 16px;\n flex-shrink: 0;\n box-shadow: var(--suite-run-shadow);\n}\n\n.run-content {\n flex: 1;\n min-width: 0;\n}\n\n.run-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--suite-run-text);\n margin-bottom: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n flex-wrap: wrap;\n}\n\n.run-status {\n font-weight: 700;\n}\n\n.run-score,\n.run-duration {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.run-score i,\n.run-duration i {\n font-size: 10px;\n opacity: 0.7;\n}\n\n.test-run-item > i {\n color: #cbd5e1;\n font-size: 14px;\n transition: var(--suite-run-transition);\n}\n\n.test-run-item:hover > i {\n color: var(--suite-run-primary);\n transform: translateX(4px);\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n border: 2px dashed var(--suite-run-border);\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-neutral-light);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 32px;\n color: #cbd5e1;\n}\n\n.empty-state h4 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n color: var(--suite-run-text-secondary);\n max-width: 300px;\n}\n\n/* ===================================\n Details Tab\n =================================== */\n.details-tab {\n max-width: 900px;\n margin: 0 auto;\n width: 100%;\n}\n\n.details-card {\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n padding: 24px;\n box-shadow: var(--suite-run-shadow);\n}\n\n.details-card h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 20px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--suite-run-text);\n padding-bottom: 12px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.details-card h3 i {\n color: var(--suite-run-primary);\n}\n\n.details-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--suite-run-text);\n word-wrap: break-word;\n}\n\n.detail-value.monospace {\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n font-size: 12px;\n background: var(--suite-run-neutral-light);\n padding: 6px 10px;\n border-radius: 6px;\n}\n\n.detail-value a {\n color: var(--suite-run-primary);\n text-decoration: none;\n font-weight: 500;\n transition: var(--suite-run-transition);\n}\n\n.detail-value a:hover {\n color: #2563eb;\n text-decoration: underline;\n}\n\n.status-inline {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.status-inline.status-completed {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.status-inline.status-failed {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.status-inline.status-running {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.status-inline.status-pending {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.status-inline.status-cancelled {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n/* ===================================\n Keyboard Shortcuts\n =================================== */\n/* Toggle button - visible when shortcuts are hidden */\n.shortcuts-toggle {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n box-shadow: var(--suite-run-shadow);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--suite-run-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--suite-run-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--suite-run-primary);\n border-color: var(--suite-run-primary);\n}\n\n.keyboard-shortcuts {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n padding: 12px 16px;\n box-shadow: var(--suite-run-shadow-lg);\n font-size: 12px;\n z-index: 100;\n opacity: 0.9;\n transition: var(--suite-run-transition);\n}\n\n.keyboard-shortcuts:hover {\n opacity: 1;\n}\n\n.shortcuts-header {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n color: var(--suite-run-text);\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.shortcuts-header i {\n color: var(--suite-run-primary);\n}\n\n.shortcuts-close {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--suite-run-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--suite-run-transition);\n}\n\n.shortcuts-close:hover {\n color: var(--suite-run-text);\n background: var(--suite-run-border);\n}\n\n.shortcut-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.shortcut-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n}\n\n.shortcut-item span:first-child {\n color: var(--suite-run-text-secondary);\n}\n\n.shortcut-keys {\n display: flex;\n gap: 4px;\n}\n\nkbd {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n font-family: inherit;\n font-size: 10px;\n font-weight: 600;\n color: var(--suite-run-text);\n box-shadow: 0 1px 0 #94a3b8;\n}\n\n/* ===================================\n Responsive Design - Tablet\n =================================== */\n@media (max-width: 1024px) {\n .suite-run-header {\n padding: 16px 20px;\n }\n\n .metrics-bar {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .result-hero-stats {\n flex-direction: column;\n gap: 16px;\n }\n\n .stat-divider {\n display: none;\n }\n\n .details-grid {\n grid-template-columns: 1fr;\n }\n\n .tab-shortcut {\n display: none;\n }\n}\n\n/* ===================================\n Responsive Design - Mobile\n =================================== */\n@media (max-width: 768px) {\n .suite-run-header {\n padding: 16px;\n }\n\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-left {\n width: 100%;\n }\n\n .suite-run-icon {\n width: 48px;\n height: 48px;\n font-size: 20px;\n }\n\n .suite-run-info h1 {\n font-size: 20px;\n }\n\n .header-actions {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions button {\n flex: 1;\n }\n\n .metrics-bar {\n grid-template-columns: repeat(2, 1fr);\n gap: 8px;\n }\n\n .metric-card {\n padding: 12px;\n flex-direction: column;\n text-align: center;\n gap: 8px;\n }\n\n .metric-icon {\n width: 36px;\n height: 36px;\n }\n\n .metric-value {\n font-size: 16px;\n }\n\n .results-summary {\n gap: 8px;\n padding-top: 16px;\n flex-wrap: nowrap;\n overflow-x: auto;\n padding-bottom: 8px;\n margin-bottom: -8px;\n }\n\n .result-item {\n padding: 10px 12px;\n min-width: 90px;\n }\n\n .result-icon {\n font-size: 20px;\n }\n\n .result-count {\n font-size: 18px;\n }\n\n .tabs {\n padding: 0 16px;\n }\n\n .tab {\n padding: 14px 16px;\n font-size: 13px;\n }\n\n .tab-content {\n padding: 16px;\n }\n\n .result-hero {\n padding: 32px 20px;\n }\n\n .result-hero-icon {\n font-size: 56px;\n }\n\n .result-hero-text h2 {\n font-size: 24px;\n }\n\n .stat-value {\n font-size: 20px;\n }\n\n .test-run-item {\n padding: 14px;\n }\n\n .run-sequence {\n width: 28px;\n height: 28px;\n font-size: 12px;\n }\n\n .run-icon {\n width: 36px;\n height: 36px;\n font-size: 14px;\n }\n\n .run-name {\n font-size: 13px;\n }\n\n .run-meta {\n gap: 10px;\n font-size: 11px;\n }\n\n .empty-state {\n padding: 40px 16px;\n }\n\n .empty-icon {\n width: 64px;\n height: 64px;\n }\n\n .empty-icon i {\n font-size: 28px;\n }\n\n .details-card {\n padding: 16px;\n }\n\n .details-grid {\n gap: 16px;\n }\n\n .keyboard-shortcuts, .shortcuts-toggle {\n display: none;\n }\n}\n\n/* ===================================\n Responsive Design - Small Mobile\n =================================== */\n@media (max-width: 480px) {\n .suite-run-header {\n padding: 12px;\n }\n\n .breadcrumb {\n font-size: 12px;\n margin-bottom: 12px;\n }\n\n .suite-run-icon {\n width: 44px;\n height: 44px;\n font-size: 18px;\n }\n\n .suite-run-info h1 {\n font-size: 18px;\n }\n\n .suite-run-meta {\n gap: 8px;\n }\n\n .status-badge {\n padding: 4px 10px;\n font-size: 11px;\n }\n\n .meta-tag {\n font-size: 11px;\n padding: 3px 8px;\n }\n\n .metrics-bar {\n grid-template-columns: 1fr 1fr;\n }\n\n .metric-card {\n padding: 10px;\n gap: 6px;\n }\n\n .metric-icon {\n width: 32px;\n height: 32px;\n font-size: 14px;\n }\n\n .metric-value {\n font-size: 14px;\n }\n\n .metric-label {\n font-size: 9px;\n }\n\n .result-item {\n padding: 8px 10px;\n min-width: 80px;\n gap: 8px;\n }\n\n .result-icon {\n font-size: 18px;\n }\n\n .result-count {\n font-size: 16px;\n }\n\n .result-label {\n font-size: 9px;\n }\n\n .tabs {\n padding: 0 12px;\n }\n\n .tab {\n padding: 12px 14px;\n gap: 6px;\n }\n\n .tab i {\n font-size: 14px;\n }\n\n .tab-content {\n padding: 12px;\n }\n\n .result-hero {\n padding: 24px 16px;\n }\n\n .result-hero-icon {\n font-size: 48px;\n margin-bottom: 16px;\n }\n\n .result-hero-text h2 {\n font-size: 20px;\n margin-bottom: 12px;\n }\n\n .stat-value {\n font-size: 18px;\n }\n\n .stat-label {\n font-size: 10px;\n }\n\n .progress-section {\n padding: 16px;\n }\n\n .progress-info {\n font-size: 14px;\n }\n\n .test-run-item {\n padding: 12px;\n gap: 10px;\n }\n\n .run-sequence {\n width: 24px;\n height: 24px;\n font-size: 11px;\n }\n\n .run-icon {\n width: 32px;\n height: 32px;\n font-size: 12px;\n border-radius: 8px;\n }\n\n .run-name {\n font-size: 12px;\n margin-bottom: 3px;\n }\n\n .run-meta {\n gap: 8px;\n font-size: 10px;\n }\n\n .empty-state {\n padding: 32px 12px;\n }\n\n .empty-state h4 {\n font-size: 16px;\n }\n\n .empty-state p {\n font-size: 13px;\n }\n\n .details-card {\n padding: 14px;\n }\n\n .details-card h3 {\n font-size: 14px;\n margin-bottom: 16px;\n }\n\n .detail-label {\n font-size: 10px;\n }\n\n .detail-value {\n font-size: 13px;\n }\n}\n\n/* ===================================\n Touch Device Optimizations\n =================================== */\n@media (hover: none) and (pointer: coarse) {\n .test-run-item {\n min-height: 64px;\n }\n\n .test-run-item:hover {\n transform: none;\n background: var(--suite-run-card);\n border-color: var(--suite-run-border);\n }\n\n .test-run-item:active {\n background: var(--suite-run-primary-light);\n border-color: #93c5fd;\n }\n\n .tab:hover {\n background: transparent;\n color: var(--suite-run-text-secondary);\n }\n\n .tab:active {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n }\n\n .metric-card:hover {\n transform: none;\n box-shadow: none;\n }\n\n .result-item:hover {\n transform: none;\n box-shadow: none;\n }\n\n .keyboard-shortcuts {\n display: none;\n }\n}\n\n/* ===================================\n Print Styles\n =================================== */\n@media print {\n .suite-run-header {\n background: white;\n box-shadow: none;\n border-bottom: 2px solid #000;\n }\n\n .tabs-container,\n .header-actions,\n .keyboard-shortcuts {\n display: none;\n }\n\n .tab-content {\n padding: 20px 0;\n }\n\n .result-hero,\n .test-run-item,\n .details-card {\n box-shadow: none;\n border: 1px solid #ccc;\n }\n}\n\n/* ===================================\n Dark Mode Support (Future)\n =================================== */\n@media (prefers-color-scheme: dark) {\n /* Ready for dark mode implementation */\n}\n\n/* ===================================\n Tags Bar - Sleek Inline Display\n =================================== */\n.tags-bar {\n margin-top: 16px;\n padding: 8px 14px;\n background: linear-gradient(135deg, rgba(59, 130, 246, 0.04) 0%, rgba(59, 130, 246, 0.08) 100%);\n border: 1px solid rgba(59, 130, 246, 0.15);\n border-radius: 8px;\n max-width: 600px;\n}\n\n.tags-bar-content {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.tags-bar-label {\n color: var(--suite-run-text-secondary);\n font-size: 14px;\n}\n\n.tags-bar-label i {\n opacity: 0.6;\n}\n\n.tags-bar-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n flex: 1;\n}\n\n.tag-inline {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n letter-spacing: 0.01em;\n}\n\n.tags-bar-empty {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n opacity: 0.7;\n flex: 1;\n}\n\n.tags-bar-edit {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n background: transparent;\n border: 1px dashed var(--suite-run-border);\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.tags-bar-edit:hover {\n border-color: var(--suite-run-primary);\n color: var(--suite-run-primary);\n background: var(--suite-run-primary-light);\n}\n\n.tags-bar-edit i {\n font-size: 10px;\n}\n\n/* ===================================\n Tags Editor Panel - Expanded Edit Mode\n =================================== */\n.tags-editor-panel {\n margin-top: 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-primary);\n border-radius: 10px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(59, 130, 246, 0.1);\n max-width: 600px;\n}\n\n.tags-editor-header {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n background: var(--suite-run-primary-light);\n border-bottom: 1px solid rgba(59, 130, 246, 0.2);\n}\n\n.tags-editor-title {\n font-size: 13px;\n font-weight: 600;\n color: var(--suite-run-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.tags-editor-body {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.tags-editor-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n min-height: 32px;\n}\n\n.tag-editable {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 5px 8px 5px 12px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-primary);\n color: var(--suite-run-primary);\n border-radius: 14px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.tag-remove-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n background: transparent;\n border: none;\n color: var(--suite-run-primary);\n cursor: pointer;\n border-radius: 50%;\n font-size: 9px;\n opacity: 0.6;\n transition: var(--suite-run-transition);\n}\n\n.tag-remove-btn:hover {\n opacity: 1;\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.tags-empty-hint {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n font-style: italic;\n padding: 4px 0;\n}\n\n.tags-editor-input {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.tag-text-input {\n flex: 1;\n padding: 10px 14px;\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n font-size: 13px;\n background: var(--suite-run-neutral-light);\n}\n\n.tag-text-input:focus {\n outline: none;\n border-color: var(--suite-run-primary);\n background: var(--suite-run-card);\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.tag-text-input::placeholder {\n color: var(--suite-run-text-secondary);\n opacity: 0.6;\n}\n\n.tags-editor-footer {\n display: flex;\n justify-content: flex-start;\n gap: 8px;\n padding: 12px 16px;\n background: var(--suite-run-neutral-light);\n border-top: 1px solid var(--suite-run-border);\n}\n\n/* ===================================\n Runs Toolbar\n =================================== */\n.runs-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding: 12px 16px;\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.run-filters {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.filter-btn {\n padding: 6px 14px;\n border: 1px solid var(--suite-run-border);\n background: var(--suite-run-card);\n border-radius: 20px;\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n cursor: pointer;\n transition: var(--suite-run-transition);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn:hover {\n border-color: var(--suite-run-primary);\n color: var(--suite-run-primary);\n}\n\n.filter-btn.active {\n background: var(--suite-run-primary);\n border-color: var(--suite-run-primary);\n color: white;\n}\n\n.filter-btn.passed:hover,\n.filter-btn.passed.active {\n background: var(--suite-run-success);\n border-color: var(--suite-run-success);\n color: white;\n}\n\n.filter-btn.failed:hover,\n.filter-btn.failed.active {\n background: var(--suite-run-danger);\n border-color: var(--suite-run-danger);\n color: white;\n}\n\n.filter-btn.error:hover,\n.filter-btn.error.active {\n background: var(--suite-run-warning);\n border-color: var(--suite-run-warning);\n color: white;\n}\n\n.runs-actions {\n display: flex;\n gap: 8px;\n}\n\n/* ===================================\n Test Run Card (Expandable)\n =================================== */\n.test-run-card {\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n overflow: hidden;\n transition: var(--suite-run-transition);\n margin-bottom: 10px;\n}\n\n.test-run-card:hover {\n box-shadow: var(--suite-run-shadow);\n}\n\n.test-run-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.test-run-item:hover {\n background: var(--suite-run-primary-light);\n}\n\n.run-header-row {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n}\n\n.run-feedback-indicator {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.run-feedback-indicator i {\n font-size: 10px;\n}\n\n.run-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 6px;\n}\n\n.tag-mini {\n display: inline-flex;\n padding: 2px 8px;\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-text-secondary);\n border-radius: 10px;\n font-size: 10px;\n font-weight: 500;\n}\n\n.tag-chip {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border: 1px solid #bfdbfe;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: #1d4ed8;\n}\n\n.run-expand {\n color: var(--suite-run-text-secondary);\n transition: var(--suite-run-transition);\n}\n\n.test-run-item:hover .run-expand {\n color: var(--suite-run-primary);\n}\n\n.run-cost {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.run-cost i {\n font-size: 10px;\n opacity: 0.7;\n}\n\n/* ===================================\n Inline Feedback\n =================================== */\n.inline-feedback {\n padding: 0 16px 16px;\n animation: slideDown 0.2s ease-out;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.feedback-divider {\n height: 1px;\n background: var(--suite-run-border);\n margin-bottom: 16px;\n}\n\n.feedback-section {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.feedback-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.inline-rating {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.rating-numbers {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.rating-btn {\n width: 36px;\n height: 36px;\n border: 2px solid var(--suite-run-border);\n border-radius: 8px;\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-text-secondary);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.rating-btn:hover,\n.rating-btn.hover {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.rating-btn.low:hover,\n.rating-btn.low.hover {\n border-color: var(--suite-run-danger);\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.rating-btn.mid:hover,\n.rating-btn.mid.hover {\n border-color: var(--suite-run-warning);\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.rating-btn.high:hover,\n.rating-btn.high.hover {\n border-color: var(--suite-run-success);\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.rating-btn.selected {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.rating-btn.selected.low {\n border-color: var(--suite-run-danger);\n background: var(--suite-run-danger);\n color: white;\n}\n\n.rating-btn.selected.mid {\n border-color: var(--suite-run-warning);\n background: var(--suite-run-warning);\n color: white;\n}\n\n.rating-btn.selected.high {\n border-color: var(--suite-run-success);\n background: var(--suite-run-success);\n color: white;\n}\n\n.rating-info {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 14px;\n background: var(--suite-run-neutral-light);\n border-radius: 8px;\n}\n\n.rating-value {\n font-size: 18px;\n font-weight: 700;\n color: var(--suite-run-text);\n}\n\n.rating-label-text {\n font-size: 13px;\n color: var(--suite-run-text-secondary);\n}\n\n.correctness-row {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.correctness-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--suite-run-text);\n}\n\n.correctness-options {\n display: flex;\n gap: 16px;\n}\n\n.radio-opt {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 13px;\n color: var(--suite-run-text-secondary);\n}\n\n.radio-opt input[type=\"radio\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.comments-row {\n width: 100%;\n}\n\n.feedback-textarea {\n width: 100%;\n padding: 12px;\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n resize: vertical;\n min-height: 80px;\n}\n\n.feedback-textarea:focus {\n outline: none;\n border-color: var(--suite-run-primary);\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);\n}\n\n.feedback-actions {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n padding-top: 8px;\n}\n\n/* ===================================\n Mobile Responsive Updates\n =================================== */\n@media (max-width: 768px) {\n .tags-bar {\n padding: 8px 12px;\n }\n\n .tags-bar-content {\n gap: 8px;\n }\n\n .tag-inline {\n padding: 3px 8px;\n font-size: 10px;\n }\n\n .tags-editor-panel {\n margin-top: 12px;\n }\n\n .tags-editor-body {\n padding: 12px;\n }\n\n .tags-editor-footer {\n padding: 10px 12px;\n }\n\n .runs-toolbar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .run-filters {\n justify-content: center;\n }\n\n .runs-actions {\n justify-content: center;\n }\n\n .rating-numbers {\n justify-content: center;\n }\n\n .rating-btn {\n width: 32px;\n height: 32px;\n font-size: 12px;\n }\n\n .correctness-row {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .feedback-actions {\n flex-direction: column;\n }\n\n .feedback-actions button {\n width: 100%;\n }\n}\n\n/* ===================================\n Animations\n =================================== */\n@keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n}\n\n.result-hero.running .result-hero-icon {\n animation: pulse 2s ease-in-out infinite;\n}\n\n/* Tab content fade in */\n.overview-tab,\n.runs-tab,\n.details-tab,\n.analytics-tab {\n animation: fadeIn 0.3s ease;\n}\n\n/* ===================================\n Analytics Tab\n =================================== */\n.analytics-tab {\n max-width: 1200px;\n margin: 0 auto;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.analytics-section {\n background: var(--suite-run-card);\n border-radius: var(--suite-run-radius);\n padding: 24px;\n box-shadow: var(--suite-run-shadow);\n}\n\n.analytics-section h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 20px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--suite-run-text);\n padding-bottom: 12px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.analytics-section h3 i {\n color: var(--suite-run-primary);\n}\n\n.analytics-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 20px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.analytics-header h3 {\n margin: 0;\n padding: 0;\n border: none;\n}\n\n.analytics-legend {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.legend-item.passed {\n color: var(--suite-run-success);\n}\n\n.legend-item.failed {\n color: var(--suite-run-danger);\n}\n\n.legend-item.error {\n color: var(--suite-run-warning);\n}\n\n.legend-item.skipped {\n color: var(--suite-run-neutral);\n}\n\n/* Performance Matrix */\n.performance-matrix {\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.matrix-row {\n display: grid;\n grid-template-columns: 2fr 120px 150px 100px 100px;\n border-bottom: 1px solid var(--suite-run-border);\n transition: var(--suite-run-transition);\n cursor: pointer;\n}\n\n.matrix-row:last-child {\n border-bottom: none;\n}\n\n.matrix-row:hover:not(.matrix-header-row) {\n background: var(--suite-run-primary-light);\n}\n\n.matrix-row.passed {\n border-left: 4px solid var(--suite-run-success);\n}\n\n.matrix-row.failed {\n border-left: 4px solid var(--suite-run-danger);\n}\n\n.matrix-row.error {\n border-left: 4px solid var(--suite-run-warning);\n}\n\n.matrix-row.skipped {\n border-left: 4px solid var(--suite-run-neutral);\n}\n\n.matrix-header-row {\n background: var(--suite-run-neutral-light);\n font-weight: 600;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n cursor: default;\n}\n\n.matrix-cell {\n padding: 12px 16px;\n display: flex;\n align-items: center;\n}\n\n.test-name-cell {\n gap: 12px;\n}\n\n.test-sequence {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--suite-run-neutral-light);\n border-radius: 50%;\n font-size: 11px;\n font-weight: 600;\n color: var(--suite-run-text-secondary);\n flex-shrink: 0;\n}\n\n.test-name {\n font-weight: 500;\n color: var(--suite-run-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.status-indicator {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.status-indicator.status-passed {\n color: var(--suite-run-success);\n}\n\n.status-indicator.status-failed {\n color: var(--suite-run-danger);\n}\n\n.status-indicator.status-error {\n color: var(--suite-run-warning);\n}\n\n.status-indicator.status-skipped {\n color: var(--suite-run-neutral);\n}\n\n.status-indicator.status-pending {\n color: var(--suite-run-info);\n}\n\n.status-indicator.status-running {\n color: var(--suite-run-primary);\n}\n\n.score-bar {\n position: relative;\n width: 100%;\n height: 20px;\n background: var(--suite-run-neutral-light);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.score-fill {\n height: 100%;\n border-radius: 10px;\n transition: width 0.3s ease;\n}\n\n.score-fill.high {\n background: linear-gradient(90deg, var(--suite-run-success) 0%, #34d399 100%);\n}\n\n.score-fill.medium {\n background: linear-gradient(90deg, var(--suite-run-warning) 0%, #fbbf24 100%);\n}\n\n.score-fill.low {\n background: linear-gradient(90deg, var(--suite-run-danger) 0%, #f87171 100%);\n}\n\n.score-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 11px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.na-value {\n color: var(--suite-run-text-secondary);\n opacity: 0.6;\n}\n\n/* Summary Statistics Grid */\n.stats-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n}\n\n.stat-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border: 1px solid var(--suite-run-border);\n border-radius: 12px;\n transition: var(--suite-run-transition);\n}\n\n.stat-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--suite-run-shadow);\n}\n\n.stat-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n font-size: 20px;\n}\n\n.stat-icon.passed {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.stat-icon.failed {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.stat-icon.score {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.stat-icon.duration {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n.stat-icon.cost {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.stat-content {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.stat-card .stat-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--suite-run-text);\n}\n\n.stat-card .stat-label {\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat-percent {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n/* Responsive Analytics */\n@media (max-width: 768px) {\n .analytics-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .matrix-row {\n grid-template-columns: 1fr;\n gap: 8px;\n padding: 12px;\n }\n\n .matrix-header-row {\n display: none;\n }\n\n .matrix-cell {\n padding: 4px 0;\n }\n\n .test-name-cell::before,\n .status-cell::before,\n .score-cell::before,\n .duration-cell::before,\n .cost-cell::before {\n font-size: 10px;\n font-weight: 600;\n color: var(--suite-run-text-secondary);\n text-transform: uppercase;\n margin-right: 8px;\n min-width: 80px;\n }\n\n .status-cell::before { content: 'Status:'; }\n .score-cell::before { content: 'Score:'; }\n .duration-cell::before { content: 'Duration:'; }\n .cost-cell::before { content: 'Cost:'; }\n\n .stats-grid {\n grid-template-columns: 1fr 1fr;\n }\n\n .stat-card {\n padding: 16px;\n }\n\n .stat-icon {\n width: 40px;\n height: 40px;\n font-size: 16px;\n }\n\n .stat-card .stat-value {\n font-size: 20px;\n }\n}\n\n/* Focus States for Accessibility */\n.tab:focus-visible,\n.test-run-item:focus-visible,\nbutton:focus-visible {\n outline: 2px solid var(--suite-run-primary);\n outline-offset: 2px;\n}\n\n/* ===================================\n Analytics Loading State\n =================================== */\n.analytics-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n padding: 60px 20px;\n color: var(--suite-run-text-secondary);\n}\n\n.analytics-loading i {\n font-size: 32px;\n color: var(--suite-run-primary);\n}\n\n/* ===================================\n Results Table\n =================================== */\n.results-table-wrapper {\n border: 1px solid var(--suite-run-border);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.results-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.results-table thead {\n background: var(--suite-run-neutral-light);\n}\n\n.results-table th {\n padding: 12px 16px;\n text-align: left;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--suite-run-text-secondary);\n border-bottom: 1px solid var(--suite-run-border);\n}\n\n.results-table td {\n padding: 12px 16px;\n border-bottom: 1px solid #f1f5f9;\n vertical-align: middle;\n}\n\n.results-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n/* Column widths - Fixed columns fit content, name column takes remainder (max 50%) */\n.seq-col {\n width: 40px;\n min-width: 40px;\n text-align: center;\n white-space: nowrap;\n}\n\n.name-col {\n /* Take remaining space, but cap at 50% of table width */\n width: auto;\n max-width: 50%;\n}\n\n.status-col {\n width: 1%; /* Shrink to fit content */\n white-space: nowrap;\n}\n\n.score-col {\n width: 1%; /* Shrink to fit content */\n min-width: 120px; /* Score bar needs some minimum width */\n white-space: nowrap;\n}\n\n.duration-col {\n width: 1%; /* Shrink to fit content */\n white-space: nowrap;\n text-align: right;\n}\n\n.cost-col {\n width: 1%; /* Shrink to fit content */\n white-space: nowrap;\n text-align: right;\n}\n\n/* Result Row */\n.result-row {\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.result-row:hover {\n background: var(--suite-run-primary-light);\n}\n\n.result-row.row-passed {\n border-left: 4px solid var(--suite-run-success);\n}\n\n.result-row.row-failed {\n border-left: 4px solid var(--suite-run-danger);\n}\n\n.result-row.row-error {\n border-left: 4px solid var(--suite-run-warning);\n}\n\n.result-row.row-skipped {\n border-left: 4px solid var(--suite-run-neutral);\n}\n\n/* Test Name Wrapper */\n.test-name-wrapper {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.test-name-wrapper .test-name {\n font-weight: 500;\n color: var(--suite-run-text);\n}\n\n.test-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n/* Score Display */\n.score-display {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.score-bar-mini {\n flex: 1;\n height: 6px;\n background: var(--suite-run-neutral-light);\n border-radius: 3px;\n overflow: hidden;\n min-width: 60px;\n}\n\n.score-bar-mini .score-fill {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.score-bar-mini .score-fill.high {\n background: var(--suite-run-success);\n}\n\n.score-bar-mini .score-fill.medium {\n background: var(--suite-run-warning);\n}\n\n.score-bar-mini .score-fill.low {\n background: var(--suite-run-danger);\n}\n\n.score-display .score-text {\n position: static;\n transform: none;\n font-size: 12px;\n font-weight: 600;\n color: var(--suite-run-text);\n min-width: 35px;\n text-align: right;\n}\n\n/* Status Badge in Table */\n.results-table .status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.results-table .status-badge.status-passed {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.results-table .status-badge.status-failed {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.results-table .status-badge.status-error {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.results-table .status-badge.status-skipped {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n.results-table .status-badge.status-pending {\n background: var(--suite-run-info-light);\n color: var(--suite-run-info);\n}\n\n.results-table .status-badge.status-running {\n background: var(--suite-run-primary-light);\n color: var(--suite-run-primary);\n}\n\n/* Responsive Results Table */\n@media (max-width: 768px) {\n .results-table-wrapper {\n overflow-x: auto;\n }\n\n .results-table {\n min-width: 600px;\n }\n\n .results-table th,\n .results-table td {\n padding: 10px 12px;\n }\n\n .name-col {\n min-width: 150px;\n }\n}\n\n/* ===================================\n High Contrast Mode\n =================================== */\n@media (prefers-contrast: high) {\n .status-badge,\n .status-inline {\n border: 2px solid currentColor;\n }\n\n .test-run-item {\n border-width: 2px;\n }\n\n .tab.active {\n border-bottom-width: 4px;\n }\n}\n\n/* ===================================\n Evaluation Summary\n =================================== */\n.evaluation-summary {\n margin-top: 20px;\n}\n\n.eval-summary-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 16px;\n}\n\n.eval-summary-card {\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n overflow: hidden;\n transition: var(--suite-run-transition);\n}\n\n.eval-summary-card:hover {\n box-shadow: var(--suite-run-shadow);\n}\n\n.eval-card-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--suite-run-neutral-light);\n border-bottom: 1px solid var(--suite-run-border);\n font-size: 13px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.eval-card-header i {\n color: var(--suite-run-primary);\n}\n\n.eval-card-body {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.eval-stat-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n}\n\n.eval-stat-label {\n font-size: 12px;\n color: var(--suite-run-text-secondary);\n}\n\n.eval-stat-value {\n font-size: 14px;\n font-weight: 600;\n color: var(--suite-run-text);\n}\n\n.eval-stat-value.correct {\n color: var(--suite-run-success);\n}\n\n.eval-stat-value.incorrect {\n color: var(--suite-run-danger);\n font-weight: 500;\n font-size: 12px;\n}\n\n.eval-stat-value.error {\n color: var(--suite-run-danger);\n}\n\n.eval-stat-value.timeout {\n color: var(--suite-run-warning);\n}\n\n.eval-card-footer {\n padding: 10px 16px;\n background: var(--suite-run-warning-light);\n border-top: 1px solid rgba(245, 158, 11, 0.2);\n}\n\n.pending-badge {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--suite-run-warning);\n}\n\n.pending-badge i {\n font-size: 11px;\n}\n\n/* ===================================\n Needs Review Section\n =================================== */\n.needs-review-section {\n background: var(--suite-run-card);\n border: 1px solid var(--suite-run-border);\n border-radius: var(--suite-run-radius);\n overflow: hidden;\n}\n\n.needs-review-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 20px;\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border-bottom: 1px solid rgba(245, 158, 11, 0.3);\n}\n\n.needs-review-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #92400e;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.needs-review-header h3 i {\n font-size: 16px;\n}\n\n.review-count {\n font-size: 12px;\n font-weight: 500;\n color: #92400e;\n background: rgba(255, 255, 255, 0.6);\n padding: 2px 10px;\n border-radius: 12px;\n}\n\n.needs-review-list {\n padding: 8px;\n}\n\n.review-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-radius: 8px;\n cursor: pointer;\n transition: var(--suite-run-transition);\n}\n\n.review-item:hover {\n background: var(--suite-run-primary-light);\n}\n\n.review-item-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.review-item.high-priority .review-item-icon {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.review-item.medium-priority .review-item-icon {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.review-item:not(.high-priority):not(.medium-priority) .review-item-icon {\n background: var(--suite-run-neutral-light);\n color: var(--suite-run-neutral);\n}\n\n.review-item-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.review-item-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--suite-run-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.review-item-reason {\n font-size: 11px;\n color: var(--suite-run-text-secondary);\n}\n\n.review-item-action {\n color: var(--suite-run-text-secondary);\n font-size: 12px;\n}\n\n.review-item:hover .review-item-action {\n color: var(--suite-run-primary);\n}\n\n.review-more {\n display: flex;\n justify-content: center;\n padding: 8px;\n border-top: 1px solid var(--suite-run-border);\n}\n\n/* Mobile Responsive for Evaluation */\n@media (max-width: 768px) {\n .eval-summary-grid {\n grid-template-columns: 1fr;\n }\n\n .eval-card-header {\n padding: 10px 14px;\n font-size: 12px;\n }\n\n .eval-card-body {\n padding: 12px 14px;\n }\n\n .needs-review-header {\n padding: 12px 16px;\n }\n\n .needs-review-header h3 {\n font-size: 13px;\n }\n\n .review-item {\n padding: 10px 12px;\n }\n\n .review-item-icon {\n width: 28px;\n height: 28px;\n font-size: 12px;\n }\n}\n\n/* ===================================\n Feedback Column in Analytics Table\n =================================== */\n.feedback-col {\n width: 1%; /* Shrink to fit content */\n white-space: nowrap;\n text-align: center;\n}\n\n.feedback-display {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.feedback-rating {\n font-size: 13px;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: 4px;\n background: var(--suite-run-neutral-light);\n}\n\n.feedback-rating.low {\n background: var(--suite-run-danger-light);\n color: var(--suite-run-danger);\n}\n\n.feedback-rating.mid {\n background: var(--suite-run-warning-light);\n color: var(--suite-run-warning);\n}\n\n.feedback-rating.high {\n background: var(--suite-run-success-light);\n color: var(--suite-run-success);\n}\n\n.feedback-correctness i {\n font-size: 12px;\n}\n\n.feedback-correctness i.correct {\n color: var(--suite-run-success);\n}\n\n.feedback-correctness i.incorrect {\n color: var(--suite-run-danger);\n}\n\n.na-value.needs-review {\n color: var(--suite-run-warning);\n opacity: 0.7;\n}\n\n.na-value.needs-review i {\n font-size: 14px;\n}\n"] }]
2326
+ }], null, { handleKeyboardShortcut: [{
2294
2327
  type: HostListener,
2295
2328
  args: ['document:keydown', ['$event']]
2296
2329
  }] }); })();
2297
2330
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestSuiteRunFormComponentExtended, { className: "TestSuiteRunFormComponentExtended", filePath: "src/lib/custom/Tests/test-suite-run-form.component.ts", lineNumber: 35 }); })();
2298
- export function LoadTestSuiteRunFormComponentExtended() {
2299
- // Prevents tree-shaking
2300
- }
2301
- LoadTestSuiteRunFormComponentExtended();
2302
2331
  //# sourceMappingURL=test-suite-run-form.component.js.map