@memberjunction/ng-core-entity-forms 3.3.0 → 4.0.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 (1916) hide show
  1. package/README.md +2 -2
  2. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js +1 -1
  3. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts +13 -25
  4. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts.map +1 -1
  5. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +33 -379
  6. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
  7. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.js +1 -1
  8. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.js +1 -1
  9. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.js +1 -1
  10. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.js +1 -1
  11. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.js +1 -1
  12. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.js +1 -1
  13. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.js +1 -1
  14. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.js +1 -1
  15. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.js +1 -1
  16. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.js +1 -1
  17. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.js +1 -1
  18. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js +1 -1
  19. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  20. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +15 -14
  21. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  22. package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js +1 -0
  23. package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js.map +1 -1
  24. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js +1 -1
  25. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
  26. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +14 -13
  27. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
  28. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +41 -4
  29. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  30. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1335 -1159
  31. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  32. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
  33. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +15 -14
  34. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
  35. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
  36. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +12 -12
  37. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  38. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
  39. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +9 -8
  40. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  41. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
  42. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +14 -14
  43. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  44. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
  45. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +12 -11
  46. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
  47. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  48. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +18 -16
  49. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  50. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  51. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +91 -59
  52. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  53. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts.map +1 -1
  54. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +9 -9
  55. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  56. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +0 -1
  57. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  58. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +546 -532
  59. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  60. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +12 -11
  61. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
  62. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +0 -1
  63. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
  64. package/dist/lib/custom/Actions/action-execution-log-form.component.js +12 -10
  65. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  66. package/dist/lib/custom/Actions/action-form.component.d.ts +0 -1
  67. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  68. package/dist/lib/custom/Actions/action-form.component.js +62 -68
  69. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  70. package/dist/lib/custom/Actions/action-param-dialog.component.js +1 -1
  71. package/dist/lib/custom/Actions/action-result-code-dialog.component.js +1 -1
  72. package/dist/lib/custom/Actions/action-test-harness-dialog.component.js +1 -1
  73. package/dist/lib/custom/Actions/action-test-harness.component.js +1 -1
  74. package/dist/lib/custom/Actions/actions-top-area-extended.d.ts +8 -0
  75. package/dist/lib/custom/Actions/actions-top-area-extended.d.ts.map +1 -0
  76. package/dist/lib/custom/Actions/actions-top-area-extended.js +64 -0
  77. package/dist/lib/custom/Actions/actions-top-area-extended.js.map +1 -0
  78. package/dist/lib/custom/Entities/entities-form.component.d.ts +10 -0
  79. package/dist/lib/custom/Entities/entities-form.component.d.ts.map +1 -0
  80. package/dist/lib/custom/Entities/entities-form.component.js +198 -0
  81. package/dist/lib/custom/Entities/entities-form.component.js.map +1 -0
  82. package/dist/lib/custom/Entities/entity-form.component.d.ts +0 -1
  83. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  84. package/dist/lib/custom/Entities/entity-form.component.js +722 -691
  85. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  86. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +0 -1
  87. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
  88. package/dist/lib/custom/EntityActions/entityaction.form.component.js +25 -29
  89. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  90. package/dist/lib/custom/Lists/list-form.component.d.ts +0 -1
  91. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  92. package/dist/lib/custom/Lists/list-form.component.js +425 -438
  93. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  94. package/dist/lib/custom/Queries/query-category-dialog.component.d.ts.map +1 -1
  95. package/dist/lib/custom/Queries/query-category-dialog.component.js +28 -29
  96. package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
  97. package/dist/lib/custom/Queries/query-form.component.d.ts +0 -1
  98. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  99. package/dist/lib/custom/Queries/query-form.component.js +187 -185
  100. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  101. package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -1
  102. package/dist/lib/custom/Queries/query-run-dialog.component.js +90 -89
  103. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  104. package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
  105. package/dist/lib/custom/Templates/template-param-dialog.component.js +76 -75
  106. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  107. package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
  108. package/dist/lib/custom/Templates/template-params-grid.component.js +98 -93
  109. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
  110. package/dist/lib/custom/Templates/templates-form.component.d.ts +0 -1
  111. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  112. package/dist/lib/custom/Templates/templates-form.component.js +199 -126
  113. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  114. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts +0 -1
  115. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
  116. package/dist/lib/custom/Tests/entity-link-pill.component.js +16 -18
  117. package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
  118. package/dist/lib/custom/Tests/test-form.component.d.ts +4 -2
  119. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  120. package/dist/lib/custom/Tests/test-form.component.js +485 -445
  121. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  122. package/dist/lib/custom/Tests/test-rubric-form.component.d.ts +0 -1
  123. package/dist/lib/custom/Tests/test-rubric-form.component.d.ts.map +1 -1
  124. package/dist/lib/custom/Tests/test-rubric-form.component.js +6 -8
  125. package/dist/lib/custom/Tests/test-rubric-form.component.js.map +1 -1
  126. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +0 -1
  127. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -1
  128. package/dist/lib/custom/Tests/test-run-feedback-form.component.js +17 -17
  129. package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
  130. package/dist/lib/custom/Tests/test-run-form.component.d.ts +0 -1
  131. package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
  132. package/dist/lib/custom/Tests/test-run-form.component.js +405 -390
  133. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  134. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +4 -2
  135. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  136. package/dist/lib/custom/Tests/test-suite-form.component.js +739 -693
  137. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  138. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +4 -2
  139. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
  140. package/dist/lib/custom/Tests/test-suite-run-form.component.js +685 -637
  141. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  142. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
  143. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +240 -243
  144. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  145. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
  146. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +42 -40
  147. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  148. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
  149. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +37 -36
  150. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
  151. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  152. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +68 -78
  153. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  154. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -1
  155. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +6 -6
  156. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
  157. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +0 -1
  158. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  159. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +289 -271
  160. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  161. package/dist/lib/custom/custom-forms.module.d.ts +51 -58
  162. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  163. package/dist/lib/custom/custom-forms.module.js +37 -81
  164. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  165. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  166. package/dist/lib/custom/shared/entity-selector-dialog.component.js +85 -82
  167. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  168. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.d.ts.map +1 -1
  169. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js +17 -18
  170. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js.map +1 -1
  171. package/dist/lib/generated/Entities/AIAction/sections/details.component.d.ts +11 -0
  172. package/dist/lib/generated/Entities/AIAction/sections/details.component.d.ts.map +1 -0
  173. package/dist/lib/generated/Entities/AIAction/sections/details.component.js +127 -0
  174. package/dist/lib/generated/Entities/AIAction/sections/details.component.js.map +1 -0
  175. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.d.ts.map +1 -1
  176. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +137 -138
  177. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
  178. package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.d.ts +54 -0
  179. package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.d.ts.map +1 -0
  180. package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.js +492 -0
  181. package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.js.map +1 -0
  182. package/dist/lib/generated/Entities/AIAgent/sections/details.component.d.ts +11 -0
  183. package/dist/lib/generated/Entities/AIAgent/sections/details.component.d.ts.map +1 -0
  184. package/dist/lib/generated/Entities/AIAgent/sections/details.component.js +576 -0
  185. package/dist/lib/generated/Entities/AIAgent/sections/details.component.js.map +1 -0
  186. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.d.ts.map +1 -1
  187. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js +3 -3
  188. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js.map +1 -1
  189. package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.d.ts +11 -0
  190. package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.d.ts.map +1 -0
  191. package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.js +194 -0
  192. package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.js.map +1 -0
  193. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.d.ts.map +1 -1
  194. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js +3 -3
  195. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js.map +1 -1
  196. package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.d.ts +11 -0
  197. package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.d.ts.map +1 -0
  198. package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.js +120 -0
  199. package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.js.map +1 -0
  200. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.d.ts.map +1 -1
  201. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js +3 -3
  202. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js.map +1 -1
  203. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.d.ts.map +1 -1
  204. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js +3 -3
  205. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js.map +1 -1
  206. package/dist/lib/generated/Entities/AIAgentDataSource/sections/details.component.d.ts +11 -0
  207. package/dist/lib/generated/Entities/AIAgentDataSource/sections/details.component.d.ts.map +1 -0
  208. package/dist/lib/generated/Entities/AIAgentDataSource/sections/details.component.js +253 -0
  209. package/dist/lib/generated/Entities/AIAgentDataSource/sections/details.component.js.map +1 -0
  210. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.d.ts.map +1 -1
  211. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js +3 -3
  212. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js.map +1 -1
  213. package/dist/lib/generated/Entities/AIAgentExample/sections/details.component.d.ts +11 -0
  214. package/dist/lib/generated/Entities/AIAgentExample/sections/details.component.d.ts.map +1 -0
  215. package/dist/lib/generated/Entities/AIAgentExample/sections/details.component.js +265 -0
  216. package/dist/lib/generated/Entities/AIAgentExample/sections/details.component.js.map +1 -0
  217. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.d.ts.map +1 -1
  218. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js +3 -3
  219. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js.map +1 -1
  220. package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.d.ts +11 -0
  221. package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.d.ts.map +1 -0
  222. package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.js +127 -0
  223. package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.js.map +1 -0
  224. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.d.ts.map +1 -1
  225. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js +3 -3
  226. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js.map +1 -1
  227. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.d.ts.map +1 -1
  228. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js +3 -3
  229. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js.map +1 -1
  230. package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.d.ts +11 -0
  231. package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.d.ts.map +1 -0
  232. package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.js +129 -0
  233. package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.js.map +1 -0
  234. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.d.ts.map +1 -1
  235. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js +3 -3
  236. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js.map +1 -1
  237. package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.d.ts +11 -0
  238. package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.d.ts.map +1 -0
  239. package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.js +267 -0
  240. package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.js.map +1 -0
  241. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.d.ts.map +1 -1
  242. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js +11 -12
  243. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js.map +1 -1
  244. package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.d.ts +11 -0
  245. package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.d.ts.map +1 -0
  246. package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.js +107 -0
  247. package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.js.map +1 -0
  248. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.d.ts.map +1 -1
  249. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js +3 -3
  250. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js.map +1 -1
  251. package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.d.ts +11 -0
  252. package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.d.ts.map +1 -0
  253. package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.js +176 -0
  254. package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.js.map +1 -0
  255. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.d.ts.map +1 -1
  256. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js +3 -3
  257. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js.map +1 -1
  258. package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.d.ts +11 -0
  259. package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.d.ts.map +1 -0
  260. package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.js +176 -0
  261. package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.js.map +1 -0
  262. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.d.ts.map +1 -1
  263. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js +3 -3
  264. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js.map +1 -1
  265. package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.d.ts +11 -0
  266. package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.d.ts.map +1 -0
  267. package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.js +165 -0
  268. package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.js.map +1 -0
  269. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.d.ts.map +1 -1
  270. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js +3 -3
  271. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js.map +1 -1
  272. package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.d.ts +11 -0
  273. package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.d.ts.map +1 -0
  274. package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.js +185 -0
  275. package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.js.map +1 -0
  276. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.d.ts.map +1 -1
  277. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +41 -42
  278. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
  279. package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.d.ts +11 -0
  280. package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.d.ts.map +1 -0
  281. package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.js +496 -0
  282. package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.js.map +1 -0
  283. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.d.ts.map +1 -1
  284. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js +3 -3
  285. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js.map +1 -1
  286. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.d.ts.map +1 -1
  287. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js +24 -31
  288. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js.map +1 -1
  289. package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.d.ts +11 -0
  290. package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.d.ts.map +1 -0
  291. package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js +255 -0
  292. package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js.map +1 -0
  293. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts.map +1 -1
  294. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js +16 -17
  295. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js.map +1 -1
  296. package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts +11 -0
  297. package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts.map +1 -0
  298. package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js +295 -0
  299. package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js.map +1 -0
  300. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts.map +1 -1
  301. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js +3 -3
  302. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js.map +1 -1
  303. package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts +11 -0
  304. package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts.map +1 -0
  305. package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js +147 -0
  306. package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js.map +1 -0
  307. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.d.ts.map +1 -1
  308. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js +11 -12
  309. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js.map +1 -1
  310. package/dist/lib/generated/Entities/AIAgentType/sections/details.component.d.ts +11 -0
  311. package/dist/lib/generated/Entities/AIAgentType/sections/details.component.d.ts.map +1 -0
  312. package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js +163 -0
  313. package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js.map +1 -0
  314. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.d.ts.map +1 -1
  315. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js +17 -18
  316. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js.map +1 -1
  317. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.d.ts.map +1 -1
  318. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +53 -54
  319. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
  320. package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.d.ts +11 -0
  321. package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.d.ts.map +1 -0
  322. package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.js +147 -0
  323. package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.js.map +1 -0
  324. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.d.ts.map +1 -1
  325. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js +3 -3
  326. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js.map +1 -1
  327. package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.d.ts +11 -0
  328. package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.d.ts.map +1 -0
  329. package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.js +127 -0
  330. package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.js.map +1 -0
  331. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.d.ts.map +1 -1
  332. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js +3 -3
  333. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js.map +1 -1
  334. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.d.ts.map +1 -1
  335. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js +47 -48
  336. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js.map +1 -1
  337. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.d.ts.map +1 -1
  338. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +125 -126
  339. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
  340. package/dist/lib/generated/Entities/AIModel/sections/details.component.d.ts +11 -0
  341. package/dist/lib/generated/Entities/AIModel/sections/details.component.d.ts.map +1 -0
  342. package/dist/lib/generated/Entities/AIModel/sections/details.component.js +217 -0
  343. package/dist/lib/generated/Entities/AIModel/sections/details.component.js.map +1 -0
  344. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.d.ts.map +1 -1
  345. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js +3 -3
  346. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js.map +1 -1
  347. package/dist/lib/generated/Entities/AIModelAction/sections/details.component.d.ts +11 -0
  348. package/dist/lib/generated/Entities/AIModelAction/sections/details.component.d.ts.map +1 -0
  349. package/dist/lib/generated/Entities/AIModelAction/sections/details.component.js +120 -0
  350. package/dist/lib/generated/Entities/AIModelAction/sections/details.component.js.map +1 -0
  351. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.d.ts.map +1 -1
  352. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js +3 -3
  353. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js.map +1 -1
  354. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.d.ts.map +1 -1
  355. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js +3 -3
  356. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js.map +1 -1
  357. package/dist/lib/generated/Entities/AIModelCost/sections/details.component.d.ts +11 -0
  358. package/dist/lib/generated/Entities/AIModelCost/sections/details.component.d.ts.map +1 -0
  359. package/dist/lib/generated/Entities/AIModelCost/sections/details.component.js +223 -0
  360. package/dist/lib/generated/Entities/AIModelCost/sections/details.component.js.map +1 -0
  361. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.d.ts.map +1 -1
  362. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js +3 -3
  363. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js.map +1 -1
  364. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.d.ts.map +1 -1
  365. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js +11 -12
  366. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js.map +1 -1
  367. package/dist/lib/generated/Entities/AIModelPriceType/sections/details.component.d.ts +11 -0
  368. package/dist/lib/generated/Entities/AIModelPriceType/sections/details.component.d.ts.map +1 -0
  369. package/dist/lib/generated/Entities/AIModelPriceType/sections/details.component.js +89 -0
  370. package/dist/lib/generated/Entities/AIModelPriceType/sections/details.component.js.map +1 -0
  371. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.d.ts.map +1 -1
  372. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js +11 -12
  373. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js.map +1 -1
  374. package/dist/lib/generated/Entities/AIModelPriceUnitType/sections/details.component.d.ts +11 -0
  375. package/dist/lib/generated/Entities/AIModelPriceUnitType/sections/details.component.d.ts.map +1 -0
  376. package/dist/lib/generated/Entities/AIModelPriceUnitType/sections/details.component.js +98 -0
  377. package/dist/lib/generated/Entities/AIModelPriceUnitType/sections/details.component.js.map +1 -0
  378. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.d.ts.map +1 -1
  379. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +17 -18
  380. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
  381. package/dist/lib/generated/Entities/AIModelType/sections/details.component.d.ts +11 -0
  382. package/dist/lib/generated/Entities/AIModelType/sections/details.component.d.ts.map +1 -0
  383. package/dist/lib/generated/Entities/AIModelType/sections/details.component.js +89 -0
  384. package/dist/lib/generated/Entities/AIModelType/sections/details.component.js.map +1 -0
  385. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.d.ts.map +1 -1
  386. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js +11 -12
  387. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js.map +1 -1
  388. package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.d.ts +11 -0
  389. package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.d.ts.map +1 -0
  390. package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.js +221 -0
  391. package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.js.map +1 -0
  392. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.d.ts.map +1 -1
  393. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +77 -78
  394. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
  395. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.d.ts +11 -0
  396. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.d.ts.map +1 -0
  397. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js +567 -0
  398. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js.map +1 -0
  399. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.d.ts.map +1 -1
  400. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js +17 -18
  401. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js.map +1 -1
  402. package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.d.ts +11 -0
  403. package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.d.ts.map +1 -0
  404. package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.js +118 -0
  405. package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.js.map +1 -0
  406. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.d.ts.map +1 -1
  407. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js +11 -12
  408. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js.map +1 -1
  409. package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.d.ts +11 -0
  410. package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.d.ts.map +1 -0
  411. package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.js +214 -0
  412. package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.js.map +1 -0
  413. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.d.ts.map +1 -1
  414. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +23 -24
  415. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
  416. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts +11 -0
  417. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts.map +1 -0
  418. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js +903 -0
  419. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js.map +1 -0
  420. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.d.ts.map +1 -1
  421. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js +11 -12
  422. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js.map +1 -1
  423. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.d.ts.map +1 -1
  424. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js +11 -12
  425. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js.map +1 -1
  426. package/dist/lib/generated/Entities/AIPromptType/sections/details.component.d.ts +11 -0
  427. package/dist/lib/generated/Entities/AIPromptType/sections/details.component.d.ts.map +1 -0
  428. package/dist/lib/generated/Entities/AIPromptType/sections/details.component.js +89 -0
  429. package/dist/lib/generated/Entities/AIPromptType/sections/details.component.js.map +1 -0
  430. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.d.ts.map +1 -1
  431. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js +12 -18
  432. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js.map +1 -1
  433. package/dist/lib/generated/Entities/AIResultCache/sections/details.component.d.ts +11 -0
  434. package/dist/lib/generated/Entities/AIResultCache/sections/details.component.d.ts.map +1 -0
  435. package/dist/lib/generated/Entities/AIResultCache/sections/details.component.js +236 -0
  436. package/dist/lib/generated/Entities/AIResultCache/sections/details.component.js.map +1 -0
  437. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.d.ts.map +1 -1
  438. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +53 -54
  439. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
  440. package/dist/lib/generated/Entities/AIVendor/sections/details.component.d.ts +11 -0
  441. package/dist/lib/generated/Entities/AIVendor/sections/details.component.d.ts.map +1 -0
  442. package/dist/lib/generated/Entities/AIVendor/sections/details.component.js +89 -0
  443. package/dist/lib/generated/Entities/AIVendor/sections/details.component.js.map +1 -0
  444. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.d.ts.map +1 -1
  445. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js +3 -3
  446. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js.map +1 -1
  447. package/dist/lib/generated/Entities/AIVendorType/sections/details.component.d.ts +11 -0
  448. package/dist/lib/generated/Entities/AIVendorType/sections/details.component.d.ts.map +1 -0
  449. package/dist/lib/generated/Entities/AIVendorType/sections/details.component.js +129 -0
  450. package/dist/lib/generated/Entities/AIVendorType/sections/details.component.js.map +1 -0
  451. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.d.ts.map +1 -1
  452. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js +17 -18
  453. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js.map +1 -1
  454. package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.d.ts +11 -0
  455. package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.d.ts.map +1 -0
  456. package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.js +89 -0
  457. package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.js.map +1 -0
  458. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.d.ts.map +1 -1
  459. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.js +23 -24
  460. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.js.map +1 -1
  461. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.d.ts.map +1 -1
  462. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.js +3 -3
  463. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.js.map +1 -1
  464. package/dist/lib/generated/Entities/APIKey/apikey.form.component.d.ts.map +1 -1
  465. package/dist/lib/generated/Entities/APIKey/apikey.form.component.js +23 -24
  466. package/dist/lib/generated/Entities/APIKey/apikey.form.component.js.map +1 -1
  467. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.d.ts.map +1 -1
  468. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.js +3 -3
  469. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.js.map +1 -1
  470. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.d.ts.map +1 -1
  471. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.js +3 -3
  472. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.js.map +1 -1
  473. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.d.ts.map +1 -1
  474. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.js +3 -3
  475. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.js.map +1 -1
  476. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.d.ts.map +1 -1
  477. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js +28 -27
  478. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js.map +1 -1
  479. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.d.ts.map +1 -1
  480. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js +3 -3
  481. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js.map +1 -1
  482. package/dist/lib/generated/Entities/AccessControlRule/sections/details.component.d.ts +11 -0
  483. package/dist/lib/generated/Entities/AccessControlRule/sections/details.component.d.ts.map +1 -0
  484. package/dist/lib/generated/Entities/AccessControlRule/sections/details.component.js +192 -0
  485. package/dist/lib/generated/Entities/AccessControlRule/sections/details.component.js.map +1 -0
  486. package/dist/lib/generated/Entities/Action/action.form.component.d.ts.map +1 -1
  487. package/dist/lib/generated/Entities/Action/action.form.component.js +84 -67
  488. package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
  489. package/dist/lib/generated/Entities/Action/sections/code.component.d.ts +11 -0
  490. package/dist/lib/generated/Entities/Action/sections/code.component.d.ts.map +1 -0
  491. package/dist/lib/generated/Entities/Action/sections/code.component.js +62 -0
  492. package/dist/lib/generated/Entities/Action/sections/code.component.js.map +1 -0
  493. package/dist/lib/generated/Entities/Action/sections/details.component.d.ts +11 -0
  494. package/dist/lib/generated/Entities/Action/sections/details.component.d.ts.map +1 -0
  495. package/dist/lib/generated/Entities/Action/sections/details.component.js +277 -0
  496. package/dist/lib/generated/Entities/Action/sections/details.component.js.map +1 -0
  497. package/dist/lib/generated/Entities/Action/sections/top.component.d.ts +11 -0
  498. package/dist/lib/generated/Entities/Action/sections/top.component.d.ts.map +1 -0
  499. package/dist/lib/generated/Entities/Action/sections/top.component.js +71 -0
  500. package/dist/lib/generated/Entities/Action/sections/top.component.js.map +1 -0
  501. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.d.ts.map +1 -1
  502. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js +3 -3
  503. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js.map +1 -1
  504. package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.d.ts +11 -0
  505. package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.d.ts.map +1 -0
  506. package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.js +120 -0
  507. package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.js.map +1 -0
  508. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.d.ts.map +1 -1
  509. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js +34 -17
  510. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js.map +1 -1
  511. package/dist/lib/generated/Entities/ActionCategory/sections/details.component.d.ts +11 -0
  512. package/dist/lib/generated/Entities/ActionCategory/sections/details.component.d.ts.map +1 -0
  513. package/dist/lib/generated/Entities/ActionCategory/sections/details.component.js +127 -0
  514. package/dist/lib/generated/Entities/ActionCategory/sections/details.component.js.map +1 -0
  515. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.d.ts.map +1 -1
  516. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js +3 -3
  517. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js.map +1 -1
  518. package/dist/lib/generated/Entities/ActionContext/sections/details.component.d.ts +11 -0
  519. package/dist/lib/generated/Entities/ActionContext/sections/details.component.d.ts.map +1 -0
  520. package/dist/lib/generated/Entities/ActionContext/sections/details.component.js +120 -0
  521. package/dist/lib/generated/Entities/ActionContext/sections/details.component.js.map +1 -0
  522. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.d.ts.map +1 -1
  523. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js +11 -12
  524. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js.map +1 -1
  525. package/dist/lib/generated/Entities/ActionContextType/sections/details.component.d.ts +11 -0
  526. package/dist/lib/generated/Entities/ActionContextType/sections/details.component.d.ts.map +1 -0
  527. package/dist/lib/generated/Entities/ActionContextType/sections/details.component.js +89 -0
  528. package/dist/lib/generated/Entities/ActionContextType/sections/details.component.js.map +1 -0
  529. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.d.ts.map +1 -1
  530. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js +3 -3
  531. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js.map +1 -1
  532. package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.d.ts +11 -0
  533. package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.d.ts.map +1 -0
  534. package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.js +165 -0
  535. package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.js.map +1 -0
  536. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.d.ts.map +1 -1
  537. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js +11 -12
  538. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js.map +1 -1
  539. package/dist/lib/generated/Entities/ActionFilter/sections/details.component.d.ts +11 -0
  540. package/dist/lib/generated/Entities/ActionFilter/sections/details.component.d.ts.map +1 -0
  541. package/dist/lib/generated/Entities/ActionFilter/sections/details.component.js +107 -0
  542. package/dist/lib/generated/Entities/ActionFilter/sections/details.component.js.map +1 -0
  543. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.d.ts.map +1 -1
  544. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js +3 -3
  545. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js.map +1 -1
  546. package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.d.ts +11 -0
  547. package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.d.ts.map +1 -0
  548. package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.js +120 -0
  549. package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.js.map +1 -0
  550. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.d.ts.map +1 -1
  551. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js +17 -18
  552. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js.map +1 -1
  553. package/dist/lib/generated/Entities/ActionParam/sections/details.component.d.ts +11 -0
  554. package/dist/lib/generated/Entities/ActionParam/sections/details.component.d.ts.map +1 -0
  555. package/dist/lib/generated/Entities/ActionParam/sections/details.component.js +154 -0
  556. package/dist/lib/generated/Entities/ActionParam/sections/details.component.js.map +1 -0
  557. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.d.ts.map +1 -1
  558. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js +3 -3
  559. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js.map +1 -1
  560. package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.d.ts +11 -0
  561. package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.d.ts.map +1 -0
  562. package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.js +118 -0
  563. package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.js.map +1 -0
  564. package/dist/lib/generated/Entities/Application/application.form.component.d.ts.map +1 -1
  565. package/dist/lib/generated/Entities/Application/application.form.component.js +35 -36
  566. package/dist/lib/generated/Entities/Application/application.form.component.js.map +1 -1
  567. package/dist/lib/generated/Entities/Application/sections/details.component.d.ts +11 -0
  568. package/dist/lib/generated/Entities/Application/sections/details.component.d.ts.map +1 -0
  569. package/dist/lib/generated/Entities/Application/sections/details.component.js +116 -0
  570. package/dist/lib/generated/Entities/Application/sections/details.component.js.map +1 -0
  571. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.d.ts.map +1 -1
  572. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js +3 -3
  573. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js.map +1 -1
  574. package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.d.ts +11 -0
  575. package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.d.ts.map +1 -0
  576. package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.js +165 -0
  577. package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.js.map +1 -0
  578. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.d.ts.map +1 -1
  579. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js +3 -3
  580. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js.map +1 -1
  581. package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.d.ts +11 -0
  582. package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.d.ts.map +1 -0
  583. package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.js +118 -0
  584. package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.js.map +1 -0
  585. package/dist/lib/generated/Entities/Artifact/artifact.form.component.d.ts.map +1 -1
  586. package/dist/lib/generated/Entities/Artifact/artifact.form.component.js +23 -24
  587. package/dist/lib/generated/Entities/Artifact/artifact.form.component.js.map +1 -1
  588. package/dist/lib/generated/Entities/Artifact/sections/details.component.d.ts +11 -0
  589. package/dist/lib/generated/Entities/Artifact/sections/details.component.d.ts.map +1 -0
  590. package/dist/lib/generated/Entities/Artifact/sections/details.component.js +167 -0
  591. package/dist/lib/generated/Entities/Artifact/sections/details.component.js.map +1 -0
  592. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.d.ts.map +1 -1
  593. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js +3 -3
  594. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js.map +1 -1
  595. package/dist/lib/generated/Entities/ArtifactPermission/sections/details.component.d.ts +11 -0
  596. package/dist/lib/generated/Entities/ArtifactPermission/sections/details.component.d.ts.map +1 -0
  597. package/dist/lib/generated/Entities/ArtifactPermission/sections/details.component.js +167 -0
  598. package/dist/lib/generated/Entities/ArtifactPermission/sections/details.component.js.map +1 -0
  599. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.d.ts.map +1 -1
  600. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js +35 -36
  601. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js.map +1 -1
  602. package/dist/lib/generated/Entities/ArtifactType/sections/details.component.d.ts +11 -0
  603. package/dist/lib/generated/Entities/ArtifactType/sections/details.component.d.ts.map +1 -0
  604. package/dist/lib/generated/Entities/ArtifactType/sections/details.component.js +154 -0
  605. package/dist/lib/generated/Entities/ArtifactType/sections/details.component.js.map +1 -0
  606. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.d.ts.map +1 -1
  607. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js +3 -3
  608. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js.map +1 -1
  609. package/dist/lib/generated/Entities/ArtifactUse/sections/details.component.d.ts +11 -0
  610. package/dist/lib/generated/Entities/ArtifactUse/sections/details.component.d.ts.map +1 -0
  611. package/dist/lib/generated/Entities/ArtifactUse/sections/details.component.js +129 -0
  612. package/dist/lib/generated/Entities/ArtifactUse/sections/details.component.js.map +1 -0
  613. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.d.ts.map +1 -1
  614. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js +29 -30
  615. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js.map +1 -1
  616. package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.d.ts +11 -0
  617. package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.d.ts.map +1 -0
  618. package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.js +174 -0
  619. package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.js.map +1 -0
  620. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.d.ts.map +1 -1
  621. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js +3 -3
  622. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js.map +1 -1
  623. package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.d.ts +11 -0
  624. package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.d.ts.map +1 -0
  625. package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.js +127 -0
  626. package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.js.map +1 -0
  627. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.d.ts.map +1 -1
  628. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js +3 -3
  629. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js.map +1 -1
  630. package/dist/lib/generated/Entities/AuditLog/sections/details.component.d.ts +11 -0
  631. package/dist/lib/generated/Entities/AuditLog/sections/details.component.d.ts.map +1 -0
  632. package/dist/lib/generated/Entities/AuditLog/sections/details.component.js +187 -0
  633. package/dist/lib/generated/Entities/AuditLog/sections/details.component.js.map +1 -0
  634. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.d.ts.map +1 -1
  635. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js +17 -18
  636. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js.map +1 -1
  637. package/dist/lib/generated/Entities/AuditLogType/sections/details.component.d.ts +11 -0
  638. package/dist/lib/generated/Entities/AuditLogType/sections/details.component.d.ts.map +1 -0
  639. package/dist/lib/generated/Entities/AuditLogType/sections/details.component.js +138 -0
  640. package/dist/lib/generated/Entities/AuditLogType/sections/details.component.js.map +1 -0
  641. package/dist/lib/generated/Entities/Authorization/authorization.form.component.d.ts.map +1 -1
  642. package/dist/lib/generated/Entities/Authorization/authorization.form.component.js +35 -36
  643. package/dist/lib/generated/Entities/Authorization/authorization.form.component.js.map +1 -1
  644. package/dist/lib/generated/Entities/Authorization/sections/details.component.d.ts +11 -0
  645. package/dist/lib/generated/Entities/Authorization/sections/details.component.d.ts.map +1 -0
  646. package/dist/lib/generated/Entities/Authorization/sections/details.component.js +136 -0
  647. package/dist/lib/generated/Entities/Authorization/sections/details.component.js.map +1 -0
  648. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.d.ts.map +1 -1
  649. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js +3 -3
  650. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js.map +1 -1
  651. package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.d.ts +11 -0
  652. package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.d.ts.map +1 -0
  653. package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.js +120 -0
  654. package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.js.map +1 -0
  655. package/dist/lib/generated/Entities/Collection/collection.form.component.d.ts.map +1 -1
  656. package/dist/lib/generated/Entities/Collection/collection.form.component.js +23 -24
  657. package/dist/lib/generated/Entities/Collection/collection.form.component.js.map +1 -1
  658. package/dist/lib/generated/Entities/Collection/sections/details.component.d.ts +11 -0
  659. package/dist/lib/generated/Entities/Collection/sections/details.component.d.ts.map +1 -0
  660. package/dist/lib/generated/Entities/Collection/sections/details.component.js +185 -0
  661. package/dist/lib/generated/Entities/Collection/sections/details.component.js.map +1 -0
  662. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.d.ts.map +1 -1
  663. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js +3 -3
  664. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js.map +1 -1
  665. package/dist/lib/generated/Entities/CollectionArtifact/sections/details.component.d.ts +11 -0
  666. package/dist/lib/generated/Entities/CollectionArtifact/sections/details.component.d.ts.map +1 -0
  667. package/dist/lib/generated/Entities/CollectionArtifact/sections/details.component.js +120 -0
  668. package/dist/lib/generated/Entities/CollectionArtifact/sections/details.component.js.map +1 -0
  669. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.d.ts.map +1 -1
  670. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js +3 -3
  671. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js.map +1 -1
  672. package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.d.ts +11 -0
  673. package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.d.ts.map +1 -0
  674. package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.js +167 -0
  675. package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.js.map +1 -0
  676. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.d.ts.map +1 -1
  677. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js +17 -18
  678. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js.map +1 -1
  679. package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.d.ts +11 -0
  680. package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.d.ts.map +1 -0
  681. package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.js +116 -0
  682. package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.js.map +1 -0
  683. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.d.ts.map +1 -1
  684. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js +3 -3
  685. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js.map +1 -1
  686. package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.d.ts +11 -0
  687. package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.d.ts.map +1 -0
  688. package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.js +167 -0
  689. package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.js.map +1 -0
  690. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.d.ts.map +1 -1
  691. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js +17 -18
  692. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js.map +1 -1
  693. package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.d.ts +11 -0
  694. package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.d.ts.map +1 -0
  695. package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.js +152 -0
  696. package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.js.map +1 -0
  697. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.d.ts.map +1 -1
  698. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js +11 -12
  699. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js.map +1 -1
  700. package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.d.ts +11 -0
  701. package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.d.ts.map +1 -0
  702. package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.js +138 -0
  703. package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.js.map +1 -0
  704. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.d.ts.map +1 -1
  705. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js +11 -12
  706. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js.map +1 -1
  707. package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.d.ts +11 -0
  708. package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.d.ts.map +1 -0
  709. package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.js +145 -0
  710. package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.js.map +1 -0
  711. package/dist/lib/generated/Entities/Company/company.form.component.d.ts.map +1 -1
  712. package/dist/lib/generated/Entities/Company/company.form.component.js +49 -32
  713. package/dist/lib/generated/Entities/Company/company.form.component.js.map +1 -1
  714. package/dist/lib/generated/Entities/Company/sections/details.component.d.ts +11 -0
  715. package/dist/lib/generated/Entities/Company/sections/details.component.d.ts.map +1 -0
  716. package/dist/lib/generated/Entities/Company/sections/details.component.js +118 -0
  717. package/dist/lib/generated/Entities/Company/sections/details.component.js.map +1 -0
  718. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.d.ts.map +1 -1
  719. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js +29 -30
  720. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js.map +1 -1
  721. package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.d.ts +11 -0
  722. package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.d.ts.map +1 -0
  723. package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.js +255 -0
  724. package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.js.map +1 -0
  725. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.d.ts.map +1 -1
  726. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js +3 -3
  727. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js.map +1 -1
  728. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.d.ts +11 -0
  729. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.d.ts.map +1 -0
  730. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.js +129 -0
  731. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.js.map +1 -0
  732. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.d.ts.map +1 -1
  733. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js +23 -24
  734. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js.map +1 -1
  735. package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.d.ts +11 -0
  736. package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.d.ts.map +1 -0
  737. package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.js +183 -0
  738. package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.js.map +1 -0
  739. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.d.ts.map +1 -1
  740. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js +3 -3
  741. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js.map +1 -1
  742. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.d.ts +11 -0
  743. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.d.ts.map +1 -0
  744. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.js +127 -0
  745. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.js.map +1 -0
  746. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.d.ts.map +1 -1
  747. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js +11 -12
  748. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js.map +1 -1
  749. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.d.ts +11 -0
  750. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.d.ts.map +1 -0
  751. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.js +156 -0
  752. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.js.map +1 -0
  753. package/dist/lib/generated/Entities/Component/component.form.component.d.ts.map +1 -1
  754. package/dist/lib/generated/Entities/Component/component.form.component.js +22 -23
  755. package/dist/lib/generated/Entities/Component/component.form.component.js.map +1 -1
  756. package/dist/lib/generated/Entities/Component/sections/details.component.d.ts +11 -0
  757. package/dist/lib/generated/Entities/Component/sections/details.component.d.ts.map +1 -0
  758. package/dist/lib/generated/Entities/Component/sections/details.component.js +316 -0
  759. package/dist/lib/generated/Entities/Component/sections/details.component.js.map +1 -0
  760. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.d.ts.map +1 -1
  761. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js +3 -3
  762. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js.map +1 -1
  763. package/dist/lib/generated/Entities/ComponentDependency/sections/details.component.d.ts +11 -0
  764. package/dist/lib/generated/Entities/ComponentDependency/sections/details.component.d.ts.map +1 -0
  765. package/dist/lib/generated/Entities/ComponentDependency/sections/details.component.js +111 -0
  766. package/dist/lib/generated/Entities/ComponentDependency/sections/details.component.js.map +1 -0
  767. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.d.ts.map +1 -1
  768. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js +11 -12
  769. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js.map +1 -1
  770. package/dist/lib/generated/Entities/ComponentLibrary/sections/details.component.d.ts +11 -0
  771. package/dist/lib/generated/Entities/ComponentLibrary/sections/details.component.d.ts.map +1 -0
  772. package/dist/lib/generated/Entities/ComponentLibrary/sections/details.component.js +179 -0
  773. package/dist/lib/generated/Entities/ComponentLibrary/sections/details.component.js.map +1 -0
  774. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.d.ts.map +1 -1
  775. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js +3 -3
  776. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js.map +1 -1
  777. package/dist/lib/generated/Entities/ComponentLibraryLink/sections/details.component.d.ts +11 -0
  778. package/dist/lib/generated/Entities/ComponentLibraryLink/sections/details.component.d.ts.map +1 -0
  779. package/dist/lib/generated/Entities/ComponentLibraryLink/sections/details.component.js +120 -0
  780. package/dist/lib/generated/Entities/ComponentLibraryLink/sections/details.component.js.map +1 -0
  781. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.d.ts.map +1 -1
  782. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js +11 -12
  783. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js.map +1 -1
  784. package/dist/lib/generated/Entities/ComponentRegistry/sections/details.component.d.ts +11 -0
  785. package/dist/lib/generated/Entities/ComponentRegistry/sections/details.component.d.ts.map +1 -0
  786. package/dist/lib/generated/Entities/ComponentRegistry/sections/details.component.js +125 -0
  787. package/dist/lib/generated/Entities/ComponentRegistry/sections/details.component.js.map +1 -0
  788. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.d.ts.map +1 -1
  789. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js +17 -18
  790. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js.map +1 -1
  791. package/dist/lib/generated/Entities/ContentFileType/sections/details.component.d.ts +11 -0
  792. package/dist/lib/generated/Entities/ContentFileType/sections/details.component.d.ts.map +1 -0
  793. package/dist/lib/generated/Entities/ContentFileType/sections/details.component.js +89 -0
  794. package/dist/lib/generated/Entities/ContentFileType/sections/details.component.js.map +1 -0
  795. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.d.ts.map +1 -1
  796. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js +17 -18
  797. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js.map +1 -1
  798. package/dist/lib/generated/Entities/ContentItem/sections/details.component.d.ts +11 -0
  799. package/dist/lib/generated/Entities/ContentItem/sections/details.component.d.ts.map +1 -0
  800. package/dist/lib/generated/Entities/ContentItem/sections/details.component.js +196 -0
  801. package/dist/lib/generated/Entities/ContentItem/sections/details.component.js.map +1 -0
  802. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.d.ts.map +1 -1
  803. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js +3 -3
  804. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js.map +1 -1
  805. package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.d.ts +11 -0
  806. package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.d.ts.map +1 -0
  807. package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.js +109 -0
  808. package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.js.map +1 -0
  809. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.d.ts.map +1 -1
  810. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js +3 -3
  811. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js.map +1 -1
  812. package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.d.ts +11 -0
  813. package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.d.ts.map +1 -0
  814. package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.js +100 -0
  815. package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.js.map +1 -0
  816. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.d.ts.map +1 -1
  817. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js +3 -3
  818. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js.map +1 -1
  819. package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.d.ts +11 -0
  820. package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.d.ts.map +1 -0
  821. package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.js +127 -0
  822. package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.js.map +1 -0
  823. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.d.ts.map +1 -1
  824. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js +23 -24
  825. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js.map +1 -1
  826. package/dist/lib/generated/Entities/ContentSource/sections/details.component.d.ts +11 -0
  827. package/dist/lib/generated/Entities/ContentSource/sections/details.component.d.ts.map +1 -0
  828. package/dist/lib/generated/Entities/ContentSource/sections/details.component.js +149 -0
  829. package/dist/lib/generated/Entities/ContentSource/sections/details.component.js.map +1 -0
  830. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.d.ts.map +1 -1
  831. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js +3 -3
  832. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js.map +1 -1
  833. package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.d.ts +11 -0
  834. package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.d.ts.map +1 -0
  835. package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.js +109 -0
  836. package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.js.map +1 -0
  837. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.d.ts.map +1 -1
  838. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js +17 -18
  839. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js.map +1 -1
  840. package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.d.ts +11 -0
  841. package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.d.ts.map +1 -0
  842. package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.js +89 -0
  843. package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.js.map +1 -0
  844. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.d.ts.map +1 -1
  845. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js +3 -3
  846. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js.map +1 -1
  847. package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.d.ts +11 -0
  848. package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.d.ts.map +1 -0
  849. package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.js +116 -0
  850. package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.js.map +1 -0
  851. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.d.ts.map +1 -1
  852. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js +17 -18
  853. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js.map +1 -1
  854. package/dist/lib/generated/Entities/ContentType/sections/details.component.d.ts +11 -0
  855. package/dist/lib/generated/Entities/ContentType/sections/details.component.d.ts.map +1 -0
  856. package/dist/lib/generated/Entities/ContentType/sections/details.component.js +127 -0
  857. package/dist/lib/generated/Entities/ContentType/sections/details.component.js.map +1 -0
  858. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.d.ts.map +1 -1
  859. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js +3 -3
  860. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js.map +1 -1
  861. package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.d.ts +11 -0
  862. package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.d.ts.map +1 -0
  863. package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.js +107 -0
  864. package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.js.map +1 -0
  865. package/dist/lib/generated/Entities/Conversation/conversation.form.component.d.ts.map +1 -1
  866. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +42 -43
  867. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js.map +1 -1
  868. package/dist/lib/generated/Entities/Conversation/sections/details.component.d.ts +11 -0
  869. package/dist/lib/generated/Entities/Conversation/sections/details.component.d.ts.map +1 -0
  870. package/dist/lib/generated/Entities/Conversation/sections/details.component.js +243 -0
  871. package/dist/lib/generated/Entities/Conversation/sections/details.component.js.map +1 -0
  872. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.d.ts.map +1 -1
  873. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js +23 -24
  874. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js.map +1 -1
  875. package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.d.ts +11 -0
  876. package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.d.ts.map +1 -0
  877. package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.js +147 -0
  878. package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.js.map +1 -0
  879. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.d.ts.map +1 -1
  880. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js +3 -3
  881. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js.map +1 -1
  882. package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.d.ts +11 -0
  883. package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.d.ts.map +1 -0
  884. package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.js +109 -0
  885. package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.js.map +1 -0
  886. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.d.ts.map +1 -1
  887. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js +11 -12
  888. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js.map +1 -1
  889. package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.d.ts +11 -0
  890. package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.d.ts.map +1 -0
  891. package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.js +127 -0
  892. package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.js.map +1 -0
  893. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.d.ts.map +1 -1
  894. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js +59 -60
  895. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js.map +1 -1
  896. package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.d.ts +11 -0
  897. package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.d.ts.map +1 -0
  898. package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js +299 -0
  899. package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js.map +1 -0
  900. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.d.ts.map +1 -1
  901. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js +4 -4
  902. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js.map +1 -1
  903. package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.d.ts +11 -0
  904. package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.d.ts.map +1 -0
  905. package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.js +111 -0
  906. package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.js.map +1 -0
  907. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.d.ts.map +1 -1
  908. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js +3 -3
  909. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js.map +1 -1
  910. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.d.ts.map +1 -1
  911. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js +7 -13
  912. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js.map +1 -1
  913. package/dist/lib/generated/Entities/ConversationDetailRating/sections/details.component.d.ts +11 -0
  914. package/dist/lib/generated/Entities/ConversationDetailRating/sections/details.component.d.ts.map +1 -0
  915. package/dist/lib/generated/Entities/ConversationDetailRating/sections/details.component.js +120 -0
  916. package/dist/lib/generated/Entities/ConversationDetailRating/sections/details.component.js.map +1 -0
  917. package/dist/lib/generated/Entities/Credential/credential.form.component.d.ts.map +1 -1
  918. package/dist/lib/generated/Entities/Credential/credential.form.component.js +54 -19
  919. package/dist/lib/generated/Entities/Credential/credential.form.component.js.map +1 -1
  920. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.d.ts.map +1 -1
  921. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js +17 -18
  922. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js.map +1 -1
  923. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.d.ts.map +1 -1
  924. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js +33 -16
  925. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js.map +1 -1
  926. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.d.ts.map +1 -1
  927. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js +29 -30
  928. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js.map +1 -1
  929. package/dist/lib/generated/Entities/Dashboard/sections/details.component.d.ts +11 -0
  930. package/dist/lib/generated/Entities/Dashboard/sections/details.component.d.ts.map +1 -0
  931. package/dist/lib/generated/Entities/Dashboard/sections/details.component.js +223 -0
  932. package/dist/lib/generated/Entities/Dashboard/sections/details.component.js.map +1 -0
  933. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.d.ts.map +1 -1
  934. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js +29 -30
  935. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js.map +1 -1
  936. package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.d.ts +11 -0
  937. package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.d.ts.map +1 -0
  938. package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.js +138 -0
  939. package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.js.map +1 -0
  940. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.d.ts.map +1 -1
  941. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js +3 -3
  942. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js.map +1 -1
  943. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.d.ts.map +1 -1
  944. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js +3 -3
  945. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js.map +1 -1
  946. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.d.ts.map +1 -1
  947. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js +3 -3
  948. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js.map +1 -1
  949. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.d.ts.map +1 -1
  950. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js +3 -3
  951. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js.map +1 -1
  952. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.d.ts.map +1 -1
  953. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js +3 -3
  954. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js.map +1 -1
  955. package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.d.ts +11 -0
  956. package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.d.ts.map +1 -0
  957. package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.js +149 -0
  958. package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.js.map +1 -0
  959. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.d.ts.map +1 -1
  960. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js +3 -3
  961. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js.map +1 -1
  962. package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.d.ts +11 -0
  963. package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.d.ts.map +1 -0
  964. package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.js +120 -0
  965. package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.js.map +1 -0
  966. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.d.ts.map +1 -1
  967. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js +23 -24
  968. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js.map +1 -1
  969. package/dist/lib/generated/Entities/DataContext/sections/details.component.d.ts +11 -0
  970. package/dist/lib/generated/Entities/DataContext/sections/details.component.d.ts.map +1 -0
  971. package/dist/lib/generated/Entities/DataContext/sections/details.component.js +118 -0
  972. package/dist/lib/generated/Entities/DataContext/sections/details.component.js.map +1 -0
  973. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.d.ts.map +1 -1
  974. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js +3 -3
  975. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js.map +1 -1
  976. package/dist/lib/generated/Entities/DataContextItem/sections/details.component.d.ts +11 -0
  977. package/dist/lib/generated/Entities/DataContextItem/sections/details.component.d.ts.map +1 -0
  978. package/dist/lib/generated/Entities/DataContextItem/sections/details.component.js +214 -0
  979. package/dist/lib/generated/Entities/DataContextItem/sections/details.component.js.map +1 -0
  980. package/dist/lib/generated/Entities/Dataset/dataset.form.component.d.ts.map +1 -1
  981. package/dist/lib/generated/Entities/Dataset/dataset.form.component.js +11 -12
  982. package/dist/lib/generated/Entities/Dataset/dataset.form.component.js.map +1 -1
  983. package/dist/lib/generated/Entities/Dataset/sections/details.component.d.ts +11 -0
  984. package/dist/lib/generated/Entities/Dataset/sections/details.component.d.ts.map +1 -0
  985. package/dist/lib/generated/Entities/Dataset/sections/details.component.js +89 -0
  986. package/dist/lib/generated/Entities/Dataset/sections/details.component.js.map +1 -0
  987. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.d.ts.map +1 -1
  988. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js +3 -3
  989. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js.map +1 -1
  990. package/dist/lib/generated/Entities/DatasetItem/sections/details.component.d.ts +11 -0
  991. package/dist/lib/generated/Entities/DatasetItem/sections/details.component.d.ts.map +1 -0
  992. package/dist/lib/generated/Entities/DatasetItem/sections/details.component.js +165 -0
  993. package/dist/lib/generated/Entities/DatasetItem/sections/details.component.js.map +1 -0
  994. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.d.ts.map +1 -1
  995. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js +11 -12
  996. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js.map +1 -1
  997. package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.d.ts +11 -0
  998. package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.d.ts.map +1 -0
  999. package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.js +205 -0
  1000. package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.js.map +1 -0
  1001. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.d.ts.map +1 -1
  1002. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js +19 -26
  1003. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js.map +1 -1
  1004. package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.d.ts +11 -0
  1005. package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.d.ts.map +1 -0
  1006. package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.js +136 -0
  1007. package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.js.map +1 -0
  1008. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.d.ts.map +1 -1
  1009. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js +3 -3
  1010. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js.map +1 -1
  1011. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.d.ts +11 -0
  1012. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.d.ts.map +1 -0
  1013. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.js +165 -0
  1014. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.js.map +1 -0
  1015. package/dist/lib/generated/Entities/Employee/employee.form.component.d.ts.map +1 -1
  1016. package/dist/lib/generated/Entities/Employee/employee.form.component.js +35 -36
  1017. package/dist/lib/generated/Entities/Employee/employee.form.component.js.map +1 -1
  1018. package/dist/lib/generated/Entities/Employee/sections/details.component.d.ts +11 -0
  1019. package/dist/lib/generated/Entities/Employee/sections/details.component.d.ts.map +1 -0
  1020. package/dist/lib/generated/Entities/Employee/sections/details.component.js +202 -0
  1021. package/dist/lib/generated/Entities/Employee/sections/details.component.js.map +1 -0
  1022. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.d.ts.map +1 -1
  1023. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js +10 -16
  1024. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js.map +1 -1
  1025. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.d.ts +11 -0
  1026. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.d.ts.map +1 -0
  1027. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.js +120 -0
  1028. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.js.map +1 -0
  1029. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.d.ts.map +1 -1
  1030. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js +4 -4
  1031. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js.map +1 -1
  1032. package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.d.ts +11 -0
  1033. package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.d.ts.map +1 -0
  1034. package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.js +102 -0
  1035. package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.js.map +1 -0
  1036. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.d.ts.map +1 -1
  1037. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js +7 -13
  1038. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js.map +1 -1
  1039. package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.d.ts +11 -0
  1040. package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.d.ts.map +1 -0
  1041. package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.js +102 -0
  1042. package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.js.map +1 -0
  1043. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.d.ts.map +1 -1
  1044. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js +11 -12
  1045. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js.map +1 -1
  1046. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.d.ts.map +1 -1
  1047. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js +11 -12
  1048. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js.map +1 -1
  1049. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.d.ts.map +1 -1
  1050. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js +11 -12
  1051. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js.map +1 -1
  1052. package/dist/lib/generated/Entities/Entity/entity.form.component.d.ts.map +1 -1
  1053. package/dist/lib/generated/Entities/Entity/entity.form.component.js +308 -273
  1054. package/dist/lib/generated/Entities/Entity/entity.form.component.js.map +1 -1
  1055. package/dist/lib/generated/Entities/Entity/sections/api.component.d.ts +11 -0
  1056. package/dist/lib/generated/Entities/Entity/sections/api.component.d.ts.map +1 -0
  1057. package/dist/lib/generated/Entities/Entity/sections/api.component.js +116 -0
  1058. package/dist/lib/generated/Entities/Entity/sections/api.component.js.map +1 -0
  1059. package/dist/lib/generated/Entities/Entity/sections/audit.component.d.ts +11 -0
  1060. package/dist/lib/generated/Entities/Entity/sections/audit.component.d.ts.map +1 -0
  1061. package/dist/lib/generated/Entities/Entity/sections/audit.component.js +71 -0
  1062. package/dist/lib/generated/Entities/Entity/sections/audit.component.js.map +1 -0
  1063. package/dist/lib/generated/Entities/Entity/sections/db.component.d.ts +11 -0
  1064. package/dist/lib/generated/Entities/Entity/sections/db.component.d.ts.map +1 -0
  1065. package/dist/lib/generated/Entities/Entity/sections/db.component.js +107 -0
  1066. package/dist/lib/generated/Entities/Entity/sections/db.component.js.map +1 -0
  1067. package/dist/lib/generated/Entities/Entity/sections/details.component.d.ts +11 -0
  1068. package/dist/lib/generated/Entities/Entity/sections/details.component.d.ts.map +1 -0
  1069. package/dist/lib/generated/Entities/Entity/sections/details.component.js +415 -0
  1070. package/dist/lib/generated/Entities/Entity/sections/details.component.js.map +1 -0
  1071. package/dist/lib/generated/Entities/Entity/sections/top.component.d.ts +11 -0
  1072. package/dist/lib/generated/Entities/Entity/sections/top.component.d.ts.map +1 -0
  1073. package/dist/lib/generated/Entities/Entity/sections/top.component.js +107 -0
  1074. package/dist/lib/generated/Entities/Entity/sections/top.component.js.map +1 -0
  1075. package/dist/lib/generated/Entities/Entity/sections/ui.component.d.ts +11 -0
  1076. package/dist/lib/generated/Entities/Entity/sections/ui.component.d.ts.map +1 -0
  1077. package/dist/lib/generated/Entities/Entity/sections/ui.component.js +62 -0
  1078. package/dist/lib/generated/Entities/Entity/sections/ui.component.js.map +1 -0
  1079. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.d.ts.map +1 -1
  1080. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js +3 -3
  1081. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js.map +1 -1
  1082. package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.d.ts +11 -0
  1083. package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.d.ts.map +1 -0
  1084. package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.js +223 -0
  1085. package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.js.map +1 -0
  1086. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.d.ts.map +1 -1
  1087. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js +23 -24
  1088. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js.map +1 -1
  1089. package/dist/lib/generated/Entities/EntityAction/sections/details.component.d.ts +11 -0
  1090. package/dist/lib/generated/Entities/EntityAction/sections/details.component.d.ts.map +1 -0
  1091. package/dist/lib/generated/Entities/EntityAction/sections/details.component.js +120 -0
  1092. package/dist/lib/generated/Entities/EntityAction/sections/details.component.js.map +1 -0
  1093. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.d.ts.map +1 -1
  1094. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js +4 -4
  1095. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js.map +1 -1
  1096. package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.d.ts +11 -0
  1097. package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.d.ts.map +1 -0
  1098. package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.js +111 -0
  1099. package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.js.map +1 -0
  1100. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.d.ts.map +1 -1
  1101. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js +9 -15
  1102. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js.map +1 -1
  1103. package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.d.ts +11 -0
  1104. package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.d.ts.map +1 -0
  1105. package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.js +111 -0
  1106. package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.js.map +1 -0
  1107. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.d.ts.map +1 -1
  1108. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js +11 -12
  1109. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js.map +1 -1
  1110. package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.d.ts +11 -0
  1111. package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.d.ts.map +1 -0
  1112. package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.js +98 -0
  1113. package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.js.map +1 -0
  1114. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.d.ts.map +1 -1
  1115. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js +4 -4
  1116. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js.map +1 -1
  1117. package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.d.ts +11 -0
  1118. package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.d.ts.map +1 -0
  1119. package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.js +129 -0
  1120. package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.js.map +1 -0
  1121. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.d.ts.map +1 -1
  1122. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js +7 -13
  1123. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js.map +1 -1
  1124. package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.d.ts +11 -0
  1125. package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.d.ts.map +1 -0
  1126. package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.js +100 -0
  1127. package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.js.map +1 -0
  1128. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.d.ts.map +1 -1
  1129. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js +11 -12
  1130. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js.map +1 -1
  1131. package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.d.ts +11 -0
  1132. package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.d.ts.map +1 -0
  1133. package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.js +120 -0
  1134. package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.js.map +1 -0
  1135. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.d.ts.map +1 -1
  1136. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js +23 -24
  1137. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js.map +1 -1
  1138. package/dist/lib/generated/Entities/EntityDocument/sections/details.component.d.ts +11 -0
  1139. package/dist/lib/generated/Entities/EntityDocument/sections/details.component.d.ts.map +1 -0
  1140. package/dist/lib/generated/Entities/EntityDocument/sections/details.component.js +207 -0
  1141. package/dist/lib/generated/Entities/EntityDocument/sections/details.component.js.map +1 -0
  1142. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.d.ts.map +1 -1
  1143. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js +3 -3
  1144. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js.map +1 -1
  1145. package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.d.ts +11 -0
  1146. package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.d.ts.map +1 -0
  1147. package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.js +118 -0
  1148. package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.js.map +1 -0
  1149. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.d.ts.map +1 -1
  1150. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js +3 -3
  1151. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js.map +1 -1
  1152. package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.d.ts +11 -0
  1153. package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.d.ts.map +1 -0
  1154. package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.js +118 -0
  1155. package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.js.map +1 -0
  1156. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.d.ts.map +1 -1
  1157. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js +11 -12
  1158. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js.map +1 -1
  1159. package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.d.ts +11 -0
  1160. package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.d.ts.map +1 -0
  1161. package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.js +89 -0
  1162. package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.js.map +1 -0
  1163. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.d.ts.map +1 -1
  1164. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js +31 -26
  1165. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js.map +1 -1
  1166. package/dist/lib/generated/Entities/EntityField/sections/details.component.d.ts +11 -0
  1167. package/dist/lib/generated/Entities/EntityField/sections/details.component.d.ts.map +1 -0
  1168. package/dist/lib/generated/Entities/EntityField/sections/details.component.js +561 -0
  1169. package/dist/lib/generated/Entities/EntityField/sections/details.component.js.map +1 -0
  1170. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.d.ts.map +1 -1
  1171. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js +3 -3
  1172. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js.map +1 -1
  1173. package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.d.ts +11 -0
  1174. package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.d.ts.map +1 -0
  1175. package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.js +145 -0
  1176. package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.js.map +1 -0
  1177. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.d.ts.map +1 -1
  1178. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js +3 -3
  1179. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js.map +1 -1
  1180. package/dist/lib/generated/Entities/EntityPermission/sections/details.component.d.ts +11 -0
  1181. package/dist/lib/generated/Entities/EntityPermission/sections/details.component.d.ts.map +1 -0
  1182. package/dist/lib/generated/Entities/EntityPermission/sections/details.component.js +236 -0
  1183. package/dist/lib/generated/Entities/EntityPermission/sections/details.component.js.map +1 -0
  1184. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.d.ts.map +1 -1
  1185. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js +3 -3
  1186. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js.map +1 -1
  1187. package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.d.ts +11 -0
  1188. package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.d.ts.map +1 -0
  1189. package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.js +176 -0
  1190. package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.js.map +1 -0
  1191. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.d.ts.map +1 -1
  1192. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js +3 -3
  1193. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js.map +1 -1
  1194. package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.d.ts +11 -0
  1195. package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.d.ts.map +1 -0
  1196. package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.js +349 -0
  1197. package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.js.map +1 -0
  1198. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.d.ts.map +1 -1
  1199. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js +11 -12
  1200. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js.map +1 -1
  1201. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.d.ts +11 -0
  1202. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.d.ts.map +1 -0
  1203. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.js +98 -0
  1204. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.js.map +1 -0
  1205. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.d.ts.map +1 -1
  1206. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js +3 -3
  1207. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js.map +1 -1
  1208. package/dist/lib/generated/Entities/EntitySetting/sections/details.component.d.ts +11 -0
  1209. package/dist/lib/generated/Entities/EntitySetting/sections/details.component.d.ts.map +1 -0
  1210. package/dist/lib/generated/Entities/EntitySetting/sections/details.component.js +118 -0
  1211. package/dist/lib/generated/Entities/EntitySetting/sections/details.component.js.map +1 -0
  1212. package/dist/lib/generated/Entities/Environment/environment.form.component.d.ts.map +1 -1
  1213. package/dist/lib/generated/Entities/Environment/environment.form.component.js +47 -48
  1214. package/dist/lib/generated/Entities/Environment/environment.form.component.js.map +1 -1
  1215. package/dist/lib/generated/Entities/Environment/sections/details.component.d.ts +11 -0
  1216. package/dist/lib/generated/Entities/Environment/sections/details.component.d.ts.map +1 -0
  1217. package/dist/lib/generated/Entities/Environment/sections/details.component.js +107 -0
  1218. package/dist/lib/generated/Entities/Environment/sections/details.component.js.map +1 -0
  1219. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.d.ts.map +1 -1
  1220. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js +4 -4
  1221. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js.map +1 -1
  1222. package/dist/lib/generated/Entities/ErrorLog/sections/details.component.d.ts +11 -0
  1223. package/dist/lib/generated/Entities/ErrorLog/sections/details.component.d.ts.map +1 -0
  1224. package/dist/lib/generated/Entities/ErrorLog/sections/details.component.js +147 -0
  1225. package/dist/lib/generated/Entities/ErrorLog/sections/details.component.js.map +1 -0
  1226. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.d.ts.map +1 -1
  1227. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js +3 -3
  1228. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js.map +1 -1
  1229. package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.d.ts +11 -0
  1230. package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.d.ts.map +1 -0
  1231. package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.js +152 -0
  1232. package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.js.map +1 -0
  1233. package/dist/lib/generated/Entities/File/file.form.component.d.ts.map +1 -1
  1234. package/dist/lib/generated/Entities/File/file.form.component.js +29 -30
  1235. package/dist/lib/generated/Entities/File/file.form.component.js.map +1 -1
  1236. package/dist/lib/generated/Entities/File/sections/details.component.d.ts +11 -0
  1237. package/dist/lib/generated/Entities/File/sections/details.component.d.ts.map +1 -0
  1238. package/dist/lib/generated/Entities/File/sections/details.component.js +156 -0
  1239. package/dist/lib/generated/Entities/File/sections/details.component.js.map +1 -0
  1240. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.d.ts.map +1 -1
  1241. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js +17 -18
  1242. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js.map +1 -1
  1243. package/dist/lib/generated/Entities/FileCategory/sections/details.component.d.ts +11 -0
  1244. package/dist/lib/generated/Entities/FileCategory/sections/details.component.d.ts.map +1 -0
  1245. package/dist/lib/generated/Entities/FileCategory/sections/details.component.js +118 -0
  1246. package/dist/lib/generated/Entities/FileCategory/sections/details.component.js.map +1 -0
  1247. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.d.ts.map +1 -1
  1248. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js +3 -3
  1249. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js.map +1 -1
  1250. package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.d.ts +11 -0
  1251. package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.d.ts.map +1 -0
  1252. package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.js +120 -0
  1253. package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.js.map +1 -0
  1254. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.d.ts.map +1 -1
  1255. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.js +3 -3
  1256. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.js.map +1 -1
  1257. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.d.ts.map +1 -1
  1258. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js +29 -30
  1259. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js.map +1 -1
  1260. package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.d.ts +11 -0
  1261. package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.d.ts.map +1 -0
  1262. package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.js +134 -0
  1263. package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.js.map +1 -0
  1264. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.d.ts.map +1 -1
  1265. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js +3 -3
  1266. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js.map +1 -1
  1267. package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.d.ts +11 -0
  1268. package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.d.ts.map +1 -0
  1269. package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.js +203 -0
  1270. package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.js.map +1 -0
  1271. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.d.ts.map +1 -1
  1272. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js +17 -18
  1273. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js.map +1 -1
  1274. package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.d.ts +11 -0
  1275. package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.d.ts.map +1 -0
  1276. package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.js +118 -0
  1277. package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.js.map +1 -0
  1278. package/dist/lib/generated/Entities/Integration/integration.form.component.d.ts.map +1 -1
  1279. package/dist/lib/generated/Entities/Integration/integration.form.component.js +23 -24
  1280. package/dist/lib/generated/Entities/Integration/integration.form.component.js.map +1 -1
  1281. package/dist/lib/generated/Entities/Integration/sections/details.component.d.ts +11 -0
  1282. package/dist/lib/generated/Entities/Integration/sections/details.component.d.ts.map +1 -0
  1283. package/dist/lib/generated/Entities/Integration/sections/details.component.js +135 -0
  1284. package/dist/lib/generated/Entities/Integration/sections/details.component.js.map +1 -0
  1285. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.d.ts.map +1 -1
  1286. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js +3 -3
  1287. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js.map +1 -1
  1288. package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.d.ts +11 -0
  1289. package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.d.ts.map +1 -0
  1290. package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.js +139 -0
  1291. package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.js.map +1 -0
  1292. package/dist/lib/generated/Entities/Library/library.form.component.d.ts.map +1 -1
  1293. package/dist/lib/generated/Entities/Library/library.form.component.js +17 -18
  1294. package/dist/lib/generated/Entities/Library/library.form.component.js.map +1 -1
  1295. package/dist/lib/generated/Entities/Library/sections/details.component.d.ts +11 -0
  1296. package/dist/lib/generated/Entities/Library/sections/details.component.d.ts.map +1 -0
  1297. package/dist/lib/generated/Entities/Library/sections/details.component.js +116 -0
  1298. package/dist/lib/generated/Entities/Library/sections/details.component.js.map +1 -0
  1299. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.d.ts.map +1 -1
  1300. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js +3 -3
  1301. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js.map +1 -1
  1302. package/dist/lib/generated/Entities/LibraryItem/sections/details.component.d.ts +11 -0
  1303. package/dist/lib/generated/Entities/LibraryItem/sections/details.component.d.ts.map +1 -0
  1304. package/dist/lib/generated/Entities/LibraryItem/sections/details.component.js +109 -0
  1305. package/dist/lib/generated/Entities/LibraryItem/sections/details.component.js.map +1 -0
  1306. package/dist/lib/generated/Entities/List/list.form.component.d.ts.map +1 -1
  1307. package/dist/lib/generated/Entities/List/list.form.component.js +29 -30
  1308. package/dist/lib/generated/Entities/List/list.form.component.js.map +1 -1
  1309. package/dist/lib/generated/Entities/List/sections/details.component.d.ts +11 -0
  1310. package/dist/lib/generated/Entities/List/sections/details.component.d.ts.map +1 -0
  1311. package/dist/lib/generated/Entities/List/sections/details.component.js +178 -0
  1312. package/dist/lib/generated/Entities/List/sections/details.component.js.map +1 -0
  1313. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.d.ts.map +1 -1
  1314. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js +17 -18
  1315. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js.map +1 -1
  1316. package/dist/lib/generated/Entities/ListCategory/sections/details.component.d.ts +11 -0
  1317. package/dist/lib/generated/Entities/ListCategory/sections/details.component.d.ts.map +1 -0
  1318. package/dist/lib/generated/Entities/ListCategory/sections/details.component.js +138 -0
  1319. package/dist/lib/generated/Entities/ListCategory/sections/details.component.js.map +1 -0
  1320. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.d.ts.map +1 -1
  1321. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js +3 -3
  1322. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js.map +1 -1
  1323. package/dist/lib/generated/Entities/ListDetail/sections/details.component.d.ts +11 -0
  1324. package/dist/lib/generated/Entities/ListDetail/sections/details.component.d.ts.map +1 -0
  1325. package/dist/lib/generated/Entities/ListDetail/sections/details.component.js +127 -0
  1326. package/dist/lib/generated/Entities/ListDetail/sections/details.component.js.map +1 -0
  1327. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.d.ts.map +1 -1
  1328. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js +3 -3
  1329. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js.map +1 -1
  1330. package/dist/lib/generated/Entities/ListShare/listshare.form.component.d.ts.map +1 -1
  1331. package/dist/lib/generated/Entities/ListShare/listshare.form.component.js +3 -3
  1332. package/dist/lib/generated/Entities/ListShare/listshare.form.component.js.map +1 -1
  1333. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.d.ts +11 -0
  1334. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.d.ts.map +1 -0
  1335. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js +177 -0
  1336. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js.map +1 -0
  1337. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.d.ts +11 -0
  1338. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.d.ts.map +1 -0
  1339. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js +211 -0
  1340. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js.map +1 -0
  1341. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.d.ts +11 -0
  1342. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.d.ts.map +1 -0
  1343. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js +77 -0
  1344. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js.map +1 -0
  1345. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.d.ts +11 -0
  1346. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.d.ts.map +1 -0
  1347. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js +73 -0
  1348. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js.map +1 -0
  1349. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.d.ts +11 -0
  1350. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.d.ts.map +1 -0
  1351. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js +131 -0
  1352. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js.map +1 -0
  1353. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.d.ts +11 -0
  1354. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.d.ts.map +1 -0
  1355. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js +101 -0
  1356. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js.map +1 -0
  1357. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.d.ts +11 -0
  1358. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.d.ts.map +1 -0
  1359. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.js +75 -0
  1360. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.js.map +1 -0
  1361. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.d.ts +11 -0
  1362. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.d.ts.map +1 -0
  1363. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.js +81 -0
  1364. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.js.map +1 -0
  1365. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.d.ts +11 -0
  1366. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.d.ts.map +1 -0
  1367. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.js +81 -0
  1368. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.js.map +1 -0
  1369. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.d.ts +11 -0
  1370. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.d.ts.map +1 -0
  1371. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.js +67 -0
  1372. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.js.map +1 -0
  1373. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.d.ts.map +1 -1
  1374. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js +11 -12
  1375. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js.map +1 -1
  1376. package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.d.ts +11 -0
  1377. package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.d.ts.map +1 -0
  1378. package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.js +89 -0
  1379. package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.js.map +1 -0
  1380. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.d.ts.map +1 -1
  1381. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js +11 -12
  1382. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js.map +1 -1
  1383. package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.d.ts +11 -0
  1384. package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.d.ts.map +1 -0
  1385. package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.js +98 -0
  1386. package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.js.map +1 -0
  1387. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.d.ts.map +1 -1
  1388. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js +11 -12
  1389. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js.map +1 -1
  1390. package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.d.ts +11 -0
  1391. package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.d.ts.map +1 -0
  1392. package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.js +89 -0
  1393. package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.js.map +1 -0
  1394. package/dist/lib/generated/Entities/Project/project.form.component.d.ts.map +1 -1
  1395. package/dist/lib/generated/Entities/Project/project.form.component.js +23 -24
  1396. package/dist/lib/generated/Entities/Project/project.form.component.js.map +1 -1
  1397. package/dist/lib/generated/Entities/Project/sections/details.component.d.ts +11 -0
  1398. package/dist/lib/generated/Entities/Project/sections/details.component.d.ts.map +1 -0
  1399. package/dist/lib/generated/Entities/Project/sections/details.component.js +165 -0
  1400. package/dist/lib/generated/Entities/Project/sections/details.component.js.map +1 -0
  1401. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.d.ts.map +1 -1
  1402. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js +3 -3
  1403. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js.map +1 -1
  1404. package/dist/lib/generated/Entities/PublicLink/sections/details.component.d.ts +11 -0
  1405. package/dist/lib/generated/Entities/PublicLink/sections/details.component.d.ts.map +1 -0
  1406. package/dist/lib/generated/Entities/PublicLink/sections/details.component.js +163 -0
  1407. package/dist/lib/generated/Entities/PublicLink/sections/details.component.js.map +1 -0
  1408. package/dist/lib/generated/Entities/Query/query.form.component.d.ts.map +1 -1
  1409. package/dist/lib/generated/Entities/Query/query.form.component.js +35 -36
  1410. package/dist/lib/generated/Entities/Query/query.form.component.js.map +1 -1
  1411. package/dist/lib/generated/Entities/Query/sections/details.component.d.ts +11 -0
  1412. package/dist/lib/generated/Entities/Query/sections/details.component.d.ts.map +1 -0
  1413. package/dist/lib/generated/Entities/Query/sections/details.component.js +255 -0
  1414. package/dist/lib/generated/Entities/Query/sections/details.component.js.map +1 -0
  1415. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.d.ts.map +1 -1
  1416. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js +17 -18
  1417. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js.map +1 -1
  1418. package/dist/lib/generated/Entities/QueryCategory/sections/details.component.d.ts +11 -0
  1419. package/dist/lib/generated/Entities/QueryCategory/sections/details.component.d.ts.map +1 -0
  1420. package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js +174 -0
  1421. package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js.map +1 -0
  1422. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.d.ts.map +1 -1
  1423. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js +3 -3
  1424. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js.map +1 -1
  1425. package/dist/lib/generated/Entities/QueryEntity/sections/details.component.d.ts +11 -0
  1426. package/dist/lib/generated/Entities/QueryEntity/sections/details.component.d.ts.map +1 -0
  1427. package/dist/lib/generated/Entities/QueryEntity/sections/details.component.js +129 -0
  1428. package/dist/lib/generated/Entities/QueryEntity/sections/details.component.js.map +1 -0
  1429. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.d.ts.map +1 -1
  1430. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js +3 -3
  1431. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js.map +1 -1
  1432. package/dist/lib/generated/Entities/QueryField/sections/details.component.d.ts +11 -0
  1433. package/dist/lib/generated/Entities/QueryField/sections/details.component.d.ts.map +1 -0
  1434. package/dist/lib/generated/Entities/QueryField/sections/details.component.js +219 -0
  1435. package/dist/lib/generated/Entities/QueryField/sections/details.component.js.map +1 -0
  1436. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.d.ts.map +1 -1
  1437. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js +3 -3
  1438. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js.map +1 -1
  1439. package/dist/lib/generated/Entities/QueryParameter/sections/details.component.d.ts +11 -0
  1440. package/dist/lib/generated/Entities/QueryParameter/sections/details.component.d.ts.map +1 -0
  1441. package/dist/lib/generated/Entities/QueryParameter/sections/details.component.js +172 -0
  1442. package/dist/lib/generated/Entities/QueryParameter/sections/details.component.js.map +1 -0
  1443. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.d.ts.map +1 -1
  1444. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js +3 -3
  1445. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js.map +1 -1
  1446. package/dist/lib/generated/Entities/QueryPermission/sections/details.component.d.ts +11 -0
  1447. package/dist/lib/generated/Entities/QueryPermission/sections/details.component.d.ts.map +1 -0
  1448. package/dist/lib/generated/Entities/QueryPermission/sections/details.component.js +111 -0
  1449. package/dist/lib/generated/Entities/QueryPermission/sections/details.component.js.map +1 -0
  1450. package/dist/lib/generated/Entities/Queue/queue.form.component.d.ts.map +1 -1
  1451. package/dist/lib/generated/Entities/Queue/queue.form.component.js +11 -12
  1452. package/dist/lib/generated/Entities/Queue/queue.form.component.js.map +1 -1
  1453. package/dist/lib/generated/Entities/Queue/sections/details.component.d.ts +11 -0
  1454. package/dist/lib/generated/Entities/Queue/sections/details.component.d.ts.map +1 -0
  1455. package/dist/lib/generated/Entities/Queue/sections/details.component.js +226 -0
  1456. package/dist/lib/generated/Entities/Queue/sections/details.component.js.map +1 -0
  1457. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.d.ts.map +1 -1
  1458. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js +3 -3
  1459. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js.map +1 -1
  1460. package/dist/lib/generated/Entities/QueueTask/sections/details.component.d.ts +11 -0
  1461. package/dist/lib/generated/Entities/QueueTask/sections/details.component.d.ts.map +1 -0
  1462. package/dist/lib/generated/Entities/QueueTask/sections/details.component.js +163 -0
  1463. package/dist/lib/generated/Entities/QueueTask/sections/details.component.js.map +1 -0
  1464. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.d.ts.map +1 -1
  1465. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js +11 -12
  1466. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js.map +1 -1
  1467. package/dist/lib/generated/Entities/QueueType/sections/details.component.d.ts +11 -0
  1468. package/dist/lib/generated/Entities/QueueType/sections/details.component.d.ts.map +1 -0
  1469. package/dist/lib/generated/Entities/QueueType/sections/details.component.js +116 -0
  1470. package/dist/lib/generated/Entities/QueueType/sections/details.component.js.map +1 -0
  1471. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.d.ts.map +1 -1
  1472. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js +16 -23
  1473. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js.map +1 -1
  1474. package/dist/lib/generated/Entities/Recommendation/sections/details.component.d.ts +11 -0
  1475. package/dist/lib/generated/Entities/Recommendation/sections/details.component.d.ts.map +1 -0
  1476. package/dist/lib/generated/Entities/Recommendation/sections/details.component.js +111 -0
  1477. package/dist/lib/generated/Entities/Recommendation/sections/details.component.js.map +1 -0
  1478. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.d.ts.map +1 -1
  1479. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js +7 -13
  1480. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js.map +1 -1
  1481. package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.d.ts +11 -0
  1482. package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.d.ts.map +1 -0
  1483. package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.js +120 -0
  1484. package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.js.map +1 -0
  1485. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.d.ts.map +1 -1
  1486. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js +11 -12
  1487. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js.map +1 -1
  1488. package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.d.ts +11 -0
  1489. package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.d.ts.map +1 -0
  1490. package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.js +89 -0
  1491. package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.js.map +1 -0
  1492. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.d.ts.map +1 -1
  1493. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js +11 -12
  1494. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js.map +1 -1
  1495. package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.d.ts +11 -0
  1496. package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.d.ts.map +1 -0
  1497. package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.js +147 -0
  1498. package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.js.map +1 -0
  1499. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.d.ts.map +1 -1
  1500. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js +31 -19
  1501. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js.map +1 -1
  1502. package/dist/lib/generated/Entities/RecordChange/sections/details.component.d.ts +11 -0
  1503. package/dist/lib/generated/Entities/RecordChange/sections/details.component.d.ts.map +1 -0
  1504. package/dist/lib/generated/Entities/RecordChange/sections/details.component.js +232 -0
  1505. package/dist/lib/generated/Entities/RecordChange/sections/details.component.js.map +1 -0
  1506. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.d.ts.map +1 -1
  1507. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js +11 -12
  1508. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js.map +1 -1
  1509. package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.d.ts +11 -0
  1510. package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.d.ts.map +1 -0
  1511. package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.js +118 -0
  1512. package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.js.map +1 -0
  1513. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.d.ts.map +1 -1
  1514. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js +3 -3
  1515. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js.map +1 -1
  1516. package/dist/lib/generated/Entities/RecordLink/sections/details.component.d.ts +11 -0
  1517. package/dist/lib/generated/Entities/RecordLink/sections/details.component.d.ts.map +1 -0
  1518. package/dist/lib/generated/Entities/RecordLink/sections/details.component.js +156 -0
  1519. package/dist/lib/generated/Entities/RecordLink/sections/details.component.js.map +1 -0
  1520. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.d.ts.map +1 -1
  1521. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js +7 -13
  1522. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js.map +1 -1
  1523. package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.d.ts +11 -0
  1524. package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.d.ts.map +1 -0
  1525. package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.js +109 -0
  1526. package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.js.map +1 -0
  1527. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.d.ts.map +1 -1
  1528. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js +17 -18
  1529. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js.map +1 -1
  1530. package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.d.ts +11 -0
  1531. package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.d.ts.map +1 -0
  1532. package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.js +194 -0
  1533. package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.js.map +1 -0
  1534. package/dist/lib/generated/Entities/Report/report.form.component.d.ts.map +1 -1
  1535. package/dist/lib/generated/Entities/Report/report.form.component.js +28 -35
  1536. package/dist/lib/generated/Entities/Report/report.form.component.js.map +1 -1
  1537. package/dist/lib/generated/Entities/Report/sections/details.component.d.ts +11 -0
  1538. package/dist/lib/generated/Entities/Report/sections/details.component.d.ts.map +1 -0
  1539. package/dist/lib/generated/Entities/Report/sections/details.component.js +325 -0
  1540. package/dist/lib/generated/Entities/Report/sections/details.component.js.map +1 -0
  1541. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.d.ts.map +1 -1
  1542. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js +17 -18
  1543. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js.map +1 -1
  1544. package/dist/lib/generated/Entities/ReportCategory/sections/details.component.d.ts +11 -0
  1545. package/dist/lib/generated/Entities/ReportCategory/sections/details.component.d.ts.map +1 -0
  1546. package/dist/lib/generated/Entities/ReportCategory/sections/details.component.js +138 -0
  1547. package/dist/lib/generated/Entities/ReportCategory/sections/details.component.js.map +1 -0
  1548. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.d.ts.map +1 -1
  1549. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js +3 -3
  1550. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js.map +1 -1
  1551. package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.d.ts +11 -0
  1552. package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.d.ts.map +1 -0
  1553. package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.js +120 -0
  1554. package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.js.map +1 -0
  1555. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.d.ts.map +1 -1
  1556. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js +3 -3
  1557. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js.map +1 -1
  1558. package/dist/lib/generated/Entities/ReportUserState/sections/details.component.d.ts +11 -0
  1559. package/dist/lib/generated/Entities/ReportUserState/sections/details.component.d.ts.map +1 -0
  1560. package/dist/lib/generated/Entities/ReportUserState/sections/details.component.js +120 -0
  1561. package/dist/lib/generated/Entities/ReportUserState/sections/details.component.js.map +1 -0
  1562. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.d.ts.map +1 -1
  1563. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js +3 -3
  1564. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js.map +1 -1
  1565. package/dist/lib/generated/Entities/ReportVersion/sections/details.component.d.ts +11 -0
  1566. package/dist/lib/generated/Entities/ReportVersion/sections/details.component.d.ts.map +1 -0
  1567. package/dist/lib/generated/Entities/ReportVersion/sections/details.component.js +136 -0
  1568. package/dist/lib/generated/Entities/ReportVersion/sections/details.component.js.map +1 -0
  1569. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.d.ts.map +1 -1
  1570. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js +3 -3
  1571. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js.map +1 -1
  1572. package/dist/lib/generated/Entities/ResourceLink/sections/details.component.d.ts +11 -0
  1573. package/dist/lib/generated/Entities/ResourceLink/sections/details.component.d.ts.map +1 -0
  1574. package/dist/lib/generated/Entities/ResourceLink/sections/details.component.js +129 -0
  1575. package/dist/lib/generated/Entities/ResourceLink/sections/details.component.js.map +1 -0
  1576. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.d.ts.map +1 -1
  1577. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js +3 -3
  1578. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js.map +1 -1
  1579. package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.d.ts +11 -0
  1580. package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.d.ts.map +1 -0
  1581. package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.js +185 -0
  1582. package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.js.map +1 -0
  1583. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.d.ts.map +1 -1
  1584. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js +29 -30
  1585. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js.map +1 -1
  1586. package/dist/lib/generated/Entities/ResourceType/sections/details.component.d.ts +11 -0
  1587. package/dist/lib/generated/Entities/ResourceType/sections/details.component.d.ts.map +1 -0
  1588. package/dist/lib/generated/Entities/ResourceType/sections/details.component.js +147 -0
  1589. package/dist/lib/generated/Entities/ResourceType/sections/details.component.js.map +1 -0
  1590. package/dist/lib/generated/Entities/Role/role.form.component.d.ts.map +1 -1
  1591. package/dist/lib/generated/Entities/Role/role.form.component.js +59 -42
  1592. package/dist/lib/generated/Entities/Role/role.form.component.js.map +1 -1
  1593. package/dist/lib/generated/Entities/Role/sections/details.component.d.ts +11 -0
  1594. package/dist/lib/generated/Entities/Role/sections/details.component.d.ts.map +1 -0
  1595. package/dist/lib/generated/Entities/Role/sections/details.component.js +107 -0
  1596. package/dist/lib/generated/Entities/Role/sections/details.component.js.map +1 -0
  1597. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.d.ts.map +1 -1
  1598. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js +11 -12
  1599. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js.map +1 -1
  1600. package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.d.ts +11 -0
  1601. package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.d.ts.map +1 -0
  1602. package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.js +98 -0
  1603. package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.js.map +1 -0
  1604. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.d.ts.map +1 -1
  1605. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js +11 -12
  1606. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js.map +1 -1
  1607. package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.d.ts +11 -0
  1608. package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.d.ts.map +1 -0
  1609. package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.js +210 -0
  1610. package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.js.map +1 -0
  1611. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.d.ts.map +1 -1
  1612. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js +3 -3
  1613. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js.map +1 -1
  1614. package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.d.ts +11 -0
  1615. package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.d.ts.map +1 -0
  1616. package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.js +138 -0
  1617. package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.js.map +1 -0
  1618. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.d.ts.map +1 -1
  1619. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js +11 -12
  1620. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js.map +1 -1
  1621. package/dist/lib/generated/Entities/ScheduledJob/sections/details.component.d.ts +11 -0
  1622. package/dist/lib/generated/Entities/ScheduledJob/sections/details.component.d.ts.map +1 -0
  1623. package/dist/lib/generated/Entities/ScheduledJob/sections/details.component.js +329 -0
  1624. package/dist/lib/generated/Entities/ScheduledJob/sections/details.component.js.map +1 -0
  1625. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.d.ts.map +1 -1
  1626. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js +11 -12
  1627. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js.map +1 -1
  1628. package/dist/lib/generated/Entities/ScheduledJobRun/sections/details.component.d.ts +11 -0
  1629. package/dist/lib/generated/Entities/ScheduledJobRun/sections/details.component.d.ts.map +1 -0
  1630. package/dist/lib/generated/Entities/ScheduledJobRun/sections/details.component.js +174 -0
  1631. package/dist/lib/generated/Entities/ScheduledJobRun/sections/details.component.js.map +1 -0
  1632. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.d.ts.map +1 -1
  1633. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js +11 -12
  1634. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js.map +1 -1
  1635. package/dist/lib/generated/Entities/ScheduledJobType/sections/details.component.d.ts +11 -0
  1636. package/dist/lib/generated/Entities/ScheduledJobType/sections/details.component.d.ts.map +1 -0
  1637. package/dist/lib/generated/Entities/ScheduledJobType/sections/details.component.js +125 -0
  1638. package/dist/lib/generated/Entities/ScheduledJobType/sections/details.component.js.map +1 -0
  1639. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.d.ts.map +1 -1
  1640. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js +3 -3
  1641. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js.map +1 -1
  1642. package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.d.ts +11 -0
  1643. package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.d.ts.map +1 -0
  1644. package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.js +107 -0
  1645. package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.js.map +1 -0
  1646. package/dist/lib/generated/Entities/Skill/sections/details.component.d.ts +11 -0
  1647. package/dist/lib/generated/Entities/Skill/sections/details.component.d.ts.map +1 -0
  1648. package/dist/lib/generated/Entities/Skill/sections/details.component.js +109 -0
  1649. package/dist/lib/generated/Entities/Skill/sections/details.component.js.map +1 -0
  1650. package/dist/lib/generated/Entities/Skill/skill.form.component.d.ts.map +1 -1
  1651. package/dist/lib/generated/Entities/Skill/skill.form.component.js +17 -18
  1652. package/dist/lib/generated/Entities/Skill/skill.form.component.js.map +1 -1
  1653. package/dist/lib/generated/Entities/Tag/sections/details.component.d.ts +11 -0
  1654. package/dist/lib/generated/Entities/Tag/sections/details.component.d.ts.map +1 -0
  1655. package/dist/lib/generated/Entities/Tag/sections/details.component.js +127 -0
  1656. package/dist/lib/generated/Entities/Tag/sections/details.component.js.map +1 -0
  1657. package/dist/lib/generated/Entities/Tag/tag.form.component.d.ts.map +1 -1
  1658. package/dist/lib/generated/Entities/Tag/tag.form.component.js +17 -18
  1659. package/dist/lib/generated/Entities/Tag/tag.form.component.js.map +1 -1
  1660. package/dist/lib/generated/Entities/TaggedItem/sections/details.component.d.ts +11 -0
  1661. package/dist/lib/generated/Entities/TaggedItem/sections/details.component.d.ts.map +1 -0
  1662. package/dist/lib/generated/Entities/TaggedItem/sections/details.component.js +120 -0
  1663. package/dist/lib/generated/Entities/TaggedItem/sections/details.component.js.map +1 -0
  1664. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.d.ts.map +1 -1
  1665. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js +3 -3
  1666. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js.map +1 -1
  1667. package/dist/lib/generated/Entities/Task/sections/details.component.d.ts +11 -0
  1668. package/dist/lib/generated/Entities/Task/sections/details.component.d.ts.map +1 -0
  1669. package/dist/lib/generated/Entities/Task/sections/details.component.js +274 -0
  1670. package/dist/lib/generated/Entities/Task/sections/details.component.js.map +1 -0
  1671. package/dist/lib/generated/Entities/Task/task.form.component.d.ts.map +1 -1
  1672. package/dist/lib/generated/Entities/Task/task.form.component.js +33 -40
  1673. package/dist/lib/generated/Entities/Task/task.form.component.js.map +1 -1
  1674. package/dist/lib/generated/Entities/TaskDependency/sections/details.component.d.ts +11 -0
  1675. package/dist/lib/generated/Entities/TaskDependency/sections/details.component.d.ts.map +1 -0
  1676. package/dist/lib/generated/Entities/TaskDependency/sections/details.component.js +120 -0
  1677. package/dist/lib/generated/Entities/TaskDependency/sections/details.component.js.map +1 -0
  1678. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.d.ts.map +1 -1
  1679. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js +3 -3
  1680. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js.map +1 -1
  1681. package/dist/lib/generated/Entities/TaskType/sections/details.component.d.ts +11 -0
  1682. package/dist/lib/generated/Entities/TaskType/sections/details.component.d.ts.map +1 -0
  1683. package/dist/lib/generated/Entities/TaskType/sections/details.component.js +89 -0
  1684. package/dist/lib/generated/Entities/TaskType/sections/details.component.js.map +1 -0
  1685. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.d.ts.map +1 -1
  1686. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js +11 -12
  1687. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js.map +1 -1
  1688. package/dist/lib/generated/Entities/Template/sections/details.component.d.ts +11 -0
  1689. package/dist/lib/generated/Entities/Template/sections/details.component.d.ts.map +1 -0
  1690. package/dist/lib/generated/Entities/Template/sections/details.component.js +165 -0
  1691. package/dist/lib/generated/Entities/Template/sections/details.component.js.map +1 -0
  1692. package/dist/lib/generated/Entities/Template/template.form.component.d.ts.map +1 -1
  1693. package/dist/lib/generated/Entities/Template/template.form.component.js +41 -42
  1694. package/dist/lib/generated/Entities/Template/template.form.component.js.map +1 -1
  1695. package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.d.ts +11 -0
  1696. package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.d.ts.map +1 -0
  1697. package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.js +138 -0
  1698. package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.js.map +1 -0
  1699. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.d.ts.map +1 -1
  1700. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js +17 -18
  1701. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js.map +1 -1
  1702. package/dist/lib/generated/Entities/TemplateContent/sections/details.component.d.ts +11 -0
  1703. package/dist/lib/generated/Entities/TemplateContent/sections/details.component.d.ts.map +1 -0
  1704. package/dist/lib/generated/Entities/TemplateContent/sections/details.component.js +138 -0
  1705. package/dist/lib/generated/Entities/TemplateContent/sections/details.component.js.map +1 -0
  1706. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.d.ts.map +1 -1
  1707. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js +11 -12
  1708. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js.map +1 -1
  1709. package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.d.ts +11 -0
  1710. package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.d.ts.map +1 -0
  1711. package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.js +98 -0
  1712. package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.js.map +1 -0
  1713. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.d.ts.map +1 -1
  1714. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js +11 -12
  1715. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js.map +1 -1
  1716. package/dist/lib/generated/Entities/TemplateParam/sections/details.component.d.ts +11 -0
  1717. package/dist/lib/generated/Entities/TemplateParam/sections/details.component.d.ts.map +1 -0
  1718. package/dist/lib/generated/Entities/TemplateParam/sections/details.component.js +212 -0
  1719. package/dist/lib/generated/Entities/TemplateParam/sections/details.component.js.map +1 -0
  1720. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.d.ts.map +1 -1
  1721. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js +12 -18
  1722. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js.map +1 -1
  1723. package/dist/lib/generated/Entities/Test/test.form.component.d.ts.map +1 -1
  1724. package/dist/lib/generated/Entities/Test/test.form.component.js +17 -18
  1725. package/dist/lib/generated/Entities/Test/test.form.component.js.map +1 -1
  1726. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.d.ts.map +1 -1
  1727. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js +3 -3
  1728. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js.map +1 -1
  1729. package/dist/lib/generated/Entities/TestRun/testrun.form.component.d.ts.map +1 -1
  1730. package/dist/lib/generated/Entities/TestRun/testrun.form.component.js +35 -36
  1731. package/dist/lib/generated/Entities/TestRun/testrun.form.component.js.map +1 -1
  1732. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.d.ts.map +1 -1
  1733. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js +3 -3
  1734. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js.map +1 -1
  1735. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.d.ts.map +1 -1
  1736. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js +23 -24
  1737. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js.map +1 -1
  1738. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.d.ts.map +1 -1
  1739. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js +11 -12
  1740. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js.map +1 -1
  1741. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.d.ts.map +1 -1
  1742. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js +3 -3
  1743. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js.map +1 -1
  1744. package/dist/lib/generated/Entities/TestType/testtype.form.component.d.ts.map +1 -1
  1745. package/dist/lib/generated/Entities/TestType/testtype.form.component.js +17 -18
  1746. package/dist/lib/generated/Entities/TestType/testtype.form.component.js.map +1 -1
  1747. package/dist/lib/generated/Entities/User/sections/details.component.d.ts +11 -0
  1748. package/dist/lib/generated/Entities/User/sections/details.component.d.ts.map +1 -0
  1749. package/dist/lib/generated/Entities/User/sections/details.component.js +247 -0
  1750. package/dist/lib/generated/Entities/User/sections/details.component.js.map +1 -0
  1751. package/dist/lib/generated/Entities/User/user.form.component.d.ts.map +1 -1
  1752. package/dist/lib/generated/Entities/User/user.form.component.js +560 -471
  1753. package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
  1754. package/dist/lib/generated/Entities/UserApplication/sections/details.component.d.ts +11 -0
  1755. package/dist/lib/generated/Entities/UserApplication/sections/details.component.d.ts.map +1 -0
  1756. package/dist/lib/generated/Entities/UserApplication/sections/details.component.js +129 -0
  1757. package/dist/lib/generated/Entities/UserApplication/sections/details.component.js.map +1 -0
  1758. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.d.ts.map +1 -1
  1759. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js +11 -12
  1760. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js.map +1 -1
  1761. package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.d.ts +11 -0
  1762. package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.d.ts.map +1 -0
  1763. package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.js +129 -0
  1764. package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.js.map +1 -0
  1765. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.d.ts.map +1 -1
  1766. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js +3 -3
  1767. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js.map +1 -1
  1768. package/dist/lib/generated/Entities/UserFavorite/sections/details.component.d.ts +11 -0
  1769. package/dist/lib/generated/Entities/UserFavorite/sections/details.component.d.ts.map +1 -0
  1770. package/dist/lib/generated/Entities/UserFavorite/sections/details.component.js +129 -0
  1771. package/dist/lib/generated/Entities/UserFavorite/sections/details.component.js.map +1 -0
  1772. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.d.ts.map +1 -1
  1773. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js +3 -3
  1774. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js.map +1 -1
  1775. package/dist/lib/generated/Entities/UserNotification/sections/details.component.d.ts +11 -0
  1776. package/dist/lib/generated/Entities/UserNotification/sections/details.component.d.ts.map +1 -0
  1777. package/dist/lib/generated/Entities/UserNotification/sections/details.component.js +165 -0
  1778. package/dist/lib/generated/Entities/UserNotification/sections/details.component.js.map +1 -0
  1779. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.d.ts.map +1 -1
  1780. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js +3 -3
  1781. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js.map +1 -1
  1782. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.d.ts.map +1 -1
  1783. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.js +3 -3
  1784. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.js.map +1 -1
  1785. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.d.ts.map +1 -1
  1786. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.js +17 -18
  1787. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.js.map +1 -1
  1788. package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.d.ts +11 -0
  1789. package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.d.ts.map +1 -0
  1790. package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.js +183 -0
  1791. package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.js.map +1 -0
  1792. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.d.ts.map +1 -1
  1793. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js +3 -3
  1794. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js.map +1 -1
  1795. package/dist/lib/generated/Entities/UserRole/sections/details.component.d.ts +11 -0
  1796. package/dist/lib/generated/Entities/UserRole/sections/details.component.d.ts.map +1 -0
  1797. package/dist/lib/generated/Entities/UserRole/sections/details.component.js +111 -0
  1798. package/dist/lib/generated/Entities/UserRole/sections/details.component.js.map +1 -0
  1799. package/dist/lib/generated/Entities/UserRole/userrole.form.component.d.ts.map +1 -1
  1800. package/dist/lib/generated/Entities/UserRole/userrole.form.component.js +3 -3
  1801. package/dist/lib/generated/Entities/UserRole/userrole.form.component.js.map +1 -1
  1802. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.d.ts.map +1 -1
  1803. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js +3 -3
  1804. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js.map +1 -1
  1805. package/dist/lib/generated/Entities/UserView/sections/details.component.d.ts +11 -0
  1806. package/dist/lib/generated/Entities/UserView/sections/details.component.d.ts.map +1 -0
  1807. package/dist/lib/generated/Entities/UserView/sections/details.component.js +293 -0
  1808. package/dist/lib/generated/Entities/UserView/sections/details.component.js.map +1 -0
  1809. package/dist/lib/generated/Entities/UserView/userview.form.component.d.ts.map +1 -1
  1810. package/dist/lib/generated/Entities/UserView/userview.form.component.js +23 -24
  1811. package/dist/lib/generated/Entities/UserView/userview.form.component.js.map +1 -1
  1812. package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.d.ts +11 -0
  1813. package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.d.ts.map +1 -0
  1814. package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.js +158 -0
  1815. package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.js.map +1 -0
  1816. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.d.ts.map +1 -1
  1817. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js +17 -18
  1818. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js.map +1 -1
  1819. package/dist/lib/generated/Entities/UserViewRun/sections/details.component.d.ts +11 -0
  1820. package/dist/lib/generated/Entities/UserViewRun/sections/details.component.d.ts.map +1 -0
  1821. package/dist/lib/generated/Entities/UserViewRun/sections/details.component.js +120 -0
  1822. package/dist/lib/generated/Entities/UserViewRun/sections/details.component.js.map +1 -0
  1823. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.d.ts.map +1 -1
  1824. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js +11 -12
  1825. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js.map +1 -1
  1826. package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.d.ts +11 -0
  1827. package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.d.ts.map +1 -0
  1828. package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.js +109 -0
  1829. package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.js.map +1 -0
  1830. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.d.ts.map +1 -1
  1831. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js +3 -3
  1832. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js.map +1 -1
  1833. package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.d.ts +11 -0
  1834. package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.d.ts.map +1 -0
  1835. package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.js +107 -0
  1836. package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.js.map +1 -0
  1837. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.d.ts.map +1 -1
  1838. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js +17 -18
  1839. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js.map +1 -1
  1840. package/dist/lib/generated/Entities/VectorIndex/sections/details.component.d.ts +11 -0
  1841. package/dist/lib/generated/Entities/VectorIndex/sections/details.component.d.ts.map +1 -0
  1842. package/dist/lib/generated/Entities/VectorIndex/sections/details.component.js +129 -0
  1843. package/dist/lib/generated/Entities/VectorIndex/sections/details.component.js.map +1 -0
  1844. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.d.ts.map +1 -1
  1845. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js +11 -12
  1846. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js.map +1 -1
  1847. package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.d.ts +11 -0
  1848. package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.d.ts.map +1 -0
  1849. package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.js +152 -0
  1850. package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.js.map +1 -0
  1851. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.d.ts.map +1 -1
  1852. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js +3 -3
  1853. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js.map +1 -1
  1854. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.d.ts +11 -0
  1855. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.d.ts.map +1 -0
  1856. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.js +167 -0
  1857. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.js.map +1 -0
  1858. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.d.ts +11 -0
  1859. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.d.ts.map +1 -0
  1860. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.js +73 -0
  1861. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.js.map +1 -0
  1862. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.d.ts +11 -0
  1863. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.d.ts.map +1 -0
  1864. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.js +85 -0
  1865. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.js.map +1 -0
  1866. package/dist/lib/generated/Entities/Workflow/sections/details.component.d.ts +11 -0
  1867. package/dist/lib/generated/Entities/Workflow/sections/details.component.d.ts.map +1 -0
  1868. package/dist/lib/generated/Entities/Workflow/sections/details.component.js +154 -0
  1869. package/dist/lib/generated/Entities/Workflow/sections/details.component.js.map +1 -0
  1870. package/dist/lib/generated/Entities/Workflow/workflow.form.component.d.ts.map +1 -1
  1871. package/dist/lib/generated/Entities/Workflow/workflow.form.component.js +17 -18
  1872. package/dist/lib/generated/Entities/Workflow/workflow.form.component.js.map +1 -1
  1873. package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.d.ts +11 -0
  1874. package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.d.ts.map +1 -0
  1875. package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.js +107 -0
  1876. package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.js.map +1 -0
  1877. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.d.ts.map +1 -1
  1878. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js +11 -12
  1879. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js.map +1 -1
  1880. package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.d.ts +11 -0
  1881. package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.d.ts.map +1 -0
  1882. package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.js +145 -0
  1883. package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.js.map +1 -0
  1884. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.d.ts.map +1 -1
  1885. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js +3 -3
  1886. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js.map +1 -1
  1887. package/dist/lib/generated/Entities/Workspace/sections/details.component.d.ts +11 -0
  1888. package/dist/lib/generated/Entities/Workspace/sections/details.component.d.ts.map +1 -0
  1889. package/dist/lib/generated/Entities/Workspace/sections/details.component.js +109 -0
  1890. package/dist/lib/generated/Entities/Workspace/sections/details.component.js.map +1 -0
  1891. package/dist/lib/generated/Entities/Workspace/workspace.form.component.d.ts.map +1 -1
  1892. package/dist/lib/generated/Entities/Workspace/workspace.form.component.js +11 -12
  1893. package/dist/lib/generated/Entities/Workspace/workspace.form.component.js.map +1 -1
  1894. package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.d.ts +11 -0
  1895. package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.d.ts.map +1 -0
  1896. package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.js +156 -0
  1897. package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.js.map +1 -0
  1898. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.d.ts.map +1 -1
  1899. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js +3 -3
  1900. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js.map +1 -1
  1901. package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.d.ts +11 -0
  1902. package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.d.ts.map +1 -0
  1903. package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.js +67 -0
  1904. package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.js.map +1 -0
  1905. package/dist/lib/generated/generated-forms.module.d.ts +104 -86
  1906. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  1907. package/dist/lib/generated/generated-forms.module.js +188 -79
  1908. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  1909. package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
  1910. package/dist/lib/shared/components/template-editor.component.js +167 -164
  1911. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  1912. package/dist/public-api.d.ts +0 -1
  1913. package/dist/public-api.d.ts.map +1 -1
  1914. package/dist/public-api.js +2 -1
  1915. package/dist/public-api.js.map +1 -1
  1916. package/package.json +54 -52
@@ -19,11 +19,12 @@ import * as i0 from "@angular/core";
19
19
  import * as i1 from "@memberjunction/ng-shared";
20
20
  import * as i2 from "@angular/router";
21
21
  import * as i3 from "@memberjunction/ng-testing";
22
- import * as i4 from "@angular/common";
23
- import * as i5 from "@angular/forms";
24
- import * as i6 from "@progress/kendo-angular-dialog";
25
- import * as i7 from "@progress/kendo-angular-buttons";
26
- import * as i8 from "@memberjunction/ng-shared-generic";
22
+ import * as i4 from "@memberjunction/ng-base-application";
23
+ import * as i5 from "@angular/common";
24
+ import * as i6 from "@angular/forms";
25
+ import * as i7 from "@progress/kendo-angular-dialog";
26
+ import * as i8 from "@progress/kendo-angular-buttons";
27
+ import * as i9 from "@memberjunction/ng-shared-generic";
27
28
  const _c0 = ["chartContainer"];
28
29
  const _c1 = () => [1, 2, 3, 4, 5];
29
30
  const _c2 = () => [1, 2, 3];
@@ -33,9 +34,9 @@ const _c5 = (a0, a1, a2) => ({ "high": a0, "medium": a1, "low": a2 });
33
34
  const _c6 = (a0, a1) => ({ "positive": a0, "negative": a1 });
34
35
  const _c7 = (a0, a1, a2) => ({ "fa-arrow-down": a0, "fa-arrow-up": a1, "fa-minus": a2 });
35
36
  const _c8 = (a0, a1) => ({ "improved": a0, "regressed": a1 });
36
- function TestSuiteFormComponentExtended_span_13_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵelementStart(0, "span", 37);
38
- i0.ɵɵelement(1, "i", 23);
37
+ function TestSuiteFormComponentExtended_Conditional_25_Template(rf, ctx) { if (rf & 1) {
38
+ i0.ɵɵelementStart(0, "span", 17);
39
+ i0.ɵɵelement(1, "i", 29);
39
40
  i0.ɵɵtext(2);
40
41
  i0.ɵɵelementEnd();
41
42
  } if (rf & 2) {
@@ -43,8 +44,8 @@ function TestSuiteFormComponentExtended_span_13_Template(rf, ctx) { if (rf & 1)
43
44
  i0.ɵɵadvance(2);
44
45
  i0.ɵɵtextInterpolate1(" ", ctx_r0.suiteTests.length, " tests ");
45
46
  } }
46
- function TestSuiteFormComponentExtended_div_25_Template(rf, ctx) { if (rf & 1) {
47
- i0.ɵɵelementStart(0, "div", 38)(1, "p");
47
+ function TestSuiteFormComponentExtended_Conditional_37_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelementStart(0, "div", 24)(1, "p");
48
49
  i0.ɵɵtext(2);
49
50
  i0.ɵɵelementEnd()();
50
51
  } if (rf & 2) {
@@ -52,8 +53,8 @@ function TestSuiteFormComponentExtended_div_25_Template(rf, ctx) { if (rf & 1) {
52
53
  i0.ɵɵadvance(2);
53
54
  i0.ɵɵtextInterpolate(ctx_r0.record.Description);
54
55
  } }
55
- function TestSuiteFormComponentExtended_span_34_Template(rf, ctx) { if (rf & 1) {
56
- i0.ɵɵelementStart(0, "span", 39);
56
+ function TestSuiteFormComponentExtended_Conditional_46_Template(rf, ctx) { if (rf & 1) {
57
+ i0.ɵɵelementStart(0, "span", 30);
57
58
  i0.ɵɵtext(1);
58
59
  i0.ɵɵelementEnd();
59
60
  } if (rf & 2) {
@@ -61,8 +62,8 @@ function TestSuiteFormComponentExtended_span_34_Template(rf, ctx) { if (rf & 1)
61
62
  i0.ɵɵadvance();
62
63
  i0.ɵɵtextInterpolate(ctx_r0.suiteTests.length);
63
64
  } }
64
- function TestSuiteFormComponentExtended_span_38_Template(rf, ctx) { if (rf & 1) {
65
- i0.ɵɵelementStart(0, "span", 39);
65
+ function TestSuiteFormComponentExtended_Conditional_50_Template(rf, ctx) { if (rf & 1) {
66
+ i0.ɵɵelementStart(0, "span", 30);
66
67
  i0.ɵɵtext(1);
67
68
  i0.ɵɵelementEnd();
68
69
  } if (rf & 2) {
@@ -70,55 +71,55 @@ function TestSuiteFormComponentExtended_span_38_Template(rf, ctx) { if (rf & 1)
70
71
  i0.ɵɵadvance();
71
72
  i0.ɵɵtextInterpolate(ctx_r0.suiteRuns.length);
72
73
  } }
73
- function TestSuiteFormComponentExtended_div_46_Template(rf, ctx) { if (rf & 1) {
74
+ function TestSuiteFormComponentExtended_Conditional_58_Template(rf, ctx) { if (rf & 1) {
74
75
  const _r2 = i0.ɵɵgetCurrentView();
75
- i0.ɵɵelementStart(0, "div", 40)(1, "div", 41)(2, "h3");
76
- i0.ɵɵelement(3, "i", 42);
76
+ i0.ɵɵelementStart(0, "div", 35)(1, "div", 43)(2, "h3");
77
+ i0.ɵɵelement(3, "i", 44);
77
78
  i0.ɵɵtext(4, " Suite Information");
78
79
  i0.ɵɵelementEnd();
79
- i0.ɵɵelementStart(5, "div", 43)(6, "div", 44)(7, "div", 45);
80
+ i0.ɵɵelementStart(5, "div", 45)(6, "div", 46)(7, "div", 47);
80
81
  i0.ɵɵtext(8, "Name");
81
82
  i0.ɵɵelementEnd();
82
- i0.ɵɵelementStart(9, "div", 46);
83
+ i0.ɵɵelementStart(9, "div", 48);
83
84
  i0.ɵɵtext(10);
84
85
  i0.ɵɵelementEnd()();
85
- i0.ɵɵelementStart(11, "div", 44)(12, "div", 45);
86
+ i0.ɵɵelementStart(11, "div", 46)(12, "div", 47);
86
87
  i0.ɵɵtext(13, "Status");
87
88
  i0.ɵɵelementEnd();
88
- i0.ɵɵelementStart(14, "div", 46)(15, "span", 47);
89
+ i0.ɵɵelementStart(14, "div", 48)(15, "span", 49);
89
90
  i0.ɵɵtext(16);
90
91
  i0.ɵɵelementEnd()()();
91
- i0.ɵɵelementStart(17, "div", 44)(18, "div", 45);
92
+ i0.ɵɵelementStart(17, "div", 46)(18, "div", 47);
92
93
  i0.ɵɵtext(19, "Created");
93
94
  i0.ɵɵelementEnd();
94
- i0.ɵɵelementStart(20, "div", 46);
95
+ i0.ɵɵelementStart(20, "div", 48);
95
96
  i0.ɵɵtext(21);
96
97
  i0.ɵɵpipe(22, "date");
97
98
  i0.ɵɵelementEnd()();
98
- i0.ɵɵelementStart(23, "div", 44)(24, "div", 45);
99
+ i0.ɵɵelementStart(23, "div", 46)(24, "div", 47);
99
100
  i0.ɵɵtext(25, "Updated");
100
101
  i0.ɵɵelementEnd();
101
- i0.ɵɵelementStart(26, "div", 46);
102
+ i0.ɵɵelementStart(26, "div", 48);
102
103
  i0.ɵɵtext(27);
103
104
  i0.ɵɵpipe(28, "date");
104
105
  i0.ɵɵelementEnd()();
105
- i0.ɵɵelementStart(29, "div", 44)(30, "div", 45);
106
+ i0.ɵɵelementStart(29, "div", 46)(30, "div", 47);
106
107
  i0.ɵɵtext(31, "Max Execution Time");
107
108
  i0.ɵɵelementEnd();
108
- i0.ɵɵelementStart(32, "div", 46);
109
+ i0.ɵɵelementStart(32, "div", 48);
109
110
  i0.ɵɵtext(33);
110
111
  i0.ɵɵelementEnd()()()();
111
- i0.ɵɵelementStart(34, "div", 48)(35, "h3");
112
- i0.ɵɵelement(36, "i", 49);
112
+ i0.ɵɵelementStart(34, "div", 50)(35, "h3");
113
+ i0.ɵɵelement(36, "i", 51);
113
114
  i0.ɵɵtext(37, " Execution Settings");
114
115
  i0.ɵɵelementEnd();
115
- i0.ɵɵelementStart(38, "div", 50)(39, "div", 51)(40, "label");
116
+ i0.ɵɵelementStart(38, "div", 52)(39, "div", 53)(40, "label");
116
117
  i0.ɵɵtext(41, "Max Execution Time (ms)");
117
118
  i0.ɵɵelementEnd();
118
- i0.ɵɵelementStart(42, "input", 52);
119
- i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteFormComponentExtended_div_46_Template_input_ngModelChange_42_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.MaxExecutionTimeMS, $event) || (ctx_r0.record.MaxExecutionTimeMS = $event); return i0.ɵɵresetView($event); });
119
+ i0.ɵɵelementStart(42, "input", 54);
120
+ i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteFormComponentExtended_Conditional_58_Template_input_ngModelChange_42_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.record.MaxExecutionTimeMS, $event) || (ctx_r0.record.MaxExecutionTimeMS = $event); return i0.ɵɵresetView($event); });
120
121
  i0.ɵɵelementEnd();
121
- i0.ɵɵelementStart(43, "span", 53);
122
+ i0.ɵɵelementStart(43, "span", 55);
122
123
  i0.ɵɵtext(44, "Default timeout for tests in this suite");
123
124
  i0.ɵɵelementEnd()()()()();
124
125
  } if (rf & 2) {
@@ -138,48 +139,48 @@ function TestSuiteFormComponentExtended_div_46_Template(rf, ctx) { if (rf & 1) {
138
139
  i0.ɵɵadvance(9);
139
140
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.record.MaxExecutionTimeMS);
140
141
  } }
141
- function TestSuiteFormComponentExtended_div_47_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
142
- i0.ɵɵelementStart(0, "div", 61);
143
- i0.ɵɵelement(1, "div", 62)(2, "div", 63);
144
- i0.ɵɵelementStart(3, "div", 64);
145
- i0.ɵɵelement(4, "div", 65)(5, "div", 66);
142
+ function TestSuiteFormComponentExtended_Conditional_59_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
143
+ i0.ɵɵelementStart(0, "div", 60);
144
+ i0.ɵɵelement(1, "div", 61)(2, "div", 62);
145
+ i0.ɵɵelementStart(3, "div", 63);
146
+ i0.ɵɵelement(4, "div", 64)(5, "div", 65);
146
147
  i0.ɵɵelementEnd()();
147
148
  } }
148
- function TestSuiteFormComponentExtended_div_47_div_1_Template(rf, ctx) { if (rf & 1) {
149
- i0.ɵɵelementStart(0, "div", 58)(1, "div", 59);
150
- i0.ɵɵtemplate(2, TestSuiteFormComponentExtended_div_47_div_1_div_2_Template, 6, 0, "div", 60);
149
+ function TestSuiteFormComponentExtended_Conditional_59_Conditional_1_Template(rf, ctx) { if (rf & 1) {
150
+ i0.ɵɵelementStart(0, "div", 56)(1, "div", 59);
151
+ i0.ɵɵrepeaterCreate(2, TestSuiteFormComponentExtended_Conditional_59_Conditional_1_For_3_Template, 6, 0, "div", 60, i0.ɵɵrepeaterTrackByIdentity);
151
152
  i0.ɵɵelementEnd()();
152
153
  } if (rf & 2) {
153
154
  i0.ɵɵadvance(2);
154
- i0.ɵɵproperty("ngForOf", i0.ɵɵpureFunction0(1, _c1));
155
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c1));
155
156
  } }
156
- function TestSuiteFormComponentExtended_div_47_div_2_div_1_span_9_Template(rf, ctx) { if (rf & 1) {
157
+ function TestSuiteFormComponentExtended_Conditional_59_Conditional_2_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
157
158
  i0.ɵɵelementStart(0, "span");
158
- i0.ɵɵelement(1, "i", 42);
159
+ i0.ɵɵelement(1, "i", 44);
159
160
  i0.ɵɵtext(2);
160
161
  i0.ɵɵelementEnd();
161
162
  } if (rf & 2) {
162
163
  const test_r4 = i0.ɵɵnextContext().$implicit;
163
164
  i0.ɵɵadvance(2);
164
- i0.ɵɵtextInterpolate1(" ", test_r4.Status, "");
165
+ i0.ɵɵtextInterpolate1(" ", test_r4.Status);
165
166
  } }
166
- function TestSuiteFormComponentExtended_div_47_div_2_div_1_Template(rf, ctx) { if (rf & 1) {
167
+ function TestSuiteFormComponentExtended_Conditional_59_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
167
168
  const _r3 = i0.ɵɵgetCurrentView();
168
- i0.ɵɵelementStart(0, "div", 69);
169
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_47_div_2_div_1_Template_div_click_0_listener() { const test_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openTest(test_r4.TestID)); });
170
- i0.ɵɵelementStart(1, "div", 70);
169
+ i0.ɵɵelementStart(0, "div", 67);
170
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_59_Conditional_2_For_2_Template_div_click_0_listener() { const test_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openTest(test_r4.TestID)); });
171
+ i0.ɵɵelementStart(1, "div", 68);
171
172
  i0.ɵɵtext(2);
172
173
  i0.ɵɵelementEnd();
173
- i0.ɵɵelementStart(3, "div", 71);
174
- i0.ɵɵelement(4, "i", 23);
174
+ i0.ɵɵelementStart(3, "div", 69);
175
+ i0.ɵɵelement(4, "i", 29);
175
176
  i0.ɵɵelementEnd();
176
- i0.ɵɵelementStart(5, "div", 72)(6, "div", 73);
177
+ i0.ɵɵelementStart(5, "div", 70)(6, "div", 71);
177
178
  i0.ɵɵtext(7);
178
179
  i0.ɵɵelementEnd();
179
- i0.ɵɵelementStart(8, "div", 74);
180
- i0.ɵɵtemplate(9, TestSuiteFormComponentExtended_div_47_div_2_div_1_span_9_Template, 3, 1, "span", 75);
180
+ i0.ɵɵelementStart(8, "div", 72);
181
+ i0.ɵɵconditionalCreate(9, TestSuiteFormComponentExtended_Conditional_59_Conditional_2_For_2_Conditional_9_Template, 3, 1, "span");
181
182
  i0.ɵɵelementEnd()();
182
- i0.ɵɵelement(10, "i", 76);
183
+ i0.ɵɵelement(10, "i", 73);
183
184
  i0.ɵɵelementEnd();
184
185
  } if (rf & 2) {
185
186
  const test_r4 = ctx.$implicit;
@@ -188,20 +189,20 @@ function TestSuiteFormComponentExtended_div_47_div_2_div_1_Template(rf, ctx) { i
188
189
  i0.ɵɵadvance(5);
189
190
  i0.ɵɵtextInterpolate(test_r4.Test);
190
191
  i0.ɵɵadvance(2);
191
- i0.ɵɵproperty("ngIf", test_r4.Status);
192
+ i0.ɵɵconditional(test_r4.Status ? 9 : -1);
192
193
  } }
193
- function TestSuiteFormComponentExtended_div_47_div_2_Template(rf, ctx) { if (rf & 1) {
194
- i0.ɵɵelementStart(0, "div", 67);
195
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_47_div_2_div_1_Template, 11, 3, "div", 68);
194
+ function TestSuiteFormComponentExtended_Conditional_59_Conditional_2_Template(rf, ctx) { if (rf & 1) {
195
+ i0.ɵɵelementStart(0, "div", 57);
196
+ i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_59_Conditional_2_For_2_Template, 11, 3, "div", 66, i0.ɵɵrepeaterTrackByIdentity);
196
197
  i0.ɵɵelementEnd();
197
198
  } if (rf & 2) {
198
199
  const ctx_r0 = i0.ɵɵnextContext(2);
199
200
  i0.ɵɵadvance();
200
- i0.ɵɵproperty("ngForOf", ctx_r0.suiteTests);
201
+ i0.ɵɵrepeater(ctx_r0.suiteTests);
201
202
  } }
202
- function TestSuiteFormComponentExtended_div_47_div_3_Template(rf, ctx) { if (rf & 1) {
203
- i0.ɵɵelementStart(0, "div", 77)(1, "div", 78);
204
- i0.ɵɵelement(2, "i", 23);
203
+ function TestSuiteFormComponentExtended_Conditional_59_Conditional_3_Template(rf, ctx) { if (rf & 1) {
204
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
205
+ i0.ɵɵelement(2, "i", 29);
205
206
  i0.ɵɵelementEnd();
206
207
  i0.ɵɵelementStart(3, "h4");
207
208
  i0.ɵɵtext(4, "No Tests in Suite");
@@ -210,37 +211,39 @@ function TestSuiteFormComponentExtended_div_47_div_3_Template(rf, ctx) { if (rf
210
211
  i0.ɵɵtext(6, "Add tests to this suite to start running them together.");
211
212
  i0.ɵɵelementEnd()();
212
213
  } }
213
- function TestSuiteFormComponentExtended_div_47_Template(rf, ctx) { if (rf & 1) {
214
- i0.ɵɵelementStart(0, "div", 54);
215
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_47_div_1_Template, 3, 2, "div", 55)(2, TestSuiteFormComponentExtended_div_47_div_2_Template, 2, 1, "div", 56)(3, TestSuiteFormComponentExtended_div_47_div_3_Template, 7, 0, "div", 57);
214
+ function TestSuiteFormComponentExtended_Conditional_59_Template(rf, ctx) { if (rf & 1) {
215
+ i0.ɵɵelementStart(0, "div", 36);
216
+ i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_59_Conditional_1_Template, 4, 1, "div", 56);
217
+ i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_59_Conditional_2_Template, 3, 0, "div", 57);
218
+ i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_59_Conditional_3_Template, 7, 0, "div", 58);
216
219
  i0.ɵɵelementEnd();
217
220
  } if (rf & 2) {
218
221
  const ctx_r0 = i0.ɵɵnextContext();
219
222
  i0.ɵɵadvance();
220
- i0.ɵɵproperty("ngIf", ctx_r0.loadingTests);
223
+ i0.ɵɵconditional(ctx_r0.loadingTests ? 1 : -1);
221
224
  i0.ɵɵadvance();
222
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingTests && ctx_r0.suiteTests.length > 0);
225
+ i0.ɵɵconditional(!ctx_r0.loadingTests && ctx_r0.suiteTests.length > 0 ? 2 : -1);
223
226
  i0.ɵɵadvance();
224
- i0.ɵɵproperty("ngIf", ctx_r0.testsLoaded && !ctx_r0.loadingTests && ctx_r0.suiteTests.length === 0);
227
+ i0.ɵɵconditional(ctx_r0.testsLoaded && !ctx_r0.loadingTests && ctx_r0.suiteTests.length === 0 ? 3 : -1);
225
228
  } }
226
- function TestSuiteFormComponentExtended_div_48_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
227
- i0.ɵɵelementStart(0, "div", 61);
228
- i0.ɵɵelement(1, "div", 63);
229
- i0.ɵɵelementStart(2, "div", 64);
230
- i0.ɵɵelement(3, "div", 65)(4, "div", 66);
229
+ function TestSuiteFormComponentExtended_Conditional_60_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
230
+ i0.ɵɵelementStart(0, "div", 60);
231
+ i0.ɵɵelement(1, "div", 62);
232
+ i0.ɵɵelementStart(2, "div", 63);
233
+ i0.ɵɵelement(3, "div", 64)(4, "div", 65);
231
234
  i0.ɵɵelementEnd()();
232
235
  } }
233
- function TestSuiteFormComponentExtended_div_48_div_1_Template(rf, ctx) { if (rf & 1) {
234
- i0.ɵɵelementStart(0, "div", 58)(1, "div", 59);
235
- i0.ɵɵtemplate(2, TestSuiteFormComponentExtended_div_48_div_1_div_2_Template, 5, 0, "div", 60);
236
+ function TestSuiteFormComponentExtended_Conditional_60_Conditional_1_Template(rf, ctx) { if (rf & 1) {
237
+ i0.ɵɵelementStart(0, "div", 56)(1, "div", 59);
238
+ i0.ɵɵrepeaterCreate(2, TestSuiteFormComponentExtended_Conditional_60_Conditional_1_For_3_Template, 5, 0, "div", 60, i0.ɵɵrepeaterTrackByIdentity);
236
239
  i0.ɵɵelementEnd()();
237
240
  } if (rf & 2) {
238
241
  i0.ɵɵadvance(2);
239
- i0.ɵɵproperty("ngForOf", i0.ɵɵpureFunction0(1, _c2));
242
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c2));
240
243
  } }
241
- function TestSuiteFormComponentExtended_div_48_div_2_div_1_span_13_Template(rf, ctx) { if (rf & 1) {
244
+ function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
242
245
  i0.ɵɵelementStart(0, "span");
243
- i0.ɵɵelement(1, "i", 97);
246
+ i0.ɵɵelement(1, "i", 91);
244
247
  i0.ɵɵtext(2);
245
248
  i0.ɵɵelementEnd();
246
249
  } if (rf & 2) {
@@ -249,9 +252,9 @@ function TestSuiteFormComponentExtended_div_48_div_2_div_1_span_13_Template(rf,
249
252
  i0.ɵɵadvance(2);
250
253
  i0.ɵɵtextInterpolate3(" ", run_r6.PassedTests, "/", run_r6.TotalTests, " (", ctx_r0.getPassRate(run_r6).toFixed(0), "%) ");
251
254
  } }
252
- function TestSuiteFormComponentExtended_div_48_div_2_div_1_span_15_Template(rf, ctx) { if (rf & 1) {
253
- i0.ɵɵelementStart(0, "span", 98);
254
- i0.ɵɵelement(1, "i", 85);
255
+ function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
256
+ i0.ɵɵelementStart(0, "span", 92);
257
+ i0.ɵɵelement(1, "i", 79);
255
258
  i0.ɵɵelementEnd();
256
259
  } if (rf & 2) {
257
260
  const run_r6 = i0.ɵɵnextContext().$implicit;
@@ -259,16 +262,16 @@ function TestSuiteFormComponentExtended_div_48_div_2_div_1_span_15_Template(rf,
259
262
  i0.ɵɵadvance();
260
263
  i0.ɵɵclassProp("fa-circle-check", run_r6.Status === "Completed")("fa-circle-xmark", run_r6.Status === "Failed")("fa-spinner", run_r6.Status === "Running")("fa-clock", run_r6.Status === "Pending")("fa-ban", run_r6.Status === "Cancelled");
261
264
  } }
262
- function TestSuiteFormComponentExtended_div_48_div_2_div_1_span_16_Template(rf, ctx) { if (rf & 1) {
263
- i0.ɵɵelementStart(0, "span", 99);
264
- i0.ɵɵelement(1, "i", 100);
265
- i0.ɵɵelementStart(2, "span", 101);
266
- i0.ɵɵelement(3, "i", 102);
265
+ function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
266
+ i0.ɵɵelementStart(0, "span", 88);
267
+ i0.ɵɵelement(1, "i", 93);
268
+ i0.ɵɵelementStart(2, "span", 94);
269
+ i0.ɵɵelement(3, "i", 95);
267
270
  i0.ɵɵelementEnd()();
268
271
  } }
269
- function TestSuiteFormComponentExtended_div_48_div_2_div_1_span_17_Template(rf, ctx) { if (rf & 1) {
270
- i0.ɵɵelementStart(0, "span", 103);
271
- i0.ɵɵelement(1, "i", 104);
272
+ function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
273
+ i0.ɵɵelementStart(0, "span", 96);
274
+ i0.ɵɵelement(1, "i", 97);
272
275
  i0.ɵɵelementStart(2, "span");
273
276
  i0.ɵɵtext(3);
274
277
  i0.ɵɵelementEnd()();
@@ -279,8 +282,8 @@ function TestSuiteFormComponentExtended_div_48_div_2_div_1_span_17_Template(rf,
279
282
  i0.ɵɵadvance(3);
280
283
  i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(run_r6).toFixed(0), "%");
281
284
  } }
282
- function TestSuiteFormComponentExtended_div_48_div_2_div_1_div_18_span_1_Template(rf, ctx) { if (rf & 1) {
283
- i0.ɵɵelementStart(0, "span", 107);
285
+ function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_18_For_2_Template(rf, ctx) { if (rf & 1) {
286
+ i0.ɵɵelementStart(0, "span", 98);
284
287
  i0.ɵɵtext(1);
285
288
  i0.ɵɵelementEnd();
286
289
  } if (rf & 2) {
@@ -288,41 +291,43 @@ function TestSuiteFormComponentExtended_div_48_div_2_div_1_div_18_span_1_Templat
288
291
  i0.ɵɵadvance();
289
292
  i0.ɵɵtextInterpolate(tag_r7);
290
293
  } }
291
- function TestSuiteFormComponentExtended_div_48_div_2_div_1_div_18_Template(rf, ctx) { if (rf & 1) {
292
- i0.ɵɵelementStart(0, "div", 105);
293
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_48_div_2_div_1_div_18_span_1_Template, 2, 1, "span", 106);
294
+ function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
295
+ i0.ɵɵelementStart(0, "div", 90);
296
+ i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_18_For_2_Template, 2, 1, "span", 98, i0.ɵɵrepeaterTrackByIdentity);
294
297
  i0.ɵɵelementEnd();
295
298
  } if (rf & 2) {
296
299
  const run_r6 = i0.ɵɵnextContext().$implicit;
297
300
  const ctx_r0 = i0.ɵɵnextContext(3);
298
301
  i0.ɵɵadvance();
299
- i0.ɵɵproperty("ngForOf", ctx_r0.getRunTags(run_r6));
302
+ i0.ɵɵrepeater(ctx_r0.getRunTags(run_r6));
300
303
  } }
301
- function TestSuiteFormComponentExtended_div_48_div_2_div_1_Template(rf, ctx) { if (rf & 1) {
304
+ function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
302
305
  const _r5 = i0.ɵɵgetCurrentView();
303
- i0.ɵɵelementStart(0, "div", 83);
304
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_48_div_2_div_1_Template_div_click_0_listener() { const run_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openSuiteRun(run_r6.ID)); });
305
- i0.ɵɵelementStart(1, "div", 84);
306
- i0.ɵɵelement(2, "i", 85);
306
+ i0.ɵɵelementStart(0, "div", 77);
307
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Template_div_click_0_listener() { const run_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.openSuiteRun(run_r6.ID)); });
308
+ i0.ɵɵelementStart(1, "div", 78);
309
+ i0.ɵɵelement(2, "i", 79);
307
310
  i0.ɵɵelementEnd();
308
- i0.ɵɵelementStart(3, "div", 86)(4, "div", 87)(5, "span", 88);
311
+ i0.ɵɵelementStart(3, "div", 80)(4, "div", 81)(5, "span", 82);
309
312
  i0.ɵɵtext(6);
310
313
  i0.ɵɵelementEnd();
311
- i0.ɵɵelementStart(7, "span", 89);
314
+ i0.ɵɵelementStart(7, "span", 83);
312
315
  i0.ɵɵtext(8);
313
316
  i0.ɵɵelementEnd()();
314
- i0.ɵɵelementStart(9, "div", 90)(10, "span");
315
- i0.ɵɵelement(11, "i", 91);
317
+ i0.ɵɵelementStart(9, "div", 84)(10, "span");
318
+ i0.ɵɵelement(11, "i", 85);
316
319
  i0.ɵɵtext(12);
317
320
  i0.ɵɵelementEnd();
318
- i0.ɵɵtemplate(13, TestSuiteFormComponentExtended_div_48_div_2_div_1_span_13_Template, 3, 3, "span", 75);
321
+ i0.ɵɵconditionalCreate(13, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_13_Template, 3, 3, "span");
319
322
  i0.ɵɵelementEnd();
320
- i0.ɵɵelementStart(14, "div", 92);
321
- i0.ɵɵtemplate(15, TestSuiteFormComponentExtended_div_48_div_2_div_1_span_15_Template, 2, 12, "span", 93)(16, TestSuiteFormComponentExtended_div_48_div_2_div_1_span_16_Template, 4, 0, "span", 94)(17, TestSuiteFormComponentExtended_div_48_div_2_div_1_span_17_Template, 4, 7, "span", 95);
323
+ i0.ɵɵelementStart(14, "div", 86);
324
+ i0.ɵɵconditionalCreate(15, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_15_Template, 2, 12, "span", 87);
325
+ i0.ɵɵconditionalCreate(16, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_16_Template, 4, 0, "span", 88);
326
+ i0.ɵɵconditionalCreate(17, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_17_Template, 4, 7, "span", 89);
322
327
  i0.ɵɵelementEnd();
323
- i0.ɵɵtemplate(18, TestSuiteFormComponentExtended_div_48_div_2_div_1_div_18_Template, 2, 1, "div", 96);
328
+ i0.ɵɵconditionalCreate(18, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_18_Template, 3, 0, "div", 90);
324
329
  i0.ɵɵelementEnd();
325
- i0.ɵɵelement(19, "i", 76);
330
+ i0.ɵɵelement(19, "i", 73);
326
331
  i0.ɵɵelementEnd();
327
332
  } if (rf & 2) {
328
333
  const run_r6 = ctx.$implicit;
@@ -332,37 +337,37 @@ function TestSuiteFormComponentExtended_div_48_div_2_div_1_Template(rf, ctx) { i
332
337
  i0.ɵɵadvance();
333
338
  i0.ɵɵclassProp("fa-check", run_r6.Status === "Completed")("fa-times", run_r6.Status === "Failed")("fa-spinner", run_r6.Status === "Running")("fa-clock", run_r6.Status === "Pending")("fa-ban", run_r6.Status === "Cancelled");
334
339
  i0.ɵɵadvance(4);
335
- i0.ɵɵtextInterpolate1("Run #", run_r6.ID.substring(0, 8), "");
340
+ i0.ɵɵtextInterpolate1("Run #", run_r6.ID.substring(0, 8));
336
341
  i0.ɵɵadvance();
337
342
  i0.ɵɵstyleProp("color", ctx_r0.getRunStatusColor(run_r6.Status));
338
343
  i0.ɵɵadvance();
339
344
  i0.ɵɵtextInterpolate(run_r6.Status);
340
345
  i0.ɵɵadvance(4);
341
- i0.ɵɵtextInterpolate1(" ", ctx_r0.getRelativeTime(run_r6.StartedAt), "");
346
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.getRelativeTime(run_r6.StartedAt));
342
347
  i0.ɵɵadvance();
343
- i0.ɵɵproperty("ngIf", run_r6.TotalTests);
348
+ i0.ɵɵconditional(run_r6.TotalTests ? 13 : -1);
344
349
  i0.ɵɵadvance(2);
345
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
350
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 15 : -1);
346
351
  i0.ɵɵadvance();
347
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showHuman);
352
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman ? 16 : -1);
348
353
  i0.ɵɵadvance();
349
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto && run_r6.TotalTests);
354
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto && run_r6.TotalTests ? 17 : -1);
350
355
  i0.ɵɵadvance();
351
- i0.ɵɵproperty("ngIf", ctx_r0.getRunTags(run_r6).length > 0);
356
+ i0.ɵɵconditional(ctx_r0.getRunTags(run_r6).length > 0 ? 18 : -1);
352
357
  } }
353
- function TestSuiteFormComponentExtended_div_48_div_2_Template(rf, ctx) { if (rf & 1) {
354
- i0.ɵɵelementStart(0, "div", 81);
355
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_48_div_2_div_1_Template, 20, 22, "div", 82);
358
+ function TestSuiteFormComponentExtended_Conditional_60_Conditional_2_Template(rf, ctx) { if (rf & 1) {
359
+ i0.ɵɵelementStart(0, "div", 75);
360
+ i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Template, 20, 22, "div", 76, i0.ɵɵrepeaterTrackByIdentity);
356
361
  i0.ɵɵelementEnd();
357
362
  } if (rf & 2) {
358
363
  const ctx_r0 = i0.ɵɵnextContext(2);
359
364
  i0.ɵɵadvance();
360
- i0.ɵɵproperty("ngForOf", ctx_r0.suiteRuns);
365
+ i0.ɵɵrepeater(ctx_r0.suiteRuns);
361
366
  } }
362
- function TestSuiteFormComponentExtended_div_48_div_3_Template(rf, ctx) { if (rf & 1) {
367
+ function TestSuiteFormComponentExtended_Conditional_60_Conditional_3_Template(rf, ctx) { if (rf & 1) {
363
368
  const _r8 = i0.ɵɵgetCurrentView();
364
- i0.ɵɵelementStart(0, "div", 77)(1, "div", 78);
365
- i0.ɵɵelement(2, "i", 108);
369
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
370
+ i0.ɵɵelement(2, "i", 99);
366
371
  i0.ɵɵelementEnd();
367
372
  i0.ɵɵelementStart(3, "h4");
368
373
  i0.ɵɵtext(4, "No Suite Runs Yet");
@@ -370,31 +375,33 @@ function TestSuiteFormComponentExtended_div_48_div_3_Template(rf, ctx) { if (rf
370
375
  i0.ɵɵelementStart(5, "p");
371
376
  i0.ɵɵtext(6, "Run this suite to see execution history and results here.");
372
377
  i0.ɵɵelementEnd();
373
- i0.ɵɵelementStart(7, "button", 15);
374
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_48_div_3_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runSuite()); });
375
- i0.ɵɵelement(8, "i", 16);
378
+ i0.ɵɵelementStart(7, "button", 21);
379
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_60_Conditional_3_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runSuite()); });
380
+ i0.ɵɵelement(8, "i", 22);
376
381
  i0.ɵɵtext(9, " Run Suite Now ");
377
382
  i0.ɵɵelementEnd()();
378
383
  } }
379
- function TestSuiteFormComponentExtended_div_48_Template(rf, ctx) { if (rf & 1) {
380
- i0.ɵɵelementStart(0, "div", 79);
381
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_48_div_1_Template, 3, 2, "div", 55)(2, TestSuiteFormComponentExtended_div_48_div_2_Template, 2, 1, "div", 80)(3, TestSuiteFormComponentExtended_div_48_div_3_Template, 10, 0, "div", 57);
384
+ function TestSuiteFormComponentExtended_Conditional_60_Template(rf, ctx) { if (rf & 1) {
385
+ i0.ɵɵelementStart(0, "div", 37);
386
+ i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_60_Conditional_1_Template, 4, 1, "div", 56);
387
+ i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_Template, 3, 0, "div", 75);
388
+ i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_60_Conditional_3_Template, 10, 0, "div", 58);
382
389
  i0.ɵɵelementEnd();
383
390
  } if (rf & 2) {
384
391
  const ctx_r0 = i0.ɵɵnextContext();
385
392
  i0.ɵɵadvance();
386
- i0.ɵɵproperty("ngIf", ctx_r0.loadingRuns);
393
+ i0.ɵɵconditional(ctx_r0.loadingRuns ? 1 : -1);
387
394
  i0.ɵɵadvance();
388
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0);
395
+ i0.ɵɵconditional(!ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0 ? 2 : -1);
389
396
  i0.ɵɵadvance();
390
- i0.ɵɵproperty("ngIf", ctx_r0.runsLoaded && !ctx_r0.loadingRuns && ctx_r0.suiteRuns.length === 0);
397
+ i0.ɵɵconditional(ctx_r0.runsLoaded && !ctx_r0.loadingRuns && ctx_r0.suiteRuns.length === 0 ? 3 : -1);
391
398
  } }
392
- function TestSuiteFormComponentExtended_div_49_div_1_Template(rf, ctx) { if (rf & 1) {
393
- i0.ɵɵelementStart(0, "div", 58);
394
- i0.ɵɵelement(1, "mj-loading", 110);
399
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_1_Template(rf, ctx) { if (rf & 1) {
400
+ i0.ɵɵelementStart(0, "div", 56);
401
+ i0.ɵɵelement(1, "mj-loading", 100);
395
402
  i0.ɵɵelementEnd();
396
403
  } }
397
- function TestSuiteFormComponentExtended_div_49_ng_container_2_span_20_span_2_Template(rf, ctx) { if (rf & 1) {
404
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_19_Conditional_2_Template(rf, ctx) { if (rf & 1) {
398
405
  i0.ɵɵelementStart(0, "span");
399
406
  i0.ɵɵtext(1);
400
407
  i0.ɵɵelementEnd();
@@ -403,20 +410,20 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_span_20_span_2_Tem
403
410
  i0.ɵɵadvance();
404
411
  i0.ɵɵtextInterpolate1(" \u00B7 ", ctx_r0.selectedTags.length, " tags");
405
412
  } }
406
- function TestSuiteFormComponentExtended_div_49_ng_container_2_span_20_Template(rf, ctx) { if (rf & 1) {
407
- i0.ɵɵelementStart(0, "span", 123);
413
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
414
+ i0.ɵɵelementStart(0, "span", 111);
408
415
  i0.ɵɵtext(1);
409
- i0.ɵɵtemplate(2, TestSuiteFormComponentExtended_div_49_ng_container_2_span_20_span_2_Template, 2, 1, "span", 75);
416
+ i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_19_Conditional_2_Template, 2, 1, "span");
410
417
  i0.ɵɵelementEnd();
411
418
  } if (rf & 2) {
412
419
  const ctx_r0 = i0.ɵɵnextContext(3);
413
420
  i0.ɵɵadvance();
414
421
  i0.ɵɵtextInterpolate1(" ", ctx_r0.analyticsTimeRange === "all" ? "All Time" : ctx_r0.analyticsTimeRange, " ");
415
422
  i0.ɵɵadvance();
416
- i0.ɵɵproperty("ngIf", ctx_r0.selectedTags.length > 0);
423
+ i0.ɵɵconditional(ctx_r0.selectedTags.length > 0 ? 2 : -1);
417
424
  } }
418
- function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_div_13_span_3_Template(rf, ctx) { if (rf & 1) {
419
- i0.ɵɵelementStart(0, "span", 133);
425
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
426
+ i0.ɵɵelementStart(0, "span", 116);
420
427
  i0.ɵɵtext(1);
421
428
  i0.ɵɵelementEnd();
422
429
  } if (rf & 2) {
@@ -424,14 +431,14 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_div_13_span
424
431
  i0.ɵɵadvance();
425
432
  i0.ɵɵtextInterpolate1("(", ctx_r0.selectedTags.length, " selected)");
426
433
  } }
427
- function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_div_13_button_8_i_1_Template(rf, ctx) { if (rf & 1) {
428
- i0.ɵɵelement(0, "i", 136);
434
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_For_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
435
+ i0.ɵɵelement(0, "i", 121);
429
436
  } }
430
- function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_div_13_button_8_Template(rf, ctx) { if (rf & 1) {
437
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_For_9_Template(rf, ctx) { if (rf & 1) {
431
438
  const _r12 = i0.ɵɵgetCurrentView();
432
- i0.ɵɵelementStart(0, "button", 134);
433
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_div_13_button_8_Template_button_click_0_listener() { const tag_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.toggleTagFilter(tag_r13)); });
434
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_div_13_button_8_i_1_Template, 1, 0, "i", 135);
439
+ i0.ɵɵelementStart(0, "button", 120);
440
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_For_9_Template_button_click_0_listener() { const tag_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.toggleTagFilter(tag_r13)); });
441
+ i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_For_9_Conditional_1_Template, 1, 0, "i", 121);
435
442
  i0.ɵɵtext(2);
436
443
  i0.ɵɵelementEnd();
437
444
  } if (rf & 2) {
@@ -439,54 +446,54 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_div_13_butt
439
446
  const ctx_r0 = i0.ɵɵnextContext(5);
440
447
  i0.ɵɵclassProp("active", ctx_r0.isTagSelected(tag_r13));
441
448
  i0.ɵɵadvance();
442
- i0.ɵɵproperty("ngIf", ctx_r0.isTagSelected(tag_r13));
449
+ i0.ɵɵconditional(ctx_r0.isTagSelected(tag_r13) ? 1 : -1);
443
450
  i0.ɵɵadvance();
444
451
  i0.ɵɵtextInterpolate1(" ", tag_r13, " ");
445
452
  } }
446
- function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_div_13_Template(rf, ctx) { if (rf & 1) {
453
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_Template(rf, ctx) { if (rf & 1) {
447
454
  const _r11 = i0.ɵɵgetCurrentView();
448
- i0.ɵɵelementStart(0, "div", 125)(1, "label");
455
+ i0.ɵɵelementStart(0, "div", 113)(1, "label");
449
456
  i0.ɵɵtext(2, "Filter by Tag ");
450
- i0.ɵɵtemplate(3, TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_div_13_span_3_Template, 2, 1, "span", 129);
457
+ i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_Conditional_3_Template, 2, 1, "span", 116);
451
458
  i0.ɵɵelementEnd();
452
- i0.ɵɵelementStart(4, "div", 130)(5, "button", 131);
453
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_div_13_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleTagFilter(null)); });
454
- i0.ɵɵelement(6, "i", 6);
459
+ i0.ɵɵelementStart(4, "div", 117)(5, "button", 118);
460
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleTagFilter(null)); });
461
+ i0.ɵɵelement(6, "i", 9);
455
462
  i0.ɵɵtext(7, " All Tags ");
456
463
  i0.ɵɵelementEnd();
457
- i0.ɵɵtemplate(8, TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_div_13_button_8_Template, 3, 4, "button", 132);
464
+ i0.ɵɵrepeaterCreate(8, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_For_9_Template, 3, 4, "button", 119, i0.ɵɵrepeaterTrackByIdentity);
458
465
  i0.ɵɵelementEnd()();
459
466
  } if (rf & 2) {
460
467
  const ctx_r0 = i0.ɵɵnextContext(4);
461
468
  i0.ɵɵadvance(3);
462
- i0.ɵɵproperty("ngIf", ctx_r0.selectedTags.length > 0);
469
+ i0.ɵɵconditional(ctx_r0.selectedTags.length > 0 ? 3 : -1);
463
470
  i0.ɵɵadvance(2);
464
471
  i0.ɵɵclassProp("active", ctx_r0.selectedTags.length === 0);
465
472
  i0.ɵɵadvance(3);
466
- i0.ɵɵproperty("ngForOf", ctx_r0.uniqueTags);
473
+ i0.ɵɵrepeater(ctx_r0.uniqueTags);
467
474
  } }
468
- function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_Template(rf, ctx) { if (rf & 1) {
475
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
469
476
  const _r10 = i0.ɵɵgetCurrentView();
470
- i0.ɵɵelementStart(0, "div", 124)(1, "div", 125)(2, "label");
477
+ i0.ɵɵelementStart(0, "div", 112)(1, "div", 113)(2, "label");
471
478
  i0.ɵɵtext(3, "Time Range");
472
479
  i0.ɵɵelementEnd();
473
- i0.ɵɵelementStart(4, "div", 126)(5, "button", 127);
474
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setTimeRange("7d")); });
480
+ i0.ɵɵelementStart(4, "div", 114)(5, "button", 115);
481
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setTimeRange("7d")); });
475
482
  i0.ɵɵtext(6, "7 Days");
476
483
  i0.ɵɵelementEnd();
477
- i0.ɵɵelementStart(7, "button", 127);
478
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setTimeRange("30d")); });
484
+ i0.ɵɵelementStart(7, "button", 115);
485
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setTimeRange("30d")); });
479
486
  i0.ɵɵtext(8, "30 Days");
480
487
  i0.ɵɵelementEnd();
481
- i0.ɵɵelementStart(9, "button", 127);
482
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setTimeRange("90d")); });
488
+ i0.ɵɵelementStart(9, "button", 115);
489
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setTimeRange("90d")); });
483
490
  i0.ɵɵtext(10, "90 Days");
484
491
  i0.ɵɵelementEnd();
485
- i0.ɵɵelementStart(11, "button", 127);
486
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setTimeRange("all")); });
492
+ i0.ɵɵelementStart(11, "button", 115);
493
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.setTimeRange("all")); });
487
494
  i0.ɵɵtext(12, "All Time");
488
495
  i0.ɵɵelementEnd()()();
489
- i0.ɵɵtemplate(13, TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_div_13_Template, 9, 4, "div", 128);
496
+ i0.ɵɵconditionalCreate(13, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_Template, 10, 3, "div", 113);
490
497
  i0.ɵɵelementEnd();
491
498
  } if (rf & 2) {
492
499
  const ctx_r0 = i0.ɵɵnextContext(3);
@@ -499,10 +506,10 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_Template(rf
499
506
  i0.ɵɵadvance(2);
500
507
  i0.ɵɵclassProp("active", ctx_r0.analyticsTimeRange === "all");
501
508
  i0.ɵɵadvance(2);
502
- i0.ɵɵproperty("ngIf", ctx_r0.uniqueTags.length > 0);
509
+ i0.ɵɵconditional(ctx_r0.uniqueTags.length > 0 ? 13 : -1);
503
510
  } }
504
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_tr_60_span_20_Template(rf, ctx) { if (rf & 1) {
505
- i0.ɵɵelementStart(0, "span", 161);
511
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_For_21_Template(rf, ctx) { if (rf & 1) {
512
+ i0.ɵɵelementStart(0, "span", 144);
506
513
  i0.ɵɵtext(1);
507
514
  i0.ɵɵelementEnd();
508
515
  } if (rf & 2) {
@@ -510,28 +517,28 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_tr
510
517
  i0.ɵɵadvance();
511
518
  i0.ɵɵtextInterpolate(tag_r16);
512
519
  } }
513
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_tr_60_span_21_Template(rf, ctx) { if (rf & 1) {
514
- i0.ɵɵelementStart(0, "span", 162);
520
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_Conditional_22_Template(rf, ctx) { if (rf & 1) {
521
+ i0.ɵɵelementStart(0, "span", 145);
515
522
  i0.ɵɵtext(1);
516
523
  i0.ɵɵelementEnd();
517
524
  } if (rf & 2) {
518
525
  const dp_r15 = i0.ɵɵnextContext().$implicit;
519
526
  i0.ɵɵadvance();
520
- i0.ɵɵtextInterpolate1("+", dp_r15.tags.length - 2, "");
527
+ i0.ɵɵtextInterpolate1("+", dp_r15.tags.length - 2);
521
528
  } }
522
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_tr_60_Template(rf, ctx) { if (rf & 1) {
529
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_Template(rf, ctx) { if (rf & 1) {
523
530
  const _r14 = i0.ɵɵgetCurrentView();
524
- i0.ɵɵelementStart(0, "tr", 154);
525
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_tr_60_Template_tr_click_0_listener() { const dp_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.openSuiteRun(dp_r15.runId)); });
531
+ i0.ɵɵelementStart(0, "tr", 139);
532
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_Template_tr_click_0_listener() { const dp_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.openSuiteRun(dp_r15.runId)); });
526
533
  i0.ɵɵelementStart(1, "td");
527
534
  i0.ɵɵtext(2);
528
535
  i0.ɵɵpipe(3, "date");
529
536
  i0.ɵɵelementEnd();
530
- i0.ɵɵelementStart(4, "td")(5, "span", 155);
537
+ i0.ɵɵelementStart(4, "td")(5, "span", 140);
531
538
  i0.ɵɵtext(6);
532
539
  i0.ɵɵelementEnd()();
533
- i0.ɵɵelementStart(7, "td")(8, "div", 156);
534
- i0.ɵɵelement(9, "div", 157);
540
+ i0.ɵɵelementStart(7, "td")(8, "div", 141);
541
+ i0.ɵɵelement(9, "div", 142);
535
542
  i0.ɵɵelementStart(10, "span");
536
543
  i0.ɵɵtext(11);
537
544
  i0.ɵɵelementEnd()()();
@@ -544,122 +551,121 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_tr
544
551
  i0.ɵɵelementStart(16, "td");
545
552
  i0.ɵɵtext(17);
546
553
  i0.ɵɵelementEnd();
547
- i0.ɵɵelementStart(18, "td")(19, "div", 158);
548
- i0.ɵɵtemplate(20, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_tr_60_span_20_Template, 2, 1, "span", 159)(21, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_tr_60_span_21_Template, 2, 1, "span", 160);
554
+ i0.ɵɵelementStart(18, "td")(19, "div", 143);
555
+ i0.ɵɵrepeaterCreate(20, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_For_21_Template, 2, 1, "span", 144, i0.ɵɵrepeaterTrackByIdentity);
556
+ i0.ɵɵconditionalCreate(22, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_Conditional_22_Template, 2, 1, "span", 145);
549
557
  i0.ɵɵelementEnd()()();
550
558
  } if (rf & 2) {
551
559
  const dp_r15 = ctx.$implicit;
552
560
  const ctx_r0 = i0.ɵɵnextContext(4);
553
561
  i0.ɵɵadvance(2);
554
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 13, dp_r15.date, "short"));
562
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 12, dp_r15.date, "short"));
555
563
  i0.ɵɵadvance(3);
556
564
  i0.ɵɵproperty("ngClass", "status-" + dp_r15.status.toLowerCase());
557
565
  i0.ɵɵadvance();
558
566
  i0.ɵɵtextInterpolate(dp_r15.status);
559
567
  i0.ɵɵadvance(3);
560
568
  i0.ɵɵstyleProp("width", dp_r15.passRate, "%");
561
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(16, _c5, dp_r15.passRate >= 80, dp_r15.passRate >= 50 && dp_r15.passRate < 80, dp_r15.passRate < 50));
569
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(15, _c5, dp_r15.passRate >= 80, dp_r15.passRate >= 50 && dp_r15.passRate < 80, dp_r15.passRate < 50));
562
570
  i0.ɵɵadvance(2);
563
571
  i0.ɵɵtextInterpolate1("", dp_r15.passRate.toFixed(0), "%");
564
572
  i0.ɵɵadvance(2);
565
- i0.ɵɵtextInterpolate2("", dp_r15.passedTests, "/", dp_r15.totalTests, "");
573
+ i0.ɵɵtextInterpolate2("", dp_r15.passedTests, "/", dp_r15.totalTests);
566
574
  i0.ɵɵadvance(2);
567
575
  i0.ɵɵtextInterpolate(ctx_r0.formatDuration(dp_r15.duration));
568
576
  i0.ɵɵadvance(2);
569
577
  i0.ɵɵtextInterpolate(ctx_r0.formatCost(dp_r15.cost));
570
578
  i0.ɵɵadvance(3);
571
- i0.ɵɵproperty("ngForOf", dp_r15.tags.slice(0, 2));
572
- i0.ɵɵadvance();
573
- i0.ɵɵproperty("ngIf", dp_r15.tags.length > 2);
579
+ i0.ɵɵrepeater(dp_r15.tags.slice(0, 2));
580
+ i0.ɵɵadvance(2);
581
+ i0.ɵɵconditional(dp_r15.tags.length > 2 ? 22 : -1);
574
582
  } }
575
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_div_61_Template(rf, ctx) { if (rf & 1) {
576
- i0.ɵɵelementStart(0, "div", 163)(1, "p");
583
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_Conditional_61_Template(rf, ctx) { if (rf & 1) {
584
+ i0.ɵɵelementStart(0, "div", 138)(1, "p");
577
585
  i0.ɵɵtext(2, "No runs match the current filters.");
578
586
  i0.ɵɵelementEnd()();
579
587
  } }
580
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_Template(rf, ctx) { if (rf & 1) {
581
- i0.ɵɵelementContainerStart(0);
582
- i0.ɵɵelementStart(1, "div", 137)(2, "div", 138)(3, "div", 139);
583
- i0.ɵɵelement(4, "i", 108);
588
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
589
+ i0.ɵɵelementStart(0, "div", 122)(1, "div", 123)(2, "div", 124);
590
+ i0.ɵɵelement(3, "i", 99);
584
591
  i0.ɵɵelementEnd();
585
- i0.ɵɵelementStart(5, "div", 140)(6, "div", 141);
586
- i0.ɵɵtext(7);
592
+ i0.ɵɵelementStart(4, "div", 125)(5, "div", 126);
593
+ i0.ɵɵtext(6);
587
594
  i0.ɵɵelementEnd();
588
- i0.ɵɵelementStart(8, "div", 142);
589
- i0.ɵɵtext(9, "Total Runs");
595
+ i0.ɵɵelementStart(7, "div", 127);
596
+ i0.ɵɵtext(8, "Total Runs");
590
597
  i0.ɵɵelementEnd()()();
591
- i0.ɵɵelementStart(10, "div", 138)(11, "div", 143);
592
- i0.ɵɵelement(12, "i", 97);
598
+ i0.ɵɵelementStart(9, "div", 123)(10, "div", 128);
599
+ i0.ɵɵelement(11, "i", 91);
593
600
  i0.ɵɵelementEnd();
594
- i0.ɵɵelementStart(13, "div", 140)(14, "div", 141);
595
- i0.ɵɵtext(15);
601
+ i0.ɵɵelementStart(12, "div", 125)(13, "div", 126);
602
+ i0.ɵɵtext(14);
596
603
  i0.ɵɵelementEnd();
597
- i0.ɵɵelementStart(16, "div", 142);
598
- i0.ɵɵtext(17, "Avg Pass Rate");
604
+ i0.ɵɵelementStart(15, "div", 127);
605
+ i0.ɵɵtext(16, "Avg Pass Rate");
599
606
  i0.ɵɵelementEnd();
600
- i0.ɵɵelementStart(18, "div", 144);
601
- i0.ɵɵelement(19, "i", 10);
602
- i0.ɵɵtext(20);
607
+ i0.ɵɵelementStart(17, "div", 129);
608
+ i0.ɵɵelement(18, "i", 16);
609
+ i0.ɵɵtext(19);
603
610
  i0.ɵɵelementEnd()()();
604
- i0.ɵɵelementStart(21, "div", 138)(22, "div", 145);
605
- i0.ɵɵelement(23, "i", 102);
611
+ i0.ɵɵelementStart(20, "div", 123)(21, "div", 130);
612
+ i0.ɵɵelement(22, "i", 95);
606
613
  i0.ɵɵelementEnd();
607
- i0.ɵɵelementStart(24, "div", 140)(25, "div", 141);
608
- i0.ɵɵtext(26);
614
+ i0.ɵɵelementStart(23, "div", 125)(24, "div", 126);
615
+ i0.ɵɵtext(25);
609
616
  i0.ɵɵelementEnd();
610
- i0.ɵɵelementStart(27, "div", 142);
611
- i0.ɵɵtext(28, "Avg Duration");
617
+ i0.ɵɵelementStart(26, "div", 127);
618
+ i0.ɵɵtext(27, "Avg Duration");
612
619
  i0.ɵɵelementEnd()()();
613
- i0.ɵɵelementStart(29, "div", 138)(30, "div", 146);
614
- i0.ɵɵelement(31, "i", 147);
620
+ i0.ɵɵelementStart(28, "div", 123)(29, "div", 131);
621
+ i0.ɵɵelement(30, "i", 132);
615
622
  i0.ɵɵelementEnd();
616
- i0.ɵɵelementStart(32, "div", 140)(33, "div", 141);
617
- i0.ɵɵtext(34);
623
+ i0.ɵɵelementStart(31, "div", 125)(32, "div", 126);
624
+ i0.ɵɵtext(33);
618
625
  i0.ɵɵelementEnd();
619
- i0.ɵɵelementStart(35, "div", 142);
620
- i0.ɵɵtext(36, "Total Cost");
626
+ i0.ɵɵelementStart(34, "div", 127);
627
+ i0.ɵɵtext(35, "Total Cost");
621
628
  i0.ɵɵelementEnd()()()();
622
- i0.ɵɵelementStart(37, "div", 148)(38, "h3");
623
- i0.ɵɵelement(39, "i", 149);
624
- i0.ɵɵtext(40, " Run History");
629
+ i0.ɵɵelementStart(36, "div", 133)(37, "h3");
630
+ i0.ɵɵelement(38, "i", 134);
631
+ i0.ɵɵtext(39, " Run History");
625
632
  i0.ɵɵelementEnd();
626
- i0.ɵɵelementStart(41, "div", 150)(42, "table", 151)(43, "thead")(44, "tr")(45, "th");
627
- i0.ɵɵtext(46, "Date");
633
+ i0.ɵɵelementStart(40, "div", 135)(41, "table", 136)(42, "thead")(43, "tr")(44, "th");
634
+ i0.ɵɵtext(45, "Date");
628
635
  i0.ɵɵelementEnd();
629
- i0.ɵɵelementStart(47, "th");
630
- i0.ɵɵtext(48, "Status");
636
+ i0.ɵɵelementStart(46, "th");
637
+ i0.ɵɵtext(47, "Status");
631
638
  i0.ɵɵelementEnd();
632
- i0.ɵɵelementStart(49, "th");
633
- i0.ɵɵtext(50, "Pass Rate");
639
+ i0.ɵɵelementStart(48, "th");
640
+ i0.ɵɵtext(49, "Pass Rate");
634
641
  i0.ɵɵelementEnd();
635
- i0.ɵɵelementStart(51, "th");
636
- i0.ɵɵtext(52, "Tests");
642
+ i0.ɵɵelementStart(50, "th");
643
+ i0.ɵɵtext(51, "Tests");
637
644
  i0.ɵɵelementEnd();
638
- i0.ɵɵelementStart(53, "th");
639
- i0.ɵɵtext(54, "Duration");
645
+ i0.ɵɵelementStart(52, "th");
646
+ i0.ɵɵtext(53, "Duration");
640
647
  i0.ɵɵelementEnd();
641
- i0.ɵɵelementStart(55, "th");
642
- i0.ɵɵtext(56, "Cost");
648
+ i0.ɵɵelementStart(54, "th");
649
+ i0.ɵɵtext(55, "Cost");
643
650
  i0.ɵɵelementEnd();
644
- i0.ɵɵelementStart(57, "th");
645
- i0.ɵɵtext(58, "Tags");
651
+ i0.ɵɵelementStart(56, "th");
652
+ i0.ɵɵtext(57, "Tags");
646
653
  i0.ɵɵelementEnd()()();
647
- i0.ɵɵelementStart(59, "tbody");
648
- i0.ɵɵtemplate(60, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_tr_60_Template, 22, 20, "tr", 152);
654
+ i0.ɵɵelementStart(58, "tbody");
655
+ i0.ɵɵrepeaterCreate(59, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_For_60_Template, 23, 19, "tr", 137, i0.ɵɵrepeaterTrackByIdentity);
649
656
  i0.ɵɵelementEnd()()();
650
- i0.ɵɵtemplate(61, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_div_61_Template, 3, 0, "div", 153);
657
+ i0.ɵɵconditionalCreate(61, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_Conditional_61_Template, 3, 0, "div", 138);
651
658
  i0.ɵɵelementEnd();
652
- i0.ɵɵelementContainerEnd();
653
659
  } if (rf & 2) {
654
660
  const ctx_r0 = i0.ɵɵnextContext(3);
655
- i0.ɵɵadvance(7);
661
+ i0.ɵɵadvance(6);
656
662
  i0.ɵɵtextInterpolate(ctx_r0.getTotalRuns());
657
663
  i0.ɵɵadvance(8);
658
664
  i0.ɵɵtextInterpolate1("", ctx_r0.getAveragePassRate().toFixed(1), "%");
659
665
  i0.ɵɵadvance(3);
660
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(9, _c3, ctx_r0.getPassRateTrend().direction === "up", ctx_r0.getPassRateTrend().direction === "down"));
666
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(8, _c3, ctx_r0.getPassRateTrend().direction === "up", ctx_r0.getPassRateTrend().direction === "down"));
661
667
  i0.ɵɵadvance();
662
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(12, _c4, ctx_r0.getPassRateTrend().direction === "up", ctx_r0.getPassRateTrend().direction === "down", ctx_r0.getPassRateTrend().direction === "stable"));
668
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(11, _c4, ctx_r0.getPassRateTrend().direction === "up", ctx_r0.getPassRateTrend().direction === "down", ctx_r0.getPassRateTrend().direction === "stable"));
663
669
  i0.ɵɵadvance();
664
670
  i0.ɵɵtextInterpolate1(" ", ctx_r0.getPassRateTrend().value.toFixed(1), "% ");
665
671
  i0.ɵɵadvance(6);
@@ -667,24 +673,24 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_Te
667
673
  i0.ɵɵadvance(8);
668
674
  i0.ɵɵtextInterpolate(ctx_r0.formatCost(ctx_r0.getTotalCost()));
669
675
  i0.ɵɵadvance(26);
670
- i0.ɵɵproperty("ngForOf", ctx_r0.getFilteredAnalyticsData());
671
- i0.ɵɵadvance();
672
- i0.ɵɵproperty("ngIf", ctx_r0.getFilteredAnalyticsData().length === 0);
676
+ i0.ɵɵrepeater(ctx_r0.getFilteredAnalyticsData());
677
+ i0.ɵɵadvance(2);
678
+ i0.ɵɵconditional(ctx_r0.getFilteredAnalyticsData().length === 0 ? 61 : -1);
673
679
  } }
674
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_1_Template(rf, ctx) { if (rf & 1) {
675
- i0.ɵɵelementStart(0, "div", 58);
676
- i0.ɵɵelement(1, "mj-loading", 165);
680
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_0_Template(rf, ctx) { if (rf & 1) {
681
+ i0.ɵɵelementStart(0, "div", 56);
682
+ i0.ɵɵelement(1, "mj-loading", 147);
677
683
  i0.ɵɵelementEnd();
678
684
  } }
679
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_button_9_Template(rf, ctx) { if (rf & 1) {
685
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
680
686
  const _r18 = i0.ɵɵgetCurrentView();
681
- i0.ɵɵelementStart(0, "button", 188);
682
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_button_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.clearMatrixFilter()); });
683
- i0.ɵɵelement(1, "i", 189);
687
+ i0.ɵɵelementStart(0, "button", 169);
688
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.clearMatrixFilter()); });
689
+ i0.ɵɵelement(1, "i", 170);
684
690
  i0.ɵɵelementEnd();
685
691
  } }
686
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_th_25_div_3_span_1_Template(rf, ctx) { if (rf & 1) {
687
- i0.ɵɵelementStart(0, "span", 198);
692
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
693
+ i0.ɵɵelementStart(0, "span", 176);
688
694
  i0.ɵɵtext(1);
689
695
  i0.ɵɵelementEnd();
690
696
  } if (rf & 2) {
@@ -692,37 +698,38 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_di
692
698
  i0.ɵɵadvance();
693
699
  i0.ɵɵtextInterpolate(tag_r21);
694
700
  } }
695
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_th_25_div_3_span_2_Template(rf, ctx) { if (rf & 1) {
696
- i0.ɵɵelementStart(0, "span", 199);
701
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
702
+ i0.ɵɵelementStart(0, "span", 177);
697
703
  i0.ɵɵtext(1);
698
704
  i0.ɵɵelementEnd();
699
705
  } if (rf & 2) {
700
706
  const run_r20 = i0.ɵɵnextContext(2).$implicit;
701
707
  i0.ɵɵadvance();
702
- i0.ɵɵtextInterpolate1("+", run_r20.tags.length - 2, "");
708
+ i0.ɵɵtextInterpolate1("+", run_r20.tags.length - 2);
703
709
  } }
704
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_th_25_div_3_Template(rf, ctx) { if (rf & 1) {
705
- i0.ɵɵelementStart(0, "div", 195);
706
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_th_25_div_3_span_1_Template, 2, 1, "span", 196)(2, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_th_25_div_3_span_2_Template, 2, 1, "span", 197);
710
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Conditional_3_Template(rf, ctx) { if (rf & 1) {
711
+ i0.ɵɵelementStart(0, "div", 173);
712
+ i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Conditional_3_For_2_Template, 2, 1, "span", 176, i0.ɵɵrepeaterTrackByIdentity);
713
+ i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Conditional_3_Conditional_3_Template, 2, 1, "span", 177);
707
714
  i0.ɵɵelementEnd();
708
715
  } if (rf & 2) {
709
716
  const run_r20 = i0.ɵɵnextContext().$implicit;
710
717
  i0.ɵɵadvance();
711
- i0.ɵɵproperty("ngForOf", run_r20.tags.slice(0, 2));
712
- i0.ɵɵadvance();
713
- i0.ɵɵproperty("ngIf", run_r20.tags.length > 2);
718
+ i0.ɵɵrepeater(run_r20.tags.slice(0, 2));
719
+ i0.ɵɵadvance(2);
720
+ i0.ɵɵconditional(run_r20.tags.length > 2 ? 3 : -1);
714
721
  } }
715
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_th_25_Template(rf, ctx) { if (rf & 1) {
722
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Template(rf, ctx) { if (rf & 1) {
716
723
  const _r19 = i0.ɵɵgetCurrentView();
717
- i0.ɵɵelementStart(0, "th", 190);
724
+ i0.ɵɵelementStart(0, "th", 171);
718
725
  i0.ɵɵpipe(1, "date");
719
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_th_25_Template_th_click_0_listener() { const run_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.openSuiteRun(run_r20.runId)); });
720
- i0.ɵɵelementStart(2, "div", 191);
721
- i0.ɵɵtemplate(3, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_th_25_div_3_Template, 3, 2, "div", 192);
722
- i0.ɵɵelementStart(4, "div", 193);
726
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Template_th_click_0_listener() { const run_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.openSuiteRun(run_r20.runId)); });
727
+ i0.ɵɵelementStart(2, "div", 172);
728
+ i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Conditional_3_Template, 4, 1, "div", 173);
729
+ i0.ɵɵelementStart(4, "div", 174);
723
730
  i0.ɵɵtext(5);
724
731
  i0.ɵɵelementEnd();
725
- i0.ɵɵelementStart(6, "div", 194);
732
+ i0.ɵɵelementStart(6, "div", 175);
726
733
  i0.ɵɵtext(7);
727
734
  i0.ɵɵelementEnd()()();
728
735
  } if (rf & 2) {
@@ -730,7 +737,7 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_di
730
737
  const ctx_r0 = i0.ɵɵnextContext(5);
731
738
  i0.ɵɵproperty("title", "Click to view suite run - " + i0.ɵɵpipeBind2(1, 5, run_r20.date, "medium"));
732
739
  i0.ɵɵadvance(3);
733
- i0.ɵɵproperty("ngIf", run_r20.tags.length > 0);
740
+ i0.ɵɵconditional(run_r20.tags.length > 0 ? 3 : -1);
734
741
  i0.ɵɵadvance(2);
735
742
  i0.ɵɵtextInterpolate(ctx_r0.getRelativeTime(run_r20.date));
736
743
  i0.ɵɵadvance();
@@ -738,110 +745,114 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_di
738
745
  i0.ɵɵadvance();
739
746
  i0.ɵɵtextInterpolate1(" ", run_r20.passRate.toFixed(0), "% ");
740
747
  } }
741
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
742
- i0.ɵɵelementStart(0, "span", 213);
743
- i0.ɵɵelement(1, "i", 85);
748
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
749
+ i0.ɵɵelementStart(0, "span", 191);
750
+ i0.ɵɵelement(1, "i", 79);
744
751
  i0.ɵɵelementEnd();
745
752
  } if (rf & 2) {
746
- const result_r26 = i0.ɵɵnextContext().ngIf;
753
+ const result_r26 = i0.ɵɵnextContext();
747
754
  const ctx_r0 = i0.ɵɵnextContext(7);
748
755
  i0.ɵɵclassProp("cell-skipped-status", result_r26.status === "Skipped" || result_r26.status === "Pending");
749
756
  i0.ɵɵproperty("ngClass", "status-" + result_r26.status.toLowerCase())("title", ctx_r0.getStatusTooltip(result_r26.status));
750
757
  i0.ɵɵadvance();
751
758
  i0.ɵɵclassProp("fa-check", result_r26.status === "Passed")("fa-times", result_r26.status === "Failed")("fa-exclamation", result_r26.status === "Error")("fa-hourglass-end", result_r26.status === "Timeout")("fa-forward", result_r26.status === "Skipped")("fa-spinner", result_r26.status === "Running")("fa-clock", result_r26.status === "Pending");
752
759
  } }
753
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
754
- i0.ɵɵelementStart(0, "span", 214);
755
- i0.ɵɵelement(1, "i", 215);
760
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
761
+ i0.ɵɵelementStart(0, "span", 187);
762
+ i0.ɵɵelement(1, "i", 192);
756
763
  i0.ɵɵelementEnd();
757
764
  } }
758
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_4_Template(rf, ctx) { if (rf & 1) {
759
- i0.ɵɵelementStart(0, "span", 216);
760
- i0.ɵɵelement(1, "i", 100);
761
- i0.ɵɵelementStart(2, "span", 217);
765
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
766
+ i0.ɵɵelementStart(0, "span", 193);
767
+ i0.ɵɵelement(1, "i", 93);
768
+ i0.ɵɵelementStart(2, "span", 194);
762
769
  i0.ɵɵtext(3);
763
770
  i0.ɵɵelementEnd()();
764
771
  } if (rf & 2) {
765
- const result_r26 = i0.ɵɵnextContext().ngIf;
772
+ const result_r26 = i0.ɵɵnextContext();
766
773
  const ctx_r0 = i0.ɵɵnextContext(7);
767
774
  i0.ɵɵclassProp("rating-low", result_r26.humanRating <= 4)("rating-medium", result_r26.humanRating >= 5 && result_r26.humanRating <= 6)("rating-good", result_r26.humanRating >= 7 && result_r26.humanRating <= 8)("rating-excellent", result_r26.humanRating >= 9);
768
775
  i0.ɵɵproperty("title", ctx_r0.getHumanTooltip(result_r26.humanRating, result_r26.humanComments));
769
776
  i0.ɵɵadvance(3);
770
777
  i0.ɵɵtextInterpolate(result_r26.humanRating);
771
778
  } }
772
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_5_Template(rf, ctx) { if (rf & 1) {
773
- i0.ɵɵelementStart(0, "span", 218);
774
- i0.ɵɵelement(1, "i", 104);
775
- i0.ɵɵelementStart(2, "span", 219);
779
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
780
+ i0.ɵɵelementStart(0, "span", 195);
781
+ i0.ɵɵelement(1, "i", 97);
782
+ i0.ɵɵelementStart(2, "span", 196);
776
783
  i0.ɵɵtext(3);
777
784
  i0.ɵɵelementEnd()();
778
785
  } if (rf & 2) {
779
- const result_r26 = i0.ɵɵnextContext().ngIf;
786
+ const result_r26 = i0.ɵɵnextContext();
780
787
  i0.ɵɵclassProp("score-low", result_r26.score < 0.5)("score-medium", result_r26.score >= 0.5 && result_r26.score < 0.7)("score-good", result_r26.score >= 0.7 && result_r26.score < 0.85)("score-excellent", result_r26.score >= 0.85);
781
788
  i0.ɵɵproperty("title", "Auto Score: " + (result_r26.score * 100).toFixed(0) + "% automated evaluation");
782
789
  i0.ɵɵadvance(3);
783
790
  i0.ɵɵtextInterpolate((result_r26.score * 100).toFixed(0));
784
791
  } }
785
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_6_Template(rf, ctx) { if (rf & 1) {
786
- i0.ɵɵelementStart(0, "span", 220);
787
- i0.ɵɵelement(1, "i", 104);
792
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
793
+ i0.ɵɵelementStart(0, "span", 190);
794
+ i0.ɵɵelement(1, "i", 97);
788
795
  i0.ɵɵelementEnd();
789
796
  } }
790
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
791
- i0.ɵɵelementContainerStart(0);
792
- i0.ɵɵelementStart(1, "div", 207);
793
- i0.ɵɵtemplate(2, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_2_Template, 2, 18, "span", 208)(3, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_3_Template, 2, 0, "span", 209)(4, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_4_Template, 4, 10, "span", 210)(5, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_5_Template, 4, 10, "span", 211)(6, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_6_Template, 2, 0, "span", 212);
797
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Template(rf, ctx) { if (rf & 1) {
798
+ i0.ɵɵelementStart(0, "div", 184);
799
+ i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_1_Template, 2, 18, "span", 186);
800
+ i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_2_Template, 2, 0, "span", 187);
801
+ i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_3_Template, 4, 10, "span", 188);
802
+ i0.ɵɵconditionalCreate(4, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_4_Template, 4, 10, "span", 189);
803
+ i0.ɵɵconditionalCreate(5, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Conditional_5_Template, 2, 0, "span", 190);
794
804
  i0.ɵɵelementEnd();
795
- i0.ɵɵelementContainerEnd();
796
805
  } if (rf & 2) {
797
- const result_r26 = ctx.ngIf;
806
+ const result_r26 = ctx;
798
807
  const ctx_r0 = i0.ɵɵnextContext(7);
799
- i0.ɵɵadvance(2);
800
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
801
808
  i0.ɵɵadvance();
802
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showHuman && !result_r26.humanRating);
809
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 1 : -1);
803
810
  i0.ɵɵadvance();
804
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showHuman && result_r26.humanRating);
811
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman && !result_r26.humanRating ? 2 : -1);
805
812
  i0.ɵɵadvance();
806
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto && result_r26.score != null);
813
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman && result_r26.humanRating ? 3 : -1);
807
814
  i0.ɵɵadvance();
808
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto && result_r26.score == null);
815
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto && result_r26.score != null ? 4 : -1);
816
+ i0.ɵɵadvance();
817
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto && result_r26.score == null ? 5 : -1);
809
818
  } }
810
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_span_2_Template(rf, ctx) { if (rf & 1) {
811
- i0.ɵɵelementStart(0, "span", 221);
812
- i0.ɵɵelement(1, "i", 222);
819
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
820
+ i0.ɵɵelementStart(0, "span", 185);
821
+ i0.ɵɵelement(1, "i", 197);
813
822
  i0.ɵɵelementEnd();
814
823
  } }
815
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_Template(rf, ctx) { if (rf & 1) {
824
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Template(rf, ctx) { if (rf & 1) {
816
825
  const _r24 = i0.ɵɵgetCurrentView();
817
- i0.ɵɵelementStart(0, "td", 205);
818
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_Template_td_click_0_listener($event) { const run_r25 = i0.ɵɵrestoreView(_r24).$implicit; const test_r23 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.onMatrixCellClick(ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId), $event)); });
819
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_Template, 7, 5, "ng-container", 75)(2, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_span_2_Template, 2, 0, "span", 206);
826
+ i0.ɵɵelementStart(0, "td", 183);
827
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Template_td_click_0_listener($event) { const run_r25 = i0.ɵɵrestoreView(_r24).$implicit; const test_r23 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.onMatrixCellClick(ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId), $event)); });
828
+ i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_1_Template, 6, 5, "div", 184);
829
+ i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Conditional_2_Template, 2, 0, "span", 185);
820
830
  i0.ɵɵelementEnd();
821
831
  } if (rf & 2) {
822
- let tmp_11_0;
832
+ let tmp_27_0;
833
+ let tmp_28_0;
823
834
  const run_r25 = ctx.$implicit;
824
835
  const test_r23 = i0.ɵɵnextContext().$implicit;
825
836
  const ctx_r0 = i0.ɵɵnextContext(5);
826
837
  i0.ɵɵclassProp("clickable", ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId))("cell-not-run", !ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId));
827
- i0.ɵɵproperty("ngClass", ctx_r0.getMatrixCellClass(ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId)))("title", ((tmp_11_0 = ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId)) == null ? null : tmp_11_0.status) + " - Click to view test run" || "Not Run");
838
+ i0.ɵɵproperty("ngClass", ctx_r0.getMatrixCellClass(ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId)))("title", ((tmp_27_0 = ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId)) == null ? null : tmp_27_0.status) + " - Click to view test run" || "Not Run");
828
839
  i0.ɵɵadvance();
829
- i0.ɵɵproperty("ngIf", ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId));
840
+ i0.ɵɵconditional((tmp_28_0 = ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId)) ? 1 : -1, tmp_28_0);
830
841
  i0.ɵɵadvance();
831
- i0.ɵɵproperty("ngIf", !ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId));
842
+ i0.ɵɵconditional(!ctx_r0.getTestResultForRun(run_r25.runId, test_r23.testId) ? 2 : -1);
832
843
  } }
833
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_Template(rf, ctx) { if (rf & 1) {
844
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_Template(rf, ctx) { if (rf & 1) {
834
845
  const _r22 = i0.ɵɵgetCurrentView();
835
- i0.ɵɵelementStart(0, "tr", 200);
836
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_Template_tr_click_0_listener() { const test_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.selectMatrixRow(test_r23.testId)); });
837
- i0.ɵɵelementStart(1, "td", 201);
846
+ i0.ɵɵelementStart(0, "tr", 178);
847
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_Template_tr_click_0_listener() { const test_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.selectMatrixRow(test_r23.testId)); });
848
+ i0.ɵɵelementStart(1, "td", 179);
838
849
  i0.ɵɵtext(2);
839
850
  i0.ɵɵelementEnd();
840
- i0.ɵɵelementStart(3, "td", 202)(4, "span", 203);
851
+ i0.ɵɵelementStart(3, "td", 180)(4, "span", 181);
841
852
  i0.ɵɵtext(5);
842
853
  i0.ɵɵelementEnd()();
843
- i0.ɵɵtemplate(6, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_td_6_Template, 3, 8, "td", 204);
844
- i0.ɵɵelement(7, "td", 187);
854
+ i0.ɵɵrepeaterCreate(6, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_For_7_Template, 3, 8, "td", 182, i0.ɵɵrepeaterTrackByIdentity);
855
+ i0.ɵɵelement(8, "td", 168);
845
856
  i0.ɵɵelementEnd();
846
857
  } if (rf & 2) {
847
858
  const test_r23 = ctx.$implicit;
@@ -854,45 +865,45 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_di
854
865
  i0.ɵɵadvance();
855
866
  i0.ɵɵtextInterpolate(test_r23.testName);
856
867
  i0.ɵɵadvance();
857
- i0.ɵɵproperty("ngForOf", ctx_r0.matrixData);
868
+ i0.ɵɵrepeater(ctx_r0.matrixData);
858
869
  } }
859
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_td_35_span_2_Template(rf, ctx) { if (rf & 1) {
860
- i0.ɵɵelementStart(0, "span", 228)(1, "span", 229);
870
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_2_Template(rf, ctx) { if (rf & 1) {
871
+ i0.ɵɵelementStart(0, "span", 199)(1, "span", 202);
861
872
  i0.ɵɵtext(2);
862
873
  i0.ɵɵelementEnd()();
863
874
  } if (rf & 2) {
864
875
  const run_r27 = i0.ɵɵnextContext().$implicit;
865
876
  const ctx_r0 = i0.ɵɵnextContext(5);
866
877
  i0.ɵɵadvance(2);
867
- i0.ɵɵtextInterpolate2("", ctx_r0.getRunPassedCount(run_r27), "/", ctx_r0.getRunTotalCount(run_r27), "");
878
+ i0.ɵɵtextInterpolate2("", ctx_r0.getRunPassedCount(run_r27), "/", ctx_r0.getRunTotalCount(run_r27));
868
879
  } }
869
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_td_35_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
870
- i0.ɵɵelementStart(0, "span", 233);
880
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
881
+ i0.ɵɵelementStart(0, "span", 203);
871
882
  i0.ɵɵtext(1);
872
883
  i0.ɵɵelementEnd();
873
884
  } if (rf & 2) {
874
- let tmp_8_0;
885
+ let tmp_16_0;
875
886
  const run_r27 = i0.ɵɵnextContext(2).$implicit;
876
887
  const ctx_r0 = i0.ɵɵnextContext(5);
877
888
  i0.ɵɵadvance();
878
- i0.ɵɵtextInterpolate((tmp_8_0 = ctx_r0.getRunHumanAvg(run_r27)) == null ? null : tmp_8_0.toFixed(1));
889
+ i0.ɵɵtextInterpolate((tmp_16_0 = ctx_r0.getRunHumanAvg(run_r27)) == null ? null : tmp_16_0.toFixed(1));
879
890
  } }
880
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_td_35_span_3_Template(rf, ctx) { if (rf & 1) {
881
- i0.ɵɵelementStart(0, "span", 230);
882
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_td_35_span_3_span_1_Template, 2, 1, "span", 231);
883
- i0.ɵɵelementStart(2, "span", 232);
891
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_3_Template(rf, ctx) { if (rf & 1) {
892
+ i0.ɵɵelementStart(0, "span", 200);
893
+ i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_3_Conditional_1_Template, 2, 1, "span", 203);
894
+ i0.ɵɵelementStart(2, "span", 204);
884
895
  i0.ɵɵtext(3);
885
896
  i0.ɵɵelementEnd()();
886
897
  } if (rf & 2) {
887
898
  const run_r27 = i0.ɵɵnextContext().$implicit;
888
899
  const ctx_r0 = i0.ɵɵnextContext(5);
889
900
  i0.ɵɵadvance();
890
- i0.ɵɵproperty("ngIf", ctx_r0.getRunHumanAvg(run_r27) != null);
901
+ i0.ɵɵconditional(ctx_r0.getRunHumanAvg(run_r27) != null ? 1 : -1);
891
902
  i0.ɵɵadvance(2);
892
903
  i0.ɵɵtextInterpolate1("(", ctx_r0.getRunHumanCount(run_r27), ")");
893
904
  } }
894
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_td_35_span_4_span_1_Template(rf, ctx) { if (rf & 1) {
895
- i0.ɵɵelementStart(0, "span", 233);
905
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
906
+ i0.ɵɵelementStart(0, "span", 203);
896
907
  i0.ɵɵtext(1);
897
908
  i0.ɵɵelementEnd();
898
909
  } if (rf & 2) {
@@ -901,84 +912,86 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_di
901
912
  i0.ɵɵadvance();
902
913
  i0.ɵɵtextInterpolate1("", (ctx_r0.getRunAutoAvg(run_r27) * 100).toFixed(0), "%");
903
914
  } }
904
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_td_35_span_4_Template(rf, ctx) { if (rf & 1) {
905
- i0.ɵɵelementStart(0, "span", 234);
906
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_td_35_span_4_span_1_Template, 2, 1, "span", 231);
907
- i0.ɵɵelementStart(2, "span", 232);
915
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_4_Template(rf, ctx) { if (rf & 1) {
916
+ i0.ɵɵelementStart(0, "span", 201);
917
+ i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_4_Conditional_1_Template, 2, 1, "span", 203);
918
+ i0.ɵɵelementStart(2, "span", 204);
908
919
  i0.ɵɵtext(3);
909
920
  i0.ɵɵelementEnd()();
910
921
  } if (rf & 2) {
911
922
  const run_r27 = i0.ɵɵnextContext().$implicit;
912
923
  const ctx_r0 = i0.ɵɵnextContext(5);
913
924
  i0.ɵɵadvance();
914
- i0.ɵɵproperty("ngIf", ctx_r0.getRunAutoAvg(run_r27) != null);
925
+ i0.ɵɵconditional(ctx_r0.getRunAutoAvg(run_r27) != null ? 1 : -1);
915
926
  i0.ɵɵadvance(2);
916
927
  i0.ɵɵtextInterpolate1("(", ctx_r0.getRunAutoCount(run_r27), ")");
917
928
  } }
918
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_td_35_Template(rf, ctx) { if (rf & 1) {
919
- i0.ɵɵelementStart(0, "td", 223)(1, "div", 224);
920
- i0.ɵɵtemplate(2, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_td_35_span_2_Template, 3, 2, "span", 225)(3, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_td_35_span_3_Template, 4, 2, "span", 226)(4, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_td_35_span_4_Template, 4, 2, "span", 227);
929
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Template(rf, ctx) { if (rf & 1) {
930
+ i0.ɵɵelementStart(0, "td", 167)(1, "div", 198);
931
+ i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_2_Template, 3, 2, "span", 199);
932
+ i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_3_Template, 4, 2, "span", 200);
933
+ i0.ɵɵconditionalCreate(4, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Conditional_4_Template, 4, 2, "span", 201);
921
934
  i0.ɵɵelementEnd()();
922
935
  } if (rf & 2) {
923
936
  const ctx_r0 = i0.ɵɵnextContext(5);
924
937
  i0.ɵɵadvance(2);
925
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
938
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 2 : -1);
926
939
  i0.ɵɵadvance();
927
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showHuman);
940
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman ? 3 : -1);
928
941
  i0.ɵɵadvance();
929
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto);
942
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto ? 4 : -1);
930
943
  } }
931
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_Template(rf, ctx) { if (rf & 1) {
944
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Template(rf, ctx) { if (rf & 1) {
932
945
  const _r17 = i0.ɵɵgetCurrentView();
933
- i0.ɵɵelementStart(0, "div", 166)(1, "div", 167)(2, "h3");
934
- i0.ɵɵelement(3, "i", 115);
946
+ i0.ɵɵelementStart(0, "div", 146)(1, "div", 148)(2, "h3");
947
+ i0.ɵɵelement(3, "i", 105);
935
948
  i0.ɵɵtext(4, " Test Results Matrix");
936
949
  i0.ɵɵelementEnd();
937
- i0.ɵɵelementStart(5, "div", 168)(6, "div", 169);
938
- i0.ɵɵelement(7, "i", 170);
939
- i0.ɵɵelementStart(8, "input", 171);
940
- i0.ɵɵlistener("input", function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_Template_input_input_8_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.onMatrixFilterInput($event)); });
950
+ i0.ɵɵelementStart(5, "div", 149)(6, "div", 150);
951
+ i0.ɵɵelement(7, "i", 151);
952
+ i0.ɵɵelementStart(8, "input", 152);
953
+ i0.ɵɵlistener("input", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Template_input_input_8_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.onMatrixFilterInput($event)); });
941
954
  i0.ɵɵelementEnd();
942
- i0.ɵɵtemplate(9, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_button_9_Template, 2, 0, "button", 172);
955
+ i0.ɵɵconditionalCreate(9, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Conditional_9_Template, 2, 0, "button", 153);
943
956
  i0.ɵɵelementEnd();
944
- i0.ɵɵelementStart(10, "span", 173);
957
+ i0.ɵɵelementStart(10, "span", 154);
945
958
  i0.ɵɵtext(11);
946
959
  i0.ɵɵelementEnd();
947
- i0.ɵɵelementStart(12, "button", 174);
948
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.exportMatrixToCSV()); });
949
- i0.ɵɵelement(13, "i", 175);
960
+ i0.ɵɵelementStart(12, "button", 155);
961
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.exportMatrixToCSV()); });
962
+ i0.ɵɵelement(13, "i", 156);
950
963
  i0.ɵɵtext(14, " Export ");
951
964
  i0.ɵɵelementEnd()()();
952
- i0.ɵɵelementStart(15, "div", 176)(16, "table", 177)(17, "thead")(18, "tr")(19, "th", 178);
953
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_Template_th_click_19_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleMatrixSort("sequence")); });
965
+ i0.ɵɵelementStart(15, "div", 157)(16, "table", 158)(17, "thead")(18, "tr")(19, "th", 159);
966
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Template_th_click_19_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleMatrixSort("sequence")); });
954
967
  i0.ɵɵtext(20, " # ");
955
- i0.ɵɵelement(21, "i", 10);
968
+ i0.ɵɵelement(21, "i", 16);
956
969
  i0.ɵɵelementEnd();
957
- i0.ɵɵelementStart(22, "th", 179);
958
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_Template_th_click_22_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleMatrixSort("name")); });
970
+ i0.ɵɵelementStart(22, "th", 160);
971
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Template_th_click_22_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleMatrixSort("name")); });
959
972
  i0.ɵɵtext(23, " Test ");
960
- i0.ɵɵelement(24, "i", 10);
973
+ i0.ɵɵelement(24, "i", 16);
961
974
  i0.ɵɵelementEnd();
962
- i0.ɵɵtemplate(25, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_th_25_Template, 8, 12, "th", 180);
963
- i0.ɵɵelement(26, "th", 181);
975
+ i0.ɵɵrepeaterCreate(25, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_26_Template, 8, 12, "th", 161, i0.ɵɵrepeaterTrackByIdentity);
976
+ i0.ɵɵelement(27, "th", 162);
964
977
  i0.ɵɵelementEnd()();
965
- i0.ɵɵelementStart(27, "tbody");
966
- i0.ɵɵtemplate(28, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_tr_28_Template, 8, 6, "tr", 182);
978
+ i0.ɵɵelementStart(28, "tbody");
979
+ i0.ɵɵrepeaterCreate(29, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_30_Template, 9, 5, "tr", 163, i0.ɵɵrepeaterTrackByIdentity);
967
980
  i0.ɵɵelementEnd();
968
- i0.ɵɵelementStart(29, "tfoot")(30, "tr", 183);
969
- i0.ɵɵelement(31, "td", 184);
970
- i0.ɵɵelementStart(32, "td", 185)(33, "strong");
971
- i0.ɵɵtext(34, "Totals");
981
+ i0.ɵɵelementStart(31, "tfoot")(32, "tr", 164);
982
+ i0.ɵɵelement(33, "td", 165);
983
+ i0.ɵɵelementStart(34, "td", 166)(35, "strong");
984
+ i0.ɵɵtext(36, "Totals");
972
985
  i0.ɵɵelementEnd()();
973
- i0.ɵɵtemplate(35, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_td_35_Template, 5, 3, "td", 186);
974
- i0.ɵɵelement(36, "td", 187);
986
+ i0.ɵɵrepeaterCreate(37, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_For_38_Template, 5, 3, "td", 167, i0.ɵɵrepeaterTrackByIdentity);
987
+ i0.ɵɵelement(39, "td", 168);
975
988
  i0.ɵɵelementEnd()()()()();
976
989
  } if (rf & 2) {
977
990
  const ctx_r0 = i0.ɵɵnextContext(4);
978
991
  i0.ɵɵadvance(8);
979
992
  i0.ɵɵproperty("value", ctx_r0.matrixTestFilter);
980
993
  i0.ɵɵadvance();
981
- i0.ɵɵproperty("ngIf", ctx_r0.matrixTestFilter);
994
+ i0.ɵɵconditional(ctx_r0.matrixTestFilter ? 9 : -1);
982
995
  i0.ɵɵadvance(2);
983
996
  i0.ɵɵtextInterpolate2("", ctx_r0.matrixData.length, " runs \u00B7 ", ctx_r0.getUniqueTestsFromMatrix().length, " tests");
984
997
  i0.ɵɵadvance();
@@ -988,15 +1001,15 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_di
988
1001
  i0.ɵɵadvance(3);
989
1002
  i0.ɵɵproperty("ngClass", ctx_r0.matrixSortBy === "name" ? ctx_r0.matrixSortAsc ? "fa-sort-up" : "fa-sort-down" : "fa-sort");
990
1003
  i0.ɵɵadvance();
991
- i0.ɵɵproperty("ngForOf", ctx_r0.matrixData);
992
- i0.ɵɵadvance(3);
993
- i0.ɵɵproperty("ngForOf", ctx_r0.getUniqueTestsFromMatrix());
994
- i0.ɵɵadvance(7);
995
- i0.ɵɵproperty("ngForOf", ctx_r0.matrixData);
1004
+ i0.ɵɵrepeater(ctx_r0.matrixData);
1005
+ i0.ɵɵadvance(4);
1006
+ i0.ɵɵrepeater(ctx_r0.getUniqueTestsFromMatrix());
1007
+ i0.ɵɵadvance(8);
1008
+ i0.ɵɵrepeater(ctx_r0.matrixData);
996
1009
  } }
997
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_3_Template(rf, ctx) { if (rf & 1) {
998
- i0.ɵɵelementStart(0, "div", 77)(1, "div", 78);
999
- i0.ɵɵelement(2, "i", 115);
1010
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1011
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
1012
+ i0.ɵɵelement(2, "i", 105);
1000
1013
  i0.ɵɵelementEnd();
1001
1014
  i0.ɵɵelementStart(3, "h4");
1002
1015
  i0.ɵɵtext(4, "No Matrix Data");
@@ -1005,50 +1018,49 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_di
1005
1018
  i0.ɵɵtext(6, "No suite runs match the current filters.");
1006
1019
  i0.ɵɵelementEnd()();
1007
1020
  } }
1008
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_Template(rf, ctx) { if (rf & 1) {
1009
- i0.ɵɵelementContainerStart(0);
1010
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_1_Template, 2, 0, "div", 55)(2, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_2_Template, 37, 10, "div", 164)(3, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_div_3_Template, 7, 0, "div", 57);
1011
- i0.ɵɵelementContainerEnd();
1021
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
1022
+ i0.ɵɵconditionalCreate(0, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_0_Template, 2, 0, "div", 56);
1023
+ i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Template, 40, 7, "div", 146);
1024
+ i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_2_Template, 7, 0, "div", 58);
1012
1025
  } if (rf & 2) {
1013
1026
  const ctx_r0 = i0.ɵɵnextContext(3);
1027
+ i0.ɵɵconditional(ctx_r0.loadingMatrix ? 0 : -1);
1014
1028
  i0.ɵɵadvance();
1015
- i0.ɵɵproperty("ngIf", ctx_r0.loadingMatrix);
1029
+ i0.ɵɵconditional(!ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length > 0 ? 1 : -1);
1016
1030
  i0.ɵɵadvance();
1017
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length > 0);
1018
- i0.ɵɵadvance();
1019
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length === 0);
1031
+ i0.ɵɵconditional(!ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length === 0 ? 2 : -1);
1020
1032
  } }
1021
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_25_div_1_Template(rf, ctx) { if (rf & 1) {
1022
- i0.ɵɵelementStart(0, "div", 58);
1023
- i0.ɵɵelement(1, "mj-loading", 236);
1033
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Conditional_0_Template(rf, ctx) { if (rf & 1) {
1034
+ i0.ɵɵelementStart(0, "div", 56);
1035
+ i0.ɵɵelement(1, "mj-loading", 206);
1024
1036
  i0.ɵɵelementEnd();
1025
1037
  } }
1026
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_25_div_2_Template(rf, ctx) { if (rf & 1) {
1027
- i0.ɵɵelementStart(0, "div", 237)(1, "div", 238)(2, "h3");
1028
- i0.ɵɵelement(3, "i", 116);
1038
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1039
+ i0.ɵɵelementStart(0, "div", 205)(1, "div", 207)(2, "h3");
1040
+ i0.ɵɵelement(3, "i", 106);
1029
1041
  i0.ɵɵtext(4, " Test Results Flow");
1030
1042
  i0.ɵɵelementEnd();
1031
- i0.ɵɵelementStart(5, "div", 239)(6, "span", 240);
1032
- i0.ɵɵelement(7, "i", 136);
1043
+ i0.ɵɵelementStart(5, "div", 208)(6, "span", 209);
1044
+ i0.ɵɵelement(7, "i", 121);
1033
1045
  i0.ɵɵtext(8, " Passed");
1034
1046
  i0.ɵɵelementEnd();
1035
- i0.ɵɵelementStart(9, "span", 241);
1036
- i0.ɵɵelement(10, "i", 189);
1047
+ i0.ɵɵelementStart(9, "span", 210);
1048
+ i0.ɵɵelement(10, "i", 170);
1037
1049
  i0.ɵɵtext(11, " Failed");
1038
1050
  i0.ɵɵelementEnd();
1039
- i0.ɵɵelementStart(12, "span", 242);
1040
- i0.ɵɵelement(13, "i", 243);
1051
+ i0.ɵɵelementStart(12, "span", 211);
1052
+ i0.ɵɵelement(13, "i", 212);
1041
1053
  i0.ɵɵtext(14, " Error");
1042
1054
  i0.ɵɵelementEnd();
1043
- i0.ɵɵelementStart(15, "span", 244);
1044
- i0.ɵɵelement(16, "i", 245);
1055
+ i0.ɵɵelementStart(15, "span", 213);
1056
+ i0.ɵɵelement(16, "i", 214);
1045
1057
  i0.ɵɵtext(17, " Skipped");
1046
1058
  i0.ɵɵelementEnd()()();
1047
- i0.ɵɵelementStart(18, "div", 246);
1048
- i0.ɵɵelement(19, "div", 247, 0);
1059
+ i0.ɵɵelementStart(18, "div", 215);
1060
+ i0.ɵɵelement(19, "div", 216, 0);
1049
1061
  i0.ɵɵelementEnd();
1050
- i0.ɵɵelementStart(21, "div", 248);
1051
- i0.ɵɵelement(22, "i", 42);
1062
+ i0.ɵɵelementStart(21, "div", 217);
1063
+ i0.ɵɵelement(22, "i", 44);
1052
1064
  i0.ɵɵtext(23);
1053
1065
  i0.ɵɵelementEnd()();
1054
1066
  } if (rf & 2) {
@@ -1056,9 +1068,9 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_25_di
1056
1068
  i0.ɵɵadvance(23);
1057
1069
  i0.ɵɵtextInterpolate1(" Interactive visualization showing test results across ", ctx_r0.matrixData.length, " runs. Hover over elements for details, click nodes to navigate. ");
1058
1070
  } }
1059
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_25_div_3_Template(rf, ctx) { if (rf & 1) {
1060
- i0.ɵɵelementStart(0, "div", 77)(1, "div", 78);
1061
- i0.ɵɵelement(2, "i", 116);
1071
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1072
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
1073
+ i0.ɵɵelement(2, "i", 106);
1062
1074
  i0.ɵɵelementEnd();
1063
1075
  i0.ɵɵelementStart(3, "h4");
1064
1076
  i0.ɵɵtext(4, "No Chart Data");
@@ -1067,56 +1079,55 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_25_di
1067
1079
  i0.ɵɵtext(6, "No suite runs match the current filters.");
1068
1080
  i0.ɵɵelementEnd()();
1069
1081
  } }
1070
- function TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_25_Template(rf, ctx) { if (rf & 1) {
1071
- i0.ɵɵelementContainerStart(0);
1072
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_25_div_1_Template, 2, 0, "div", 55)(2, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_25_div_2_Template, 24, 1, "div", 235)(3, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_25_div_3_Template, 7, 0, "div", 57);
1073
- i0.ɵɵelementContainerEnd();
1082
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
1083
+ i0.ɵɵconditionalCreate(0, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Conditional_0_Template, 2, 0, "div", 56);
1084
+ i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Conditional_1_Template, 24, 1, "div", 205);
1085
+ i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Conditional_2_Template, 7, 0, "div", 58);
1074
1086
  } if (rf & 2) {
1075
1087
  const ctx_r0 = i0.ɵɵnextContext(3);
1088
+ i0.ɵɵconditional(ctx_r0.loadingMatrix ? 0 : -1);
1076
1089
  i0.ɵɵadvance();
1077
- i0.ɵɵproperty("ngIf", ctx_r0.loadingMatrix);
1078
- i0.ɵɵadvance();
1079
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length > 0);
1090
+ i0.ɵɵconditional(!ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length > 0 ? 1 : -1);
1080
1091
  i0.ɵɵadvance();
1081
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length === 0);
1092
+ i0.ɵɵconditional(!ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length === 0 ? 2 : -1);
1082
1093
  } }
1083
- function TestSuiteFormComponentExtended_div_49_ng_container_2_Template(rf, ctx) { if (rf & 1) {
1094
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1084
1095
  const _r9 = i0.ɵɵgetCurrentView();
1085
- i0.ɵɵelementContainerStart(0);
1086
- i0.ɵɵelementStart(1, "div", 111)(2, "div", 112)(3, "button", 113);
1087
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setAnalyticsView("summary")); });
1088
- i0.ɵɵelement(4, "i", 114);
1089
- i0.ɵɵelementStart(5, "span");
1090
- i0.ɵɵtext(6, "Summary");
1096
+ i0.ɵɵelementStart(0, "div", 101)(1, "div", 102)(2, "button", 103);
1097
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setAnalyticsView("summary")); });
1098
+ i0.ɵɵelement(3, "i", 104);
1099
+ i0.ɵɵelementStart(4, "span");
1100
+ i0.ɵɵtext(5, "Summary");
1091
1101
  i0.ɵɵelementEnd()();
1092
- i0.ɵɵelementStart(7, "button", 113);
1093
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setAnalyticsView("matrix")); });
1094
- i0.ɵɵelement(8, "i", 115);
1095
- i0.ɵɵelementStart(9, "span");
1096
- i0.ɵɵtext(10, "Matrix");
1102
+ i0.ɵɵelementStart(6, "button", 103);
1103
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setAnalyticsView("matrix")); });
1104
+ i0.ɵɵelement(7, "i", 105);
1105
+ i0.ɵɵelementStart(8, "span");
1106
+ i0.ɵɵtext(9, "Matrix");
1097
1107
  i0.ɵɵelementEnd()();
1098
- i0.ɵɵelementStart(11, "button", 113);
1099
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setAnalyticsView("chart")); });
1100
- i0.ɵɵelement(12, "i", 116);
1101
- i0.ɵɵelementStart(13, "span");
1102
- i0.ɵɵtext(14, "Chart");
1108
+ i0.ɵɵelementStart(10, "button", 103);
1109
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setAnalyticsView("chart")); });
1110
+ i0.ɵɵelement(11, "i", 106);
1111
+ i0.ɵɵelementStart(12, "span");
1112
+ i0.ɵɵtext(13, "Chart");
1103
1113
  i0.ɵɵelementEnd()()()();
1104
- i0.ɵɵelementStart(15, "div", 117)(16, "div", 118);
1105
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_ng_container_2_Template_div_click_16_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.toggleFilters()); });
1106
- i0.ɵɵelementStart(17, "span", 119);
1107
- i0.ɵɵelement(18, "i", 120);
1108
- i0.ɵɵtext(19, " Filters ");
1109
- i0.ɵɵtemplate(20, TestSuiteFormComponentExtended_div_49_ng_container_2_span_20_Template, 3, 2, "span", 121);
1114
+ i0.ɵɵelementStart(14, "div", 107)(15, "div", 108);
1115
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template_div_click_15_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.toggleFilters()); });
1116
+ i0.ɵɵelementStart(16, "span", 109);
1117
+ i0.ɵɵelement(17, "i", 110);
1118
+ i0.ɵɵtext(18, " Filters ");
1119
+ i0.ɵɵconditionalCreate(19, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_19_Template, 3, 2, "span", 111);
1110
1120
  i0.ɵɵelementEnd();
1111
- i0.ɵɵelement(21, "i", 10);
1121
+ i0.ɵɵelement(20, "i", 16);
1112
1122
  i0.ɵɵelementEnd();
1113
- i0.ɵɵtemplate(22, TestSuiteFormComponentExtended_div_49_ng_container_2_div_22_Template, 14, 9, "div", 122);
1123
+ i0.ɵɵconditionalCreate(21, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template, 14, 9, "div", 112);
1114
1124
  i0.ɵɵelementEnd();
1115
- i0.ɵɵtemplate(23, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_23_Template, 62, 16, "ng-container", 75)(24, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_24_Template, 4, 3, "ng-container", 75)(25, TestSuiteFormComponentExtended_div_49_ng_container_2_ng_container_25_Template, 4, 3, "ng-container", 75);
1116
- i0.ɵɵelementContainerEnd();
1125
+ i0.ɵɵconditionalCreate(22, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_Template, 62, 15);
1126
+ i0.ɵɵconditionalCreate(23, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Template, 3, 3);
1127
+ i0.ɵɵconditionalCreate(24, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_24_Template, 3, 3);
1117
1128
  } if (rf & 2) {
1118
1129
  const ctx_r0 = i0.ɵɵnextContext(2);
1119
- i0.ɵɵadvance(3);
1130
+ i0.ɵɵadvance(2);
1120
1131
  i0.ɵɵclassProp("active", ctx_r0.analyticsView === "summary");
1121
1132
  i0.ɵɵadvance(4);
1122
1133
  i0.ɵɵclassProp("active", ctx_r0.analyticsView === "matrix");
@@ -1125,22 +1136,22 @@ function TestSuiteFormComponentExtended_div_49_ng_container_2_Template(rf, ctx)
1125
1136
  i0.ɵɵadvance(4);
1126
1137
  i0.ɵɵclassProp("collapsed", ctx_r0.filtersCollapsed);
1127
1138
  i0.ɵɵadvance(5);
1128
- i0.ɵɵproperty("ngIf", ctx_r0.filtersCollapsed);
1139
+ i0.ɵɵconditional(ctx_r0.filtersCollapsed ? 19 : -1);
1129
1140
  i0.ɵɵadvance();
1130
1141
  i0.ɵɵproperty("ngClass", ctx_r0.filtersCollapsed ? "fa-chevron-down" : "fa-chevron-up");
1131
1142
  i0.ɵɵadvance();
1132
- i0.ɵɵproperty("ngIf", !ctx_r0.filtersCollapsed);
1143
+ i0.ɵɵconditional(!ctx_r0.filtersCollapsed ? 21 : -1);
1133
1144
  i0.ɵɵadvance();
1134
- i0.ɵɵproperty("ngIf", ctx_r0.analyticsView === "summary");
1145
+ i0.ɵɵconditional(ctx_r0.analyticsView === "summary" ? 22 : -1);
1135
1146
  i0.ɵɵadvance();
1136
- i0.ɵɵproperty("ngIf", ctx_r0.analyticsView === "matrix");
1147
+ i0.ɵɵconditional(ctx_r0.analyticsView === "matrix" ? 23 : -1);
1137
1148
  i0.ɵɵadvance();
1138
- i0.ɵɵproperty("ngIf", ctx_r0.analyticsView === "chart");
1149
+ i0.ɵɵconditional(ctx_r0.analyticsView === "chart" ? 24 : -1);
1139
1150
  } }
1140
- function TestSuiteFormComponentExtended_div_49_div_3_Template(rf, ctx) { if (rf & 1) {
1151
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1141
1152
  const _r28 = i0.ɵɵgetCurrentView();
1142
- i0.ɵɵelementStart(0, "div", 77)(1, "div", 78);
1143
- i0.ɵɵelement(2, "i", 26);
1153
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
1154
+ i0.ɵɵelement(2, "i", 32);
1144
1155
  i0.ɵɵelementEnd();
1145
1156
  i0.ɵɵelementStart(3, "h4");
1146
1157
  i0.ɵɵtext(4, "No Analytics Data");
@@ -1148,27 +1159,29 @@ function TestSuiteFormComponentExtended_div_49_div_3_Template(rf, ctx) { if (rf
1148
1159
  i0.ɵɵelementStart(5, "p");
1149
1160
  i0.ɵɵtext(6, "Run this suite to start collecting analytics data.");
1150
1161
  i0.ɵɵelementEnd();
1151
- i0.ɵɵelementStart(7, "button", 15);
1152
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_49_div_3_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r28); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runSuite()); });
1153
- i0.ɵɵelement(8, "i", 16);
1162
+ i0.ɵɵelementStart(7, "button", 21);
1163
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_61_Conditional_3_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r28); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runSuite()); });
1164
+ i0.ɵɵelement(8, "i", 22);
1154
1165
  i0.ɵɵtext(9, " Run Suite Now ");
1155
1166
  i0.ɵɵelementEnd()();
1156
1167
  } }
1157
- function TestSuiteFormComponentExtended_div_49_Template(rf, ctx) { if (rf & 1) {
1158
- i0.ɵɵelementStart(0, "div", 109);
1159
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_49_div_1_Template, 2, 0, "div", 55)(2, TestSuiteFormComponentExtended_div_49_ng_container_2_Template, 26, 14, "ng-container", 75)(3, TestSuiteFormComponentExtended_div_49_div_3_Template, 10, 0, "div", 57);
1168
+ function TestSuiteFormComponentExtended_Conditional_61_Template(rf, ctx) { if (rf & 1) {
1169
+ i0.ɵɵelementStart(0, "div", 38);
1170
+ i0.ɵɵconditionalCreate(1, TestSuiteFormComponentExtended_Conditional_61_Conditional_1_Template, 2, 0, "div", 56);
1171
+ i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template, 25, 14);
1172
+ i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_3_Template, 10, 0, "div", 58);
1160
1173
  i0.ɵɵelementEnd();
1161
1174
  } if (rf & 2) {
1162
1175
  const ctx_r0 = i0.ɵɵnextContext();
1163
1176
  i0.ɵɵadvance();
1164
- i0.ɵɵproperty("ngIf", ctx_r0.loadingAnalytics);
1177
+ i0.ɵɵconditional(ctx_r0.loadingAnalytics ? 1 : -1);
1165
1178
  i0.ɵɵadvance();
1166
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingAnalytics && ctx_r0.analyticsLoaded);
1179
+ i0.ɵɵconditional(!ctx_r0.loadingAnalytics && ctx_r0.analyticsLoaded ? 2 : -1);
1167
1180
  i0.ɵɵadvance();
1168
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingAnalytics && ctx_r0.analyticsLoaded && ctx_r0.analyticsData.length === 0);
1181
+ i0.ɵɵconditional(!ctx_r0.loadingAnalytics && ctx_r0.analyticsLoaded && ctx_r0.analyticsData.length === 0 ? 3 : -1);
1169
1182
  } }
1170
- function TestSuiteFormComponentExtended_div_50_div_5_div_1_div_8_span_1_Template(rf, ctx) { if (rf & 1) {
1171
- i0.ɵɵelementStart(0, "span", 268);
1183
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
1184
+ i0.ɵɵelementStart(0, "span", 233);
1172
1185
  i0.ɵɵtext(1);
1173
1186
  i0.ɵɵelementEnd();
1174
1187
  } if (rf & 2) {
@@ -1176,29 +1189,29 @@ function TestSuiteFormComponentExtended_div_50_div_5_div_1_div_8_span_1_Template
1176
1189
  i0.ɵɵadvance();
1177
1190
  i0.ɵɵtextInterpolate(tag_r31);
1178
1191
  } }
1179
- function TestSuiteFormComponentExtended_div_50_div_5_div_1_div_8_Template(rf, ctx) { if (rf & 1) {
1180
- i0.ɵɵelementStart(0, "div", 266);
1181
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_50_div_5_div_1_div_8_span_1_Template, 2, 1, "span", 267);
1192
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1193
+ i0.ɵɵelementStart(0, "div", 232);
1194
+ i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Conditional_8_For_2_Template, 2, 1, "span", 233, i0.ɵɵrepeaterTrackByIdentity);
1182
1195
  i0.ɵɵelementEnd();
1183
1196
  } if (rf & 2) {
1184
1197
  const run_r30 = i0.ɵɵnextContext().$implicit;
1185
1198
  const ctx_r0 = i0.ɵɵnextContext(3);
1186
1199
  i0.ɵɵadvance();
1187
- i0.ɵɵproperty("ngForOf", ctx_r0.getRunTags(run_r30).slice(0, 2));
1200
+ i0.ɵɵrepeater(ctx_r0.getRunTags(run_r30).slice(0, 2));
1188
1201
  } }
1189
- function TestSuiteFormComponentExtended_div_50_div_5_div_1_Template(rf, ctx) { if (rf & 1) {
1202
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
1190
1203
  const _r29 = i0.ɵɵgetCurrentView();
1191
- i0.ɵɵelementStart(0, "div", 260);
1192
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_50_div_5_div_1_Template_div_click_0_listener() { const run_r30 = i0.ɵɵrestoreView(_r29).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.selectCompareRunA(run_r30)); });
1193
- i0.ɵɵelement(1, "div", 261);
1194
- i0.ɵɵelementStart(2, "div", 262)(3, "div", 263);
1204
+ i0.ɵɵelementStart(0, "div", 227);
1205
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Template_div_click_0_listener() { const run_r30 = i0.ɵɵrestoreView(_r29).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.selectCompareRunA(run_r30)); });
1206
+ i0.ɵɵelement(1, "div", 228);
1207
+ i0.ɵɵelementStart(2, "div", 229)(3, "div", 230);
1195
1208
  i0.ɵɵtext(4);
1196
1209
  i0.ɵɵpipe(5, "date");
1197
1210
  i0.ɵɵelementEnd();
1198
- i0.ɵɵelementStart(6, "div", 264);
1211
+ i0.ɵɵelementStart(6, "div", 231);
1199
1212
  i0.ɵɵtext(7);
1200
1213
  i0.ɵɵelementEnd()();
1201
- i0.ɵɵtemplate(8, TestSuiteFormComponentExtended_div_50_div_5_div_1_div_8_Template, 2, 1, "div", 265);
1214
+ i0.ɵɵconditionalCreate(8, TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Conditional_8_Template, 3, 0, "div", 232);
1202
1215
  i0.ɵɵelementEnd();
1203
1216
  } if (rf & 2) {
1204
1217
  const run_r30 = ctx.$implicit;
@@ -1211,31 +1224,31 @@ function TestSuiteFormComponentExtended_div_50_div_5_div_1_Template(rf, ctx) { i
1211
1224
  i0.ɵɵadvance(3);
1212
1225
  i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(run_r30).toFixed(0), "% pass");
1213
1226
  i0.ɵɵadvance();
1214
- i0.ɵɵproperty("ngIf", ctx_r0.getRunTags(run_r30).length > 0);
1227
+ i0.ɵɵconditional(ctx_r0.getRunTags(run_r30).length > 0 ? 8 : -1);
1215
1228
  } }
1216
- function TestSuiteFormComponentExtended_div_50_div_5_Template(rf, ctx) { if (rf & 1) {
1217
- i0.ɵɵelementStart(0, "div", 258);
1218
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_50_div_5_div_1_Template, 9, 10, "div", 259);
1229
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1230
+ i0.ɵɵelementStart(0, "div", 220);
1231
+ i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Template, 9, 10, "div", 226, i0.ɵɵrepeaterTrackByIdentity);
1219
1232
  i0.ɵɵelementEnd();
1220
1233
  } if (rf & 2) {
1221
1234
  const ctx_r0 = i0.ɵɵnextContext(2);
1222
1235
  i0.ɵɵadvance();
1223
- i0.ɵɵproperty("ngForOf", ctx_r0.suiteRuns);
1236
+ i0.ɵɵrepeater(ctx_r0.suiteRuns);
1224
1237
  } }
1225
- function TestSuiteFormComponentExtended_div_50_div_6_Template(rf, ctx) { if (rf & 1) {
1238
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1226
1239
  const _r32 = i0.ɵɵgetCurrentView();
1227
- i0.ɵɵelementStart(0, "div", 269)(1, "div", 270)(2, "span", 271);
1240
+ i0.ɵɵelementStart(0, "div", 221)(1, "div", 234)(2, "span", 235);
1228
1241
  i0.ɵɵtext(3, "Selected:");
1229
1242
  i0.ɵɵelementEnd();
1230
- i0.ɵɵelementStart(4, "button", 272);
1231
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_50_div_6_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r32); const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.compareRunA = null; return i0.ɵɵresetView(ctx_r0.compareResults = []); });
1243
+ i0.ɵɵelementStart(4, "button", 236);
1244
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_62_Conditional_6_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r32); const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.compareRunA = null; return i0.ɵɵresetView(ctx_r0.compareResults = []); });
1232
1245
  i0.ɵɵtext(5, "Clear");
1233
1246
  i0.ɵɵelementEnd()();
1234
- i0.ɵɵelementStart(6, "div", 273)(7, "span");
1247
+ i0.ɵɵelementStart(6, "div", 237)(7, "span");
1235
1248
  i0.ɵɵtext(8);
1236
1249
  i0.ɵɵpipe(9, "date");
1237
1250
  i0.ɵɵelementEnd();
1238
- i0.ɵɵelementStart(10, "span", 274);
1251
+ i0.ɵɵelementStart(10, "span", 238);
1239
1252
  i0.ɵɵtext(11);
1240
1253
  i0.ɵɵelementEnd()()();
1241
1254
  } if (rf & 2) {
@@ -1245,8 +1258,8 @@ function TestSuiteFormComponentExtended_div_50_div_6_Template(rf, ctx) { if (rf
1245
1258
  i0.ɵɵadvance(3);
1246
1259
  i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(ctx_r0.compareRunA).toFixed(1), "%");
1247
1260
  } }
1248
- function TestSuiteFormComponentExtended_div_50_div_12_div_1_div_8_span_1_Template(rf, ctx) { if (rf & 1) {
1249
- i0.ɵɵelementStart(0, "span", 268);
1261
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
1262
+ i0.ɵɵelementStart(0, "span", 233);
1250
1263
  i0.ɵɵtext(1);
1251
1264
  i0.ɵɵelementEnd();
1252
1265
  } if (rf & 2) {
@@ -1254,29 +1267,29 @@ function TestSuiteFormComponentExtended_div_50_div_12_div_1_div_8_span_1_Templat
1254
1267
  i0.ɵɵadvance();
1255
1268
  i0.ɵɵtextInterpolate(tag_r35);
1256
1269
  } }
1257
- function TestSuiteFormComponentExtended_div_50_div_12_div_1_div_8_Template(rf, ctx) { if (rf & 1) {
1258
- i0.ɵɵelementStart(0, "div", 266);
1259
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_50_div_12_div_1_div_8_span_1_Template, 2, 1, "span", 267);
1270
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1271
+ i0.ɵɵelementStart(0, "div", 232);
1272
+ i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Conditional_8_For_2_Template, 2, 1, "span", 233, i0.ɵɵrepeaterTrackByIdentity);
1260
1273
  i0.ɵɵelementEnd();
1261
1274
  } if (rf & 2) {
1262
1275
  const run_r34 = i0.ɵɵnextContext().$implicit;
1263
1276
  const ctx_r0 = i0.ɵɵnextContext(3);
1264
1277
  i0.ɵɵadvance();
1265
- i0.ɵɵproperty("ngForOf", ctx_r0.getRunTags(run_r34).slice(0, 2));
1278
+ i0.ɵɵrepeater(ctx_r0.getRunTags(run_r34).slice(0, 2));
1266
1279
  } }
1267
- function TestSuiteFormComponentExtended_div_50_div_12_div_1_Template(rf, ctx) { if (rf & 1) {
1280
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Template(rf, ctx) { if (rf & 1) {
1268
1281
  const _r33 = i0.ɵɵgetCurrentView();
1269
- i0.ɵɵelementStart(0, "div", 260);
1270
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_50_div_12_div_1_Template_div_click_0_listener() { const run_r34 = i0.ɵɵrestoreView(_r33).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView((ctx_r0.compareRunA == null ? null : ctx_r0.compareRunA.ID) !== run_r34.ID && ctx_r0.selectCompareRunB(run_r34)); });
1271
- i0.ɵɵelement(1, "div", 261);
1272
- i0.ɵɵelementStart(2, "div", 262)(3, "div", 263);
1282
+ i0.ɵɵelementStart(0, "div", 227);
1283
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Template_div_click_0_listener() { const run_r34 = i0.ɵɵrestoreView(_r33).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView((ctx_r0.compareRunA == null ? null : ctx_r0.compareRunA.ID) !== run_r34.ID && ctx_r0.selectCompareRunB(run_r34)); });
1284
+ i0.ɵɵelement(1, "div", 228);
1285
+ i0.ɵɵelementStart(2, "div", 229)(3, "div", 230);
1273
1286
  i0.ɵɵtext(4);
1274
1287
  i0.ɵɵpipe(5, "date");
1275
1288
  i0.ɵɵelementEnd();
1276
- i0.ɵɵelementStart(6, "div", 264);
1289
+ i0.ɵɵelementStart(6, "div", 231);
1277
1290
  i0.ɵɵtext(7);
1278
1291
  i0.ɵɵelementEnd()();
1279
- i0.ɵɵtemplate(8, TestSuiteFormComponentExtended_div_50_div_12_div_1_div_8_Template, 2, 1, "div", 265);
1292
+ i0.ɵɵconditionalCreate(8, TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Conditional_8_Template, 3, 0, "div", 232);
1280
1293
  i0.ɵɵelementEnd();
1281
1294
  } if (rf & 2) {
1282
1295
  const run_r34 = ctx.$implicit;
@@ -1289,31 +1302,31 @@ function TestSuiteFormComponentExtended_div_50_div_12_div_1_Template(rf, ctx) {
1289
1302
  i0.ɵɵadvance(3);
1290
1303
  i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(run_r34).toFixed(0), "% pass");
1291
1304
  i0.ɵɵadvance();
1292
- i0.ɵɵproperty("ngIf", ctx_r0.getRunTags(run_r34).length > 0);
1305
+ i0.ɵɵconditional(ctx_r0.getRunTags(run_r34).length > 0 ? 8 : -1);
1293
1306
  } }
1294
- function TestSuiteFormComponentExtended_div_50_div_12_Template(rf, ctx) { if (rf & 1) {
1295
- i0.ɵɵelementStart(0, "div", 258);
1296
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_50_div_12_div_1_Template, 9, 12, "div", 275);
1307
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1308
+ i0.ɵɵelementStart(0, "div", 220);
1309
+ i0.ɵɵrepeaterCreate(1, TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Template, 9, 12, "div", 239, i0.ɵɵrepeaterTrackByIdentity);
1297
1310
  i0.ɵɵelementEnd();
1298
1311
  } if (rf & 2) {
1299
1312
  const ctx_r0 = i0.ɵɵnextContext(2);
1300
1313
  i0.ɵɵadvance();
1301
- i0.ɵɵproperty("ngForOf", ctx_r0.suiteRuns);
1314
+ i0.ɵɵrepeater(ctx_r0.suiteRuns);
1302
1315
  } }
1303
- function TestSuiteFormComponentExtended_div_50_div_13_Template(rf, ctx) { if (rf & 1) {
1316
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1304
1317
  const _r36 = i0.ɵɵgetCurrentView();
1305
- i0.ɵɵelementStart(0, "div", 269)(1, "div", 270)(2, "span", 271);
1318
+ i0.ɵɵelementStart(0, "div", 221)(1, "div", 234)(2, "span", 235);
1306
1319
  i0.ɵɵtext(3, "Selected:");
1307
1320
  i0.ɵɵelementEnd();
1308
- i0.ɵɵelementStart(4, "button", 272);
1309
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_50_div_13_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r36); const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.compareRunB = null; return i0.ɵɵresetView(ctx_r0.compareResults = []); });
1321
+ i0.ɵɵelementStart(4, "button", 236);
1322
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_62_Conditional_13_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r36); const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.compareRunB = null; return i0.ɵɵresetView(ctx_r0.compareResults = []); });
1310
1323
  i0.ɵɵtext(5, "Clear");
1311
1324
  i0.ɵɵelementEnd()();
1312
- i0.ɵɵelementStart(6, "div", 273)(7, "span");
1325
+ i0.ɵɵelementStart(6, "div", 237)(7, "span");
1313
1326
  i0.ɵɵtext(8);
1314
1327
  i0.ɵɵpipe(9, "date");
1315
1328
  i0.ɵɵelementEnd();
1316
- i0.ɵɵelementStart(10, "span", 274);
1329
+ i0.ɵɵelementStart(10, "span", 238);
1317
1330
  i0.ɵɵtext(11);
1318
1331
  i0.ɵɵelementEnd()()();
1319
1332
  } if (rf & 2) {
@@ -1323,8 +1336,8 @@ function TestSuiteFormComponentExtended_div_50_div_13_Template(rf, ctx) { if (rf
1323
1336
  i0.ɵɵadvance(3);
1324
1337
  i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(ctx_r0.compareRunB).toFixed(1), "%");
1325
1338
  } }
1326
- function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_4_Template(rf, ctx) { if (rf & 1) {
1327
- i0.ɵɵelementStart(0, "span", 155);
1339
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1340
+ i0.ɵɵelementStart(0, "span", 140);
1328
1341
  i0.ɵɵtext(1);
1329
1342
  i0.ɵɵelementEnd();
1330
1343
  } if (rf & 2) {
@@ -1333,13 +1346,13 @@ function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_4_Template(rf,
1333
1346
  i0.ɵɵadvance();
1334
1347
  i0.ɵɵtextInterpolate(result_r37.runA.status);
1335
1348
  } }
1336
- function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_5_Template(rf, ctx) { if (rf & 1) {
1337
- i0.ɵɵelementStart(0, "span", 297);
1349
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1350
+ i0.ɵɵelementStart(0, "span", 252);
1338
1351
  i0.ɵɵtext(1, "N/A");
1339
1352
  i0.ɵɵelementEnd();
1340
1353
  } }
1341
- function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_7_Template(rf, ctx) { if (rf & 1) {
1342
- i0.ɵɵelementStart(0, "span", 155);
1354
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1355
+ i0.ɵɵelementStart(0, "span", 140);
1343
1356
  i0.ɵɵtext(1);
1344
1357
  i0.ɵɵelementEnd();
1345
1358
  } if (rf & 2) {
@@ -1348,13 +1361,13 @@ function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_7_Template(rf,
1348
1361
  i0.ɵɵadvance();
1349
1362
  i0.ɵɵtextInterpolate(result_r37.runB.status);
1350
1363
  } }
1351
- function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_8_Template(rf, ctx) { if (rf & 1) {
1352
- i0.ɵɵelementStart(0, "span", 297);
1364
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1365
+ i0.ɵɵelementStart(0, "span", 252);
1353
1366
  i0.ɵɵtext(1, "N/A");
1354
1367
  i0.ɵɵelementEnd();
1355
1368
  } }
1356
- function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_10_Template(rf, ctx) { if (rf & 1) {
1357
- i0.ɵɵelementStart(0, "span", 289);
1369
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1370
+ i0.ɵɵelementStart(0, "span", 251);
1358
1371
  i0.ɵɵtext(1);
1359
1372
  i0.ɵɵelementEnd();
1360
1373
  } if (rf & 2) {
@@ -1363,13 +1376,13 @@ function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_10_Template(rf,
1363
1376
  i0.ɵɵadvance();
1364
1377
  i0.ɵɵtextInterpolate2(" ", result_r37.scoreDiff > 0 ? "+" : "", "", (result_r37.scoreDiff * 100).toFixed(1), "% ");
1365
1378
  } }
1366
- function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_11_Template(rf, ctx) { if (rf & 1) {
1367
- i0.ɵɵelementStart(0, "span", 298);
1379
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1380
+ i0.ɵɵelementStart(0, "span", 253);
1368
1381
  i0.ɵɵtext(1, "-");
1369
1382
  i0.ɵɵelementEnd();
1370
1383
  } }
1371
- function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_13_Template(rf, ctx) { if (rf & 1) {
1372
- i0.ɵɵelementStart(0, "span", 289);
1384
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1385
+ i0.ɵɵelementStart(0, "span", 251);
1373
1386
  i0.ɵɵtext(1);
1374
1387
  i0.ɵɵelementEnd();
1375
1388
  } if (rf & 2) {
@@ -1378,46 +1391,52 @@ function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_13_Template(rf,
1378
1391
  i0.ɵɵadvance();
1379
1392
  i0.ɵɵtextInterpolate2(" ", result_r37.durationDiff > 0 ? "+" : "", "", result_r37.durationDiff.toFixed(1), "s ");
1380
1393
  } }
1381
- function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_14_Template(rf, ctx) { if (rf & 1) {
1382
- i0.ɵɵelementStart(0, "span", 298);
1394
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1395
+ i0.ɵɵelementStart(0, "span", 253);
1383
1396
  i0.ɵɵtext(1, "-");
1384
1397
  i0.ɵɵelementEnd();
1385
1398
  } }
1386
- function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_16_Template(rf, ctx) { if (rf & 1) {
1387
- i0.ɵɵelementStart(0, "span", 299);
1388
- i0.ɵɵelement(1, "i", 300);
1399
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1400
+ i0.ɵɵelementStart(0, "span", 254);
1401
+ i0.ɵɵelement(1, "i", 257);
1389
1402
  i0.ɵɵtext(2, " Fixed ");
1390
1403
  i0.ɵɵelementEnd();
1391
1404
  } }
1392
- function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_17_Template(rf, ctx) { if (rf & 1) {
1393
- i0.ɵɵelementStart(0, "span", 301);
1394
- i0.ɵɵelement(1, "i", 302);
1405
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1406
+ i0.ɵɵelementStart(0, "span", 255);
1407
+ i0.ɵɵelement(1, "i", 258);
1395
1408
  i0.ɵɵtext(2, " Broke ");
1396
1409
  i0.ɵɵelementEnd();
1397
1410
  } }
1398
- function TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_18_Template(rf, ctx) { if (rf & 1) {
1399
- i0.ɵɵelementStart(0, "span", 303);
1400
- i0.ɵɵelement(1, "i", 222);
1411
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1412
+ i0.ɵɵelementStart(0, "span", 256);
1413
+ i0.ɵɵelement(1, "i", 197);
1401
1414
  i0.ɵɵelementEnd();
1402
1415
  } }
1403
- function TestSuiteFormComponentExtended_div_50_div_14_tr_45_Template(rf, ctx) { if (rf & 1) {
1404
- i0.ɵɵelementStart(0, "tr", 289)(1, "td", 202);
1416
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Template(rf, ctx) { if (rf & 1) {
1417
+ i0.ɵɵelementStart(0, "tr", 251)(1, "td", 180);
1405
1418
  i0.ɵɵtext(2);
1406
1419
  i0.ɵɵelementEnd();
1407
1420
  i0.ɵɵelementStart(3, "td");
1408
- i0.ɵɵtemplate(4, TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_4_Template, 2, 2, "span", 290)(5, TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_5_Template, 2, 0, "span", 291);
1421
+ i0.ɵɵconditionalCreate(4, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_4_Template, 2, 2, "span", 140);
1422
+ i0.ɵɵconditionalCreate(5, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_5_Template, 2, 0, "span", 252);
1409
1423
  i0.ɵɵelementEnd();
1410
1424
  i0.ɵɵelementStart(6, "td");
1411
- i0.ɵɵtemplate(7, TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_7_Template, 2, 2, "span", 290)(8, TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_8_Template, 2, 0, "span", 291);
1425
+ i0.ɵɵconditionalCreate(7, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_7_Template, 2, 2, "span", 140);
1426
+ i0.ɵɵconditionalCreate(8, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_8_Template, 2, 0, "span", 252);
1412
1427
  i0.ɵɵelementEnd();
1413
1428
  i0.ɵɵelementStart(9, "td");
1414
- i0.ɵɵtemplate(10, TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_10_Template, 2, 6, "span", 292)(11, TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_11_Template, 2, 0, "span", 293);
1429
+ i0.ɵɵconditionalCreate(10, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_10_Template, 2, 6, "span", 251);
1430
+ i0.ɵɵconditionalCreate(11, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_11_Template, 2, 0, "span", 253);
1415
1431
  i0.ɵɵelementEnd();
1416
1432
  i0.ɵɵelementStart(12, "td");
1417
- i0.ɵɵtemplate(13, TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_13_Template, 2, 6, "span", 292)(14, TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_14_Template, 2, 0, "span", 293);
1433
+ i0.ɵɵconditionalCreate(13, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_13_Template, 2, 6, "span", 251);
1434
+ i0.ɵɵconditionalCreate(14, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_14_Template, 2, 0, "span", 253);
1418
1435
  i0.ɵɵelementEnd();
1419
1436
  i0.ɵɵelementStart(15, "td");
1420
- i0.ɵɵtemplate(16, TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_16_Template, 3, 0, "span", 294)(17, TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_17_Template, 3, 0, "span", 295)(18, TestSuiteFormComponentExtended_div_50_div_14_tr_45_span_18_Template, 2, 0, "span", 296);
1437
+ i0.ɵɵconditionalCreate(16, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_16_Template, 3, 0, "span", 254);
1438
+ i0.ɵɵconditionalCreate(17, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_17_Template, 3, 0, "span", 255);
1439
+ i0.ɵɵconditionalCreate(18, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_18_Template, 2, 0, "span", 256);
1421
1440
  i0.ɵɵelementEnd()();
1422
1441
  } if (rf & 2) {
1423
1442
  const result_r37 = ctx.$implicit;
@@ -1425,60 +1444,60 @@ function TestSuiteFormComponentExtended_div_50_div_14_tr_45_Template(rf, ctx) {
1425
1444
  i0.ɵɵadvance(2);
1426
1445
  i0.ɵɵtextInterpolate(result_r37.testName);
1427
1446
  i0.ɵɵadvance(2);
1428
- i0.ɵɵproperty("ngIf", result_r37.runA);
1447
+ i0.ɵɵconditional(result_r37.runA ? 4 : -1);
1429
1448
  i0.ɵɵadvance();
1430
- i0.ɵɵproperty("ngIf", !result_r37.runA);
1449
+ i0.ɵɵconditional(!result_r37.runA ? 5 : -1);
1431
1450
  i0.ɵɵadvance(2);
1432
- i0.ɵɵproperty("ngIf", result_r37.runB);
1451
+ i0.ɵɵconditional(result_r37.runB ? 7 : -1);
1433
1452
  i0.ɵɵadvance();
1434
- i0.ɵɵproperty("ngIf", !result_r37.runB);
1453
+ i0.ɵɵconditional(!result_r37.runB ? 8 : -1);
1435
1454
  i0.ɵɵadvance(2);
1436
- i0.ɵɵproperty("ngIf", result_r37.scoreDiff != null);
1455
+ i0.ɵɵconditional(result_r37.scoreDiff != null ? 10 : -1);
1437
1456
  i0.ɵɵadvance();
1438
- i0.ɵɵproperty("ngIf", result_r37.scoreDiff == null);
1457
+ i0.ɵɵconditional(result_r37.scoreDiff == null ? 11 : -1);
1439
1458
  i0.ɵɵadvance(2);
1440
- i0.ɵɵproperty("ngIf", result_r37.durationDiff != null);
1459
+ i0.ɵɵconditional(result_r37.durationDiff != null ? 13 : -1);
1441
1460
  i0.ɵɵadvance();
1442
- i0.ɵɵproperty("ngIf", result_r37.durationDiff == null);
1461
+ i0.ɵɵconditional(result_r37.durationDiff == null ? 14 : -1);
1443
1462
  i0.ɵɵadvance(2);
1444
- i0.ɵɵproperty("ngIf", result_r37.runA && result_r37.runB && result_r37.runA.status !== "Passed" && result_r37.runB.status === "Passed");
1463
+ i0.ɵɵconditional(result_r37.runA && result_r37.runB && result_r37.runA.status !== "Passed" && result_r37.runB.status === "Passed" ? 16 : -1);
1445
1464
  i0.ɵɵadvance();
1446
- i0.ɵɵproperty("ngIf", result_r37.runA && result_r37.runB && result_r37.runA.status === "Passed" && result_r37.runB.status !== "Passed");
1465
+ i0.ɵɵconditional(result_r37.runA && result_r37.runB && result_r37.runA.status === "Passed" && result_r37.runB.status !== "Passed" ? 17 : -1);
1447
1466
  i0.ɵɵadvance();
1448
- i0.ɵɵproperty("ngIf", !result_r37.statusChanged);
1467
+ i0.ɵɵconditional(!result_r37.statusChanged ? 18 : -1);
1449
1468
  } }
1450
- function TestSuiteFormComponentExtended_div_50_div_14_Template(rf, ctx) { if (rf & 1) {
1451
- i0.ɵɵelementStart(0, "div", 276)(1, "div", 277)(2, "div", 278)(3, "div", 279);
1469
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1470
+ i0.ɵɵelementStart(0, "div", 224)(1, "div", 240)(2, "div", 241)(3, "div", 242);
1452
1471
  i0.ɵɵtext(4, "Pass Rate Change");
1453
1472
  i0.ɵɵelementEnd();
1454
- i0.ɵɵelementStart(5, "div", 280);
1455
- i0.ɵɵelement(6, "i", 10);
1473
+ i0.ɵɵelementStart(5, "div", 243);
1474
+ i0.ɵɵelement(6, "i", 16);
1456
1475
  i0.ɵɵtext(7);
1457
1476
  i0.ɵɵelementEnd()();
1458
- i0.ɵɵelementStart(8, "div", 278)(9, "div", 279);
1477
+ i0.ɵɵelementStart(8, "div", 241)(9, "div", 242);
1459
1478
  i0.ɵɵtext(10, "Duration Change");
1460
1479
  i0.ɵɵelementEnd();
1461
- i0.ɵɵelementStart(11, "div", 280);
1462
- i0.ɵɵelement(12, "i", 10);
1480
+ i0.ɵɵelementStart(11, "div", 243);
1481
+ i0.ɵɵelement(12, "i", 16);
1463
1482
  i0.ɵɵtext(13);
1464
1483
  i0.ɵɵelementEnd()();
1465
- i0.ɵɵelementStart(14, "div", 281)(15, "div", 279);
1484
+ i0.ɵɵelementStart(14, "div", 244)(15, "div", 242);
1466
1485
  i0.ɵɵtext(16, "Improved");
1467
1486
  i0.ɵɵelementEnd();
1468
- i0.ɵɵelementStart(17, "div", 282);
1487
+ i0.ɵɵelementStart(17, "div", 245);
1469
1488
  i0.ɵɵtext(18);
1470
1489
  i0.ɵɵelementEnd()();
1471
- i0.ɵɵelementStart(19, "div", 283)(20, "div", 279);
1490
+ i0.ɵɵelementStart(19, "div", 246)(20, "div", 242);
1472
1491
  i0.ɵɵtext(21, "Regressed");
1473
1492
  i0.ɵɵelementEnd();
1474
- i0.ɵɵelementStart(22, "div", 282);
1493
+ i0.ɵɵelementStart(22, "div", 245);
1475
1494
  i0.ɵɵtext(23);
1476
1495
  i0.ɵɵelementEnd()()();
1477
- i0.ɵɵelementStart(24, "div", 284)(25, "h3");
1478
- i0.ɵɵelement(26, "i", 285);
1496
+ i0.ɵɵelementStart(24, "div", 247)(25, "h3");
1497
+ i0.ɵɵelement(26, "i", 248);
1479
1498
  i0.ɵɵtext(27, " Test-by-Test Comparison");
1480
1499
  i0.ɵɵelementEnd();
1481
- i0.ɵɵelementStart(28, "div", 286)(29, "table", 287)(30, "thead")(31, "tr")(32, "th");
1500
+ i0.ɵɵelementStart(28, "div", 249)(29, "table", 250)(30, "thead")(31, "tr")(32, "th");
1482
1501
  i0.ɵɵtext(33, "Test");
1483
1502
  i0.ɵɵelementEnd();
1484
1503
  i0.ɵɵelementStart(34, "th");
@@ -1497,21 +1516,21 @@ function TestSuiteFormComponentExtended_div_50_div_14_Template(rf, ctx) { if (rf
1497
1516
  i0.ɵɵtext(43, "Change");
1498
1517
  i0.ɵɵelementEnd()()();
1499
1518
  i0.ɵɵelementStart(44, "tbody");
1500
- i0.ɵɵtemplate(45, TestSuiteFormComponentExtended_div_50_div_14_tr_45_Template, 19, 16, "tr", 288);
1519
+ i0.ɵɵrepeaterCreate(45, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Template, 19, 16, "tr", 251, i0.ɵɵrepeaterTrackByIdentity);
1501
1520
  i0.ɵɵelementEnd()()()()();
1502
1521
  } if (rf & 2) {
1503
1522
  let tmp_4_0;
1504
1523
  const ctx_r0 = i0.ɵɵnextContext(2);
1505
1524
  i0.ɵɵadvance(5);
1506
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(10, _c6, ctx_r0.getComparePassRateDiff() > 0, ctx_r0.getComparePassRateDiff() < 0));
1525
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(9, _c6, ctx_r0.getComparePassRateDiff() > 0, ctx_r0.getComparePassRateDiff() < 0));
1507
1526
  i0.ɵɵadvance();
1508
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(13, _c4, ctx_r0.getComparePassRateDiff() > 0, ctx_r0.getComparePassRateDiff() < 0, ctx_r0.getComparePassRateDiff() === 0));
1527
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(12, _c4, ctx_r0.getComparePassRateDiff() > 0, ctx_r0.getComparePassRateDiff() < 0, ctx_r0.getComparePassRateDiff() === 0));
1509
1528
  i0.ɵɵadvance();
1510
1529
  i0.ɵɵtextInterpolate2(" ", ctx_r0.getComparePassRateDiff() > 0 ? "+" : "", "", (tmp_4_0 = ctx_r0.getComparePassRateDiff()) == null ? null : tmp_4_0.toFixed(1), "% ");
1511
1530
  i0.ɵɵadvance(4);
1512
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(17, _c6, ctx_r0.getCompareDurationDiff() < 0, ctx_r0.getCompareDurationDiff() > 0));
1531
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(16, _c6, ctx_r0.getCompareDurationDiff() < 0, ctx_r0.getCompareDurationDiff() > 0));
1513
1532
  i0.ɵɵadvance();
1514
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(20, _c7, ctx_r0.getCompareDurationDiff() < 0, ctx_r0.getCompareDurationDiff() > 0, ctx_r0.getCompareDurationDiff() === 0));
1533
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(19, _c7, ctx_r0.getCompareDurationDiff() < 0, ctx_r0.getCompareDurationDiff() > 0, ctx_r0.getCompareDurationDiff() === 0));
1515
1534
  i0.ɵɵadvance();
1516
1535
  i0.ɵɵtextInterpolate1(" ", ctx_r0.formatDuration(ctx_r0.getAbsCompareDurationDiff()), " ");
1517
1536
  i0.ɵɵadvance(5);
@@ -1519,16 +1538,16 @@ function TestSuiteFormComponentExtended_div_50_div_14_Template(rf, ctx) { if (rf
1519
1538
  i0.ɵɵadvance(5);
1520
1539
  i0.ɵɵtextInterpolate(ctx_r0.getCompareRegressedCount());
1521
1540
  i0.ɵɵadvance(22);
1522
- i0.ɵɵproperty("ngForOf", ctx_r0.compareResults);
1541
+ i0.ɵɵrepeater(ctx_r0.compareResults);
1523
1542
  } }
1524
- function TestSuiteFormComponentExtended_div_50_div_15_Template(rf, ctx) { if (rf & 1) {
1525
- i0.ɵɵelementStart(0, "div", 58);
1526
- i0.ɵɵelement(1, "mj-loading", 304);
1543
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1544
+ i0.ɵɵelementStart(0, "div", 56);
1545
+ i0.ɵɵelement(1, "mj-loading", 259);
1527
1546
  i0.ɵɵelementEnd();
1528
1547
  } }
1529
- function TestSuiteFormComponentExtended_div_50_div_16_Template(rf, ctx) { if (rf & 1) {
1530
- i0.ɵɵelementStart(0, "div", 305)(1, "div", 306);
1531
- i0.ɵɵelement(2, "i", 27);
1548
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1549
+ i0.ɵɵelementStart(0, "div", 225)(1, "div", 260);
1550
+ i0.ɵɵelement(2, "i", 33);
1532
1551
  i0.ɵɵelementEnd();
1533
1552
  i0.ɵɵelementStart(3, "h4");
1534
1553
  i0.ɵɵtext(4, "Select Two Runs to Compare");
@@ -1537,10 +1556,10 @@ function TestSuiteFormComponentExtended_div_50_div_16_Template(rf, ctx) { if (rf
1537
1556
  i0.ɵɵtext(6, "Choose a baseline run (A) and a comparison run (B) from the lists above to see a detailed side-by-side comparison.");
1538
1557
  i0.ɵɵelementEnd()();
1539
1558
  } }
1540
- function TestSuiteFormComponentExtended_div_50_div_17_Template(rf, ctx) { if (rf & 1) {
1559
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1541
1560
  const _r38 = i0.ɵɵgetCurrentView();
1542
- i0.ɵɵelementStart(0, "div", 77)(1, "div", 78);
1543
- i0.ɵɵelement(2, "i", 27);
1561
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
1562
+ i0.ɵɵelement(2, "i", 33);
1544
1563
  i0.ɵɵelementEnd();
1545
1564
  i0.ɵɵelementStart(3, "h4");
1546
1565
  i0.ɵɵtext(4, "Not Enough Runs to Compare");
@@ -1548,78 +1567,83 @@ function TestSuiteFormComponentExtended_div_50_div_17_Template(rf, ctx) { if (rf
1548
1567
  i0.ɵɵelementStart(5, "p");
1549
1568
  i0.ɵɵtext(6, "You need at least 2 suite runs to use the comparison feature.");
1550
1569
  i0.ɵɵelementEnd();
1551
- i0.ɵɵelementStart(7, "button", 15);
1552
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_50_div_17_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r38); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runSuite()); });
1553
- i0.ɵɵelement(8, "i", 16);
1570
+ i0.ɵɵelementStart(7, "button", 21);
1571
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_62_Conditional_17_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r38); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runSuite()); });
1572
+ i0.ɵɵelement(8, "i", 22);
1554
1573
  i0.ɵɵtext(9, " Run Suite Now ");
1555
1574
  i0.ɵɵelementEnd()();
1556
1575
  } }
1557
- function TestSuiteFormComponentExtended_div_50_Template(rf, ctx) { if (rf & 1) {
1558
- i0.ɵɵelementStart(0, "div", 249)(1, "div", 250)(2, "div", 251)(3, "h4");
1576
+ function TestSuiteFormComponentExtended_Conditional_62_Template(rf, ctx) { if (rf & 1) {
1577
+ i0.ɵɵelementStart(0, "div", 39)(1, "div", 218)(2, "div", 219)(3, "h4");
1559
1578
  i0.ɵɵtext(4, "Run A (Baseline)");
1560
1579
  i0.ɵɵelementEnd();
1561
- i0.ɵɵtemplate(5, TestSuiteFormComponentExtended_div_50_div_5_Template, 2, 1, "div", 252)(6, TestSuiteFormComponentExtended_div_50_div_6_Template, 12, 5, "div", 253);
1580
+ i0.ɵɵconditionalCreate(5, TestSuiteFormComponentExtended_Conditional_62_Conditional_5_Template, 3, 0, "div", 220);
1581
+ i0.ɵɵconditionalCreate(6, TestSuiteFormComponentExtended_Conditional_62_Conditional_6_Template, 12, 5, "div", 221);
1562
1582
  i0.ɵɵelementEnd();
1563
- i0.ɵɵelementStart(7, "div", 254);
1564
- i0.ɵɵelement(8, "i", 255);
1583
+ i0.ɵɵelementStart(7, "div", 222);
1584
+ i0.ɵɵelement(8, "i", 223);
1565
1585
  i0.ɵɵelementEnd();
1566
- i0.ɵɵelementStart(9, "div", 251)(10, "h4");
1586
+ i0.ɵɵelementStart(9, "div", 219)(10, "h4");
1567
1587
  i0.ɵɵtext(11, "Run B (Compare)");
1568
1588
  i0.ɵɵelementEnd();
1569
- i0.ɵɵtemplate(12, TestSuiteFormComponentExtended_div_50_div_12_Template, 2, 1, "div", 252)(13, TestSuiteFormComponentExtended_div_50_div_13_Template, 12, 5, "div", 253);
1589
+ i0.ɵɵconditionalCreate(12, TestSuiteFormComponentExtended_Conditional_62_Conditional_12_Template, 3, 0, "div", 220);
1590
+ i0.ɵɵconditionalCreate(13, TestSuiteFormComponentExtended_Conditional_62_Conditional_13_Template, 12, 5, "div", 221);
1570
1591
  i0.ɵɵelementEnd()();
1571
- i0.ɵɵtemplate(14, TestSuiteFormComponentExtended_div_50_div_14_Template, 46, 24, "div", 256)(15, TestSuiteFormComponentExtended_div_50_div_15_Template, 2, 0, "div", 55)(16, TestSuiteFormComponentExtended_div_50_div_16_Template, 7, 0, "div", 257)(17, TestSuiteFormComponentExtended_div_50_div_17_Template, 10, 0, "div", 57);
1592
+ i0.ɵɵconditionalCreate(14, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_Template, 47, 23, "div", 224);
1593
+ i0.ɵɵconditionalCreate(15, TestSuiteFormComponentExtended_Conditional_62_Conditional_15_Template, 2, 0, "div", 56);
1594
+ i0.ɵɵconditionalCreate(16, TestSuiteFormComponentExtended_Conditional_62_Conditional_16_Template, 7, 0, "div", 225);
1595
+ i0.ɵɵconditionalCreate(17, TestSuiteFormComponentExtended_Conditional_62_Conditional_17_Template, 10, 0, "div", 58);
1572
1596
  i0.ɵɵelementEnd();
1573
1597
  } if (rf & 2) {
1574
1598
  const ctx_r0 = i0.ɵɵnextContext();
1575
1599
  i0.ɵɵadvance(5);
1576
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0);
1600
+ i0.ɵɵconditional(!ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0 ? 5 : -1);
1577
1601
  i0.ɵɵadvance();
1578
- i0.ɵɵproperty("ngIf", ctx_r0.compareRunA);
1602
+ i0.ɵɵconditional(ctx_r0.compareRunA ? 6 : -1);
1579
1603
  i0.ɵɵadvance(6);
1580
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0);
1604
+ i0.ɵɵconditional(!ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0 ? 12 : -1);
1581
1605
  i0.ɵɵadvance();
1582
- i0.ɵɵproperty("ngIf", ctx_r0.compareRunB);
1606
+ i0.ɵɵconditional(ctx_r0.compareRunB ? 13 : -1);
1583
1607
  i0.ɵɵadvance();
1584
- i0.ɵɵproperty("ngIf", ctx_r0.compareRunA && ctx_r0.compareRunB && !ctx_r0.loadingCompare);
1608
+ i0.ɵɵconditional(ctx_r0.compareRunA && ctx_r0.compareRunB && !ctx_r0.loadingCompare ? 14 : -1);
1585
1609
  i0.ɵɵadvance();
1586
- i0.ɵɵproperty("ngIf", ctx_r0.loadingCompare);
1610
+ i0.ɵɵconditional(ctx_r0.loadingCompare ? 15 : -1);
1587
1611
  i0.ɵɵadvance();
1588
- i0.ɵɵproperty("ngIf", !ctx_r0.compareRunA || !ctx_r0.compareRunB);
1612
+ i0.ɵɵconditional(!ctx_r0.compareRunA || !ctx_r0.compareRunB ? 16 : -1);
1589
1613
  i0.ɵɵadvance();
1590
- i0.ɵɵproperty("ngIf", ctx_r0.runsLoaded && ctx_r0.suiteRuns.length < 2);
1614
+ i0.ɵɵconditional(ctx_r0.runsLoaded && ctx_r0.suiteRuns.length < 2 ? 17 : -1);
1591
1615
  } }
1592
- function TestSuiteFormComponentExtended_div_53_Template(rf, ctx) { if (rf & 1) {
1616
+ function TestSuiteFormComponentExtended_Conditional_65_Template(rf, ctx) { if (rf & 1) {
1593
1617
  const _r39 = i0.ɵɵgetCurrentView();
1594
- i0.ɵɵelementStart(0, "div", 307)(1, "div", 308);
1595
- i0.ɵɵelement(2, "i", 35);
1618
+ i0.ɵɵelementStart(0, "div", 42)(1, "div", 261);
1619
+ i0.ɵɵelement(2, "i", 41);
1596
1620
  i0.ɵɵtext(3, " Shortcuts ");
1597
- i0.ɵɵelementStart(4, "button", 309);
1598
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_53_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r39); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleShortcuts()); });
1599
- i0.ɵɵelement(5, "i", 189);
1621
+ i0.ɵɵelementStart(4, "button", 262);
1622
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Conditional_65_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r39); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleShortcuts()); });
1623
+ i0.ɵɵelement(5, "i", 170);
1600
1624
  i0.ɵɵelementEnd()();
1601
- i0.ɵɵelementStart(6, "div", 310)(7, "div", 311)(8, "span");
1625
+ i0.ɵɵelementStart(6, "div", 263)(7, "div", 264)(8, "span");
1602
1626
  i0.ɵɵtext(9, "Refresh");
1603
1627
  i0.ɵɵelementEnd();
1604
- i0.ɵɵelementStart(10, "span", 312)(11, "kbd");
1628
+ i0.ɵɵelementStart(10, "span", 265)(11, "kbd");
1605
1629
  i0.ɵɵtext(12, "Cmd");
1606
1630
  i0.ɵɵelementEnd();
1607
1631
  i0.ɵɵelementStart(13, "kbd");
1608
1632
  i0.ɵɵtext(14, "R");
1609
1633
  i0.ɵɵelementEnd()()();
1610
- i0.ɵɵelementStart(15, "div", 311)(16, "span");
1634
+ i0.ɵɵelementStart(15, "div", 264)(16, "span");
1611
1635
  i0.ɵɵtext(17, "Run Suite");
1612
1636
  i0.ɵɵelementEnd();
1613
- i0.ɵɵelementStart(18, "span", 312)(19, "kbd");
1637
+ i0.ɵɵelementStart(18, "span", 265)(19, "kbd");
1614
1638
  i0.ɵɵtext(20, "Cmd");
1615
1639
  i0.ɵɵelementEnd();
1616
1640
  i0.ɵɵelementStart(21, "kbd");
1617
1641
  i0.ɵɵtext(22, "Enter");
1618
1642
  i0.ɵɵelementEnd()()();
1619
- i0.ɵɵelementStart(23, "div", 311)(24, "span");
1643
+ i0.ɵɵelementStart(23, "div", 264)(24, "span");
1620
1644
  i0.ɵɵtext(25, "Switch Tabs");
1621
1645
  i0.ɵɵelementEnd();
1622
- i0.ɵɵelementStart(26, "span", 312)(27, "kbd");
1646
+ i0.ɵɵelementStart(26, "span", 265)(27, "kbd");
1623
1647
  i0.ɵɵtext(28, "1");
1624
1648
  i0.ɵɵelementEnd();
1625
1649
  i0.ɵɵtext(29, "-");
@@ -1630,13 +1654,14 @@ function TestSuiteFormComponentExtended_div_53_Template(rf, ctx) { if (rf & 1) {
1630
1654
  /** Settings key for keyboard shortcuts visibility */
1631
1655
  const SHORTCUTS_SETTINGS_KEY = '__mj.Testing.ShowKeyboardShortcuts';
1632
1656
  let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extends TestSuiteFormComponent {
1633
- constructor(elementRef, sharedService, router, route, cdr, testingDialogService, evalPrefsService, viewContainerRef) {
1657
+ constructor(elementRef, sharedService, router, route, cdr, testingDialogService, evalPrefsService, viewContainerRef, appManager) {
1634
1658
  super(elementRef, sharedService, router, route, cdr);
1635
1659
  this.router = router;
1636
1660
  this.cdr = cdr;
1637
1661
  this.testingDialogService = testingDialogService;
1638
1662
  this.evalPrefsService = evalPrefsService;
1639
1663
  this.viewContainerRef = viewContainerRef;
1664
+ this.appManager = appManager;
1640
1665
  this.destroy$ = new Subject();
1641
1666
  // UI state
1642
1667
  this.activeTab = 'overview';
@@ -1885,6 +1910,12 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
1885
1910
  openSuiteRun(runId) {
1886
1911
  SharedService.Instance.OpenEntityRecord('MJ: Test Suite Runs', CompositeKey.FromID(runId));
1887
1912
  }
1913
+ navigateToTestingDashboard() {
1914
+ const testingApp = this.appManager.GetAppByName('Testing');
1915
+ if (testingApp) {
1916
+ this.navigationService.SwitchToApp(testingApp.ID);
1917
+ }
1918
+ }
1888
1919
  async runSuite() {
1889
1920
  if (this.record?.ID) {
1890
1921
  this.testingDialogService.OpenSuiteDialog(this.record.ID, this.viewContainerRef);
@@ -3316,84 +3347,101 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3316
3347
  console.warn('Failed to save shortcuts setting:', error);
3317
3348
  }
3318
3349
  }
3319
- static { this.ɵfac = function TestSuiteFormComponentExtended_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TestSuiteFormComponentExtended)(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)); }; }
3350
+ static { this.ɵfac = function TestSuiteFormComponentExtended_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TestSuiteFormComponentExtended)(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)); }; }
3320
3351
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestSuiteFormComponentExtended, selectors: [["mj-test-suite-form"]], viewQuery: function TestSuiteFormComponentExtended_Query(rf, ctx) { if (rf & 1) {
3321
3352
  i0.ɵɵviewQuery(_c0, 5);
3322
3353
  } if (rf & 2) {
3323
3354
  let _t;
3324
3355
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.chartContainer = _t.first);
3325
3356
  } }, hostBindings: function TestSuiteFormComponentExtended_HostBindings(rf, ctx) { if (rf & 1) {
3326
- i0.ɵɵlistener("keydown", function TestSuiteFormComponentExtended_keydown_HostBindingHandler($event) { return ctx.handleKeyboardShortcut($event); }, false, i0.ɵɵresolveDocument);
3327
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 54, vars: 35, consts: [["chartContainer", ""], ["kendoDialogContainer", "", 1, "test-suite-form"], [1, "suite-header"], [1, "header-content"], [1, "header-left"], [1, "suite-icon"], [1, "fas", "fa-layer-group"], [1, "suite-info"], [1, "suite-meta"], [1, "status-badge", 3, "ngClass"], [1, "fas", 3, "ngClass"], ["class", "test-count", 4, "ngIf"], [1, "header-actions"], ["kendoButton", "", "title", "Export to CSV", 3, "click"], [1, "fas", "fa-file-excel"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "fas", "fa-play"], ["kendoButton", "", 3, "click", "disabled"], ["class", "suite-description", 4, "ngIf"], [1, "tabs-container"], ["role", "tablist", 1, "tabs"], ["role", "tab", 1, "tab", 3, "click"], [1, "fas", "fa-th-large"], [1, "fas", "fa-flask"], ["class", "tab-badge", 4, "ngIf"], [1, "fas", "fa-history"], [1, "fas", "fa-chart-line"], [1, "fas", "fa-balance-scale"], [1, "tab-content"], ["class", "overview-tab", 4, "ngIf"], ["class", "tests-tab", 4, "ngIf"], ["class", "runs-tab", 4, "ngIf"], ["class", "analytics-tab", 4, "ngIf"], ["class", "compare-tab", 4, "ngIf"], [1, "shortcuts-toggle", 3, "click", "title"], [1, "fas", "fa-keyboard"], ["class", "keyboard-shortcuts", 4, "ngIf"], [1, "test-count"], [1, "suite-description"], [1, "tab-badge"], [1, "overview-tab"], [1, "info-section"], [1, "fas", "fa-info-circle"], [1, "info-grid"], [1, "info-item"], [1, "info-label"], [1, "info-value"], [1, "status-badge-inline", 3, "ngClass"], [1, "config-section"], [1, "fas", "fa-cogs"], [1, "config-grid"], [1, "config-item"], ["type", "number", "placeholder", "Default: 300000 (5 min)", 1, "config-input", 3, "ngModelChange", "ngModel"], [1, "config-hint"], [1, "tests-tab"], ["class", "loading-state", 4, "ngIf"], ["class", "tests-list", 4, "ngIf"], ["class", "empty-state", 4, "ngIf"], [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, "tests-list"], ["class", "test-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "test-item", 3, "click"], [1, "test-sequence"], [1, "test-icon"], [1, "test-content"], [1, "test-name"], [1, "test-status"], [4, "ngIf"], [1, "fas", "fa-chevron-right"], [1, "empty-state"], [1, "empty-icon"], [1, "runs-tab"], ["class", "runs-list", 4, "ngIf"], [1, "runs-list"], ["class", "run-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "run-item", 3, "click"], [1, "run-icon"], [1, "fas"], [1, "run-content"], [1, "run-header"], [1, "run-id"], [1, "run-status"], [1, "run-meta"], [1, "fas", "fa-calendar"], [1, "run-eval-metrics"], ["class", "eval-metric status", 3, "class", 4, "ngIf"], ["class", "eval-metric human", "title", "Human evaluation", 4, "ngIf"], ["class", "eval-metric auto", "title", "Auto score (pass rate)", 3, "high", "medium", "low", 4, "ngIf"], ["class", "run-tags", 4, "ngIf"], [1, "fas", "fa-check-circle"], [1, "eval-metric", "status"], ["title", "Human evaluation", 1, "eval-metric", "human"], [1, "fas", "fa-user"], [1, "eval-pending"], [1, "fas", "fa-clock"], ["title", "Auto score (pass rate)", 1, "eval-metric", "auto"], [1, "fas", "fa-robot"], [1, "run-tags"], ["class", "tag-chip", 4, "ngFor", "ngForOf"], [1, "tag-chip"], [1, "fas", "fa-play-circle"], [1, "analytics-tab"], ["text", "Loading analytics data..."], [1, "analytics-subnav"], [1, "subnav-tabs"], [1, "subnav-tab", 3, "click"], [1, "fas", "fa-chart-bar"], [1, "fas", "fa-th"], [1, "fas", "fa-project-diagram"], [1, "analytics-filters"], [1, "filters-header", 3, "click"], [1, "filters-title"], [1, "fas", "fa-filter"], ["class", "filter-summary", 4, "ngIf"], ["class", "filters-content", 4, "ngIf"], [1, "filter-summary"], [1, "filters-content"], [1, "filter-group"], [1, "filter-buttons"], [1, "filter-btn", 3, "click"], ["class", "filter-group", 4, "ngIf"], ["class", "filter-hint", 4, "ngIf"], [1, "filter-buttons", "tag-filters"], [1, "filter-btn", "tag-btn", "all-tags-btn", 3, "click"], ["class", "filter-btn tag-btn", 3, "active", "click", 4, "ngFor", "ngForOf"], [1, "filter-hint"], [1, "filter-btn", "tag-btn", 3, "click"], ["class", "fas fa-check", 4, "ngIf"], [1, "fas", "fa-check"], [1, "analytics-kpis"], [1, "kpi-card"], [1, "kpi-icon"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-icon", "success"], [1, "kpi-trend", 3, "ngClass"], [1, "kpi-icon", "info"], [1, "kpi-icon", "warning"], [1, "fas", "fa-dollar-sign"], [1, "analytics-table-section"], [1, "fas", "fa-table"], [1, "analytics-table-wrapper"], [1, "analytics-table"], ["class", "clickable-row", 3, "click", 4, "ngFor", "ngForOf"], ["class", "empty-state small", 4, "ngIf"], [1, "clickable-row", 3, "click"], [1, "status-chip", 3, "ngClass"], [1, "pass-rate-cell"], [1, "pass-rate-bar", 3, "ngClass"], [1, "tag-cell"], ["class", "tag-chip-table", 4, "ngFor", "ngForOf"], ["class", "tag-more", 4, "ngIf"], [1, "tag-chip-table"], [1, "tag-more"], [1, "empty-state", "small"], ["class", "matrix-section", 4, "ngIf"], ["text", "Loading test matrix..."], [1, "matrix-section"], [1, "matrix-header"], [1, "matrix-header-right"], [1, "matrix-filter-input"], [1, "fas", "fa-search"], ["type", "text", "placeholder", "Filter tests...", 1, "filter-input", 3, "input", "value"], ["class", "clear-filter-btn", "title", "Clear filter", 3, "click", 4, "ngIf"], [1, "matrix-run-count"], ["kendoButton", "", "title", "Export matrix to CSV", 3, "click", "disabled"], [1, "fas", "fa-download"], [1, "matrix-scroll-container"], [1, "test-matrix"], ["title", "Sort by sequence", 1, "seq-header", 3, "click"], ["title", "Sort by name", 1, "test-name-header", 3, "click"], ["class", "run-header", 3, "title", "click", 4, "ngFor", "ngForOf"], [1, "spacer-header"], [3, "row-selected", "click", 4, "ngFor", "ngForOf"], [1, "totals-row"], [1, "seq-cell", "totals-label"], [1, "test-name-cell", "totals-label"], ["class", "result-cell totals-cell", 4, "ngFor", "ngForOf"], [1, "spacer-cell"], ["title", "Clear filter", 1, "clear-filter-btn", 3, "click"], [1, "fas", "fa-times"], [1, "run-header", 3, "click", "title"], [1, "run-header-content"], ["class", "run-tags-header", 4, "ngIf"], [1, "run-date"], [1, "run-pass-rate", 3, "ngClass"], [1, "run-tags-header"], ["class", "tag-chip-header", 4, "ngFor", "ngForOf"], ["class", "tag-more-header", 4, "ngIf"], [1, "tag-chip-header"], [1, "tag-more-header"], [3, "click"], [1, "seq-cell"], [1, "test-name-cell"], [1, "test-name", 3, "title"], ["class", "result-cell", 3, "ngClass", "clickable", "cell-not-run", "title", "click", 4, "ngFor", "ngForOf"], [1, "result-cell", 3, "click", "ngClass", "title"], ["class", "cell-not-run-indicator", 4, "ngIf"], [1, "cell-eval-stack"], ["class", "cell-status", 3, "ngClass", "cell-skipped-status", "title", 4, "ngIf"], ["class", "cell-human no-feedback", "title", "Human Review: No rating submitted yet", 4, "ngIf"], ["class", "cell-human has-feedback", 3, "rating-low", "rating-medium", "rating-good", "rating-excellent", "title", 4, "ngIf"], ["class", "cell-auto has-score", 3, "score-low", "score-medium", "score-good", "score-excellent", "title", 4, "ngIf"], ["class", "cell-auto no-score", "title", "Auto Score: No automated score available", 4, "ngIf"], [1, "cell-status", 3, "ngClass", "title"], ["title", "Human Review: No rating submitted yet", 1, "cell-human", "no-feedback"], [1, "fas", "fa-user-slash"], [1, "cell-human", "has-feedback", 3, "title"], [1, "rating-value"], [1, "cell-auto", "has-score", 3, "title"], [1, "score-value"], ["title", "Auto Score: No automated score available", 1, "cell-auto", "no-score"], [1, "cell-not-run-indicator"], [1, "fas", "fa-minus"], [1, "result-cell", "totals-cell"], [1, "cell-eval-stack", "totals-stack"], ["class", "totals-status", 4, "ngIf"], ["class", "totals-human", 4, "ngIf"], ["class", "totals-auto", 4, "ngIf"], [1, "totals-status"], [1, "pass-count"], [1, "totals-human"], ["class", "avg-label", 4, "ngIf"], [1, "count-label"], [1, "avg-label"], [1, "totals-auto"], ["class", "chart-section", 4, "ngIf"], ["text", "Loading chart data..."], [1, "chart-section"], [1, "chart-header"], [1, "chart-legend"], [1, "legend-item", "chart-passed"], [1, "legend-item", "chart-failed"], [1, "legend-item", "chart-error"], [1, "fas", "fa-exclamation"], [1, "legend-item", "chart-skipped"], [1, "fas", "fa-forward"], [1, "chart-container"], [1, "d3-chart"], [1, "chart-info"], [1, "compare-tab"], [1, "compare-selection"], [1, "compare-run-selector"], ["class", "run-selector-list", 4, "ngIf"], ["class", "selected-run-preview", 4, "ngIf"], [1, "compare-vs"], [1, "fas", "fa-exchange-alt"], ["class", "compare-results", 4, "ngIf"], ["class", "compare-empty", 4, "ngIf"], [1, "run-selector-list"], ["class", "run-selector-item", 3, "selected", "click", 4, "ngFor", "ngForOf"], [1, "run-selector-item", 3, "click"], [1, "selector-status"], [1, "selector-content"], [1, "selector-date"], [1, "selector-rate"], ["class", "selector-tags", 4, "ngIf"], [1, "selector-tags"], ["class", "tag-mini", 4, "ngFor", "ngForOf"], [1, "tag-mini"], [1, "selected-run-preview"], [1, "preview-header"], [1, "preview-label"], [1, "clear-btn", 3, "click"], [1, "preview-details"], [1, "preview-rate"], ["class", "run-selector-item", 3, "selected", "disabled", "click", 4, "ngFor", "ngForOf"], [1, "compare-results"], [1, "compare-summary"], [1, "compare-summary-card"], [1, "summary-label"], [1, "summary-value", 3, "ngClass"], [1, "compare-summary-card", "improved"], [1, "summary-value"], [1, "compare-summary-card", "regressed"], [1, "compare-table-section"], [1, "fas", "fa-list"], [1, "compare-table-wrapper"], [1, "compare-table"], [3, "ngClass", 4, "ngFor", "ngForOf"], [3, "ngClass"], ["class", "status-chip", 3, "ngClass", 4, "ngIf"], ["class", "status-chip status-missing", 4, "ngIf"], [3, "ngClass", 4, "ngIf"], ["class", "muted", 4, "ngIf"], ["class", "change-indicator improved", 4, "ngIf"], ["class", "change-indicator regressed", 4, "ngIf"], ["class", "change-indicator unchanged", 4, "ngIf"], [1, "status-chip", "status-missing"], [1, "muted"], [1, "change-indicator", "improved"], [1, "fas", "fa-arrow-up"], [1, "change-indicator", "regressed"], [1, "fas", "fa-arrow-down"], [1, "change-indicator", "unchanged"], ["text", "Loading comparison data..."], [1, "compare-empty"], [1, "compare-empty-icon"], [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 TestSuiteFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
3328
- i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "div", 3)(3, "div", 4)(4, "div", 5);
3329
- i0.ɵɵelement(5, "i", 6);
3357
+ i0.ɵɵlistener("keydown", function TestSuiteFormComponentExtended_keydown_HostBindingHandler($event) { return ctx.handleKeyboardShortcut($event); }, i0.ɵɵresolveDocument);
3358
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 66, vars: 36, consts: [["chartContainer", ""], ["kendoDialogContainer", "", 1, "test-suite-form"], [1, "suite-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, "fas", "fa-layer-group"], [1, "header-content"], [1, "header-left"], [1, "suite-icon"], [1, "suite-info"], [1, "suite-meta"], [1, "status-badge", 3, "ngClass"], [1, "fas", 3, "ngClass"], [1, "test-count"], [1, "header-actions"], ["kendoButton", "", "title", "Export to CSV", 3, "click"], [1, "fas", "fa-file-excel"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "fas", "fa-play"], ["kendoButton", "", 3, "click", "disabled"], [1, "suite-description"], [1, "tabs-container"], ["role", "tablist", 1, "tabs"], ["role", "tab", 1, "tab", 3, "click"], [1, "fas", "fa-th-large"], [1, "fas", "fa-flask"], [1, "tab-badge"], [1, "fas", "fa-history"], [1, "fas", "fa-chart-line"], [1, "fas", "fa-balance-scale"], [1, "tab-content"], [1, "overview-tab"], [1, "tests-tab"], [1, "runs-tab"], [1, "analytics-tab"], [1, "compare-tab"], [1, "shortcuts-toggle", 3, "click", "title"], [1, "fas", "fa-keyboard"], [1, "keyboard-shortcuts"], [1, "info-section"], [1, "fas", "fa-info-circle"], [1, "info-grid"], [1, "info-item"], [1, "info-label"], [1, "info-value"], [1, "status-badge-inline", 3, "ngClass"], [1, "config-section"], [1, "fas", "fa-cogs"], [1, "config-grid"], [1, "config-item"], ["type", "number", "placeholder", "Default: 300000 (5 min)", 1, "config-input", 3, "ngModelChange", "ngModel"], [1, "config-hint"], [1, "loading-state"], [1, "tests-list"], [1, "empty-state"], [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-item"], [1, "test-item", 3, "click"], [1, "test-sequence"], [1, "test-icon"], [1, "test-content"], [1, "test-name"], [1, "test-status"], [1, "fas", "fa-chevron-right"], [1, "empty-icon"], [1, "runs-list"], [1, "run-item"], [1, "run-item", 3, "click"], [1, "run-icon"], [1, "fas"], [1, "run-content"], [1, "run-header"], [1, "run-id"], [1, "run-status"], [1, "run-meta"], [1, "fas", "fa-calendar"], [1, "run-eval-metrics"], [1, "eval-metric", "status", 3, "class"], ["title", "Human evaluation", 1, "eval-metric", "human"], ["title", "Auto score (pass rate)", 1, "eval-metric", "auto", 3, "high", "medium", "low"], [1, "run-tags"], [1, "fas", "fa-check-circle"], [1, "eval-metric", "status"], [1, "fas", "fa-user"], [1, "eval-pending"], [1, "fas", "fa-clock"], ["title", "Auto score (pass rate)", 1, "eval-metric", "auto"], [1, "fas", "fa-robot"], [1, "tag-chip"], [1, "fas", "fa-play-circle"], ["text", "Loading analytics data..."], [1, "analytics-subnav"], [1, "subnav-tabs"], [1, "subnav-tab", 3, "click"], [1, "fas", "fa-chart-bar"], [1, "fas", "fa-th"], [1, "fas", "fa-project-diagram"], [1, "analytics-filters"], [1, "filters-header", 3, "click"], [1, "filters-title"], [1, "fas", "fa-filter"], [1, "filter-summary"], [1, "filters-content"], [1, "filter-group"], [1, "filter-buttons"], [1, "filter-btn", 3, "click"], [1, "filter-hint"], [1, "filter-buttons", "tag-filters"], [1, "filter-btn", "tag-btn", "all-tags-btn", 3, "click"], [1, "filter-btn", "tag-btn", 3, "active"], [1, "filter-btn", "tag-btn", 3, "click"], [1, "fas", "fa-check"], [1, "analytics-kpis"], [1, "kpi-card"], [1, "kpi-icon"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-icon", "success"], [1, "kpi-trend", 3, "ngClass"], [1, "kpi-icon", "info"], [1, "kpi-icon", "warning"], [1, "fas", "fa-dollar-sign"], [1, "analytics-table-section"], [1, "fas", "fa-table"], [1, "analytics-table-wrapper"], [1, "analytics-table"], [1, "clickable-row"], [1, "empty-state", "small"], [1, "clickable-row", 3, "click"], [1, "status-chip", 3, "ngClass"], [1, "pass-rate-cell"], [1, "pass-rate-bar", 3, "ngClass"], [1, "tag-cell"], [1, "tag-chip-table"], [1, "tag-more"], [1, "matrix-section"], ["text", "Loading test matrix..."], [1, "matrix-header"], [1, "matrix-header-right"], [1, "matrix-filter-input"], [1, "fas", "fa-search"], ["type", "text", "placeholder", "Filter tests...", 1, "filter-input", 3, "input", "value"], ["title", "Clear filter", 1, "clear-filter-btn"], [1, "matrix-run-count"], ["kendoButton", "", "title", "Export matrix to CSV", 3, "click", "disabled"], [1, "fas", "fa-download"], [1, "matrix-scroll-container"], [1, "test-matrix"], ["title", "Sort by sequence", 1, "seq-header", 3, "click"], ["title", "Sort by name", 1, "test-name-header", 3, "click"], [1, "run-header", 3, "title"], [1, "spacer-header"], [3, "row-selected"], [1, "totals-row"], [1, "seq-cell", "totals-label"], [1, "test-name-cell", "totals-label"], [1, "result-cell", "totals-cell"], [1, "spacer-cell"], ["title", "Clear filter", 1, "clear-filter-btn", 3, "click"], [1, "fas", "fa-times"], [1, "run-header", 3, "click", "title"], [1, "run-header-content"], [1, "run-tags-header"], [1, "run-date"], [1, "run-pass-rate", 3, "ngClass"], [1, "tag-chip-header"], [1, "tag-more-header"], [3, "click"], [1, "seq-cell"], [1, "test-name-cell"], [1, "test-name", 3, "title"], [1, "result-cell", 3, "ngClass", "clickable", "cell-not-run", "title"], [1, "result-cell", 3, "click", "ngClass", "title"], [1, "cell-eval-stack"], [1, "cell-not-run-indicator"], [1, "cell-status", 3, "ngClass", "cell-skipped-status", "title"], ["title", "Human Review: No rating submitted yet", 1, "cell-human", "no-feedback"], [1, "cell-human", "has-feedback", 3, "rating-low", "rating-medium", "rating-good", "rating-excellent", "title"], [1, "cell-auto", "has-score", 3, "score-low", "score-medium", "score-good", "score-excellent", "title"], ["title", "Auto Score: No automated score available", 1, "cell-auto", "no-score"], [1, "cell-status", 3, "ngClass", "title"], [1, "fas", "fa-user-slash"], [1, "cell-human", "has-feedback", 3, "title"], [1, "rating-value"], [1, "cell-auto", "has-score", 3, "title"], [1, "score-value"], [1, "fas", "fa-minus"], [1, "cell-eval-stack", "totals-stack"], [1, "totals-status"], [1, "totals-human"], [1, "totals-auto"], [1, "pass-count"], [1, "avg-label"], [1, "count-label"], [1, "chart-section"], ["text", "Loading chart data..."], [1, "chart-header"], [1, "chart-legend"], [1, "legend-item", "chart-passed"], [1, "legend-item", "chart-failed"], [1, "legend-item", "chart-error"], [1, "fas", "fa-exclamation"], [1, "legend-item", "chart-skipped"], [1, "fas", "fa-forward"], [1, "chart-container"], [1, "d3-chart"], [1, "chart-info"], [1, "compare-selection"], [1, "compare-run-selector"], [1, "run-selector-list"], [1, "selected-run-preview"], [1, "compare-vs"], [1, "fas", "fa-exchange-alt"], [1, "compare-results"], [1, "compare-empty"], [1, "run-selector-item", 3, "selected"], [1, "run-selector-item", 3, "click"], [1, "selector-status"], [1, "selector-content"], [1, "selector-date"], [1, "selector-rate"], [1, "selector-tags"], [1, "tag-mini"], [1, "preview-header"], [1, "preview-label"], [1, "clear-btn", 3, "click"], [1, "preview-details"], [1, "preview-rate"], [1, "run-selector-item", 3, "selected", "disabled"], [1, "compare-summary"], [1, "compare-summary-card"], [1, "summary-label"], [1, "summary-value", 3, "ngClass"], [1, "compare-summary-card", "improved"], [1, "summary-value"], [1, "compare-summary-card", "regressed"], [1, "compare-table-section"], [1, "fas", "fa-list"], [1, "compare-table-wrapper"], [1, "compare-table"], [3, "ngClass"], [1, "status-chip", "status-missing"], [1, "muted"], [1, "change-indicator", "improved"], [1, "change-indicator", "regressed"], [1, "change-indicator", "unchanged"], [1, "fas", "fa-arrow-up"], [1, "fas", "fa-arrow-down"], ["text", "Loading comparison data..."], [1, "compare-empty-icon"], [1, "shortcuts-header"], ["title", "Hide shortcuts", 1, "shortcuts-close", 3, "click"], [1, "shortcut-list"], [1, "shortcut-item"], [1, "shortcut-keys"]], template: function TestSuiteFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
3359
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "nav", 3)(3, "ol")(4, "li")(5, "a", 4);
3360
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_a_click_5_listener() { return ctx.navigateToTestingDashboard(); });
3361
+ i0.ɵɵelement(6, "i", 5);
3362
+ i0.ɵɵelementStart(7, "span", 6);
3363
+ i0.ɵɵtext(8, "Testing");
3364
+ i0.ɵɵelementEnd()()();
3365
+ i0.ɵɵelementStart(9, "li", 7);
3366
+ i0.ɵɵelement(10, "i", 8)(11, "i", 9);
3367
+ i0.ɵɵelementStart(12, "span");
3368
+ i0.ɵɵtext(13);
3369
+ i0.ɵɵelementEnd()()()();
3370
+ i0.ɵɵelementStart(14, "div", 10)(15, "div", 11)(16, "div", 12);
3371
+ i0.ɵɵelement(17, "i", 9);
3330
3372
  i0.ɵɵelementEnd();
3331
- i0.ɵɵelementStart(6, "div", 7)(7, "h1");
3332
- i0.ɵɵtext(8);
3373
+ i0.ɵɵelementStart(18, "div", 13)(19, "h1");
3374
+ i0.ɵɵtext(20);
3333
3375
  i0.ɵɵelementEnd();
3334
- i0.ɵɵelementStart(9, "div", 8)(10, "span", 9);
3335
- i0.ɵɵelement(11, "i", 10);
3336
- i0.ɵɵtext(12);
3376
+ i0.ɵɵelementStart(21, "div", 14)(22, "span", 15);
3377
+ i0.ɵɵelement(23, "i", 16);
3378
+ i0.ɵɵtext(24);
3337
3379
  i0.ɵɵelementEnd();
3338
- i0.ɵɵtemplate(13, TestSuiteFormComponentExtended_span_13_Template, 3, 1, "span", 11);
3380
+ i0.ɵɵconditionalCreate(25, TestSuiteFormComponentExtended_Conditional_25_Template, 3, 1, "span", 17);
3339
3381
  i0.ɵɵelementEnd()()();
3340
- i0.ɵɵelementStart(14, "div", 12);
3341
- i0.ɵɵelement(15, "app-evaluation-mode-toggle");
3342
- i0.ɵɵelementStart(16, "button", 13);
3343
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_16_listener() { return ctx.exportToExcel(); });
3344
- i0.ɵɵelement(17, "i", 14);
3345
- i0.ɵɵtext(18, " Export ");
3382
+ i0.ɵɵelementStart(26, "div", 18);
3383
+ i0.ɵɵelement(27, "app-evaluation-mode-toggle");
3384
+ i0.ɵɵelementStart(28, "button", 19);
3385
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_28_listener() { return ctx.exportToExcel(); });
3386
+ i0.ɵɵelement(29, "i", 20);
3387
+ i0.ɵɵtext(30, " Export ");
3346
3388
  i0.ɵɵelementEnd();
3347
- i0.ɵɵelementStart(19, "button", 15);
3348
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_19_listener() { return ctx.runSuite(); });
3349
- i0.ɵɵelement(20, "i", 16);
3350
- i0.ɵɵtext(21, " Run Suite ");
3389
+ i0.ɵɵelementStart(31, "button", 21);
3390
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_31_listener() { return ctx.runSuite(); });
3391
+ i0.ɵɵelement(32, "i", 22);
3392
+ i0.ɵɵtext(33, " Run Suite ");
3351
3393
  i0.ɵɵelementEnd();
3352
- i0.ɵɵelementStart(22, "button", 17);
3353
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_22_listener() { return ctx.refresh(); });
3354
- i0.ɵɵelement(23, "i", 10);
3355
- i0.ɵɵtext(24);
3394
+ i0.ɵɵelementStart(34, "button", 23);
3395
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_34_listener() { return ctx.refresh(); });
3396
+ i0.ɵɵelement(35, "i", 16);
3397
+ i0.ɵɵtext(36);
3356
3398
  i0.ɵɵelementEnd()()();
3357
- i0.ɵɵtemplate(25, TestSuiteFormComponentExtended_div_25_Template, 3, 1, "div", 18);
3399
+ i0.ɵɵconditionalCreate(37, TestSuiteFormComponentExtended_Conditional_37_Template, 3, 1, "div", 24);
3358
3400
  i0.ɵɵelementEnd();
3359
- i0.ɵɵelementStart(26, "div", 19)(27, "div", 20)(28, "button", 21);
3360
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_28_listener() { return ctx.changeTab("overview"); });
3361
- i0.ɵɵelement(29, "i", 22);
3362
- i0.ɵɵtext(30, " Overview ");
3401
+ i0.ɵɵelementStart(38, "div", 25)(39, "div", 26)(40, "button", 27);
3402
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_40_listener() { return ctx.changeTab("overview"); });
3403
+ i0.ɵɵelement(41, "i", 28);
3404
+ i0.ɵɵtext(42, " Overview ");
3363
3405
  i0.ɵɵelementEnd();
3364
- i0.ɵɵelementStart(31, "button", 21);
3365
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_31_listener() { return ctx.changeTab("tests"); });
3366
- i0.ɵɵelement(32, "i", 23);
3367
- i0.ɵɵtext(33, " Tests ");
3368
- i0.ɵɵtemplate(34, TestSuiteFormComponentExtended_span_34_Template, 2, 1, "span", 24);
3406
+ i0.ɵɵelementStart(43, "button", 27);
3407
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_43_listener() { return ctx.changeTab("tests"); });
3408
+ i0.ɵɵelement(44, "i", 29);
3409
+ i0.ɵɵtext(45, " Tests ");
3410
+ i0.ɵɵconditionalCreate(46, TestSuiteFormComponentExtended_Conditional_46_Template, 2, 1, "span", 30);
3369
3411
  i0.ɵɵelementEnd();
3370
- i0.ɵɵelementStart(35, "button", 21);
3371
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_35_listener() { return ctx.changeTab("runs"); });
3372
- i0.ɵɵelement(36, "i", 25);
3373
- i0.ɵɵtext(37, " Runs ");
3374
- i0.ɵɵtemplate(38, TestSuiteFormComponentExtended_span_38_Template, 2, 1, "span", 24);
3412
+ i0.ɵɵelementStart(47, "button", 27);
3413
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_47_listener() { return ctx.changeTab("runs"); });
3414
+ i0.ɵɵelement(48, "i", 31);
3415
+ i0.ɵɵtext(49, " Runs ");
3416
+ i0.ɵɵconditionalCreate(50, TestSuiteFormComponentExtended_Conditional_50_Template, 2, 1, "span", 30);
3375
3417
  i0.ɵɵelementEnd();
3376
- i0.ɵɵelementStart(39, "button", 21);
3377
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_39_listener() { return ctx.changeTab("analytics"); });
3378
- i0.ɵɵelement(40, "i", 26);
3379
- i0.ɵɵtext(41, " Analytics ");
3418
+ i0.ɵɵelementStart(51, "button", 27);
3419
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_51_listener() { return ctx.changeTab("analytics"); });
3420
+ i0.ɵɵelement(52, "i", 32);
3421
+ i0.ɵɵtext(53, " Analytics ");
3380
3422
  i0.ɵɵelementEnd();
3381
- i0.ɵɵelementStart(42, "button", 21);
3382
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_42_listener() { return ctx.changeTab("compare"); });
3383
- i0.ɵɵelement(43, "i", 27);
3384
- i0.ɵɵtext(44, " Compare ");
3423
+ i0.ɵɵelementStart(54, "button", 27);
3424
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_54_listener() { return ctx.changeTab("compare"); });
3425
+ i0.ɵɵelement(55, "i", 33);
3426
+ i0.ɵɵtext(56, " Compare ");
3385
3427
  i0.ɵɵelementEnd()()();
3386
- i0.ɵɵelementStart(45, "div", 28);
3387
- i0.ɵɵtemplate(46, TestSuiteFormComponentExtended_div_46_Template, 45, 13, "div", 29)(47, TestSuiteFormComponentExtended_div_47_Template, 4, 3, "div", 30)(48, TestSuiteFormComponentExtended_div_48_Template, 4, 3, "div", 31)(49, TestSuiteFormComponentExtended_div_49_Template, 4, 3, "div", 32)(50, TestSuiteFormComponentExtended_div_50_Template, 18, 8, "div", 33);
3428
+ i0.ɵɵelementStart(57, "div", 34);
3429
+ i0.ɵɵconditionalCreate(58, TestSuiteFormComponentExtended_Conditional_58_Template, 45, 13, "div", 35);
3430
+ i0.ɵɵconditionalCreate(59, TestSuiteFormComponentExtended_Conditional_59_Template, 4, 3, "div", 36);
3431
+ i0.ɵɵconditionalCreate(60, TestSuiteFormComponentExtended_Conditional_60_Template, 4, 3, "div", 37);
3432
+ i0.ɵɵconditionalCreate(61, TestSuiteFormComponentExtended_Conditional_61_Template, 4, 3, "div", 38);
3433
+ i0.ɵɵconditionalCreate(62, TestSuiteFormComponentExtended_Conditional_62_Template, 18, 8, "div", 39);
3388
3434
  i0.ɵɵelementEnd();
3389
- i0.ɵɵelementStart(51, "button", 34);
3390
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_51_listener() { return ctx.toggleShortcuts(); });
3391
- i0.ɵɵelement(52, "i", 35);
3435
+ i0.ɵɵelementStart(63, "button", 40);
3436
+ i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_63_listener() { return ctx.toggleShortcuts(); });
3437
+ i0.ɵɵelement(64, "i", 41);
3392
3438
  i0.ɵɵelementEnd();
3393
- i0.ɵɵtemplate(53, TestSuiteFormComponentExtended_div_53_Template, 32, 0, "div", 36);
3439
+ i0.ɵɵconditionalCreate(65, TestSuiteFormComponentExtended_Conditional_65_Template, 32, 0, "div", 42);
3394
3440
  i0.ɵɵelementEnd();
3395
3441
  } if (rf & 2) {
3396
- i0.ɵɵadvance(4);
3442
+ i0.ɵɵadvance(13);
3443
+ i0.ɵɵtextInterpolate(ctx.record.Name);
3444
+ i0.ɵɵadvance(3);
3397
3445
  i0.ɵɵstyleProp("background-color", ctx.getStatusColor());
3398
3446
  i0.ɵɵadvance(4);
3399
3447
  i0.ɵɵtextInterpolate(ctx.record.Name);
@@ -3404,7 +3452,7 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3404
3452
  i0.ɵɵadvance();
3405
3453
  i0.ɵɵtextInterpolate1(" ", ctx.record.Status, " ");
3406
3454
  i0.ɵɵadvance();
3407
- i0.ɵɵproperty("ngIf", ctx.testsLoaded);
3455
+ i0.ɵɵconditional(ctx.testsLoaded ? 25 : -1);
3408
3456
  i0.ɵɵadvance(9);
3409
3457
  i0.ɵɵproperty("disabled", ctx.isRefreshing);
3410
3458
  i0.ɵɵadvance();
@@ -3412,7 +3460,7 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3412
3460
  i0.ɵɵadvance();
3413
3461
  i0.ɵɵtextInterpolate1(" ", ctx.isRefreshing ? "Refreshing..." : "Refresh", " ");
3414
3462
  i0.ɵɵadvance();
3415
- i0.ɵɵproperty("ngIf", ctx.record.Description);
3463
+ i0.ɵɵconditional(ctx.record.Description ? 37 : -1);
3416
3464
  i0.ɵɵadvance(3);
3417
3465
  i0.ɵɵclassProp("active", ctx.activeTab === "overview");
3418
3466
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "overview");
@@ -3420,12 +3468,12 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3420
3468
  i0.ɵɵclassProp("active", ctx.activeTab === "tests");
3421
3469
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "tests");
3422
3470
  i0.ɵɵadvance(3);
3423
- i0.ɵɵproperty("ngIf", ctx.testsLoaded);
3471
+ i0.ɵɵconditional(ctx.testsLoaded ? 46 : -1);
3424
3472
  i0.ɵɵadvance();
3425
3473
  i0.ɵɵclassProp("active", ctx.activeTab === "runs");
3426
3474
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "runs");
3427
3475
  i0.ɵɵadvance(3);
3428
- i0.ɵɵproperty("ngIf", ctx.runsLoaded);
3476
+ i0.ɵɵconditional(ctx.runsLoaded ? 50 : -1);
3429
3477
  i0.ɵɵadvance();
3430
3478
  i0.ɵɵclassProp("active", ctx.activeTab === "analytics");
3431
3479
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "analytics");
@@ -3433,20 +3481,20 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3433
3481
  i0.ɵɵclassProp("active", ctx.activeTab === "compare");
3434
3482
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "compare");
3435
3483
  i0.ɵɵadvance(4);
3436
- i0.ɵɵproperty("ngIf", ctx.activeTab === "overview");
3484
+ i0.ɵɵconditional(ctx.activeTab === "overview" ? 58 : -1);
3437
3485
  i0.ɵɵadvance();
3438
- i0.ɵɵproperty("ngIf", ctx.activeTab === "tests");
3486
+ i0.ɵɵconditional(ctx.activeTab === "tests" ? 59 : -1);
3439
3487
  i0.ɵɵadvance();
3440
- i0.ɵɵproperty("ngIf", ctx.activeTab === "runs");
3488
+ i0.ɵɵconditional(ctx.activeTab === "runs" ? 60 : -1);
3441
3489
  i0.ɵɵadvance();
3442
- i0.ɵɵproperty("ngIf", ctx.activeTab === "analytics");
3490
+ i0.ɵɵconditional(ctx.activeTab === "analytics" ? 61 : -1);
3443
3491
  i0.ɵɵadvance();
3444
- i0.ɵɵproperty("ngIf", ctx.activeTab === "compare");
3492
+ i0.ɵɵconditional(ctx.activeTab === "compare" ? 62 : -1);
3445
3493
  i0.ɵɵadvance();
3446
3494
  i0.ɵɵproperty("title", ctx.showShortcuts ? "Hide keyboard shortcuts" : "Show keyboard shortcuts");
3447
3495
  i0.ɵɵadvance(2);
3448
- i0.ɵɵproperty("ngIf", ctx.showShortcuts);
3449
- } }, dependencies: [i4.NgClass, i4.NgForOf, i4.NgIf, i5.DefaultValueAccessor, i5.NumberValueAccessor, i5.NgControlStatus, i5.NgModel, i6.DialogContainerDirective, i7.ButtonComponent, i3.EvaluationModeToggleComponent, i8.LoadingComponent, i4.DatePipe], styles: ["\n\n\n\n\n\n\n[_nghost-%COMP%] {\n --test-primary: #2563eb;\n --test-primary-light: #3b82f6;\n --test-success: #10b981;\n --test-error: #ef4444;\n --test-warning: #f59e0b;\n --test-disabled: #6b7280;\n --test-bg: #f8fafc;\n --test-surface: #ffffff;\n --test-border: #e2e8f0;\n --test-text: #1e293b;\n --test-text-secondary: #64748b;\n --test-text-muted: #94a3b8;\n --test-radius-sm: 6px;\n --test-radius-md: 10px;\n --test-radius-lg: 16px;\n --test-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --test-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --test-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n --test-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n display: block;\n height: 100%;\n}\n\n.test-suite-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--test-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n\n\n.suite-header[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n padding: 20px;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n gap: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.suite-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: var(--test-radius-md);\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(--test-shadow-md);\n transition: var(--test-transition);\n}\n\n.suite-icon[_ngcontent-%COMP%]:hover { transform: scale(1.05); }\n\n.suite-info[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n\n.suite-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: clamp(18px, 4vw, 24px);\n font-weight: 700;\n color: var(--test-text);\n word-wrap: break-word;\n}\n\n.suite-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\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 14px;\n border-radius: 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%); }\n.status-badge.status-disabled[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-disabled) 0%, #4b5563 100%); }\n.status-badge.status-pending[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-warning) 0%, #d97706 100%); }\n\n.status-badge-inline[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 10px;\n border-radius: 10px;\n color: white;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-badge-inline.status-active[_ngcontent-%COMP%] { background: var(--test-success); }\n.status-badge-inline.status-disabled[_ngcontent-%COMP%] { background: var(--test-disabled); }\n.status-badge-inline.status-pending[_ngcontent-%COMP%] { background: var(--test-warning); }\n\n.test-count[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 14px;\n color: var(--test-text-secondary);\n padding: 4px 10px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.suite-description[_ngcontent-%COMP%] {\n padding: 16px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.suite-description[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--test-text-secondary);\n line-height: 1.6;\n font-size: 14px;\n}\n\n\n\n.tabs-container[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n scrollbar-width: none;\n}\n\n.tabs[_ngcontent-%COMP%]::-webkit-scrollbar { display: none; }\n\n.tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 18px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--test-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n white-space: nowrap;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--test-primary);\n border-bottom-color: var(--test-primary);\n font-weight: 600;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n background: var(--test-border);\n color: var(--test-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: rgba(37, 99, 235, 0.15);\n color: var(--test-primary);\n}\n\n.tab-shortcut[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\n}\n\n\n\n.tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n\n\n.overview-tab[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.info-section[_ngcontent-%COMP%], .config-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.info-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .config-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.info-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .config-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.info-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.info-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.info-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--test-text);\n font-weight: 500;\n}\n\n.config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.config-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.config-input[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.config-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--test-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.config-hint[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--test-text-muted);\n}\n\n\n\n.tests-tab[_ngcontent-%COMP%], .runs-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.loading-state[_ngcontent-%COMP%] { padding: 0; }\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: 14px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.skeleton-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n}\n\n.skeleton-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: var(--test-radius-md);\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\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 border-radius: 4px;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n}\n\n.skeleton-line.wide[_ngcontent-%COMP%] { width: 70%; }\n.skeleton-line.narrow[_ngcontent-%COMP%] { width: 40%; }\n\n@keyframes _ngcontent-%COMP%_shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n.tests-list[_ngcontent-%COMP%], .runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.test-item[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.test-item[_ngcontent-%COMP%]:hover, .run-item[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n}\n\n.test-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n font-size: 14px;\n font-weight: 700;\n color: var(--test-text-secondary);\n flex-shrink: 0;\n}\n\n.test-icon[_ngcontent-%COMP%], .run-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-sm);\n}\n\n.test-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--test-primary) 0%, #1d4ed8 100%);\n}\n\n.test-content[_ngcontent-%COMP%], .run-content[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n\n.test-name[_ngcontent-%COMP%], .run-header[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 4px;\n}\n\n.run-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] { font-weight: 600; }\n\n.run-status[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.test-status[_ngcontent-%COMP%], .run-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--test-text-secondary);\n}\n\n.test-status[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .run-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.test-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.test-item[_ngcontent-%COMP%]:hover > i[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%]:hover > i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n transform: translateX(2px);\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 24px;\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\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(--test-bg);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--test-text-muted);\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(--test-text);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 300px;\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(--test-surface);\n border: 1px solid var(--test-border);\n box-shadow: var(--test-shadow-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--test-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--test-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle[_ngcontent-%COMP%]:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--test-primary);\n border-color: var(--test-primary);\n}\n\n.keyboard-shortcuts[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 12px 16px;\n box-shadow: var(--test-shadow-lg);\n font-size: 12px;\n z-index: 100;\n max-width: 260px;\n}\n\n.shortcuts-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text);\n}\n\n.shortcuts-close[_ngcontent-%COMP%] {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--test-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--test-transition);\n}\n\n.shortcuts-close[_ngcontent-%COMP%]:hover {\n color: var(--test-text);\n background: var(--test-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 color: var(--test-text-secondary);\n}\n\n.shortcut-keys[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.shortcut-keys[_ngcontent-%COMP%] kbd[_ngcontent-%COMP%] {\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: 4px;\n padding: 2px 6px;\n font-size: 11px;\n color: var(--test-text);\n}\n\n\n\n@media (max-width: 1024px) {\n .keyboard-shortcuts[_ngcontent-%COMP%], .shortcuts-toggle[_ngcontent-%COMP%] { display: none; }\n}\n\n@media (max-width: 768px) {\n .suite-header[_ngcontent-%COMP%] { padding: 16px; }\n\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] { flex: 1; }\n\n .tab-shortcut[_ngcontent-%COMP%] { display: none; }\n\n .info-grid[_ngcontent-%COMP%] { grid-template-columns: 1fr; }\n\n .test-item[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] { padding: 14px; }\n}\n\n@media (max-width: 480px) {\n .suite-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n\n .suite-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] { font-size: 16px; }\n\n .tab-badge[_ngcontent-%COMP%] { display: none; }\n\n .test-sequence[_ngcontent-%COMP%] { display: none; }\n}\n\n@media (hover: none) and (pointer: coarse) {\n .test-item[_ngcontent-%COMP%]:active, .run-item[_ngcontent-%COMP%]:active {\n background: rgba(37, 99, 235, 0.1);\n transform: scale(0.98);\n }\n\n .tab[_ngcontent-%COMP%] { min-height: 48px; }\n .test-item[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] { min-height: 64px; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *[_ngcontent-%COMP%], *[_ngcontent-%COMP%]::before, *[_ngcontent-%COMP%]::after {\n animation-duration: 0.01ms !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n@media print {\n .header-actions[_ngcontent-%COMP%], .tabs-container[_ngcontent-%COMP%], .keyboard-shortcuts[_ngcontent-%COMP%] {\n display: none !important;\n }\n}\n\n\n\n\n\n.run-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\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.tag-mini[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background: #f1f5f9;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 500;\n color: #64748b;\n}\n\n.tag-more[_ngcontent-%COMP%] {\n font-size: 10px;\n color: #94a3b8;\n font-weight: 500;\n}\n\n\n\n.run-eval-metrics[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n}\n\n.eval-metric[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.eval-metric.status[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.eval-metric.status.status-completed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n}\n\n.eval-metric.status.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.eval-metric.status.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.eval-metric.status.status-pending[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.eval-metric.human[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #f59e0b;\n color: #92400e;\n}\n\n.eval-metric.human[_ngcontent-%COMP%] .eval-pending[_ngcontent-%COMP%] {\n font-size: 9px;\n color: #d97706;\n}\n\n.eval-metric.auto[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n}\n\n.eval-metric.auto.high[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%);\n border: 1px solid #86efac;\n color: #166534;\n}\n\n.eval-metric.auto.medium[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #fcd34d;\n color: #92400e;\n}\n\n.eval-metric.auto.low[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);\n border: 1px solid #fca5a5;\n color: #991b1b;\n}\n\n.tag-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.tag-chip-table[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n\n\n.analytics-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n\n\n.analytics-filters[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-bottom: 16px;\n box-shadow: var(--test-shadow-sm);\n overflow: hidden;\n}\n\n.analytics-filters.collapsed[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.filters-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n\n.filters-header[_ngcontent-%COMP%]:hover {\n background: var(--test-bg);\n}\n\n.filters-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--test-text-secondary);\n}\n\n.filters-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.filter-summary[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--test-text-muted);\n margin-left: 8px;\n}\n\n.filters-header[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 12px;\n}\n\n.filters-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 12px 16px 16px 16px;\n border-top: 1px solid var(--test-border);\n}\n\n.filter-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.filter-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.filter-buttons[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.filter-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n background: var(--test-surface);\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.filter-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--test-primary);\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.filter-btn.active[_ngcontent-%COMP%] {\n background: var(--test-primary);\n border-color: var(--test-primary);\n color: white;\n}\n\n.filter-btn.tag-btn[_ngcontent-%COMP%] {\n padding: 6px 12px;\n font-size: 12px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn.tag-btn[_ngcontent-%COMP%] i.fa-check[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.filter-btn.tag-btn.all-tags-btn[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n.filter-btn.tag-btn.all-tags-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.filter-hint[_ngcontent-%COMP%] {\n font-weight: 400;\n font-size: 10px;\n color: var(--test-primary);\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-filters[_ngcontent-%COMP%] {\n max-height: 120px;\n overflow-y: auto;\n}\n\n\n\n.analytics-kpis[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n transition: var(--test-transition);\n}\n\n.kpi-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #eff6ff;\n border-radius: var(--test-radius-md);\n color: var(--test-primary);\n font-size: 20px;\n}\n\n.kpi-icon.success[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-icon.info[_ngcontent-%COMP%] {\n background: #f0f9ff;\n color: #0ea5e9;\n}\n\n.kpi-icon.warning[_ngcontent-%COMP%] {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.kpi-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n line-height: 1.2;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--test-text-secondary);\n margin-top: 2px;\n}\n\n.kpi-trend[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 600;\n margin-top: 4px;\n padding: 2px 8px;\n border-radius: 10px;\n background: #f1f5f9;\n color: var(--test-text-secondary);\n}\n\n.kpi-trend.trend-up[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-trend.trend-down[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n\n\n.analytics-table-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.analytics-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.analytics-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.analytics-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n margin: 0 -24px;\n padding: 0 24px;\n}\n\n.analytics-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.analytics-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.analytics-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.analytics-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.clickable-row[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.analytics-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.clickable-row[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.status-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-chip.status-completed[_ngcontent-%COMP%] { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-passed[_ngcontent-%COMP%] { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-failed[_ngcontent-%COMP%] { background: #fef2f2; color: var(--test-error); }\n.status-chip.status-error[_ngcontent-%COMP%] { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-running[_ngcontent-%COMP%] { background: #eff6ff; color: var(--test-primary); }\n.status-chip.status-pending[_ngcontent-%COMP%] { background: #f5f3ff; color: #8b5cf6; }\n.status-chip.status-cancelled[_ngcontent-%COMP%] { background: #f1f5f9; color: var(--test-disabled); }\n.status-chip.status-missing[_ngcontent-%COMP%] { background: #f1f5f9; color: var(--test-text-muted); }\n.status-chip.status-timeout[_ngcontent-%COMP%] { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-skipped[_ngcontent-%COMP%] { background: #f1f5f9; color: var(--test-disabled); }\n\n.pass-rate-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 100px;\n}\n\n.pass-rate-bar[_ngcontent-%COMP%] {\n height: 6px;\n border-radius: 3px;\n background: var(--test-success);\n transition: width 0.3s ease;\n max-width: 60px;\n}\n\n.pass-rate-bar.medium[_ngcontent-%COMP%] { background: var(--test-warning); }\n.pass-rate-bar.low[_ngcontent-%COMP%] { background: var(--test-error); }\n\n\n\n.analytics-subnav[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 8px;\n margin-bottom: 20px;\n box-shadow: var(--test-shadow-sm);\n display: inline-flex;\n}\n\n.subnav-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n background: var(--test-bg);\n border-radius: var(--test-radius-md);\n padding: 4px;\n}\n\n.subnav-tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border: none;\n border-radius: var(--test-radius-sm);\n background: transparent;\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.subnav-tab[_ngcontent-%COMP%]:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.subnav-tab.active[_ngcontent-%COMP%] {\n background: var(--test-surface);\n color: var(--test-primary);\n box-shadow: var(--test-shadow-sm);\n}\n\n.subnav-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.matrix-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 16px;\n box-shadow: var(--test-shadow-sm);\n display: flex;\n flex-direction: column;\n max-height: calc(100vh - 280px);\n min-height: 300px;\n}\n\n.matrix-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 12px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--test-border);\n flex-shrink: 0;\n}\n\n.matrix-header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.matrix-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.matrix-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.matrix-run-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--test-text-muted);\n font-weight: 500;\n}\n\n\n\n.matrix-filter-input[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f8fafc;\n border: 1px solid var(--test-border);\n border-radius: 6px;\n padding: 4px 10px;\n min-width: 180px;\n}\n\n.matrix-filter-input[_ngcontent-%COMP%] i.fa-search[_ngcontent-%COMP%] {\n color: #94a3b8;\n font-size: 12px;\n}\n\n.matrix-filter-input[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n outline: none;\n font-size: 12px;\n color: var(--test-text);\n width: 100%;\n}\n\n.matrix-filter-input[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%]::placeholder {\n color: #94a3b8;\n}\n\n.clear-filter-btn[_ngcontent-%COMP%] {\n border: none;\n background: none;\n padding: 2px 4px;\n cursor: pointer;\n color: #94a3b8;\n font-size: 10px;\n border-radius: 3px;\n transition: all 0.15s ease;\n}\n\n.clear-filter-btn[_ngcontent-%COMP%]:hover {\n background: #e2e8f0;\n color: #64748b;\n}\n\n\n\n.matrix-scroll-container[_ngcontent-%COMP%] {\n flex: 1;\n overflow: auto;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n}\n\n.test-matrix[_ngcontent-%COMP%] {\n display: table;\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.test-matrix[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n display: table-header-group;\n}\n\n.test-matrix[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n display: table-row;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] {\n display: table-row-group;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n display: table-row;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background-color: rgba(59, 130, 246, 0.05);\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n border-top: 1px solid rgba(59, 130, 246, 0.3);\n border-bottom: 1px solid rgba(59, 130, 246, 0.3);\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] .seq-cell[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] .test-name-cell[_ngcontent-%COMP%] {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix[_ngcontent-%COMP%] tfoot[_ngcontent-%COMP%] {\n display: table-footer-group;\n}\n\n.test-matrix[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n display: table-cell;\n border: 1px solid var(--test-border);\n padding: 8px 12px;\n text-align: center;\n vertical-align: middle;\n}\n\n.test-matrix[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--test-bg);\n font-weight: 600;\n font-size: 11px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n z-index: 10;\n border-bottom: 3px solid #475569 !important;\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] .seq-cell[_ngcontent-%COMP%] {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n text-align: center;\n position: sticky;\n left: 0;\n font-size: 11px;\n color: #64748b;\n border-right: 1px solid var(--test-border);\n padding: 6px 4px !important;\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%] {\n cursor: pointer;\n font-weight: 600;\n background: var(--test-bg);\n z-index: 12; \n\n top: 0;\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .seq-cell[_ngcontent-%COMP%] {\n background: var(--test-surface);\n z-index: 2;\n}\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n margin-left: 2px;\n opacity: 0.6;\n}\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%]:hover {\n background: #f1f5f9;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-header[_ngcontent-%COMP%] {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-bg);\n z-index: 11;\n border-right: 2px solid var(--test-border);\n cursor: pointer;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n margin-left: 4px;\n opacity: 0.6;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-header[_ngcontent-%COMP%]:hover {\n background: #f1f5f9;\n}\n\n.test-matrix[_ngcontent-%COMP%] .run-header[_ngcontent-%COMP%] {\n min-width: 120px;\n width: 120px;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .spacer-header[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] .spacer-cell[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 20px;\n background: var(--test-bg);\n border: none;\n}\n\n.test-matrix[_ngcontent-%COMP%] .spacer-cell[_ngcontent-%COMP%] {\n background: var(--test-surface);\n}\n\n.test-matrix[_ngcontent-%COMP%] .run-header[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-header-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.run-date[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.run-pass-rate[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n.run-pass-rate.high[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.run-pass-rate.medium[_ngcontent-%COMP%] {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.run-pass-rate.low[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.run-tags[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.tag-tiny[_ngcontent-%COMP%] {\n font-size: 9px;\n padding: 2px 6px;\n background: #eff6ff;\n color: var(--test-primary);\n border-radius: 8px;\n white-space: nowrap;\n max-width: 60px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.run-tags-header[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 3px;\n justify-content: center;\n margin-bottom: 4px;\n}\n\n.tag-chip-header[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 70px;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-more-header[_ngcontent-%COMP%] {\n font-size: 9px;\n color: var(--test-text-secondary);\n padding: 2px 4px;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-cell[_ngcontent-%COMP%] {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-surface);\n z-index: 2;\n border-right: 2px solid var(--test-border);\n padding: 6px 10px !important;\n}\n\n.test-name[_ngcontent-%COMP%] {\n display: block;\n white-space: nowrap;\n font-weight: 500;\n color: var(--test-text);\n font-size: 12px;\n}\n\n.result-cell[_ngcontent-%COMP%] {\n position: relative;\n min-width: 120px;\n width: 120px;\n transition: var(--test-transition);\n}\n\n.result-cell.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.result-cell.clickable[_ngcontent-%COMP%]:hover {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 5;\n}\n\n.result-cell[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.result-cell.cell-passed[_ngcontent-%COMP%], \n.result-cell.cell-failed[_ngcontent-%COMP%], \n.result-cell.cell-error[_ngcontent-%COMP%], \n.result-cell.cell-timeout[_ngcontent-%COMP%], \n.result-cell.cell-running[_ngcontent-%COMP%], \n.result-cell.cell-pending[_ngcontent-%COMP%] {\n background: #ffffff;\n color: var(--test-text);\n}\n\n\n\n.result-cell.cell-skipped[_ngcontent-%COMP%] {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: var(--test-disabled);\n}\n\n.result-cell.cell-none[_ngcontent-%COMP%] {\n background: #f8fafc;\n color: var(--test-text-muted);\n}\n\n.cell-score[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 600;\n margin-top: 2px;\n}\n\n\n\n.cell-eval-stack[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n flex-wrap: nowrap;\n}\n\n.result-cell.multi-eval[_ngcontent-%COMP%] {\n min-width: 120px;\n width: auto;\n}\n\n\n\n.cell-status.status-timeout[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-status.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-status.status-error[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-status.status-skipped[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-status.status-pending[_ngcontent-%COMP%] {\n background: #f3e8ff;\n color: #7c3aed;\n}\n\n.cell-human[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background: #fef3c7;\n color: #d97706;\n font-size: 10px;\n}\n\n.cell-auto[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-auto.high[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-auto.medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-auto.low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-none-indicator[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n opacity: 0.5;\n}\n\n.matrix-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.matrix-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n\n\n\n\n.chart-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.chart-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: 16px;\n border-bottom: 1px solid var(--test-border);\n}\n\n.chart-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.chart-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.chart-legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-passed[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-failed[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-error[_ngcontent-%COMP%] {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-skipped[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: var(--test-disabled);\n}\n\n.chart-container[_ngcontent-%COMP%] {\n min-height: 500px;\n position: relative;\n overflow: hidden;\n background: linear-gradient(135deg, #fafbff 0%, #f8fafc 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.d3-chart[_ngcontent-%COMP%] {\n width: 100%;\n height: 500px;\n}\n\n.d3-chart[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n\n\n.d3-chart[_ngcontent-%COMP%] .node[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: transform 0.2s ease;\n}\n\n.d3-chart[_ngcontent-%COMP%] .node[_ngcontent-%COMP%]:hover {\n transform: scale(1.05);\n}\n\n.d3-chart[_ngcontent-%COMP%] .node-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n fill: var(--test-text);\n pointer-events: none;\n}\n\n.d3-chart[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] {\n fill: none;\n stroke-opacity: 0.4;\n transition: stroke-opacity 0.2s ease;\n}\n\n.d3-chart[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]:hover {\n stroke-opacity: 0.8;\n}\n\n.d3-chart[_ngcontent-%COMP%] .tooltip[_ngcontent-%COMP%] {\n position: absolute;\n padding: 10px 14px;\n background: rgba(30, 41, 59, 0.95);\n color: white;\n border-radius: 8px;\n font-size: 12px;\n pointer-events: none;\n z-index: 100;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n max-width: 250px;\n}\n\n.d3-chart[_ngcontent-%COMP%] .tooltip-title[_ngcontent-%COMP%] {\n font-weight: 600;\n margin-bottom: 4px;\n}\n\n.d3-chart[_ngcontent-%COMP%] .tooltip-value[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n.chart-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n margin-top: 16px;\n}\n\n.chart-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n\n\n\n\n.compare-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.compare-selection[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n gap: 24px;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.compare-run-selector[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-run-selector[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.run-selector-list[_ngcontent-%COMP%] {\n max-height: 200px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.run-selector-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.run-selector-item[_ngcontent-%COMP%]:hover {\n border-color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-selector-item.selected[_ngcontent-%COMP%] {\n border-color: var(--test-primary);\n background: #eff6ff;\n}\n\n.run-selector-item.disabled[_ngcontent-%COMP%] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.selector-status[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.selector-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.selector-date[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--test-text);\n}\n\n.selector-rate[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--test-text-secondary);\n}\n\n.selector-tags[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.selected-run-preview[_ngcontent-%COMP%] {\n padding: 12px;\n background: #f8fafc;\n border-radius: var(--test-radius-sm);\n border: 1px solid var(--test-border);\n}\n\n.preview-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.preview-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n}\n\n.clear-btn[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border: none;\n background: transparent;\n color: var(--test-error);\n font-size: 11px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.clear-btn[_ngcontent-%COMP%]:hover { text-decoration: underline; }\n\n.preview-details[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n font-size: 12px;\n color: var(--test-text);\n}\n\n.preview-rate[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--test-success);\n}\n\n.compare-vs[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--test-bg);\n border-radius: 50%;\n color: var(--test-text-muted);\n font-size: 16px;\n align-self: center;\n margin-top: 60px;\n}\n\n\n\n.compare-results[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.compare-summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n text-align: center;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n margin-bottom: 8px;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] .summary-value.positive[_ngcontent-%COMP%] { color: var(--test-success); }\n.compare-summary-card[_ngcontent-%COMP%] .summary-value.negative[_ngcontent-%COMP%] { color: var(--test-error); }\n\n.compare-summary-card.improved[_ngcontent-%COMP%] {\n border-left: 4px solid var(--test-success);\n}\n\n.compare-summary-card.improved[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] { color: var(--test-success); }\n\n.compare-summary-card.regressed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--test-error);\n}\n\n.compare-summary-card.regressed[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] { color: var(--test-error); }\n\n\n\n.compare-table-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.compare-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.compare-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n}\n\n.compare-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.compare-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.compare-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.compare-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.improved[_ngcontent-%COMP%] {\n background: rgba(16, 185, 129, 0.05);\n}\n\n.compare-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.regressed[_ngcontent-%COMP%] {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.test-name-cell[_ngcontent-%COMP%] {\n font-weight: 500;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.positive[_ngcontent-%COMP%] { color: var(--test-success); }\n.negative[_ngcontent-%COMP%] { color: var(--test-error); }\n.muted[_ngcontent-%COMP%] { color: var(--test-text-muted); }\n\n.change-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.change-indicator.improved[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.change-indicator.regressed[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.change-indicator.unchanged[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: var(--test-text-muted);\n}\n\n\n\n.compare-empty[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 24px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-top: 24px;\n}\n\n.compare-empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin: 0 auto 20px;\n}\n\n.compare-empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--test-text-muted);\n}\n\n.compare-empty[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.compare-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 400px;\n margin: 0 auto;\n}\n\n\n\n.empty-state.small[_ngcontent-%COMP%] {\n padding: 32px 16px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}\n\n\n\n\n\n@media (max-width: 1024px) {\n .compare-selection[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .compare-vs[_ngcontent-%COMP%] {\n margin: 0;\n align-self: center;\n justify-self: center;\n }\n\n .analytics-kpis[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .filter-buttons[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .filter-btn[_ngcontent-%COMP%] {\n width: 100%;\n text-align: center;\n }\n\n .analytics-kpis[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .kpi-card[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .kpi-value[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .compare-summary[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .analytics-table-wrapper[_ngcontent-%COMP%], \n .compare-table-wrapper[_ngcontent-%COMP%] {\n margin: 0 -20px;\n padding: 0 20px;\n }\n\n .run-selector-list[_ngcontent-%COMP%] {\n max-height: 150px;\n }\n}\n\n@media (max-width: 480px) {\n .compare-summary[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .compare-summary-card[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .analytics-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .analytics-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%], \n .compare-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .compare-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n font-size: 12px;\n }\n}\n\n\n\n\n\n\n\n\n.cell-human[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-human.no-feedback[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-human.no-feedback[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.cell-human.has-feedback[_ngcontent-%COMP%] {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-human.has-feedback[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.cell-human.has-feedback[_ngcontent-%COMP%] .rating-value[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 11px;\n}\n\n\n\n.cell-human.rating-low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-human.rating-medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-human.rating-good[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-human.rating-excellent[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n\n\n.cell-auto[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-auto.no-score[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-auto.no-score[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.cell-auto.has-score[_ngcontent-%COMP%] {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-auto.has-score[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.cell-auto.has-score[_ngcontent-%COMP%] .score-value[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 10px;\n}\n\n\n\n.cell-auto.score-low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-auto.score-medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-auto.score-good[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-auto.score-excellent[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n\n\n.cell-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n.cell-status.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-status.status-error[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-timeout[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-skipped[_ngcontent-%COMP%], \n.cell-status.status-pending[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #2563eb;\n}\n\n\n\n.result-cell.cell-not-run[_ngcontent-%COMP%] {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: #94a3b8;\n}\n\n.result-cell.cell-not-run[_ngcontent-%COMP%] .cell-eval-stack[_ngcontent-%COMP%] {\n opacity: 0.6;\n}\n\n.cell-not-run-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n color: #94a3b8;\n font-size: 11px;\n}\n\n\n\n\n\n.test-matrix[_ngcontent-%COMP%] tfoot[_ngcontent-%COMP%] {\n position: sticky;\n bottom: 0;\n z-index: 2;\n}\n\n.totals-row[_ngcontent-%COMP%] {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n border-top: 2px solid var(--test-border);\n}\n\n.totals-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n font-weight: 600;\n}\n\n.totals-row[_ngcontent-%COMP%] .totals-label[_ngcontent-%COMP%] {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n font-size: 12px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.totals-row[_ngcontent-%COMP%] .totals-cell[_ngcontent-%COMP%] {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n}\n\n.totals-stack[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.totals-status[_ngcontent-%COMP%], \n.totals-human[_ngcontent-%COMP%], \n.totals-auto[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 10px;\n white-space: nowrap;\n}\n\n.totals-status[_ngcontent-%COMP%] {\n background: #e0f2fe;\n color: #0369a1;\n}\n\n.totals-status[_ngcontent-%COMP%] .pass-count[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.totals-human[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.totals-human[_ngcontent-%COMP%] .avg-label[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.totals-human[_ngcontent-%COMP%] .count-label[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.8;\n}\n\n.totals-auto[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #1e40af;\n}\n\n.totals-auto[_ngcontent-%COMP%] .avg-label[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.totals-auto[_ngcontent-%COMP%] .count-label[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.8;\n}"], changeDetection: 0 }); }
3496
+ i0.ɵɵconditional(ctx.showShortcuts ? 65 : -1);
3497
+ } }, dependencies: [i5.NgClass, i6.DefaultValueAccessor, i6.NumberValueAccessor, i6.NgControlStatus, i6.NgModel, i7.DialogContainerDirective, i8.ButtonComponent, i3.EvaluationModeToggleComponent, i9.LoadingComponent, i5.DatePipe], styles: ["\n\n\n\n\n\n\n[_nghost-%COMP%] {\n --test-primary: #2563eb;\n --test-primary-light: #3b82f6;\n --test-success: #10b981;\n --test-error: #ef4444;\n --test-warning: #f59e0b;\n --test-disabled: #6b7280;\n --test-bg: #f8fafc;\n --test-surface: #ffffff;\n --test-border: #e2e8f0;\n --test-text: #1e293b;\n --test-text-secondary: #64748b;\n --test-text-muted: #94a3b8;\n --test-radius-sm: 6px;\n --test-radius-md: 10px;\n --test-radius-lg: 16px;\n --test-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --test-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --test-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n --test-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n display: block;\n height: 100%;\n}\n\n.test-suite-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--test-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\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(--test-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(37, 99, 235, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .separator[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n margin: 0 4px;\n}\n\n.breadcrumb[_ngcontent-%COMP%] .current[_ngcontent-%COMP%] {\n color: var(--test-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.suite-header[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n padding: 20px;\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n gap: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.suite-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: var(--test-radius-md);\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(--test-shadow-md);\n transition: var(--test-transition);\n}\n\n.suite-icon[_ngcontent-%COMP%]:hover { transform: scale(1.05); }\n\n.suite-info[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n\n.suite-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: clamp(18px, 4vw, 24px);\n font-weight: 700;\n color: var(--test-text);\n word-wrap: break-word;\n}\n\n.suite-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\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 14px;\n border-radius: 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%); }\n.status-badge.status-disabled[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-disabled) 0%, #4b5563 100%); }\n.status-badge.status-pending[_ngcontent-%COMP%] { background: linear-gradient(135deg, var(--test-warning) 0%, #d97706 100%); }\n\n.status-badge-inline[_ngcontent-%COMP%] {\n display: inline-flex;\n padding: 2px 10px;\n border-radius: 10px;\n color: white;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-badge-inline.status-active[_ngcontent-%COMP%] { background: var(--test-success); }\n.status-badge-inline.status-disabled[_ngcontent-%COMP%] { background: var(--test-disabled); }\n.status-badge-inline.status-pending[_ngcontent-%COMP%] { background: var(--test-warning); }\n\n.test-count[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 14px;\n color: var(--test-text-secondary);\n padding: 4px 10px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.suite-description[_ngcontent-%COMP%] {\n padding: 16px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.suite-description[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--test-text-secondary);\n line-height: 1.6;\n font-size: 14px;\n}\n\n\n\n.tabs-container[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n scrollbar-width: none;\n}\n\n.tabs[_ngcontent-%COMP%]::-webkit-scrollbar { display: none; }\n\n.tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 18px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--test-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n white-space: nowrap;\n}\n\n.tab[_ngcontent-%COMP%]:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.tab.active[_ngcontent-%COMP%] {\n color: var(--test-primary);\n border-bottom-color: var(--test-primary);\n font-weight: 600;\n}\n\n.tab-badge[_ngcontent-%COMP%] {\n background: var(--test-border);\n color: var(--test-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: rgba(37, 99, 235, 0.15);\n color: var(--test-primary);\n}\n\n.tab-shortcut[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\n}\n\n\n\n.tab-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n\n\n.overview-tab[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.info-section[_ngcontent-%COMP%], .config-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.info-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .config-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.info-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .config-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.info-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.info-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.info-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--test-text);\n font-weight: 500;\n}\n\n.config-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n}\n\n.config-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.config-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.config-input[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.config-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--test-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.config-hint[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--test-text-muted);\n}\n\n\n\n.tests-tab[_ngcontent-%COMP%], .runs-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.loading-state[_ngcontent-%COMP%] { padding: 0; }\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: 14px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.skeleton-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n}\n\n.skeleton-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: var(--test-radius-md);\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\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 border-radius: 4px;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: _ngcontent-%COMP%_shimmer 1.5s infinite;\n}\n\n.skeleton-line.wide[_ngcontent-%COMP%] { width: 70%; }\n.skeleton-line.narrow[_ngcontent-%COMP%] { width: 40%; }\n\n@keyframes _ngcontent-%COMP%_shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n.tests-list[_ngcontent-%COMP%], .runs-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.test-item[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.test-item[_ngcontent-%COMP%]:hover, .run-item[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n}\n\n.test-sequence[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n font-size: 14px;\n font-weight: 700;\n color: var(--test-text-secondary);\n flex-shrink: 0;\n}\n\n.test-icon[_ngcontent-%COMP%], .run-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-sm);\n}\n\n.test-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--test-primary) 0%, #1d4ed8 100%);\n}\n\n.test-content[_ngcontent-%COMP%], .run-content[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n\n.test-name[_ngcontent-%COMP%], .run-header[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 4px;\n}\n\n.run-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id[_ngcontent-%COMP%] { font-weight: 600; }\n\n.run-status[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.test-status[_ngcontent-%COMP%], .run-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--test-text-secondary);\n}\n\n.test-status[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .run-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.test-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.test-item[_ngcontent-%COMP%]:hover > i[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%]:hover > i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n transform: translateX(2px);\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 24px;\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\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(--test-bg);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--test-text-muted);\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(--test-text);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 300px;\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(--test-surface);\n border: 1px solid var(--test-border);\n box-shadow: var(--test-shadow-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--test-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--test-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle[_ngcontent-%COMP%]:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--test-primary);\n border-color: var(--test-primary);\n}\n\n.keyboard-shortcuts[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 12px 16px;\n box-shadow: var(--test-shadow-lg);\n font-size: 12px;\n z-index: 100;\n max-width: 260px;\n}\n\n.shortcuts-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text);\n}\n\n.shortcuts-close[_ngcontent-%COMP%] {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--test-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--test-transition);\n}\n\n.shortcuts-close[_ngcontent-%COMP%]:hover {\n color: var(--test-text);\n background: var(--test-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 color: var(--test-text-secondary);\n}\n\n.shortcut-keys[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.shortcut-keys[_ngcontent-%COMP%] kbd[_ngcontent-%COMP%] {\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: 4px;\n padding: 2px 6px;\n font-size: 11px;\n color: var(--test-text);\n}\n\n\n\n@media (max-width: 1024px) {\n .keyboard-shortcuts[_ngcontent-%COMP%], .shortcuts-toggle[_ngcontent-%COMP%] { display: none; }\n}\n\n@media (max-width: 768px) {\n .suite-header[_ngcontent-%COMP%] { padding: 16px; }\n\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] { flex: 1; }\n\n .tab-shortcut[_ngcontent-%COMP%] { display: none; }\n\n .info-grid[_ngcontent-%COMP%] { grid-template-columns: 1fr; }\n\n .test-item[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] { padding: 14px; }\n}\n\n@media (max-width: 480px) {\n .suite-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n\n .suite-info[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] { font-size: 16px; }\n\n .tab-badge[_ngcontent-%COMP%] { display: none; }\n\n .test-sequence[_ngcontent-%COMP%] { display: none; }\n}\n\n@media (hover: none) and (pointer: coarse) {\n .test-item[_ngcontent-%COMP%]:active, .run-item[_ngcontent-%COMP%]:active {\n background: rgba(37, 99, 235, 0.1);\n transform: scale(0.98);\n }\n\n .tab[_ngcontent-%COMP%] { min-height: 48px; }\n .test-item[_ngcontent-%COMP%], .run-item[_ngcontent-%COMP%] { min-height: 64px; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *[_ngcontent-%COMP%], *[_ngcontent-%COMP%]::before, *[_ngcontent-%COMP%]::after {\n animation-duration: 0.01ms !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n@media print {\n .header-actions[_ngcontent-%COMP%], .tabs-container[_ngcontent-%COMP%], .keyboard-shortcuts[_ngcontent-%COMP%] {\n display: none !important;\n }\n}\n\n\n\n\n\n.run-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\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.tag-mini[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background: #f1f5f9;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 500;\n color: #64748b;\n}\n\n.tag-more[_ngcontent-%COMP%] {\n font-size: 10px;\n color: #94a3b8;\n font-weight: 500;\n}\n\n\n\n.run-eval-metrics[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n}\n\n.eval-metric[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.eval-metric.status[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.eval-metric.status.status-completed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n}\n\n.eval-metric.status.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.eval-metric.status.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.eval-metric.status.status-pending[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.eval-metric.human[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #f59e0b;\n color: #92400e;\n}\n\n.eval-metric.human[_ngcontent-%COMP%] .eval-pending[_ngcontent-%COMP%] {\n font-size: 9px;\n color: #d97706;\n}\n\n.eval-metric.auto[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n}\n\n.eval-metric.auto.high[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%);\n border: 1px solid #86efac;\n color: #166534;\n}\n\n.eval-metric.auto.medium[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #fcd34d;\n color: #92400e;\n}\n\n.eval-metric.auto.low[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);\n border: 1px solid #fca5a5;\n color: #991b1b;\n}\n\n.tag-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.tag-chip-table[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n\n\n.analytics-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n\n\n.analytics-filters[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-bottom: 16px;\n box-shadow: var(--test-shadow-sm);\n overflow: hidden;\n}\n\n.analytics-filters.collapsed[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.filters-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n\n.filters-header[_ngcontent-%COMP%]:hover {\n background: var(--test-bg);\n}\n\n.filters-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--test-text-secondary);\n}\n\n.filters-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.filter-summary[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--test-text-muted);\n margin-left: 8px;\n}\n\n.filters-header[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n font-size: 12px;\n}\n\n.filters-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 12px 16px 16px 16px;\n border-top: 1px solid var(--test-border);\n}\n\n.filter-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.filter-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.filter-buttons[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.filter-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n background: var(--test-surface);\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.filter-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--test-primary);\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.filter-btn.active[_ngcontent-%COMP%] {\n background: var(--test-primary);\n border-color: var(--test-primary);\n color: white;\n}\n\n.filter-btn.tag-btn[_ngcontent-%COMP%] {\n padding: 6px 12px;\n font-size: 12px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn.tag-btn[_ngcontent-%COMP%] i.fa-check[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.filter-btn.tag-btn.all-tags-btn[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n.filter-btn.tag-btn.all-tags-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.filter-hint[_ngcontent-%COMP%] {\n font-weight: 400;\n font-size: 10px;\n color: var(--test-primary);\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-filters[_ngcontent-%COMP%] {\n max-height: 120px;\n overflow-y: auto;\n}\n\n\n\n.analytics-kpis[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n transition: var(--test-transition);\n}\n\n.kpi-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #eff6ff;\n border-radius: var(--test-radius-md);\n color: var(--test-primary);\n font-size: 20px;\n}\n\n.kpi-icon.success[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-icon.info[_ngcontent-%COMP%] {\n background: #f0f9ff;\n color: #0ea5e9;\n}\n\n.kpi-icon.warning[_ngcontent-%COMP%] {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.kpi-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n line-height: 1.2;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--test-text-secondary);\n margin-top: 2px;\n}\n\n.kpi-trend[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 600;\n margin-top: 4px;\n padding: 2px 8px;\n border-radius: 10px;\n background: #f1f5f9;\n color: var(--test-text-secondary);\n}\n\n.kpi-trend.trend-up[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-trend.trend-down[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n\n\n.analytics-table-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.analytics-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.analytics-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.analytics-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n margin: 0 -24px;\n padding: 0 24px;\n}\n\n.analytics-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.analytics-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.analytics-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.analytics-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.clickable-row[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.analytics-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.clickable-row[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.status-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-chip.status-completed[_ngcontent-%COMP%] { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-passed[_ngcontent-%COMP%] { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-failed[_ngcontent-%COMP%] { background: #fef2f2; color: var(--test-error); }\n.status-chip.status-error[_ngcontent-%COMP%] { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-running[_ngcontent-%COMP%] { background: #eff6ff; color: var(--test-primary); }\n.status-chip.status-pending[_ngcontent-%COMP%] { background: #f5f3ff; color: #8b5cf6; }\n.status-chip.status-cancelled[_ngcontent-%COMP%] { background: #f1f5f9; color: var(--test-disabled); }\n.status-chip.status-missing[_ngcontent-%COMP%] { background: #f1f5f9; color: var(--test-text-muted); }\n.status-chip.status-timeout[_ngcontent-%COMP%] { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-skipped[_ngcontent-%COMP%] { background: #f1f5f9; color: var(--test-disabled); }\n\n.pass-rate-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 100px;\n}\n\n.pass-rate-bar[_ngcontent-%COMP%] {\n height: 6px;\n border-radius: 3px;\n background: var(--test-success);\n transition: width 0.3s ease;\n max-width: 60px;\n}\n\n.pass-rate-bar.medium[_ngcontent-%COMP%] { background: var(--test-warning); }\n.pass-rate-bar.low[_ngcontent-%COMP%] { background: var(--test-error); }\n\n\n\n.analytics-subnav[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 8px;\n margin-bottom: 20px;\n box-shadow: var(--test-shadow-sm);\n display: inline-flex;\n}\n\n.subnav-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n background: var(--test-bg);\n border-radius: var(--test-radius-md);\n padding: 4px;\n}\n\n.subnav-tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border: none;\n border-radius: var(--test-radius-sm);\n background: transparent;\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.subnav-tab[_ngcontent-%COMP%]:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.subnav-tab.active[_ngcontent-%COMP%] {\n background: var(--test-surface);\n color: var(--test-primary);\n box-shadow: var(--test-shadow-sm);\n}\n\n.subnav-tab[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.matrix-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 16px;\n box-shadow: var(--test-shadow-sm);\n display: flex;\n flex-direction: column;\n max-height: calc(100vh - 280px);\n min-height: 300px;\n}\n\n.matrix-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 12px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--test-border);\n flex-shrink: 0;\n}\n\n.matrix-header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.matrix-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.matrix-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.matrix-run-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--test-text-muted);\n font-weight: 500;\n}\n\n\n\n.matrix-filter-input[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f8fafc;\n border: 1px solid var(--test-border);\n border-radius: 6px;\n padding: 4px 10px;\n min-width: 180px;\n}\n\n.matrix-filter-input[_ngcontent-%COMP%] i.fa-search[_ngcontent-%COMP%] {\n color: #94a3b8;\n font-size: 12px;\n}\n\n.matrix-filter-input[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n outline: none;\n font-size: 12px;\n color: var(--test-text);\n width: 100%;\n}\n\n.matrix-filter-input[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%]::placeholder {\n color: #94a3b8;\n}\n\n.clear-filter-btn[_ngcontent-%COMP%] {\n border: none;\n background: none;\n padding: 2px 4px;\n cursor: pointer;\n color: #94a3b8;\n font-size: 10px;\n border-radius: 3px;\n transition: all 0.15s ease;\n}\n\n.clear-filter-btn[_ngcontent-%COMP%]:hover {\n background: #e2e8f0;\n color: #64748b;\n}\n\n\n\n.matrix-scroll-container[_ngcontent-%COMP%] {\n flex: 1;\n overflow: auto;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n}\n\n.test-matrix[_ngcontent-%COMP%] {\n display: table;\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.test-matrix[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n display: table-header-group;\n}\n\n.test-matrix[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n display: table-row;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] {\n display: table-row-group;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n display: table-row;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background-color: rgba(59, 130, 246, 0.05);\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n border-top: 1px solid rgba(59, 130, 246, 0.3);\n border-bottom: 1px solid rgba(59, 130, 246, 0.3);\n}\n\n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] .seq-cell[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.row-selected[_ngcontent-%COMP%] .test-name-cell[_ngcontent-%COMP%] {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix[_ngcontent-%COMP%] tfoot[_ngcontent-%COMP%] {\n display: table-footer-group;\n}\n\n.test-matrix[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n display: table-cell;\n border: 1px solid var(--test-border);\n padding: 8px 12px;\n text-align: center;\n vertical-align: middle;\n}\n\n.test-matrix[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--test-bg);\n font-weight: 600;\n font-size: 11px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n z-index: 10;\n border-bottom: 3px solid #475569 !important;\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] .seq-cell[_ngcontent-%COMP%] {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n text-align: center;\n position: sticky;\n left: 0;\n font-size: 11px;\n color: #64748b;\n border-right: 1px solid var(--test-border);\n padding: 6px 4px !important;\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%] {\n cursor: pointer;\n font-weight: 600;\n background: var(--test-bg);\n z-index: 12; \n\n top: 0;\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .seq-cell[_ngcontent-%COMP%] {\n background: var(--test-surface);\n z-index: 2;\n}\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n margin-left: 2px;\n opacity: 0.6;\n}\n\n.test-matrix[_ngcontent-%COMP%] .seq-header[_ngcontent-%COMP%]:hover {\n background: #f1f5f9;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-header[_ngcontent-%COMP%] {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-bg);\n z-index: 11;\n border-right: 2px solid var(--test-border);\n cursor: pointer;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n margin-left: 4px;\n opacity: 0.6;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-header[_ngcontent-%COMP%]:hover {\n background: #f1f5f9;\n}\n\n.test-matrix[_ngcontent-%COMP%] .run-header[_ngcontent-%COMP%] {\n min-width: 120px;\n width: 120px;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n\n\n.test-matrix[_ngcontent-%COMP%] .spacer-header[_ngcontent-%COMP%], \n.test-matrix[_ngcontent-%COMP%] .spacer-cell[_ngcontent-%COMP%] {\n width: 100%;\n min-width: 20px;\n background: var(--test-bg);\n border: none;\n}\n\n.test-matrix[_ngcontent-%COMP%] .spacer-cell[_ngcontent-%COMP%] {\n background: var(--test-surface);\n}\n\n.test-matrix[_ngcontent-%COMP%] .run-header[_ngcontent-%COMP%]:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-header-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.run-date[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.run-pass-rate[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n.run-pass-rate.high[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.run-pass-rate.medium[_ngcontent-%COMP%] {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.run-pass-rate.low[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.run-tags[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.tag-tiny[_ngcontent-%COMP%] {\n font-size: 9px;\n padding: 2px 6px;\n background: #eff6ff;\n color: var(--test-primary);\n border-radius: 8px;\n white-space: nowrap;\n max-width: 60px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.run-tags-header[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 3px;\n justify-content: center;\n margin-bottom: 4px;\n}\n\n.tag-chip-header[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 70px;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-more-header[_ngcontent-%COMP%] {\n font-size: 9px;\n color: var(--test-text-secondary);\n padding: 2px 4px;\n}\n\n.test-matrix[_ngcontent-%COMP%] .test-name-cell[_ngcontent-%COMP%] {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-surface);\n z-index: 2;\n border-right: 2px solid var(--test-border);\n padding: 6px 10px !important;\n}\n\n.test-name[_ngcontent-%COMP%] {\n display: block;\n white-space: nowrap;\n font-weight: 500;\n color: var(--test-text);\n font-size: 12px;\n}\n\n.result-cell[_ngcontent-%COMP%] {\n position: relative;\n min-width: 120px;\n width: 120px;\n transition: var(--test-transition);\n}\n\n.result-cell.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.result-cell.clickable[_ngcontent-%COMP%]:hover {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 5;\n}\n\n.result-cell[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.result-cell.cell-passed[_ngcontent-%COMP%], \n.result-cell.cell-failed[_ngcontent-%COMP%], \n.result-cell.cell-error[_ngcontent-%COMP%], \n.result-cell.cell-timeout[_ngcontent-%COMP%], \n.result-cell.cell-running[_ngcontent-%COMP%], \n.result-cell.cell-pending[_ngcontent-%COMP%] {\n background: #ffffff;\n color: var(--test-text);\n}\n\n\n\n.result-cell.cell-skipped[_ngcontent-%COMP%] {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: var(--test-disabled);\n}\n\n.result-cell.cell-none[_ngcontent-%COMP%] {\n background: #f8fafc;\n color: var(--test-text-muted);\n}\n\n.cell-score[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 600;\n margin-top: 2px;\n}\n\n\n\n.cell-eval-stack[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n flex-wrap: nowrap;\n}\n\n.result-cell.multi-eval[_ngcontent-%COMP%] {\n min-width: 120px;\n width: auto;\n}\n\n\n\n.cell-status.status-timeout[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-status.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-status.status-error[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-status.status-skipped[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-status.status-pending[_ngcontent-%COMP%] {\n background: #f3e8ff;\n color: #7c3aed;\n}\n\n.cell-human[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background: #fef3c7;\n color: #d97706;\n font-size: 10px;\n}\n\n.cell-auto[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-auto.high[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-auto.medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-auto.low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-none-indicator[_ngcontent-%COMP%] {\n color: var(--test-text-muted);\n opacity: 0.5;\n}\n\n.matrix-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.matrix-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n\n\n\n\n.chart-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.chart-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: 16px;\n border-bottom: 1px solid var(--test-border);\n}\n\n.chart-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.chart-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.chart-legend[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-passed[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-failed[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-error[_ngcontent-%COMP%] {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.chart-legend[_ngcontent-%COMP%] .legend-item.chart-skipped[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: var(--test-disabled);\n}\n\n.chart-container[_ngcontent-%COMP%] {\n min-height: 500px;\n position: relative;\n overflow: hidden;\n background: linear-gradient(135deg, #fafbff 0%, #f8fafc 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.d3-chart[_ngcontent-%COMP%] {\n width: 100%;\n height: 500px;\n}\n\n.d3-chart[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n\n\n.d3-chart[_ngcontent-%COMP%] .node[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: transform 0.2s ease;\n}\n\n.d3-chart[_ngcontent-%COMP%] .node[_ngcontent-%COMP%]:hover {\n transform: scale(1.05);\n}\n\n.d3-chart[_ngcontent-%COMP%] .node-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n fill: var(--test-text);\n pointer-events: none;\n}\n\n.d3-chart[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] {\n fill: none;\n stroke-opacity: 0.4;\n transition: stroke-opacity 0.2s ease;\n}\n\n.d3-chart[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]:hover {\n stroke-opacity: 0.8;\n}\n\n.d3-chart[_ngcontent-%COMP%] .tooltip[_ngcontent-%COMP%] {\n position: absolute;\n padding: 10px 14px;\n background: rgba(30, 41, 59, 0.95);\n color: white;\n border-radius: 8px;\n font-size: 12px;\n pointer-events: none;\n z-index: 100;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n max-width: 250px;\n}\n\n.d3-chart[_ngcontent-%COMP%] .tooltip-title[_ngcontent-%COMP%] {\n font-weight: 600;\n margin-bottom: 4px;\n}\n\n.d3-chart[_ngcontent-%COMP%] .tooltip-value[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n.chart-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n margin-top: 16px;\n}\n\n.chart-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n\n\n\n\n.compare-tab[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.compare-selection[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n gap: 24px;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.compare-run-selector[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-run-selector[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.run-selector-list[_ngcontent-%COMP%] {\n max-height: 200px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.run-selector-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.run-selector-item[_ngcontent-%COMP%]:hover {\n border-color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-selector-item.selected[_ngcontent-%COMP%] {\n border-color: var(--test-primary);\n background: #eff6ff;\n}\n\n.run-selector-item.disabled[_ngcontent-%COMP%] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.selector-status[_ngcontent-%COMP%] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.selector-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.selector-date[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--test-text);\n}\n\n.selector-rate[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--test-text-secondary);\n}\n\n.selector-tags[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.selected-run-preview[_ngcontent-%COMP%] {\n padding: 12px;\n background: #f8fafc;\n border-radius: var(--test-radius-sm);\n border: 1px solid var(--test-border);\n}\n\n.preview-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.preview-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n}\n\n.clear-btn[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border: none;\n background: transparent;\n color: var(--test-error);\n font-size: 11px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.clear-btn[_ngcontent-%COMP%]:hover { text-decoration: underline; }\n\n.preview-details[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n font-size: 12px;\n color: var(--test-text);\n}\n\n.preview-rate[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--test-success);\n}\n\n.compare-vs[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--test-bg);\n border-radius: 50%;\n color: var(--test-text-muted);\n font-size: 16px;\n align-self: center;\n margin-top: 60px;\n}\n\n\n\n.compare-results[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-out;\n}\n\n.compare-summary[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n text-align: center;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n margin-bottom: 8px;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.compare-summary-card[_ngcontent-%COMP%] .summary-value.positive[_ngcontent-%COMP%] { color: var(--test-success); }\n.compare-summary-card[_ngcontent-%COMP%] .summary-value.negative[_ngcontent-%COMP%] { color: var(--test-error); }\n\n.compare-summary-card.improved[_ngcontent-%COMP%] {\n border-left: 4px solid var(--test-success);\n}\n\n.compare-summary-card.improved[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] { color: var(--test-success); }\n\n.compare-summary-card.regressed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--test-error);\n}\n\n.compare-summary-card.regressed[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] { color: var(--test-error); }\n\n\n\n.compare-table-section[_ngcontent-%COMP%] {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.compare-table-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--test-primary);\n}\n\n.compare-table-wrapper[_ngcontent-%COMP%] {\n overflow-x: auto;\n}\n\n.compare-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.compare-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.compare-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.compare-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.improved[_ngcontent-%COMP%] {\n background: rgba(16, 185, 129, 0.05);\n}\n\n.compare-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.regressed[_ngcontent-%COMP%] {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.test-name-cell[_ngcontent-%COMP%] {\n font-weight: 500;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.positive[_ngcontent-%COMP%] { color: var(--test-success); }\n.negative[_ngcontent-%COMP%] { color: var(--test-error); }\n.muted[_ngcontent-%COMP%] { color: var(--test-text-muted); }\n\n.change-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.change-indicator.improved[_ngcontent-%COMP%] {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.change-indicator.regressed[_ngcontent-%COMP%] {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.change-indicator.unchanged[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: var(--test-text-muted);\n}\n\n\n\n.compare-empty[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 24px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-top: 24px;\n}\n\n.compare-empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin: 0 auto 20px;\n}\n\n.compare-empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--test-text-muted);\n}\n\n.compare-empty[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.compare-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 400px;\n margin: 0 auto;\n}\n\n\n\n.empty-state.small[_ngcontent-%COMP%] {\n padding: 32px 16px;\n}\n\n.empty-state.small[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}\n\n\n\n\n\n@media (max-width: 1024px) {\n .compare-selection[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .compare-vs[_ngcontent-%COMP%] {\n margin: 0;\n align-self: center;\n justify-self: center;\n }\n\n .analytics-kpis[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .filter-buttons[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .filter-btn[_ngcontent-%COMP%] {\n width: 100%;\n text-align: center;\n }\n\n .analytics-kpis[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .kpi-card[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .kpi-value[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .compare-summary[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .analytics-table-wrapper[_ngcontent-%COMP%], \n .compare-table-wrapper[_ngcontent-%COMP%] {\n margin: 0 -20px;\n padding: 0 20px;\n }\n\n .run-selector-list[_ngcontent-%COMP%] {\n max-height: 150px;\n }\n}\n\n@media (max-width: 480px) {\n .compare-summary[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .compare-summary-card[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .analytics-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .analytics-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%], \n .compare-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n .compare-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n font-size: 12px;\n }\n}\n\n\n\n\n\n\n\n\n.cell-human[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-human.no-feedback[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-human.no-feedback[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.cell-human.has-feedback[_ngcontent-%COMP%] {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-human.has-feedback[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.cell-human.has-feedback[_ngcontent-%COMP%] .rating-value[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 11px;\n}\n\n\n\n.cell-human.rating-low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-human.rating-medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-human.rating-good[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-human.rating-excellent[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n\n\n.cell-auto[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-auto.no-score[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-auto.no-score[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.cell-auto.has-score[_ngcontent-%COMP%] {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-auto.has-score[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.cell-auto.has-score[_ngcontent-%COMP%] .score-value[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 10px;\n}\n\n\n\n.cell-auto.score-low[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-auto.score-medium[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-auto.score-good[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-auto.score-excellent[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n\n\n.cell-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #16a34a;\n}\n\n.cell-status.status-failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-status.status-error[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-timeout[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-skipped[_ngcontent-%COMP%], \n.cell-status.status-pending[_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #2563eb;\n}\n\n\n\n.result-cell.cell-not-run[_ngcontent-%COMP%] {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: #94a3b8;\n}\n\n.result-cell.cell-not-run[_ngcontent-%COMP%] .cell-eval-stack[_ngcontent-%COMP%] {\n opacity: 0.6;\n}\n\n.cell-not-run-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n color: #94a3b8;\n font-size: 11px;\n}\n\n\n\n\n\n.test-matrix[_ngcontent-%COMP%] tfoot[_ngcontent-%COMP%] {\n position: sticky;\n bottom: 0;\n z-index: 2;\n}\n\n.totals-row[_ngcontent-%COMP%] {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n border-top: 2px solid var(--test-border);\n}\n\n.totals-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 12px;\n font-weight: 600;\n}\n\n.totals-row[_ngcontent-%COMP%] .totals-label[_ngcontent-%COMP%] {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n font-size: 12px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.totals-row[_ngcontent-%COMP%] .totals-cell[_ngcontent-%COMP%] {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n}\n\n.totals-stack[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.totals-status[_ngcontent-%COMP%], \n.totals-human[_ngcontent-%COMP%], \n.totals-auto[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 10px;\n white-space: nowrap;\n}\n\n.totals-status[_ngcontent-%COMP%] {\n background: #e0f2fe;\n color: #0369a1;\n}\n\n.totals-status[_ngcontent-%COMP%] .pass-count[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.totals-human[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.totals-human[_ngcontent-%COMP%] .avg-label[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.totals-human[_ngcontent-%COMP%] .count-label[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.8;\n}\n\n.totals-auto[_ngcontent-%COMP%] {\n background: #dbeafe;\n color: #1e40af;\n}\n\n.totals-auto[_ngcontent-%COMP%] .avg-label[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.totals-auto[_ngcontent-%COMP%] .count-label[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.8;\n}"], changeDetection: 0 }); }
3450
3498
  };
3451
3499
  TestSuiteFormComponentExtended = __decorate([
3452
3500
  RegisterClass(BaseFormComponent, 'MJ: Test Suites')
@@ -3454,15 +3502,13 @@ TestSuiteFormComponentExtended = __decorate([
3454
3502
  export { TestSuiteFormComponentExtended };
3455
3503
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestSuiteFormComponentExtended, [{
3456
3504
  type: Component,
3457
- args: [{ selector: 'mj-test-suite-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"test-suite-form\" kendoDialogContainer>\n <!-- Header Section -->\n <div class=\"suite-header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"suite-icon\" [style.background-color]=\"getStatusColor()\">\n <i class=\"fas fa-layer-group\"></i>\n </div>\n <div class=\"suite-info\">\n <h1>{{ record.Name }}</h1>\n <div class=\"suite-meta\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass()\">\n <i class=\"fas\" [ngClass]=\"record.Status === 'Active' ? 'fa-circle-check' : 'fa-circle-pause'\"></i>\n {{ record.Status }}\n </span>\n <span class=\"test-count\" *ngIf=\"testsLoaded\">\n <i class=\"fas fa-flask\"></i>\n {{ suiteTests.length }} tests\n </span>\n </div>\n </div>\n </div>\n <div class=\"header-actions\">\n <app-evaluation-mode-toggle></app-evaluation-mode-toggle>\n <button kendoButton (click)=\"exportToExcel()\" title=\"Export to CSV\">\n <i class=\"fas fa-file-excel\"></i> Export\n </button>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> 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 <div class=\"suite-description\" *ngIf=\"record.Description\">\n <p>{{ record.Description }}</p>\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 === 'tests'\"\n (click)=\"changeTab('tests')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'tests'\">\n <i class=\"fas fa-flask\"></i> Tests\n <span class=\"tab-badge\" *ngIf=\"testsLoaded\">{{ suiteTests.length }}</span>\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-history\"></i> Runs\n <span class=\"tab-badge\" *ngIf=\"runsLoaded\">{{ suiteRuns.length }}</span>\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 <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'compare'\"\n (click)=\"changeTab('compare')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'compare'\">\n <i class=\"fas fa-balance-scale\"></i> Compare\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 <div class=\"info-section\">\n <h3><i class=\"fas fa-info-circle\"></i> Suite Information</h3>\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <div class=\"info-label\">Name</div>\n <div class=\"info-value\">{{ record.Name }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Status</div>\n <div class=\"info-value\">\n <span class=\"status-badge-inline\" [ngClass]=\"getStatusClass()\">{{ record.Status }}</span>\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Created</div>\n <div class=\"info-value\">{{ record.__mj_CreatedAt | date:'medium' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Updated</div>\n <div class=\"info-value\">{{ record.__mj_UpdatedAt | date:'medium' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Max Execution Time</div>\n <div class=\"info-value\">{{ formatTimeout(record.MaxExecutionTimeMS) }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"config-section\">\n <h3><i class=\"fas fa-cogs\"></i> Execution Settings</h3>\n <div class=\"config-grid\">\n <div class=\"config-item\">\n <label>Max Execution Time (ms)</label>\n <input type=\"number\" [(ngModel)]=\"record.MaxExecutionTimeMS\" class=\"config-input\" placeholder=\"Default: 300000 (5 min)\" />\n <span class=\"config-hint\">Default timeout for tests in this suite</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Tests Tab -->\n <div class=\"tests-tab\" *ngIf=\"activeTab === 'tests'\">\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"loadingTests\">\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 <!-- Tests List -->\n <div class=\"tests-list\" *ngIf=\"!loadingTests && suiteTests.length > 0\">\n <div class=\"test-item\" *ngFor=\"let test of suiteTests\" (click)=\"openTest(test.TestID)\">\n <div class=\"test-sequence\">{{ test.Sequence }}</div>\n <div class=\"test-icon\"><i class=\"fas fa-flask\"></i></div>\n <div class=\"test-content\">\n <div class=\"test-name\">{{ test.Test }}</div>\n <div class=\"test-status\">\n <span *ngIf=\"test.Status\"><i class=\"fas fa-info-circle\"></i> {{ test.Status }}</span>\n </div>\n </div>\n <i class=\"fas fa-chevron-right\"></i>\n </div>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"testsLoaded && !loadingTests && suiteTests.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-flask\"></i>\n </div>\n <h4>No Tests in Suite</h4>\n <p>Add tests to this suite to start running them together.</p>\n </div>\n </div>\n\n <!-- Runs Tab -->\n <div class=\"runs-tab\" *ngIf=\"activeTab === 'runs'\">\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"loadingRuns\">\n <div class=\"skeleton-list\">\n <div class=\"skeleton-card\" *ngFor=\"let i of [1,2,3]\">\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 <!-- Runs List -->\n <div class=\"runs-list\" *ngIf=\"!loadingRuns && suiteRuns.length > 0\">\n <div class=\"run-item\" *ngFor=\"let run of suiteRuns\" (click)=\"openSuiteRun(run.ID)\">\n <div class=\"run-icon\" [style.background-color]=\"getRunStatusColor(run.Status)\">\n <i class=\"fas\"\n [class.fa-check]=\"run.Status === 'Completed'\"\n [class.fa-times]=\"run.Status === 'Failed'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"\n [class.fa-ban]=\"run.Status === 'Cancelled'\"></i>\n </div>\n <div class=\"run-content\">\n <div class=\"run-header\">\n <span class=\"run-id\">Run #{{ run.ID.substring(0, 8) }}</span>\n <span class=\"run-status\" [style.color]=\"getRunStatusColor(run.Status)\">{{ run.Status }}</span>\n </div>\n <div class=\"run-meta\">\n <span><i class=\"fas fa-calendar\"></i> {{ getRelativeTime(run.StartedAt) }}</span>\n <span *ngIf=\"run.TotalTests\">\n <i class=\"fas fa-check-circle\"></i> {{ run.PassedTests }}/{{ run.TotalTests }}\n ({{ getPassRate(run).toFixed(0) }}%)\n </span>\n </div>\n <!-- Evaluation metrics row -->\n <div class=\"run-eval-metrics\">\n <!-- Status badge -->\n <span class=\"eval-metric status\" *ngIf=\"evalPreferences.showExecution\" [class]=\"'status-' + run.Status.toLowerCase()\">\n <i class=\"fas\"\n [class.fa-circle-check]=\"run.Status === 'Completed'\"\n [class.fa-circle-xmark]=\"run.Status === 'Failed'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"\n [class.fa-ban]=\"run.Status === 'Cancelled'\"></i>\n </span>\n <!-- Human score (placeholder - need avg from suite run) -->\n <span class=\"eval-metric human\" *ngIf=\"evalPreferences.showHuman\" title=\"Human evaluation\">\n <i class=\"fas fa-user\"></i>\n <span class=\"eval-pending\"><i class=\"fas fa-clock\"></i></span>\n </span>\n <!-- Auto score (pass rate as proxy) -->\n <span class=\"eval-metric auto\" *ngIf=\"evalPreferences.showAuto && run.TotalTests\"\n [class.high]=\"getPassRate(run) >= 80\"\n [class.medium]=\"getPassRate(run) >= 50 && getPassRate(run) < 80\"\n [class.low]=\"getPassRate(run) < 50\"\n title=\"Auto score (pass rate)\">\n <i class=\"fas fa-robot\"></i>\n <span>{{ getPassRate(run).toFixed(0) }}%</span>\n </span>\n </div>\n <!-- Tags display -->\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 <i class=\"fas fa-chevron-right\"></i>\n </div>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"runsLoaded && !loadingRuns && suiteRuns.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-play-circle\"></i>\n </div>\n <h4>No Suite Runs Yet</h4>\n <p>Run this suite to see execution history and results here.</p>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite Now\n </button>\n </div>\n </div>\n\n <!-- Analytics Tab -->\n <div class=\"analytics-tab\" *ngIf=\"activeTab === 'analytics'\">\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"loadingAnalytics\">\n <mj-loading text=\"Loading analytics data...\"></mj-loading>\n </div>\n\n <ng-container *ngIf=\"!loadingAnalytics && analyticsLoaded\">\n <!-- View Toggle Sub-nav -->\n <div class=\"analytics-subnav\">\n <div class=\"subnav-tabs\">\n <button class=\"subnav-tab\"\n [class.active]=\"analyticsView === 'summary'\"\n (click)=\"setAnalyticsView('summary')\">\n <i class=\"fas fa-chart-bar\"></i>\n <span>Summary</span>\n </button>\n <button class=\"subnav-tab\"\n [class.active]=\"analyticsView === 'matrix'\"\n (click)=\"setAnalyticsView('matrix')\">\n <i class=\"fas fa-th\"></i>\n <span>Matrix</span>\n </button>\n <button class=\"subnav-tab\"\n [class.active]=\"analyticsView === 'chart'\"\n (click)=\"setAnalyticsView('chart')\">\n <i class=\"fas fa-project-diagram\"></i>\n <span>Chart</span>\n </button>\n </div>\n </div>\n\n <!-- Collapsible Filters (shared by both views) -->\n <div class=\"analytics-filters\" [class.collapsed]=\"filtersCollapsed\">\n <div class=\"filters-header\" (click)=\"toggleFilters()\">\n <span class=\"filters-title\">\n <i class=\"fas fa-filter\"></i>\n Filters\n <span class=\"filter-summary\" *ngIf=\"filtersCollapsed\">\n {{ analyticsTimeRange === 'all' ? 'All Time' : analyticsTimeRange }}\n <span *ngIf=\"selectedTags.length > 0\"> \u00B7 {{ selectedTags.length }} tags</span>\n </span>\n </span>\n <i class=\"fas\" [ngClass]=\"filtersCollapsed ? 'fa-chevron-down' : 'fa-chevron-up'\"></i>\n </div>\n <div class=\"filters-content\" *ngIf=\"!filtersCollapsed\">\n <div class=\"filter-group\">\n <label>Time Range</label>\n <div class=\"filter-buttons\">\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === '7d'\" (click)=\"setTimeRange('7d')\">7 Days</button>\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === '30d'\" (click)=\"setTimeRange('30d')\">30 Days</button>\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === '90d'\" (click)=\"setTimeRange('90d')\">90 Days</button>\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === 'all'\" (click)=\"setTimeRange('all')\">All Time</button>\n </div>\n </div>\n <div class=\"filter-group\" *ngIf=\"uniqueTags.length > 0\">\n <label>Filter by Tag <span class=\"filter-hint\" *ngIf=\"selectedTags.length > 0\">({{ selectedTags.length }} selected)</span></label>\n <div class=\"filter-buttons tag-filters\">\n <button class=\"filter-btn tag-btn all-tags-btn\"\n [class.active]=\"selectedTags.length === 0\"\n (click)=\"toggleTagFilter(null)\">\n <i class=\"fas fa-layer-group\"></i> All Tags\n </button>\n <button class=\"filter-btn tag-btn\"\n *ngFor=\"let tag of uniqueTags\"\n [class.active]=\"isTagSelected(tag)\"\n (click)=\"toggleTagFilter(tag)\">\n <i class=\"fas fa-check\" *ngIf=\"isTagSelected(tag)\"></i>\n {{ tag }}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Summary View -->\n <ng-container *ngIf=\"analyticsView === 'summary'\">\n <!-- KPI Cards -->\n <div class=\"analytics-kpis\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\"><i class=\"fas fa-play-circle\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ getTotalRuns() }}</div>\n <div class=\"kpi-label\">Total Runs</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon success\"><i class=\"fas fa-check-circle\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ getAveragePassRate().toFixed(1) }}%</div>\n <div class=\"kpi-label\">Avg Pass Rate</div>\n <div class=\"kpi-trend\" [ngClass]=\"{'trend-up': getPassRateTrend().direction === 'up', 'trend-down': getPassRateTrend().direction === 'down'}\">\n <i class=\"fas\" [ngClass]=\"{'fa-arrow-up': getPassRateTrend().direction === 'up', 'fa-arrow-down': getPassRateTrend().direction === 'down', 'fa-minus': getPassRateTrend().direction === 'stable'}\"></i>\n {{ getPassRateTrend().value.toFixed(1) }}%\n </div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon info\"><i class=\"fas fa-clock\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ formatDuration(getAverageDuration()) }}</div>\n <div class=\"kpi-label\">Avg Duration</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon warning\"><i class=\"fas fa-dollar-sign\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ formatCost(getTotalCost()) }}</div>\n <div class=\"kpi-label\">Total Cost</div>\n </div>\n </div>\n </div>\n\n <!-- Runs Table -->\n <div class=\"analytics-table-section\">\n <h3><i class=\"fas fa-table\"></i> Run History</h3>\n <div class=\"analytics-table-wrapper\">\n <table class=\"analytics-table\">\n <thead>\n <tr>\n <th>Date</th>\n <th>Status</th>\n <th>Pass Rate</th>\n <th>Tests</th>\n <th>Duration</th>\n <th>Cost</th>\n <th>Tags</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let dp of getFilteredAnalyticsData()\" (click)=\"openSuiteRun(dp.runId)\" class=\"clickable-row\">\n <td>{{ dp.date | date:'short' }}</td>\n <td>\n <span class=\"status-chip\" [ngClass]=\"'status-' + dp.status.toLowerCase()\">{{ dp.status }}</span>\n </td>\n <td>\n <div class=\"pass-rate-cell\">\n <div class=\"pass-rate-bar\" [style.width.%]=\"dp.passRate\" [ngClass]=\"{'high': dp.passRate >= 80, 'medium': dp.passRate >= 50 && dp.passRate < 80, 'low': dp.passRate < 50}\"></div>\n <span>{{ dp.passRate.toFixed(0) }}%</span>\n </div>\n </td>\n <td>{{ dp.passedTests }}/{{ dp.totalTests }}</td>\n <td>{{ formatDuration(dp.duration) }}</td>\n <td>{{ formatCost(dp.cost) }}</td>\n <td>\n <div class=\"tag-cell\">\n <span class=\"tag-chip-table\" *ngFor=\"let tag of dp.tags.slice(0, 2)\">{{ tag }}</span>\n <span class=\"tag-more\" *ngIf=\"dp.tags.length > 2\">+{{ dp.tags.length - 2 }}</span>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div class=\"empty-state small\" *ngIf=\"getFilteredAnalyticsData().length === 0\">\n <p>No runs match the current filters.</p>\n </div>\n </div>\n </ng-container>\n\n <!-- Matrix View -->\n <ng-container *ngIf=\"analyticsView === 'matrix'\">\n <!-- Loading Matrix -->\n <div class=\"loading-state\" *ngIf=\"loadingMatrix\">\n <mj-loading text=\"Loading test matrix...\"></mj-loading>\n </div>\n\n <!-- Matrix Content -->\n <div class=\"matrix-section\" *ngIf=\"!loadingMatrix && matrixLoaded && matrixData.length > 0\">\n <div class=\"matrix-header\">\n <h3><i class=\"fas fa-th\"></i> Test Results Matrix</h3>\n <div class=\"matrix-header-right\">\n <div class=\"matrix-filter-input\">\n <i class=\"fas fa-search\"></i>\n <input type=\"text\"\n placeholder=\"Filter tests...\"\n [value]=\"matrixTestFilter\"\n (input)=\"onMatrixFilterInput($event)\"\n class=\"filter-input\">\n <button class=\"clear-filter-btn\" *ngIf=\"matrixTestFilter\" (click)=\"clearMatrixFilter()\" title=\"Clear filter\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <span class=\"matrix-run-count\">{{ matrixData.length }} runs \u00B7 {{ getUniqueTestsFromMatrix().length }} tests</span>\n <button kendoButton (click)=\"exportMatrixToCSV()\" [disabled]=\"matrixData.length === 0\" title=\"Export matrix to CSV\">\n <i class=\"fas fa-download\"></i> Export\n </button>\n </div>\n </div>\n\n <div class=\"matrix-scroll-container\">\n <table class=\"test-matrix\">\n <thead>\n <tr>\n <th class=\"seq-header\" (click)=\"toggleMatrixSort('sequence')\" title=\"Sort by sequence\">\n #\n <i class=\"fas\" [ngClass]=\"matrixSortBy === 'sequence' ? (matrixSortAsc ? 'fa-sort-up' : 'fa-sort-down') : 'fa-sort'\"></i>\n </th>\n <th class=\"test-name-header\" (click)=\"toggleMatrixSort('name')\" title=\"Sort by name\">\n Test\n <i class=\"fas\" [ngClass]=\"matrixSortBy === 'name' ? (matrixSortAsc ? 'fa-sort-up' : 'fa-sort-down') : 'fa-sort'\"></i>\n </th>\n <th class=\"run-header\" *ngFor=\"let run of matrixData\" (click)=\"openSuiteRun(run.runId)\" [title]=\"'Click to view suite run - ' + (run.date | date:'medium')\">\n <div class=\"run-header-content\">\n <div class=\"run-tags-header\" *ngIf=\"run.tags.length > 0\">\n <span class=\"tag-chip-header\" *ngFor=\"let tag of run.tags.slice(0, 2)\">{{ tag }}</span>\n <span class=\"tag-more-header\" *ngIf=\"run.tags.length > 2\">+{{ run.tags.length - 2 }}</span>\n </div>\n <div class=\"run-date\">{{ getRelativeTime(run.date) }}</div>\n <div class=\"run-pass-rate\" [ngClass]=\"{'high': run.passRate >= 80, 'medium': run.passRate >= 50 && run.passRate < 80, 'low': run.passRate < 50}\">\n {{ run.passRate.toFixed(0) }}%\n </div>\n </div>\n </th>\n <th class=\"spacer-header\"></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let test of getUniqueTestsFromMatrix()\"\n [class.row-selected]=\"selectedMatrixTestId === test.testId\"\n (click)=\"selectMatrixRow(test.testId)\">\n <td class=\"seq-cell\">{{ test.sequence }}</td>\n <td class=\"test-name-cell\">\n <span class=\"test-name\" [title]=\"test.testName\">{{ test.testName }}</span>\n </td>\n <td class=\"result-cell\"\n *ngFor=\"let run of matrixData\"\n [ngClass]=\"getMatrixCellClass(getTestResultForRun(run.runId, test.testId))\"\n [class.clickable]=\"getTestResultForRun(run.runId, test.testId)\"\n [class.cell-not-run]=\"!getTestResultForRun(run.runId, test.testId)\"\n [title]=\"getTestResultForRun(run.runId, test.testId)?.status + ' - Click to view test run' || 'Not Run'\"\n (click)=\"onMatrixCellClick(getTestResultForRun(run.runId, test.testId), $event)\">\n <ng-container *ngIf=\"getTestResultForRun(run.runId, test.testId) as result\">\n <div class=\"cell-eval-stack\">\n <!-- Status indicator -->\n <span class=\"cell-status\" *ngIf=\"evalPreferences.showExecution\"\n [ngClass]=\"'status-' + result.status.toLowerCase()\"\n [class.cell-skipped-status]=\"result.status === 'Skipped' || result.status === 'Pending'\"\n [title]=\"getStatusTooltip(result.status)\">\n <i class=\"fas\"\n [class.fa-check]=\"result.status === 'Passed'\"\n [class.fa-times]=\"result.status === 'Failed'\"\n [class.fa-exclamation]=\"result.status === 'Error'\"\n [class.fa-hourglass-end]=\"result.status === 'Timeout'\"\n [class.fa-forward]=\"result.status === 'Skipped'\"\n [class.fa-spinner]=\"result.status === 'Running'\"\n [class.fa-clock]=\"result.status === 'Pending'\"></i>\n </span>\n <!-- Human score - slashed icon if no feedback, colored by rating if has feedback -->\n <span class=\"cell-human no-feedback\" *ngIf=\"evalPreferences.showHuman && !result.humanRating\"\n title=\"Human Review: No rating submitted yet\">\n <i class=\"fas fa-user-slash\"></i>\n </span>\n <span class=\"cell-human has-feedback\" *ngIf=\"evalPreferences.showHuman && result.humanRating\"\n [class.rating-low]=\"result.humanRating <= 4\"\n [class.rating-medium]=\"result.humanRating >= 5 && result.humanRating <= 6\"\n [class.rating-good]=\"result.humanRating >= 7 && result.humanRating <= 8\"\n [class.rating-excellent]=\"result.humanRating >= 9\"\n [title]=\"getHumanTooltip(result.humanRating, result.humanComments)\">\n <i class=\"fas fa-user\"></i>\n <span class=\"rating-value\">{{ result.humanRating }}</span>\n </span>\n <!-- Auto score - colored by percentage -->\n <span class=\"cell-auto has-score\" *ngIf=\"evalPreferences.showAuto && result.score != null\"\n [class.score-low]=\"result.score < 0.5\"\n [class.score-medium]=\"result.score >= 0.5 && result.score < 0.7\"\n [class.score-good]=\"result.score >= 0.7 && result.score < 0.85\"\n [class.score-excellent]=\"result.score >= 0.85\"\n [title]=\"'Auto Score: ' + (result.score * 100).toFixed(0) + '% automated evaluation'\">\n <i class=\"fas fa-robot\"></i>\n <span class=\"score-value\">{{ (result.score * 100).toFixed(0) }}</span>\n </span>\n <span class=\"cell-auto no-score\" *ngIf=\"evalPreferences.showAuto && result.score == null\"\n title=\"Auto Score: No automated score available\">\n <i class=\"fas fa-robot\"></i>\n </span>\n </div>\n </ng-container>\n <span class=\"cell-not-run-indicator\" *ngIf=\"!getTestResultForRun(run.runId, test.testId)\">\n <i class=\"fas fa-minus\"></i>\n </span>\n </td>\n <td class=\"spacer-cell\"></td>\n </tr>\n </tbody>\n <!-- Footer row with totals -->\n <tfoot>\n <tr class=\"totals-row\">\n <td class=\"seq-cell totals-label\"></td>\n <td class=\"test-name-cell totals-label\">\n <strong>Totals</strong>\n </td>\n <td class=\"result-cell totals-cell\" *ngFor=\"let run of matrixData\">\n <div class=\"cell-eval-stack totals-stack\">\n <!-- Status totals -->\n <span class=\"totals-status\" *ngIf=\"evalPreferences.showExecution\">\n <span class=\"pass-count\">{{ getRunPassedCount(run) }}/{{ getRunTotalCount(run) }}</span>\n </span>\n <!-- Human totals -->\n <span class=\"totals-human\" *ngIf=\"evalPreferences.showHuman\">\n <span class=\"avg-label\" *ngIf=\"getRunHumanAvg(run) != null\">{{ getRunHumanAvg(run)?.toFixed(1) }}</span>\n <span class=\"count-label\">({{ getRunHumanCount(run) }})</span>\n </span>\n <!-- Auto totals -->\n <span class=\"totals-auto\" *ngIf=\"evalPreferences.showAuto\">\n <span class=\"avg-label\" *ngIf=\"getRunAutoAvg(run) != null\">{{ (getRunAutoAvg(run)! * 100).toFixed(0) }}%</span>\n <span class=\"count-label\">({{ getRunAutoCount(run) }})</span>\n </span>\n </div>\n </td>\n <td class=\"spacer-cell\"></td>\n </tr>\n </tfoot>\n </table>\n </div>\n </div>\n\n <!-- Empty Matrix State -->\n <div class=\"empty-state\" *ngIf=\"!loadingMatrix && matrixLoaded && matrixData.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-th\"></i>\n </div>\n <h4>No Matrix Data</h4>\n <p>No suite runs match the current filters.</p>\n </div>\n </ng-container>\n\n <!-- Chart View -->\n <ng-container *ngIf=\"analyticsView === 'chart'\">\n <!-- Loading Chart -->\n <div class=\"loading-state\" *ngIf=\"loadingMatrix\">\n <mj-loading text=\"Loading chart data...\"></mj-loading>\n </div>\n\n <!-- Chart Content -->\n <div class=\"chart-section\" *ngIf=\"!loadingMatrix && matrixLoaded && matrixData.length > 0\">\n <div class=\"chart-header\">\n <h3><i class=\"fas fa-project-diagram\"></i> Test Results Flow</h3>\n <div class=\"chart-legend\">\n <span class=\"legend-item chart-passed\"><i class=\"fas fa-check\"></i> Passed</span>\n <span class=\"legend-item chart-failed\"><i class=\"fas fa-times\"></i> Failed</span>\n <span class=\"legend-item chart-error\"><i class=\"fas fa-exclamation\"></i> Error</span>\n <span class=\"legend-item chart-skipped\"><i class=\"fas fa-forward\"></i> Skipped</span>\n </div>\n </div>\n\n <div class=\"chart-container\">\n <div #chartContainer class=\"d3-chart\"></div>\n </div>\n\n <div class=\"chart-info\">\n <i class=\"fas fa-info-circle\"></i>\n Interactive visualization showing test results across {{ matrixData.length }} runs.\n Hover over elements for details, click nodes to navigate.\n </div>\n </div>\n\n <!-- Empty Chart State -->\n <div class=\"empty-state\" *ngIf=\"!loadingMatrix && matrixLoaded && matrixData.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-project-diagram\"></i>\n </div>\n <h4>No Chart Data</h4>\n <p>No suite runs match the current filters.</p>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"!loadingAnalytics && analyticsLoaded && analyticsData.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-chart-line\"></i>\n </div>\n <h4>No Analytics Data</h4>\n <p>Run this suite to start collecting analytics data.</p>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite Now\n </button>\n </div>\n </div>\n\n <!-- Compare Tab -->\n <div class=\"compare-tab\" *ngIf=\"activeTab === 'compare'\">\n <!-- Run Selection -->\n <div class=\"compare-selection\">\n <div class=\"compare-run-selector\">\n <h4>Run A (Baseline)</h4>\n <div class=\"run-selector-list\" *ngIf=\"!loadingRuns && suiteRuns.length > 0\">\n <div class=\"run-selector-item\"\n *ngFor=\"let run of suiteRuns\"\n [class.selected]=\"compareRunA?.ID === run.ID\"\n (click)=\"selectCompareRunA(run)\">\n <div class=\"selector-status\" [style.background-color]=\"getRunStatusColor(run.Status)\"></div>\n <div class=\"selector-content\">\n <div class=\"selector-date\">{{ run.StartedAt | date:'short' }}</div>\n <div class=\"selector-rate\">{{ getPassRate(run).toFixed(0) }}% pass</div>\n </div>\n <div class=\"selector-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 </div>\n <div class=\"selected-run-preview\" *ngIf=\"compareRunA\">\n <div class=\"preview-header\">\n <span class=\"preview-label\">Selected:</span>\n <button class=\"clear-btn\" (click)=\"compareRunA = null; compareResults = []\">Clear</button>\n </div>\n <div class=\"preview-details\">\n <span>{{ compareRunA.StartedAt | date:'medium' }}</span>\n <span class=\"preview-rate\">{{ getPassRate(compareRunA).toFixed(1) }}%</span>\n </div>\n </div>\n </div>\n\n <div class=\"compare-vs\"><i class=\"fas fa-exchange-alt\"></i></div>\n\n <div class=\"compare-run-selector\">\n <h4>Run B (Compare)</h4>\n <div class=\"run-selector-list\" *ngIf=\"!loadingRuns && suiteRuns.length > 0\">\n <div class=\"run-selector-item\"\n *ngFor=\"let run of suiteRuns\"\n [class.selected]=\"compareRunB?.ID === run.ID\"\n [class.disabled]=\"compareRunA?.ID === run.ID\"\n (click)=\"compareRunA?.ID !== run.ID && selectCompareRunB(run)\">\n <div class=\"selector-status\" [style.background-color]=\"getRunStatusColor(run.Status)\"></div>\n <div class=\"selector-content\">\n <div class=\"selector-date\">{{ run.StartedAt | date:'short' }}</div>\n <div class=\"selector-rate\">{{ getPassRate(run).toFixed(0) }}% pass</div>\n </div>\n <div class=\"selector-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 </div>\n <div class=\"selected-run-preview\" *ngIf=\"compareRunB\">\n <div class=\"preview-header\">\n <span class=\"preview-label\">Selected:</span>\n <button class=\"clear-btn\" (click)=\"compareRunB = null; compareResults = []\">Clear</button>\n </div>\n <div class=\"preview-details\">\n <span>{{ compareRunB.StartedAt | date:'medium' }}</span>\n <span class=\"preview-rate\">{{ getPassRate(compareRunB).toFixed(1) }}%</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Comparison Results -->\n <div class=\"compare-results\" *ngIf=\"compareRunA && compareRunB && !loadingCompare\">\n <!-- Summary Cards -->\n <div class=\"compare-summary\">\n <div class=\"compare-summary-card\">\n <div class=\"summary-label\">Pass Rate Change</div>\n <div class=\"summary-value\" [ngClass]=\"{'positive': getComparePassRateDiff()! > 0, 'negative': getComparePassRateDiff()! < 0}\">\n <i class=\"fas\" [ngClass]=\"{'fa-arrow-up': getComparePassRateDiff()! > 0, 'fa-arrow-down': getComparePassRateDiff()! < 0, 'fa-minus': getComparePassRateDiff() === 0}\"></i>\n {{ getComparePassRateDiff()! > 0 ? '+' : '' }}{{ getComparePassRateDiff()?.toFixed(1) }}%\n </div>\n </div>\n <div class=\"compare-summary-card\">\n <div class=\"summary-label\">Duration Change</div>\n <div class=\"summary-value\" [ngClass]=\"{'positive': getCompareDurationDiff()! < 0, 'negative': getCompareDurationDiff()! > 0}\">\n <i class=\"fas\" [ngClass]=\"{'fa-arrow-down': getCompareDurationDiff()! < 0, 'fa-arrow-up': getCompareDurationDiff()! > 0, 'fa-minus': getCompareDurationDiff() === 0}\"></i>\n {{ formatDuration(getAbsCompareDurationDiff()) }}\n </div>\n </div>\n <div class=\"compare-summary-card improved\">\n <div class=\"summary-label\">Improved</div>\n <div class=\"summary-value\">{{ getCompareImprovedCount() }}</div>\n </div>\n <div class=\"compare-summary-card regressed\">\n <div class=\"summary-label\">Regressed</div>\n <div class=\"summary-value\">{{ getCompareRegressedCount() }}</div>\n </div>\n </div>\n\n <!-- Detailed Comparison Table -->\n <div class=\"compare-table-section\">\n <h3><i class=\"fas fa-list\"></i> Test-by-Test Comparison</h3>\n <div class=\"compare-table-wrapper\">\n <table class=\"compare-table\">\n <thead>\n <tr>\n <th>Test</th>\n <th>Run A Status</th>\n <th>Run B Status</th>\n <th>Score Diff</th>\n <th>Duration Diff</th>\n <th>Change</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let result of compareResults\" [ngClass]=\"{'improved': result.runA && result.runB && result.runA.status !== 'Passed' && result.runB.status === 'Passed', 'regressed': result.runA && result.runB && result.runA.status === 'Passed' && result.runB.status !== 'Passed'}\">\n <td class=\"test-name-cell\">{{ result.testName }}</td>\n <td>\n <span class=\"status-chip\" *ngIf=\"result.runA\" [ngClass]=\"'status-' + result.runA.status.toLowerCase()\">{{ result.runA.status }}</span>\n <span class=\"status-chip status-missing\" *ngIf=\"!result.runA\">N/A</span>\n </td>\n <td>\n <span class=\"status-chip\" *ngIf=\"result.runB\" [ngClass]=\"'status-' + result.runB.status.toLowerCase()\">{{ result.runB.status }}</span>\n <span class=\"status-chip status-missing\" *ngIf=\"!result.runB\">N/A</span>\n </td>\n <td>\n <span *ngIf=\"result.scoreDiff != null\" [ngClass]=\"{'positive': result.scoreDiff > 0, 'negative': result.scoreDiff < 0}\">\n {{ result.scoreDiff > 0 ? '+' : '' }}{{ (result.scoreDiff * 100).toFixed(1) }}%\n </span>\n <span *ngIf=\"result.scoreDiff == null\" class=\"muted\">-</span>\n </td>\n <td>\n <span *ngIf=\"result.durationDiff != null\" [ngClass]=\"{'positive': result.durationDiff < 0, 'negative': result.durationDiff > 0}\">\n {{ result.durationDiff > 0 ? '+' : '' }}{{ result.durationDiff.toFixed(1) }}s\n </span>\n <span *ngIf=\"result.durationDiff == null\" class=\"muted\">-</span>\n </td>\n <td>\n <span class=\"change-indicator improved\" *ngIf=\"result.runA && result.runB && result.runA.status !== 'Passed' && result.runB.status === 'Passed'\">\n <i class=\"fas fa-arrow-up\"></i> Fixed\n </span>\n <span class=\"change-indicator regressed\" *ngIf=\"result.runA && result.runB && result.runA.status === 'Passed' && result.runB.status !== 'Passed'\">\n <i class=\"fas fa-arrow-down\"></i> Broke\n </span>\n <span class=\"change-indicator unchanged\" *ngIf=\"!result.statusChanged\">\n <i class=\"fas fa-minus\"></i>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n\n <!-- Loading State for Compare -->\n <div class=\"loading-state\" *ngIf=\"loadingCompare\">\n <mj-loading text=\"Loading comparison data...\"></mj-loading>\n </div>\n\n <!-- Empty State -->\n <div class=\"compare-empty\" *ngIf=\"!compareRunA || !compareRunB\">\n <div class=\"compare-empty-icon\">\n <i class=\"fas fa-balance-scale\"></i>\n </div>\n <h4>Select Two Runs to Compare</h4>\n <p>Choose a baseline run (A) and a comparison run (B) from the lists above to see a detailed side-by-side comparison.</p>\n </div>\n\n <!-- No Runs State -->\n <div class=\"empty-state\" *ngIf=\"runsLoaded && suiteRuns.length < 2\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-balance-scale\"></i>\n </div>\n <h4>Not Enough Runs to Compare</h4>\n <p>You need at least 2 suite runs to use the comparison feature.</p>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite Now\n </button>\n </div>\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>Run Suite</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>Enter</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 Form - World-Class UX\n =========================== */\n\n/* CSS Custom Properties for Theming - using :host for Angular encapsulation */\n:host {\n --test-primary: #2563eb;\n --test-primary-light: #3b82f6;\n --test-success: #10b981;\n --test-error: #ef4444;\n --test-warning: #f59e0b;\n --test-disabled: #6b7280;\n --test-bg: #f8fafc;\n --test-surface: #ffffff;\n --test-border: #e2e8f0;\n --test-text: #1e293b;\n --test-text-secondary: #64748b;\n --test-text-muted: #94a3b8;\n --test-radius-sm: 6px;\n --test-radius-md: 10px;\n --test-radius-lg: 16px;\n --test-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --test-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --test-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n --test-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n display: block;\n height: 100%;\n}\n\n.test-suite-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--test-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n/* Header */\n.suite-header {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n padding: 20px;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n gap: 16px;\n}\n\n.header-left {\n display: flex;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.suite-icon {\n width: 56px;\n height: 56px;\n border-radius: var(--test-radius-md);\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(--test-shadow-md);\n transition: var(--test-transition);\n}\n\n.suite-icon:hover { transform: scale(1.05); }\n\n.suite-info { flex: 1; min-width: 0; }\n\n.suite-info h1 {\n margin: 0 0 8px 0;\n font-size: clamp(18px, 4vw, 24px);\n font-weight: 700;\n color: var(--test-text);\n word-wrap: break-word;\n}\n\n.suite-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.status-active { background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%); }\n.status-badge.status-disabled { background: linear-gradient(135deg, var(--test-disabled) 0%, #4b5563 100%); }\n.status-badge.status-pending { background: linear-gradient(135deg, var(--test-warning) 0%, #d97706 100%); }\n\n.status-badge-inline {\n display: inline-flex;\n padding: 2px 10px;\n border-radius: 10px;\n color: white;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-badge-inline.status-active { background: var(--test-success); }\n.status-badge-inline.status-disabled { background: var(--test-disabled); }\n.status-badge-inline.status-pending { background: var(--test-warning); }\n\n.test-count {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 14px;\n color: var(--test-text-secondary);\n padding: 4px 10px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.suite-description {\n padding: 16px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.suite-description p {\n margin: 0;\n color: var(--test-text-secondary);\n line-height: 1.6;\n font-size: 14px;\n}\n\n/* Tabs */\n.tabs-container {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n scrollbar-width: none;\n}\n\n.tabs::-webkit-scrollbar { display: none; }\n\n.tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 18px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--test-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n white-space: nowrap;\n}\n\n.tab:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.tab.active {\n color: var(--test-primary);\n border-bottom-color: var(--test-primary);\n font-weight: 600;\n}\n\n.tab-badge {\n background: var(--test-border);\n color: var(--test-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: rgba(37, 99, 235, 0.15);\n color: var(--test-primary);\n}\n\n.tab-shortcut {\n font-size: 10px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\n}\n\n/* Tab Content */\n.tab-content {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* Overview Tab */\n.overview-tab {\n display: flex;\n flex-direction: column;\n gap: 20px;\n animation: fadeIn 0.3s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.info-section, .config-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.info-section h3, .config-section h3 {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.info-section h3 i, .config-section h3 i {\n color: var(--test-primary);\n}\n\n.info-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.info-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.info-label {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.info-value {\n font-size: 14px;\n color: var(--test-text);\n font-weight: 500;\n}\n\n.config-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n}\n\n.config-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.config-item label {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.config-input {\n padding: 10px 14px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.config-input:focus {\n outline: none;\n border-color: var(--test-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.config-hint {\n font-size: 11px;\n color: var(--test-text-muted);\n}\n\n/* Tests Tab */\n.tests-tab, .runs-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n.loading-state { padding: 0; }\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: 14px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.skeleton-sequence {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n}\n\n.skeleton-icon {\n width: 40px;\n height: 40px;\n border-radius: var(--test-radius-md);\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\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 border-radius: 4px;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n}\n\n.skeleton-line.wide { width: 70%; }\n.skeleton-line.narrow { width: 40%; }\n\n@keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n.tests-list, .runs-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.test-item, .run-item {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.test-item:hover, .run-item:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n}\n\n.test-sequence {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n font-size: 14px;\n font-weight: 700;\n color: var(--test-text-secondary);\n flex-shrink: 0;\n}\n\n.test-icon, .run-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-sm);\n}\n\n.test-icon {\n background: linear-gradient(135deg, var(--test-primary) 0%, #1d4ed8 100%);\n}\n\n.test-content, .run-content { flex: 1; min-width: 0; }\n\n.test-name, .run-header {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 4px;\n}\n\n.run-header {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id { font-weight: 600; }\n\n.run-status {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.test-status, .run-meta {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--test-text-secondary);\n}\n\n.test-status span, .run-meta span {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.test-item > i, .run-item > i {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.test-item:hover > i, .run-item:hover > i {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n/* Empty States */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\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(--test-bg);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 36px;\n color: var(--test-text-muted);\n}\n\n.empty-state h4 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.empty-state p {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 300px;\n}\n\n/* Keyboard Shortcuts */\n/* Keyboard shortcuts 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(--test-surface);\n border: 1px solid var(--test-border);\n box-shadow: var(--test-shadow-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--test-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--test-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--test-primary);\n border-color: var(--test-primary);\n}\n\n.keyboard-shortcuts {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 12px 16px;\n box-shadow: var(--test-shadow-lg);\n font-size: 12px;\n z-index: 100;\n max-width: 260px;\n}\n\n.shortcuts-header {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text);\n}\n\n.shortcuts-close {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--test-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--test-transition);\n}\n\n.shortcuts-close:hover {\n color: var(--test-text);\n background: var(--test-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 color: var(--test-text-secondary);\n}\n\n.shortcut-keys {\n display: flex;\n gap: 4px;\n}\n\n.shortcut-keys kbd {\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: 4px;\n padding: 2px 6px;\n font-size: 11px;\n color: var(--test-text);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .keyboard-shortcuts, .shortcuts-toggle { display: none; }\n}\n\n@media (max-width: 768px) {\n .suite-header { padding: 16px; }\n\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-actions {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions button { flex: 1; }\n\n .tab-shortcut { display: none; }\n\n .info-grid { grid-template-columns: 1fr; }\n\n .test-item, .run-item { padding: 14px; }\n}\n\n@media (max-width: 480px) {\n .suite-icon {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n\n .suite-info h1 { font-size: 16px; }\n\n .tab-badge { display: none; }\n\n .test-sequence { display: none; }\n}\n\n@media (hover: none) and (pointer: coarse) {\n .test-item:active, .run-item:active {\n background: rgba(37, 99, 235, 0.1);\n transform: scale(0.98);\n }\n\n .tab { min-height: 48px; }\n .test-item, .run-item { min-height: 64px; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n@media print {\n .header-actions, .tabs-container, .keyboard-shortcuts {\n display: none !important;\n }\n}\n\n/* ===========================\n Tags UI\n =========================== */\n.run-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\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.tag-mini {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background: #f1f5f9;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 500;\n color: #64748b;\n}\n\n.tag-more {\n font-size: 10px;\n color: #94a3b8;\n font-weight: 500;\n}\n\n/* Evaluation metrics row for Runs list */\n.run-eval-metrics {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n}\n\n.eval-metric {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.eval-metric.status {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.eval-metric.status.status-completed {\n background: #dcfce7;\n color: #166534;\n}\n\n.eval-metric.status.status-failed {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.eval-metric.status.status-running {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.eval-metric.status.status-pending {\n background: #fef3c7;\n color: #92400e;\n}\n\n.eval-metric.human {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #f59e0b;\n color: #92400e;\n}\n\n.eval-metric.human .eval-pending {\n font-size: 9px;\n color: #d97706;\n}\n\n.eval-metric.auto {\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n}\n\n.eval-metric.auto.high {\n background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%);\n border: 1px solid #86efac;\n color: #166534;\n}\n\n.eval-metric.auto.medium {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #fcd34d;\n color: #92400e;\n}\n\n.eval-metric.auto.low {\n background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);\n border: 1px solid #fca5a5;\n color: #991b1b;\n}\n\n.tag-cell {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.tag-chip-table {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ===========================\n Analytics Tab\n =========================== */\n.analytics-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n/* Collapsible filters */\n.analytics-filters {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-bottom: 16px;\n box-shadow: var(--test-shadow-sm);\n overflow: hidden;\n}\n\n.analytics-filters.collapsed {\n margin-bottom: 12px;\n}\n\n.filters-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n\n.filters-header:hover {\n background: var(--test-bg);\n}\n\n.filters-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--test-text-secondary);\n}\n\n.filters-title i {\n color: var(--test-primary);\n}\n\n.filter-summary {\n font-weight: 400;\n color: var(--test-text-muted);\n margin-left: 8px;\n}\n\n.filters-header > i {\n color: var(--test-text-muted);\n font-size: 12px;\n}\n\n.filters-content {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 12px 16px 16px 16px;\n border-top: 1px solid var(--test-border);\n}\n\n.filter-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.filter-group label {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.filter-buttons {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.filter-btn {\n padding: 8px 16px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n background: var(--test-surface);\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.filter-btn:hover {\n border-color: var(--test-primary);\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.filter-btn.active {\n background: var(--test-primary);\n border-color: var(--test-primary);\n color: white;\n}\n\n.filter-btn.tag-btn {\n padding: 6px 12px;\n font-size: 12px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn.tag-btn i.fa-check {\n font-size: 10px;\n}\n\n.filter-btn.tag-btn.all-tags-btn {\n font-weight: 600;\n}\n\n.filter-btn.tag-btn.all-tags-btn i {\n font-size: 11px;\n}\n\n.filter-hint {\n font-weight: 400;\n font-size: 10px;\n color: var(--test-primary);\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-filters {\n max-height: 120px;\n overflow-y: auto;\n}\n\n/* KPI Cards */\n.analytics-kpis {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n gap: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n transition: var(--test-transition);\n}\n\n.kpi-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.kpi-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #eff6ff;\n border-radius: var(--test-radius-md);\n color: var(--test-primary);\n font-size: 20px;\n}\n\n.kpi-icon.success {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-icon.info {\n background: #f0f9ff;\n color: #0ea5e9;\n}\n\n.kpi-icon.warning {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.kpi-content {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n line-height: 1.2;\n}\n\n.kpi-label {\n font-size: 12px;\n color: var(--test-text-secondary);\n margin-top: 2px;\n}\n\n.kpi-trend {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 600;\n margin-top: 4px;\n padding: 2px 8px;\n border-radius: 10px;\n background: #f1f5f9;\n color: var(--test-text-secondary);\n}\n\n.kpi-trend.trend-up {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-trend.trend-down {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n/* Analytics Table */\n.analytics-table-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.analytics-table-section h3 {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.analytics-table-section h3 i {\n color: var(--test-primary);\n}\n\n.analytics-table-wrapper {\n overflow-x: auto;\n margin: 0 -24px;\n padding: 0 24px;\n}\n\n.analytics-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.analytics-table th {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.analytics-table td {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.analytics-table tbody tr.clickable-row {\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.analytics-table tbody tr.clickable-row:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.status-chip {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-chip.status-completed { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-passed { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-failed { background: #fef2f2; color: var(--test-error); }\n.status-chip.status-error { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-running { background: #eff6ff; color: var(--test-primary); }\n.status-chip.status-pending { background: #f5f3ff; color: #8b5cf6; }\n.status-chip.status-cancelled { background: #f1f5f9; color: var(--test-disabled); }\n.status-chip.status-missing { background: #f1f5f9; color: var(--test-text-muted); }\n.status-chip.status-timeout { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-skipped { background: #f1f5f9; color: var(--test-disabled); }\n\n.pass-rate-cell {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 100px;\n}\n\n.pass-rate-bar {\n height: 6px;\n border-radius: 3px;\n background: var(--test-success);\n transition: width 0.3s ease;\n max-width: 60px;\n}\n\n.pass-rate-bar.medium { background: var(--test-warning); }\n.pass-rate-bar.low { background: var(--test-error); }\n\n/* Analytics Sub-navigation */\n.analytics-subnav {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 8px;\n margin-bottom: 20px;\n box-shadow: var(--test-shadow-sm);\n display: inline-flex;\n}\n\n.subnav-tabs {\n display: flex;\n gap: 4px;\n background: var(--test-bg);\n border-radius: var(--test-radius-md);\n padding: 4px;\n}\n\n.subnav-tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border: none;\n border-radius: var(--test-radius-sm);\n background: transparent;\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.subnav-tab:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.subnav-tab.active {\n background: var(--test-surface);\n color: var(--test-primary);\n box-shadow: var(--test-shadow-sm);\n}\n\n.subnav-tab i {\n font-size: 14px;\n}\n\n/* Matrix View */\n.matrix-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 16px;\n box-shadow: var(--test-shadow-sm);\n display: flex;\n flex-direction: column;\n max-height: calc(100vh - 280px);\n min-height: 300px;\n}\n\n.matrix-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 12px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--test-border);\n flex-shrink: 0;\n}\n\n.matrix-header-right {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.matrix-header h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.matrix-header h3 i {\n color: var(--test-primary);\n}\n\n.matrix-run-count {\n font-size: 12px;\n color: var(--test-text-muted);\n font-weight: 500;\n}\n\n/* Matrix filter input */\n.matrix-filter-input {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f8fafc;\n border: 1px solid var(--test-border);\n border-radius: 6px;\n padding: 4px 10px;\n min-width: 180px;\n}\n\n.matrix-filter-input i.fa-search {\n color: #94a3b8;\n font-size: 12px;\n}\n\n.matrix-filter-input .filter-input {\n border: none;\n background: transparent;\n outline: none;\n font-size: 12px;\n color: var(--test-text);\n width: 100%;\n}\n\n.matrix-filter-input .filter-input::placeholder {\n color: #94a3b8;\n}\n\n.clear-filter-btn {\n border: none;\n background: none;\n padding: 2px 4px;\n cursor: pointer;\n color: #94a3b8;\n font-size: 10px;\n border-radius: 3px;\n transition: all 0.15s ease;\n}\n\n.clear-filter-btn:hover {\n background: #e2e8f0;\n color: #64748b;\n}\n\n/* Scrollable matrix container with fixed height */\n.matrix-scroll-container {\n flex: 1;\n overflow: auto;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n}\n\n.test-matrix {\n display: table;\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.test-matrix thead {\n display: table-header-group;\n}\n\n.test-matrix thead tr {\n display: table-row;\n}\n\n.test-matrix tbody {\n display: table-row-group;\n}\n\n.test-matrix tbody tr {\n display: table-row;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.test-matrix tbody tr:hover {\n background-color: rgba(59, 130, 246, 0.05);\n}\n\n.test-matrix tbody tr.row-selected {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix tbody tr.row-selected td {\n border-top: 1px solid rgba(59, 130, 246, 0.3);\n border-bottom: 1px solid rgba(59, 130, 246, 0.3);\n}\n\n.test-matrix tbody tr.row-selected .seq-cell,\n.test-matrix tbody tr.row-selected .test-name-cell {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix tfoot {\n display: table-footer-group;\n}\n\n.test-matrix th,\n.test-matrix td {\n display: table-cell;\n border: 1px solid var(--test-border);\n padding: 8px 12px;\n text-align: center;\n vertical-align: middle;\n}\n\n.test-matrix th {\n background: var(--test-bg);\n font-weight: 600;\n font-size: 11px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n z-index: 10;\n border-bottom: 3px solid #475569 !important;\n}\n\n/* Sequence column - shared styles */\n.test-matrix .seq-header,\n.test-matrix .seq-cell {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n text-align: center;\n position: sticky;\n left: 0;\n font-size: 11px;\n color: #64748b;\n border-right: 1px solid var(--test-border);\n padding: 6px 4px !important;\n}\n\n/* Seq header - sticky top AND left, highest z-index */\n.test-matrix .seq-header {\n cursor: pointer;\n font-weight: 600;\n background: var(--test-bg);\n z-index: 12; /* Higher than other headers */\n top: 0;\n}\n\n/* Seq body cells - sticky left only, lower z-index */\n.test-matrix .seq-cell {\n background: var(--test-surface);\n z-index: 2;\n}\n\n.test-matrix .seq-header i {\n font-size: 9px;\n margin-left: 2px;\n opacity: 0.6;\n}\n\n.test-matrix .seq-header:hover {\n background: #f1f5f9;\n}\n\n.test-matrix .test-name-header {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-bg);\n z-index: 11;\n border-right: 2px solid var(--test-border);\n cursor: pointer;\n}\n\n.test-matrix .test-name-header i {\n font-size: 9px;\n margin-left: 4px;\n opacity: 0.6;\n}\n\n.test-matrix .test-name-header:hover {\n background: #f1f5f9;\n}\n\n.test-matrix .run-header {\n min-width: 120px;\n width: 120px;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n/* Spacer column absorbs extra width */\n.test-matrix .spacer-header,\n.test-matrix .spacer-cell {\n width: 100%;\n min-width: 20px;\n background: var(--test-bg);\n border: none;\n}\n\n.test-matrix .spacer-cell {\n background: var(--test-surface);\n}\n\n.test-matrix .run-header:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-header-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.run-date {\n font-size: 12px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.run-pass-rate {\n font-size: 11px;\n font-weight: 700;\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n.run-pass-rate.high {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.run-pass-rate.medium {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.run-pass-rate.low {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.run-tags {\n display: flex;\n gap: 4px;\n}\n\n.tag-tiny {\n font-size: 9px;\n padding: 2px 6px;\n background: #eff6ff;\n color: var(--test-primary);\n border-radius: 8px;\n white-space: nowrap;\n max-width: 60px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Matrix column header tags - emphasized */\n.run-tags-header {\n display: flex;\n flex-wrap: wrap;\n gap: 3px;\n justify-content: center;\n margin-bottom: 4px;\n}\n\n.tag-chip-header {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 70px;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-more-header {\n font-size: 9px;\n color: var(--test-text-secondary);\n padding: 2px 4px;\n}\n\n.test-matrix .test-name-cell {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-surface);\n z-index: 2;\n border-right: 2px solid var(--test-border);\n padding: 6px 10px !important;\n}\n\n.test-name {\n display: block;\n white-space: nowrap;\n font-weight: 500;\n color: var(--test-text);\n font-size: 12px;\n}\n\n.result-cell {\n position: relative;\n min-width: 120px;\n width: 120px;\n transition: var(--test-transition);\n}\n\n.result-cell.clickable {\n cursor: pointer;\n}\n\n.result-cell.clickable:hover {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 5;\n}\n\n.result-cell i {\n font-size: 14px;\n}\n\n/* Completed cells have neutral white background - pills tell the story */\n.result-cell.cell-passed,\n.result-cell.cell-failed,\n.result-cell.cell-error,\n.result-cell.cell-timeout,\n.result-cell.cell-running,\n.result-cell.cell-pending {\n background: #ffffff;\n color: var(--test-text);\n}\n\n/* Skipped/not-run cells get hatched background */\n.result-cell.cell-skipped {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: var(--test-disabled);\n}\n\n.result-cell.cell-none {\n background: #f8fafc;\n color: var(--test-text-muted);\n}\n\n.cell-score {\n display: block;\n font-size: 10px;\n font-weight: 600;\n margin-top: 2px;\n}\n\n/* Matrix cell evaluation stack - shows multiple eval types horizontally */\n.cell-eval-stack {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n flex-wrap: nowrap;\n}\n\n.result-cell.multi-eval {\n min-width: 120px;\n width: auto;\n}\n\n/* Add timeout status icon */\n.cell-status.status-timeout {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-status.status-failed {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-status.status-error {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-status.status-skipped {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-status.status-pending {\n background: #f3e8ff;\n color: #7c3aed;\n}\n\n.cell-human {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background: #fef3c7;\n color: #d97706;\n font-size: 10px;\n}\n\n.cell-auto {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-auto.high {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-auto.medium {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-auto.low {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-none-indicator {\n color: var(--test-text-muted);\n opacity: 0.5;\n}\n\n.matrix-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.matrix-info i {\n color: var(--test-primary);\n}\n\n/* ===========================\n Chart View\n =========================== */\n.chart-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.chart-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: 16px;\n border-bottom: 1px solid var(--test-border);\n}\n\n.chart-header h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.chart-header h3 i {\n color: var(--test-primary);\n}\n\n.chart-legend {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.chart-legend .legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.chart-legend .legend-item.chart-passed {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.chart-legend .legend-item.chart-failed {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.chart-legend .legend-item.chart-error {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.chart-legend .legend-item.chart-skipped {\n background: #f1f5f9;\n color: var(--test-disabled);\n}\n\n.chart-container {\n min-height: 500px;\n position: relative;\n overflow: hidden;\n background: linear-gradient(135deg, #fafbff 0%, #f8fafc 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.d3-chart {\n width: 100%;\n height: 500px;\n}\n\n.d3-chart svg {\n width: 100%;\n height: 100%;\n}\n\n/* D3 Chart Node Styles */\n.d3-chart .node {\n cursor: pointer;\n transition: transform 0.2s ease;\n}\n\n.d3-chart .node:hover {\n transform: scale(1.05);\n}\n\n.d3-chart .node-label {\n font-size: 11px;\n font-weight: 500;\n fill: var(--test-text);\n pointer-events: none;\n}\n\n.d3-chart .link {\n fill: none;\n stroke-opacity: 0.4;\n transition: stroke-opacity 0.2s ease;\n}\n\n.d3-chart .link:hover {\n stroke-opacity: 0.8;\n}\n\n.d3-chart .tooltip {\n position: absolute;\n padding: 10px 14px;\n background: rgba(30, 41, 59, 0.95);\n color: white;\n border-radius: 8px;\n font-size: 12px;\n pointer-events: none;\n z-index: 100;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n max-width: 250px;\n}\n\n.d3-chart .tooltip-title {\n font-weight: 600;\n margin-bottom: 4px;\n}\n\n.d3-chart .tooltip-value {\n opacity: 0.8;\n}\n\n.chart-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n margin-top: 16px;\n}\n\n.chart-info i {\n color: var(--test-primary);\n}\n\n/* ===========================\n Compare Tab\n =========================== */\n.compare-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n.compare-selection {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n gap: 24px;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.compare-run-selector {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-run-selector h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.run-selector-list {\n max-height: 200px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.run-selector-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.run-selector-item:hover {\n border-color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-selector-item.selected {\n border-color: var(--test-primary);\n background: #eff6ff;\n}\n\n.run-selector-item.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.selector-status {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.selector-content {\n flex: 1;\n min-width: 0;\n}\n\n.selector-date {\n font-size: 12px;\n font-weight: 500;\n color: var(--test-text);\n}\n\n.selector-rate {\n font-size: 11px;\n color: var(--test-text-secondary);\n}\n\n.selector-tags {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.selected-run-preview {\n padding: 12px;\n background: #f8fafc;\n border-radius: var(--test-radius-sm);\n border: 1px solid var(--test-border);\n}\n\n.preview-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.preview-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n}\n\n.clear-btn {\n padding: 4px 8px;\n border: none;\n background: transparent;\n color: var(--test-error);\n font-size: 11px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.clear-btn:hover { text-decoration: underline; }\n\n.preview-details {\n display: flex;\n justify-content: space-between;\n font-size: 12px;\n color: var(--test-text);\n}\n\n.preview-rate {\n font-weight: 600;\n color: var(--test-success);\n}\n\n.compare-vs {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--test-bg);\n border-radius: 50%;\n color: var(--test-text-muted);\n font-size: 16px;\n align-self: center;\n margin-top: 60px;\n}\n\n/* Compare Results */\n.compare-results {\n animation: fadeIn 0.3s ease-out;\n}\n\n.compare-summary {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.compare-summary-card {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n text-align: center;\n}\n\n.compare-summary-card .summary-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n margin-bottom: 8px;\n}\n\n.compare-summary-card .summary-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.compare-summary-card .summary-value.positive { color: var(--test-success); }\n.compare-summary-card .summary-value.negative { color: var(--test-error); }\n\n.compare-summary-card.improved {\n border-left: 4px solid var(--test-success);\n}\n\n.compare-summary-card.improved .summary-value { color: var(--test-success); }\n\n.compare-summary-card.regressed {\n border-left: 4px solid var(--test-error);\n}\n\n.compare-summary-card.regressed .summary-value { color: var(--test-error); }\n\n/* Compare Table */\n.compare-table-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-table-section h3 {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.compare-table-section h3 i {\n color: var(--test-primary);\n}\n\n.compare-table-wrapper {\n overflow-x: auto;\n}\n\n.compare-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.compare-table th {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.compare-table td {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.compare-table tbody tr.improved {\n background: rgba(16, 185, 129, 0.05);\n}\n\n.compare-table tbody tr.regressed {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.test-name-cell {\n font-weight: 500;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.positive { color: var(--test-success); }\n.negative { color: var(--test-error); }\n.muted { color: var(--test-text-muted); }\n\n.change-indicator {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.change-indicator.improved {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.change-indicator.regressed {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.change-indicator.unchanged {\n background: #f1f5f9;\n color: var(--test-text-muted);\n}\n\n/* Compare Empty State */\n.compare-empty {\n text-align: center;\n padding: 60px 24px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-top: 24px;\n}\n\n.compare-empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin: 0 auto 20px;\n}\n\n.compare-empty-icon i {\n font-size: 32px;\n color: var(--test-text-muted);\n}\n\n.compare-empty h4 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.compare-empty p {\n margin: 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 400px;\n margin: 0 auto;\n}\n\n/* Small empty state variant */\n.empty-state.small {\n padding: 32px 16px;\n}\n\n.empty-state.small p {\n margin: 0;\n}\n\n/* ===========================\n Responsive Analytics/Compare\n =========================== */\n@media (max-width: 1024px) {\n .compare-selection {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .compare-vs {\n margin: 0;\n align-self: center;\n justify-self: center;\n }\n\n .analytics-kpis {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .filter-buttons {\n flex-direction: column;\n }\n\n .filter-btn {\n width: 100%;\n text-align: center;\n }\n\n .analytics-kpis {\n grid-template-columns: 1fr;\n }\n\n .kpi-card {\n padding: 16px;\n }\n\n .kpi-value {\n font-size: 20px;\n }\n\n .compare-summary {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .analytics-table-wrapper,\n .compare-table-wrapper {\n margin: 0 -20px;\n padding: 0 20px;\n }\n\n .run-selector-list {\n max-height: 150px;\n }\n}\n\n@media (max-width: 480px) {\n .compare-summary {\n grid-template-columns: 1fr;\n }\n\n .compare-summary-card .summary-value {\n font-size: 20px;\n }\n\n .analytics-table th,\n .analytics-table td,\n .compare-table th,\n .compare-table td {\n padding: 10px 12px;\n font-size: 12px;\n }\n}\n\n/* ===========================\n Matrix Evaluation Indicators\n =========================== */\n\n/* Human Feedback Indicators */\n.cell-human {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-human.no-feedback {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-human.no-feedback i {\n font-size: 11px;\n}\n\n.cell-human.has-feedback {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-human.has-feedback i {\n font-size: 9px;\n}\n\n.cell-human.has-feedback .rating-value {\n font-weight: 700;\n font-size: 11px;\n}\n\n/* Human rating color coding: red \u22644, yellow 5-6, light-green 7-8, green 9-10 */\n.cell-human.rating-low {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-human.rating-medium {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-human.rating-good {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-human.rating-excellent {\n background: #dcfce7;\n color: #16a34a;\n}\n\n/* Auto Score Indicators */\n.cell-auto {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-auto.no-score {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-auto.no-score i {\n font-size: 11px;\n}\n\n.cell-auto.has-score {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-auto.has-score i {\n font-size: 9px;\n}\n\n.cell-auto.has-score .score-value {\n font-weight: 700;\n font-size: 10px;\n}\n\n/* Auto score color coding (0-100%): red <50, yellow 50-69, light-green 70-84, green 85+ */\n.cell-auto.score-low {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-auto.score-medium {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-auto.score-good {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-auto.score-excellent {\n background: #dcfce7;\n color: #16a34a;\n}\n\n/* Status indicators in matrix cells */\n.cell-status {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed {\n background: #dcfce7;\n color: #16a34a;\n}\n\n.cell-status.status-failed {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-status.status-error {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-timeout {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-skipped,\n.cell-status.status-pending {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running {\n background: #dbeafe;\n color: #2563eb;\n}\n\n/* Not-run / Skipped cells with hatch pattern */\n.result-cell.cell-not-run {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: #94a3b8;\n}\n\n.result-cell.cell-not-run .cell-eval-stack {\n opacity: 0.6;\n}\n\n.cell-not-run-indicator {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n color: #94a3b8;\n font-size: 11px;\n}\n\n/* ===========================\n Matrix Totals Footer Row\n =========================== */\n.test-matrix tfoot {\n position: sticky;\n bottom: 0;\n z-index: 2;\n}\n\n.totals-row {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n border-top: 2px solid var(--test-border);\n}\n\n.totals-row td {\n padding: 10px 12px;\n font-weight: 600;\n}\n\n.totals-row .totals-label {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n font-size: 12px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.totals-row .totals-cell {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n}\n\n.totals-stack {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.totals-status,\n.totals-human,\n.totals-auto {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 10px;\n white-space: nowrap;\n}\n\n.totals-status {\n background: #e0f2fe;\n color: #0369a1;\n}\n\n.totals-status .pass-count {\n font-weight: 700;\n}\n\n.totals-human {\n background: #fef3c7;\n color: #92400e;\n}\n\n.totals-human .avg-label {\n font-weight: 700;\n}\n\n.totals-human .count-label {\n font-size: 10px;\n opacity: 0.8;\n}\n\n.totals-auto {\n background: #dbeafe;\n color: #1e40af;\n}\n\n.totals-auto .avg-label {\n font-weight: 700;\n}\n\n.totals-auto .count-label {\n font-size: 10px;\n opacity: 0.8;\n}\n"] }]
3458
- }], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.TestingDialogService }, { type: i3.EvaluationPreferencesService }, { type: i0.ViewContainerRef }], { chartContainer: [{
3505
+ args: [{ standalone: false, selector: 'mj-test-suite-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"test-suite-form\" kendoDialogContainer>\n <!-- Header Section -->\n <div class=\"suite-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 class=\"current\">\n <i class=\"fas fa-chevron-right separator\"></i>\n <i class=\"fas fa-layer-group\"></i>\n <span>{{ record.Name }}</span>\n </li>\n </ol>\n </nav>\n\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"suite-icon\" [style.background-color]=\"getStatusColor()\">\n <i class=\"fas fa-layer-group\"></i>\n </div>\n <div class=\"suite-info\">\n <h1>{{ record.Name }}</h1>\n <div class=\"suite-meta\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass()\">\n <i class=\"fas\" [ngClass]=\"record.Status === 'Active' ? 'fa-circle-check' : 'fa-circle-pause'\"></i>\n {{ record.Status }}\n </span>\n @if (testsLoaded) {\n <span class=\"test-count\">\n <i class=\"fas fa-flask\"></i>\n {{ suiteTests.length }} tests\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-actions\">\n <app-evaluation-mode-toggle></app-evaluation-mode-toggle>\n <button kendoButton (click)=\"exportToExcel()\" title=\"Export to CSV\">\n <i class=\"fas fa-file-excel\"></i> Export\n </button>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> 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 @if (record.Description) {\n <div class=\"suite-description\">\n <p>{{ record.Description }}</p>\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 === 'tests'\"\n (click)=\"changeTab('tests')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'tests'\">\n <i class=\"fas fa-flask\"></i> Tests\n @if (testsLoaded) {\n <span class=\"tab-badge\">{{ suiteTests.length }}</span>\n }\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-history\"></i> Runs\n @if (runsLoaded) {\n <span class=\"tab-badge\">{{ suiteRuns.length }}</span>\n }\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 <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 'compare'\"\n (click)=\"changeTab('compare')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === 'compare'\">\n <i class=\"fas fa-balance-scale\"></i> Compare\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 <div class=\"info-section\">\n <h3><i class=\"fas fa-info-circle\"></i> Suite Information</h3>\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <div class=\"info-label\">Name</div>\n <div class=\"info-value\">{{ record.Name }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Status</div>\n <div class=\"info-value\">\n <span class=\"status-badge-inline\" [ngClass]=\"getStatusClass()\">{{ record.Status }}</span>\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Created</div>\n <div class=\"info-value\">{{ record.__mj_CreatedAt | date:'medium' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Updated</div>\n <div class=\"info-value\">{{ record.__mj_UpdatedAt | date:'medium' }}</div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-label\">Max Execution Time</div>\n <div class=\"info-value\">{{ formatTimeout(record.MaxExecutionTimeMS) }}</div>\n </div>\n </div>\n </div>\n <div class=\"config-section\">\n <h3><i class=\"fas fa-cogs\"></i> Execution Settings</h3>\n <div class=\"config-grid\">\n <div class=\"config-item\">\n <label>Max Execution Time (ms)</label>\n <input type=\"number\" [(ngModel)]=\"record.MaxExecutionTimeMS\" class=\"config-input\" placeholder=\"Default: 300000 (5 min)\" />\n <span class=\"config-hint\">Default timeout for tests in this suite</span>\n </div>\n </div>\n </div>\n </div>\n }\n\n <!-- Tests Tab -->\n @if (activeTab === 'tests') {\n <div class=\"tests-tab\">\n <!-- Loading State -->\n @if (loadingTests) {\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 <!-- Tests List -->\n @if (!loadingTests && suiteTests.length > 0) {\n <div class=\"tests-list\">\n @for (test of suiteTests; track test) {\n <div class=\"test-item\" (click)=\"openTest(test.TestID)\">\n <div class=\"test-sequence\">{{ test.Sequence }}</div>\n <div class=\"test-icon\"><i class=\"fas fa-flask\"></i></div>\n <div class=\"test-content\">\n <div class=\"test-name\">{{ test.Test }}</div>\n <div class=\"test-status\">\n @if (test.Status) {\n <span><i class=\"fas fa-info-circle\"></i> {{ test.Status }}</span>\n }\n </div>\n </div>\n <i class=\"fas fa-chevron-right\"></i>\n </div>\n }\n </div>\n }\n <!-- Empty State -->\n @if (testsLoaded && !loadingTests && suiteTests.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-flask\"></i>\n </div>\n <h4>No Tests in Suite</h4>\n <p>Add tests to this suite to start running them together.</p>\n </div>\n }\n </div>\n }\n\n <!-- Runs Tab -->\n @if (activeTab === 'runs') {\n <div class=\"runs-tab\">\n <!-- Loading State -->\n @if (loadingRuns) {\n <div class=\"loading-state\">\n <div class=\"skeleton-list\">\n @for (i of [1,2,3]; track i) {\n <div class=\"skeleton-card\">\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 <!-- Runs List -->\n @if (!loadingRuns && suiteRuns.length > 0) {\n <div class=\"runs-list\">\n @for (run of suiteRuns; track run) {\n <div class=\"run-item\" (click)=\"openSuiteRun(run.ID)\">\n <div class=\"run-icon\" [style.background-color]=\"getRunStatusColor(run.Status)\">\n <i class=\"fas\"\n [class.fa-check]=\"run.Status === 'Completed'\"\n [class.fa-times]=\"run.Status === 'Failed'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"\n [class.fa-ban]=\"run.Status === 'Cancelled'\"></i>\n </div>\n <div class=\"run-content\">\n <div class=\"run-header\">\n <span class=\"run-id\">Run #{{ run.ID.substring(0, 8) }}</span>\n <span class=\"run-status\" [style.color]=\"getRunStatusColor(run.Status)\">{{ run.Status }}</span>\n </div>\n <div class=\"run-meta\">\n <span><i class=\"fas fa-calendar\"></i> {{ getRelativeTime(run.StartedAt) }}</span>\n @if (run.TotalTests) {\n <span>\n <i class=\"fas fa-check-circle\"></i> {{ run.PassedTests }}/{{ run.TotalTests }}\n ({{ getPassRate(run).toFixed(0) }}%)\n </span>\n }\n </div>\n <!-- Evaluation metrics row -->\n <div class=\"run-eval-metrics\">\n <!-- Status badge -->\n @if (evalPreferences.showExecution) {\n <span class=\"eval-metric status\" [class]=\"'status-' + run.Status.toLowerCase()\">\n <i class=\"fas\"\n [class.fa-circle-check]=\"run.Status === 'Completed'\"\n [class.fa-circle-xmark]=\"run.Status === 'Failed'\"\n [class.fa-spinner]=\"run.Status === 'Running'\"\n [class.fa-clock]=\"run.Status === 'Pending'\"\n [class.fa-ban]=\"run.Status === 'Cancelled'\"></i>\n </span>\n }\n <!-- Human score (placeholder - need avg from suite run) -->\n @if (evalPreferences.showHuman) {\n <span class=\"eval-metric human\" title=\"Human evaluation\">\n <i class=\"fas fa-user\"></i>\n <span class=\"eval-pending\"><i class=\"fas fa-clock\"></i></span>\n </span>\n }\n <!-- Auto score (pass rate as proxy) -->\n @if (evalPreferences.showAuto && run.TotalTests) {\n <span class=\"eval-metric auto\"\n [class.high]=\"getPassRate(run) >= 80\"\n [class.medium]=\"getPassRate(run) >= 50 && getPassRate(run) < 80\"\n [class.low]=\"getPassRate(run) < 50\"\n title=\"Auto score (pass rate)\">\n <i class=\"fas fa-robot\"></i>\n <span>{{ getPassRate(run).toFixed(0) }}%</span>\n </span>\n }\n </div>\n <!-- Tags display -->\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 <i class=\"fas fa-chevron-right\"></i>\n </div>\n }\n </div>\n }\n <!-- Empty State -->\n @if (runsLoaded && !loadingRuns && suiteRuns.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-play-circle\"></i>\n </div>\n <h4>No Suite Runs Yet</h4>\n <p>Run this suite to see execution history and results here.</p>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite Now\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Analytics Tab -->\n @if (activeTab === 'analytics') {\n <div class=\"analytics-tab\">\n <!-- Loading State -->\n @if (loadingAnalytics) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading analytics data...\"></mj-loading>\n </div>\n }\n @if (!loadingAnalytics && analyticsLoaded) {\n <!-- View Toggle Sub-nav -->\n <div class=\"analytics-subnav\">\n <div class=\"subnav-tabs\">\n <button class=\"subnav-tab\"\n [class.active]=\"analyticsView === 'summary'\"\n (click)=\"setAnalyticsView('summary')\">\n <i class=\"fas fa-chart-bar\"></i>\n <span>Summary</span>\n </button>\n <button class=\"subnav-tab\"\n [class.active]=\"analyticsView === 'matrix'\"\n (click)=\"setAnalyticsView('matrix')\">\n <i class=\"fas fa-th\"></i>\n <span>Matrix</span>\n </button>\n <button class=\"subnav-tab\"\n [class.active]=\"analyticsView === 'chart'\"\n (click)=\"setAnalyticsView('chart')\">\n <i class=\"fas fa-project-diagram\"></i>\n <span>Chart</span>\n </button>\n </div>\n </div>\n <!-- Collapsible Filters (shared by both views) -->\n <div class=\"analytics-filters\" [class.collapsed]=\"filtersCollapsed\">\n <div class=\"filters-header\" (click)=\"toggleFilters()\">\n <span class=\"filters-title\">\n <i class=\"fas fa-filter\"></i>\n Filters\n @if (filtersCollapsed) {\n <span class=\"filter-summary\">\n {{ analyticsTimeRange === 'all' ? 'All Time' : analyticsTimeRange }}\n @if (selectedTags.length > 0) {\n <span> \u00B7 {{ selectedTags.length }} tags</span>\n }\n </span>\n }\n </span>\n <i class=\"fas\" [ngClass]=\"filtersCollapsed ? 'fa-chevron-down' : 'fa-chevron-up'\"></i>\n </div>\n @if (!filtersCollapsed) {\n <div class=\"filters-content\">\n <div class=\"filter-group\">\n <label>Time Range</label>\n <div class=\"filter-buttons\">\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === '7d'\" (click)=\"setTimeRange('7d')\">7 Days</button>\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === '30d'\" (click)=\"setTimeRange('30d')\">30 Days</button>\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === '90d'\" (click)=\"setTimeRange('90d')\">90 Days</button>\n <button class=\"filter-btn\" [class.active]=\"analyticsTimeRange === 'all'\" (click)=\"setTimeRange('all')\">All Time</button>\n </div>\n </div>\n @if (uniqueTags.length > 0) {\n <div class=\"filter-group\">\n <label>Filter by Tag @if (selectedTags.length > 0) {\n <span class=\"filter-hint\">({{ selectedTags.length }} selected)</span>\n }</label>\n <div class=\"filter-buttons tag-filters\">\n <button class=\"filter-btn tag-btn all-tags-btn\"\n [class.active]=\"selectedTags.length === 0\"\n (click)=\"toggleTagFilter(null)\">\n <i class=\"fas fa-layer-group\"></i> All Tags\n </button>\n @for (tag of uniqueTags; track tag) {\n <button class=\"filter-btn tag-btn\"\n [class.active]=\"isTagSelected(tag)\"\n (click)=\"toggleTagFilter(tag)\">\n @if (isTagSelected(tag)) {\n <i class=\"fas fa-check\"></i>\n }\n {{ tag }}\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n <!-- Summary View -->\n @if (analyticsView === 'summary') {\n <!-- KPI Cards -->\n <div class=\"analytics-kpis\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\"><i class=\"fas fa-play-circle\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ getTotalRuns() }}</div>\n <div class=\"kpi-label\">Total Runs</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon success\"><i class=\"fas fa-check-circle\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ getAveragePassRate().toFixed(1) }}%</div>\n <div class=\"kpi-label\">Avg Pass Rate</div>\n <div class=\"kpi-trend\" [ngClass]=\"{'trend-up': getPassRateTrend().direction === 'up', 'trend-down': getPassRateTrend().direction === 'down'}\">\n <i class=\"fas\" [ngClass]=\"{'fa-arrow-up': getPassRateTrend().direction === 'up', 'fa-arrow-down': getPassRateTrend().direction === 'down', 'fa-minus': getPassRateTrend().direction === 'stable'}\"></i>\n {{ getPassRateTrend().value.toFixed(1) }}%\n </div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon info\"><i class=\"fas fa-clock\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ formatDuration(getAverageDuration()) }}</div>\n <div class=\"kpi-label\">Avg Duration</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon warning\"><i class=\"fas fa-dollar-sign\"></i></div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{ formatCost(getTotalCost()) }}</div>\n <div class=\"kpi-label\">Total Cost</div>\n </div>\n </div>\n </div>\n <!-- Runs Table -->\n <div class=\"analytics-table-section\">\n <h3><i class=\"fas fa-table\"></i> Run History</h3>\n <div class=\"analytics-table-wrapper\">\n <table class=\"analytics-table\">\n <thead>\n <tr>\n <th>Date</th>\n <th>Status</th>\n <th>Pass Rate</th>\n <th>Tests</th>\n <th>Duration</th>\n <th>Cost</th>\n <th>Tags</th>\n </tr>\n </thead>\n <tbody>\n @for (dp of getFilteredAnalyticsData(); track dp) {\n <tr (click)=\"openSuiteRun(dp.runId)\" class=\"clickable-row\">\n <td>{{ dp.date | date:'short' }}</td>\n <td>\n <span class=\"status-chip\" [ngClass]=\"'status-' + dp.status.toLowerCase()\">{{ dp.status }}</span>\n </td>\n <td>\n <div class=\"pass-rate-cell\">\n <div class=\"pass-rate-bar\" [style.width.%]=\"dp.passRate\" [ngClass]=\"{'high': dp.passRate >= 80, 'medium': dp.passRate >= 50 && dp.passRate < 80, 'low': dp.passRate < 50}\"></div>\n <span>{{ dp.passRate.toFixed(0) }}%</span>\n </div>\n </td>\n <td>{{ dp.passedTests }}/{{ dp.totalTests }}</td>\n <td>{{ formatDuration(dp.duration) }}</td>\n <td>{{ formatCost(dp.cost) }}</td>\n <td>\n <div class=\"tag-cell\">\n @for (tag of dp.tags.slice(0, 2); track tag) {\n <span class=\"tag-chip-table\">{{ tag }}</span>\n }\n @if (dp.tags.length > 2) {\n <span class=\"tag-more\">+{{ dp.tags.length - 2 }}</span>\n }\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n @if (getFilteredAnalyticsData().length === 0) {\n <div class=\"empty-state small\">\n <p>No runs match the current filters.</p>\n </div>\n }\n </div>\n }\n <!-- Matrix View -->\n @if (analyticsView === 'matrix') {\n <!-- Loading Matrix -->\n @if (loadingMatrix) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading test matrix...\"></mj-loading>\n </div>\n }\n <!-- Matrix Content -->\n @if (!loadingMatrix && matrixLoaded && matrixData.length > 0) {\n <div class=\"matrix-section\">\n <div class=\"matrix-header\">\n <h3><i class=\"fas fa-th\"></i> Test Results Matrix</h3>\n <div class=\"matrix-header-right\">\n <div class=\"matrix-filter-input\">\n <i class=\"fas fa-search\"></i>\n <input type=\"text\"\n placeholder=\"Filter tests...\"\n [value]=\"matrixTestFilter\"\n (input)=\"onMatrixFilterInput($event)\"\n class=\"filter-input\">\n @if (matrixTestFilter) {\n <button class=\"clear-filter-btn\" (click)=\"clearMatrixFilter()\" title=\"Clear filter\">\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n <span class=\"matrix-run-count\">{{ matrixData.length }} runs \u00B7 {{ getUniqueTestsFromMatrix().length }} tests</span>\n <button kendoButton (click)=\"exportMatrixToCSV()\" [disabled]=\"matrixData.length === 0\" title=\"Export matrix to CSV\">\n <i class=\"fas fa-download\"></i> Export\n </button>\n </div>\n </div>\n <div class=\"matrix-scroll-container\">\n <table class=\"test-matrix\">\n <thead>\n <tr>\n <th class=\"seq-header\" (click)=\"toggleMatrixSort('sequence')\" title=\"Sort by sequence\">\n #\n <i class=\"fas\" [ngClass]=\"matrixSortBy === 'sequence' ? (matrixSortAsc ? 'fa-sort-up' : 'fa-sort-down') : 'fa-sort'\"></i>\n </th>\n <th class=\"test-name-header\" (click)=\"toggleMatrixSort('name')\" title=\"Sort by name\">\n Test\n <i class=\"fas\" [ngClass]=\"matrixSortBy === 'name' ? (matrixSortAsc ? 'fa-sort-up' : 'fa-sort-down') : 'fa-sort'\"></i>\n </th>\n @for (run of matrixData; track run) {\n <th class=\"run-header\" (click)=\"openSuiteRun(run.runId)\" [title]=\"'Click to view suite run - ' + (run.date | date:'medium')\">\n <div class=\"run-header-content\">\n @if (run.tags.length > 0) {\n <div class=\"run-tags-header\">\n @for (tag of run.tags.slice(0, 2); track tag) {\n <span class=\"tag-chip-header\">{{ tag }}</span>\n }\n @if (run.tags.length > 2) {\n <span class=\"tag-more-header\">+{{ run.tags.length - 2 }}</span>\n }\n </div>\n }\n <div class=\"run-date\">{{ getRelativeTime(run.date) }}</div>\n <div class=\"run-pass-rate\" [ngClass]=\"{'high': run.passRate >= 80, 'medium': run.passRate >= 50 && run.passRate < 80, 'low': run.passRate < 50}\">\n {{ run.passRate.toFixed(0) }}%\n </div>\n </div>\n </th>\n }\n <th class=\"spacer-header\"></th>\n </tr>\n </thead>\n <tbody>\n @for (test of getUniqueTestsFromMatrix(); track test) {\n <tr\n [class.row-selected]=\"selectedMatrixTestId === test.testId\"\n (click)=\"selectMatrixRow(test.testId)\">\n <td class=\"seq-cell\">{{ test.sequence }}</td>\n <td class=\"test-name-cell\">\n <span class=\"test-name\" [title]=\"test.testName\">{{ test.testName }}</span>\n </td>\n @for (run of matrixData; track run) {\n <td class=\"result-cell\"\n [ngClass]=\"getMatrixCellClass(getTestResultForRun(run.runId, test.testId))\"\n [class.clickable]=\"getTestResultForRun(run.runId, test.testId)\"\n [class.cell-not-run]=\"!getTestResultForRun(run.runId, test.testId)\"\n [title]=\"getTestResultForRun(run.runId, test.testId)?.status + ' - Click to view test run' || 'Not Run'\"\n (click)=\"onMatrixCellClick(getTestResultForRun(run.runId, test.testId), $event)\">\n @if (getTestResultForRun(run.runId, test.testId); as result) {\n <div class=\"cell-eval-stack\">\n <!-- Status indicator -->\n @if (evalPreferences.showExecution) {\n <span class=\"cell-status\"\n [ngClass]=\"'status-' + result.status.toLowerCase()\"\n [class.cell-skipped-status]=\"result.status === 'Skipped' || result.status === 'Pending'\"\n [title]=\"getStatusTooltip(result.status)\">\n <i class=\"fas\"\n [class.fa-check]=\"result.status === 'Passed'\"\n [class.fa-times]=\"result.status === 'Failed'\"\n [class.fa-exclamation]=\"result.status === 'Error'\"\n [class.fa-hourglass-end]=\"result.status === 'Timeout'\"\n [class.fa-forward]=\"result.status === 'Skipped'\"\n [class.fa-spinner]=\"result.status === 'Running'\"\n [class.fa-clock]=\"result.status === 'Pending'\"></i>\n </span>\n }\n <!-- Human score - slashed icon if no feedback, colored by rating if has feedback -->\n @if (evalPreferences.showHuman && !result.humanRating) {\n <span class=\"cell-human no-feedback\"\n title=\"Human Review: No rating submitted yet\">\n <i class=\"fas fa-user-slash\"></i>\n </span>\n }\n @if (evalPreferences.showHuman && result.humanRating) {\n <span class=\"cell-human has-feedback\"\n [class.rating-low]=\"result.humanRating <= 4\"\n [class.rating-medium]=\"result.humanRating >= 5 && result.humanRating <= 6\"\n [class.rating-good]=\"result.humanRating >= 7 && result.humanRating <= 8\"\n [class.rating-excellent]=\"result.humanRating >= 9\"\n [title]=\"getHumanTooltip(result.humanRating, result.humanComments)\">\n <i class=\"fas fa-user\"></i>\n <span class=\"rating-value\">{{ result.humanRating }}</span>\n </span>\n }\n <!-- Auto score - colored by percentage -->\n @if (evalPreferences.showAuto && result.score != null) {\n <span class=\"cell-auto has-score\"\n [class.score-low]=\"result.score < 0.5\"\n [class.score-medium]=\"result.score >= 0.5 && result.score < 0.7\"\n [class.score-good]=\"result.score >= 0.7 && result.score < 0.85\"\n [class.score-excellent]=\"result.score >= 0.85\"\n [title]=\"'Auto Score: ' + (result.score * 100).toFixed(0) + '% automated evaluation'\">\n <i class=\"fas fa-robot\"></i>\n <span class=\"score-value\">{{ (result.score * 100).toFixed(0) }}</span>\n </span>\n }\n @if (evalPreferences.showAuto && result.score == null) {\n <span class=\"cell-auto no-score\"\n title=\"Auto Score: No automated score available\">\n <i class=\"fas fa-robot\"></i>\n </span>\n }\n </div>\n }\n @if (!getTestResultForRun(run.runId, test.testId)) {\n <span class=\"cell-not-run-indicator\">\n <i class=\"fas fa-minus\"></i>\n </span>\n }\n </td>\n }\n <td class=\"spacer-cell\"></td>\n </tr>\n }\n </tbody>\n <!-- Footer row with totals -->\n <tfoot>\n <tr class=\"totals-row\">\n <td class=\"seq-cell totals-label\"></td>\n <td class=\"test-name-cell totals-label\">\n <strong>Totals</strong>\n </td>\n @for (run of matrixData; track run) {\n <td class=\"result-cell totals-cell\">\n <div class=\"cell-eval-stack totals-stack\">\n <!-- Status totals -->\n @if (evalPreferences.showExecution) {\n <span class=\"totals-status\">\n <span class=\"pass-count\">{{ getRunPassedCount(run) }}/{{ getRunTotalCount(run) }}</span>\n </span>\n }\n <!-- Human totals -->\n @if (evalPreferences.showHuman) {\n <span class=\"totals-human\">\n @if (getRunHumanAvg(run) != null) {\n <span class=\"avg-label\">{{ getRunHumanAvg(run)?.toFixed(1) }}</span>\n }\n <span class=\"count-label\">({{ getRunHumanCount(run) }})</span>\n </span>\n }\n <!-- Auto totals -->\n @if (evalPreferences.showAuto) {\n <span class=\"totals-auto\">\n @if (getRunAutoAvg(run) != null) {\n <span class=\"avg-label\">{{ (getRunAutoAvg(run)! * 100).toFixed(0) }}%</span>\n }\n <span class=\"count-label\">({{ getRunAutoCount(run) }})</span>\n </span>\n }\n </div>\n </td>\n }\n <td class=\"spacer-cell\"></td>\n </tr>\n </tfoot>\n </table>\n </div>\n </div>\n }\n <!-- Empty Matrix State -->\n @if (!loadingMatrix && matrixLoaded && matrixData.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-th\"></i>\n </div>\n <h4>No Matrix Data</h4>\n <p>No suite runs match the current filters.</p>\n </div>\n }\n }\n <!-- Chart View -->\n @if (analyticsView === 'chart') {\n <!-- Loading Chart -->\n @if (loadingMatrix) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading chart data...\"></mj-loading>\n </div>\n }\n <!-- Chart Content -->\n @if (!loadingMatrix && matrixLoaded && matrixData.length > 0) {\n <div class=\"chart-section\">\n <div class=\"chart-header\">\n <h3><i class=\"fas fa-project-diagram\"></i> Test Results Flow</h3>\n <div class=\"chart-legend\">\n <span class=\"legend-item chart-passed\"><i class=\"fas fa-check\"></i> Passed</span>\n <span class=\"legend-item chart-failed\"><i class=\"fas fa-times\"></i> Failed</span>\n <span class=\"legend-item chart-error\"><i class=\"fas fa-exclamation\"></i> Error</span>\n <span class=\"legend-item chart-skipped\"><i class=\"fas fa-forward\"></i> Skipped</span>\n </div>\n </div>\n <div class=\"chart-container\">\n <div #chartContainer class=\"d3-chart\"></div>\n </div>\n <div class=\"chart-info\">\n <i class=\"fas fa-info-circle\"></i>\n Interactive visualization showing test results across {{ matrixData.length }} runs.\n Hover over elements for details, click nodes to navigate.\n </div>\n </div>\n }\n <!-- Empty Chart State -->\n @if (!loadingMatrix && matrixLoaded && matrixData.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-project-diagram\"></i>\n </div>\n <h4>No Chart Data</h4>\n <p>No suite runs match the current filters.</p>\n </div>\n }\n }\n }\n <!-- Empty State -->\n @if (!loadingAnalytics && analyticsLoaded && analyticsData.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-chart-line\"></i>\n </div>\n <h4>No Analytics Data</h4>\n <p>Run this suite to start collecting analytics data.</p>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite Now\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Compare Tab -->\n @if (activeTab === 'compare') {\n <div class=\"compare-tab\">\n <!-- Run Selection -->\n <div class=\"compare-selection\">\n <div class=\"compare-run-selector\">\n <h4>Run A (Baseline)</h4>\n @if (!loadingRuns && suiteRuns.length > 0) {\n <div class=\"run-selector-list\">\n @for (run of suiteRuns; track run) {\n <div class=\"run-selector-item\"\n [class.selected]=\"compareRunA?.ID === run.ID\"\n (click)=\"selectCompareRunA(run)\">\n <div class=\"selector-status\" [style.background-color]=\"getRunStatusColor(run.Status)\"></div>\n <div class=\"selector-content\">\n <div class=\"selector-date\">{{ run.StartedAt | date:'short' }}</div>\n <div class=\"selector-rate\">{{ getPassRate(run).toFixed(0) }}% pass</div>\n </div>\n @if (getRunTags(run).length > 0) {\n <div class=\"selector-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 }\n </div>\n }\n @if (compareRunA) {\n <div class=\"selected-run-preview\">\n <div class=\"preview-header\">\n <span class=\"preview-label\">Selected:</span>\n <button class=\"clear-btn\" (click)=\"compareRunA = null; compareResults = []\">Clear</button>\n </div>\n <div class=\"preview-details\">\n <span>{{ compareRunA.StartedAt | date:'medium' }}</span>\n <span class=\"preview-rate\">{{ getPassRate(compareRunA).toFixed(1) }}%</span>\n </div>\n </div>\n }\n </div>\n <div class=\"compare-vs\"><i class=\"fas fa-exchange-alt\"></i></div>\n <div class=\"compare-run-selector\">\n <h4>Run B (Compare)</h4>\n @if (!loadingRuns && suiteRuns.length > 0) {\n <div class=\"run-selector-list\">\n @for (run of suiteRuns; track run) {\n <div class=\"run-selector-item\"\n [class.selected]=\"compareRunB?.ID === run.ID\"\n [class.disabled]=\"compareRunA?.ID === run.ID\"\n (click)=\"compareRunA?.ID !== run.ID && selectCompareRunB(run)\">\n <div class=\"selector-status\" [style.background-color]=\"getRunStatusColor(run.Status)\"></div>\n <div class=\"selector-content\">\n <div class=\"selector-date\">{{ run.StartedAt | date:'short' }}</div>\n <div class=\"selector-rate\">{{ getPassRate(run).toFixed(0) }}% pass</div>\n </div>\n @if (getRunTags(run).length > 0) {\n <div class=\"selector-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 }\n </div>\n }\n @if (compareRunB) {\n <div class=\"selected-run-preview\">\n <div class=\"preview-header\">\n <span class=\"preview-label\">Selected:</span>\n <button class=\"clear-btn\" (click)=\"compareRunB = null; compareResults = []\">Clear</button>\n </div>\n <div class=\"preview-details\">\n <span>{{ compareRunB.StartedAt | date:'medium' }}</span>\n <span class=\"preview-rate\">{{ getPassRate(compareRunB).toFixed(1) }}%</span>\n </div>\n </div>\n }\n </div>\n </div>\n <!-- Comparison Results -->\n @if (compareRunA && compareRunB && !loadingCompare) {\n <div class=\"compare-results\">\n <!-- Summary Cards -->\n <div class=\"compare-summary\">\n <div class=\"compare-summary-card\">\n <div class=\"summary-label\">Pass Rate Change</div>\n <div class=\"summary-value\" [ngClass]=\"{'positive': getComparePassRateDiff()! > 0, 'negative': getComparePassRateDiff()! < 0}\">\n <i class=\"fas\" [ngClass]=\"{'fa-arrow-up': getComparePassRateDiff()! > 0, 'fa-arrow-down': getComparePassRateDiff()! < 0, 'fa-minus': getComparePassRateDiff() === 0}\"></i>\n {{ getComparePassRateDiff()! > 0 ? '+' : '' }}{{ getComparePassRateDiff()?.toFixed(1) }}%\n </div>\n </div>\n <div class=\"compare-summary-card\">\n <div class=\"summary-label\">Duration Change</div>\n <div class=\"summary-value\" [ngClass]=\"{'positive': getCompareDurationDiff()! < 0, 'negative': getCompareDurationDiff()! > 0}\">\n <i class=\"fas\" [ngClass]=\"{'fa-arrow-down': getCompareDurationDiff()! < 0, 'fa-arrow-up': getCompareDurationDiff()! > 0, 'fa-minus': getCompareDurationDiff() === 0}\"></i>\n {{ formatDuration(getAbsCompareDurationDiff()) }}\n </div>\n </div>\n <div class=\"compare-summary-card improved\">\n <div class=\"summary-label\">Improved</div>\n <div class=\"summary-value\">{{ getCompareImprovedCount() }}</div>\n </div>\n <div class=\"compare-summary-card regressed\">\n <div class=\"summary-label\">Regressed</div>\n <div class=\"summary-value\">{{ getCompareRegressedCount() }}</div>\n </div>\n </div>\n <!-- Detailed Comparison Table -->\n <div class=\"compare-table-section\">\n <h3><i class=\"fas fa-list\"></i> Test-by-Test Comparison</h3>\n <div class=\"compare-table-wrapper\">\n <table class=\"compare-table\">\n <thead>\n <tr>\n <th>Test</th>\n <th>Run A Status</th>\n <th>Run B Status</th>\n <th>Score Diff</th>\n <th>Duration Diff</th>\n <th>Change</th>\n </tr>\n </thead>\n <tbody>\n @for (result of compareResults; track result) {\n <tr [ngClass]=\"{'improved': result.runA && result.runB && result.runA.status !== 'Passed' && result.runB.status === 'Passed', 'regressed': result.runA && result.runB && result.runA.status === 'Passed' && result.runB.status !== 'Passed'}\">\n <td class=\"test-name-cell\">{{ result.testName }}</td>\n <td>\n @if (result.runA) {\n <span class=\"status-chip\" [ngClass]=\"'status-' + result.runA.status.toLowerCase()\">{{ result.runA.status }}</span>\n }\n @if (!result.runA) {\n <span class=\"status-chip status-missing\">N/A</span>\n }\n </td>\n <td>\n @if (result.runB) {\n <span class=\"status-chip\" [ngClass]=\"'status-' + result.runB.status.toLowerCase()\">{{ result.runB.status }}</span>\n }\n @if (!result.runB) {\n <span class=\"status-chip status-missing\">N/A</span>\n }\n </td>\n <td>\n @if (result.scoreDiff != null) {\n <span [ngClass]=\"{'positive': result.scoreDiff > 0, 'negative': result.scoreDiff < 0}\">\n {{ result.scoreDiff > 0 ? '+' : '' }}{{ (result.scoreDiff * 100).toFixed(1) }}%\n </span>\n }\n @if (result.scoreDiff == null) {\n <span class=\"muted\">-</span>\n }\n </td>\n <td>\n @if (result.durationDiff != null) {\n <span [ngClass]=\"{'positive': result.durationDiff < 0, 'negative': result.durationDiff > 0}\">\n {{ result.durationDiff > 0 ? '+' : '' }}{{ result.durationDiff.toFixed(1) }}s\n </span>\n }\n @if (result.durationDiff == null) {\n <span class=\"muted\">-</span>\n }\n </td>\n <td>\n @if (result.runA && result.runB && result.runA.status !== 'Passed' && result.runB.status === 'Passed') {\n <span class=\"change-indicator improved\">\n <i class=\"fas fa-arrow-up\"></i> Fixed\n </span>\n }\n @if (result.runA && result.runB && result.runA.status === 'Passed' && result.runB.status !== 'Passed') {\n <span class=\"change-indicator regressed\">\n <i class=\"fas fa-arrow-down\"></i> Broke\n </span>\n }\n @if (!result.statusChanged) {\n <span class=\"change-indicator unchanged\">\n <i class=\"fas fa-minus\"></i>\n </span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n </div>\n }\n <!-- Loading State for Compare -->\n @if (loadingCompare) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading comparison data...\"></mj-loading>\n </div>\n }\n <!-- Empty State -->\n @if (!compareRunA || !compareRunB) {\n <div class=\"compare-empty\">\n <div class=\"compare-empty-icon\">\n <i class=\"fas fa-balance-scale\"></i>\n </div>\n <h4>Select Two Runs to Compare</h4>\n <p>Choose a baseline run (A) and a comparison run (B) from the lists above to see a detailed side-by-side comparison.</p>\n </div>\n }\n <!-- No Runs State -->\n @if (runsLoaded && suiteRuns.length < 2) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fas fa-balance-scale\"></i>\n </div>\n <h4>Not Enough Runs to Compare</h4>\n <p>You need at least 2 suite runs to use the comparison feature.</p>\n <button kendoButton (click)=\"runSuite()\" themeColor=\"primary\">\n <i class=\"fas fa-play\"></i> Run Suite Now\n </button>\n </div>\n }\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>Run Suite</span>\n <span class=\"shortcut-keys\"><kbd>Cmd</kbd><kbd>Enter</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 Form - World-Class UX\n =========================== */\n\n/* CSS Custom Properties for Theming - using :host for Angular encapsulation */\n:host {\n --test-primary: #2563eb;\n --test-primary-light: #3b82f6;\n --test-success: #10b981;\n --test-error: #ef4444;\n --test-warning: #f59e0b;\n --test-disabled: #6b7280;\n --test-bg: #f8fafc;\n --test-surface: #ffffff;\n --test-border: #e2e8f0;\n --test-text: #1e293b;\n --test-text-secondary: #64748b;\n --test-text-muted: #94a3b8;\n --test-radius-sm: 6px;\n --test-radius-md: 10px;\n --test-radius-lg: 16px;\n --test-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --test-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --test-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n --test-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n display: block;\n height: 100%;\n}\n\n.test-suite-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--test-bg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\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(--test-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(37, 99, 235, 0.1);\n text-decoration: none;\n}\n\n.breadcrumb .separator {\n font-size: 10px;\n color: var(--test-text-muted);\n margin: 0 4px;\n}\n\n.breadcrumb .current {\n color: var(--test-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 */\n.suite-header {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n padding: 20px;\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n gap: 16px;\n}\n\n.header-left {\n display: flex;\n gap: 16px;\n flex: 1;\n min-width: 0;\n}\n\n.suite-icon {\n width: 56px;\n height: 56px;\n border-radius: var(--test-radius-md);\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(--test-shadow-md);\n transition: var(--test-transition);\n}\n\n.suite-icon:hover { transform: scale(1.05); }\n\n.suite-info { flex: 1; min-width: 0; }\n\n.suite-info h1 {\n margin: 0 0 8px 0;\n font-size: clamp(18px, 4vw, 24px);\n font-weight: 700;\n color: var(--test-text);\n word-wrap: break-word;\n}\n\n.suite-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.status-active { background: linear-gradient(135deg, var(--test-success) 0%, #059669 100%); }\n.status-badge.status-disabled { background: linear-gradient(135deg, var(--test-disabled) 0%, #4b5563 100%); }\n.status-badge.status-pending { background: linear-gradient(135deg, var(--test-warning) 0%, #d97706 100%); }\n\n.status-badge-inline {\n display: inline-flex;\n padding: 2px 10px;\n border-radius: 10px;\n color: white;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-badge-inline.status-active { background: var(--test-success); }\n.status-badge-inline.status-disabled { background: var(--test-disabled); }\n.status-badge-inline.status-pending { background: var(--test-warning); }\n\n.test-count {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 14px;\n color: var(--test-text-secondary);\n padding: 4px 10px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.suite-description {\n padding: 16px;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.suite-description p {\n margin: 0;\n color: var(--test-text-secondary);\n line-height: 1.6;\n font-size: 14px;\n}\n\n/* Tabs */\n.tabs-container {\n background: var(--test-surface);\n border-bottom: 1px solid var(--test-border);\n position: sticky;\n top: 0;\n z-index: 10;\n}\n\n.tabs {\n display: flex;\n padding: 0 20px;\n overflow-x: auto;\n scrollbar-width: none;\n}\n\n.tabs::-webkit-scrollbar { display: none; }\n\n.tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 18px;\n border: none;\n background: transparent;\n border-bottom: 3px solid transparent;\n color: var(--test-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n white-space: nowrap;\n}\n\n.tab:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.tab.active {\n color: var(--test-primary);\n border-bottom-color: var(--test-primary);\n font-weight: 600;\n}\n\n.tab-badge {\n background: var(--test-border);\n color: var(--test-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: rgba(37, 99, 235, 0.15);\n color: var(--test-primary);\n}\n\n.tab-shortcut {\n font-size: 10px;\n color: var(--test-text-muted);\n background: var(--test-bg);\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\n}\n\n/* Tab Content */\n.tab-content {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* Overview Tab */\n.overview-tab {\n display: flex;\n flex-direction: column;\n gap: 20px;\n animation: fadeIn 0.3s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.info-section, .config-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.info-section h3, .config-section h3 {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.info-section h3 i, .config-section h3 i {\n color: var(--test-primary);\n}\n\n.info-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n}\n\n.info-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.info-label {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.info-value {\n font-size: 14px;\n color: var(--test-text);\n font-weight: 500;\n}\n\n.config-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n}\n\n.config-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.config-item label {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.config-input {\n padding: 10px 14px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.config-input:focus {\n outline: none;\n border-color: var(--test-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.config-hint {\n font-size: 11px;\n color: var(--test-text-muted);\n}\n\n/* Tests Tab */\n.tests-tab, .runs-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n.loading-state { padding: 0; }\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: 14px;\n padding: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.skeleton-sequence {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n}\n\n.skeleton-icon {\n width: 40px;\n height: 40px;\n border-radius: var(--test-radius-md);\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\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 border-radius: 4px;\n background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s infinite;\n}\n\n.skeleton-line.wide { width: 70%; }\n.skeleton-line.narrow { width: 40%; }\n\n@keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n.tests-list, .runs-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.test-item, .run-item {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 16px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.test-item:hover, .run-item:hover {\n background: rgba(37, 99, 235, 0.05);\n border-color: var(--test-primary-light);\n transform: translateX(4px);\n}\n\n.test-sequence {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n font-size: 14px;\n font-weight: 700;\n color: var(--test-text-secondary);\n flex-shrink: 0;\n}\n\n.test-icon, .run-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--test-radius-md);\n color: white;\n font-size: 18px;\n flex-shrink: 0;\n box-shadow: var(--test-shadow-sm);\n}\n\n.test-icon {\n background: linear-gradient(135deg, var(--test-primary) 0%, #1d4ed8 100%);\n}\n\n.test-content, .run-content { flex: 1; min-width: 0; }\n\n.test-name, .run-header {\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n margin-bottom: 4px;\n}\n\n.run-header {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.run-id { font-weight: 600; }\n\n.run-status {\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.test-status, .run-meta {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--test-text-secondary);\n}\n\n.test-status span, .run-meta span {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.test-item > i, .run-item > i {\n color: var(--test-text-muted);\n font-size: 14px;\n transition: var(--test-transition);\n}\n\n.test-item:hover > i, .run-item:hover > i {\n color: var(--test-primary);\n transform: translateX(2px);\n}\n\n/* Empty States */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\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(--test-bg);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 36px;\n color: var(--test-text-muted);\n}\n\n.empty-state h4 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.empty-state p {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 300px;\n}\n\n/* Keyboard Shortcuts */\n/* Keyboard shortcuts 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(--test-surface);\n border: 1px solid var(--test-border);\n box-shadow: var(--test-shadow-md);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--test-text-secondary);\n font-size: 14px;\n z-index: 99;\n transition: var(--test-transition);\n opacity: 0.7;\n}\n\n.shortcuts-toggle:hover {\n opacity: 1;\n transform: scale(1.1);\n color: var(--test-primary);\n border-color: var(--test-primary);\n}\n\n.keyboard-shortcuts {\n position: fixed;\n bottom: 20px;\n right: 20px;\n background: var(--test-surface);\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-md);\n padding: 12px 16px;\n box-shadow: var(--test-shadow-lg);\n font-size: 12px;\n z-index: 100;\n max-width: 260px;\n}\n\n.shortcuts-header {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 10px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text);\n}\n\n.shortcuts-close {\n margin-left: auto;\n background: none;\n border: none;\n cursor: pointer;\n color: var(--test-text-muted);\n font-size: 12px;\n padding: 2px 4px;\n border-radius: 4px;\n transition: var(--test-transition);\n}\n\n.shortcuts-close:hover {\n color: var(--test-text);\n background: var(--test-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 color: var(--test-text-secondary);\n}\n\n.shortcut-keys {\n display: flex;\n gap: 4px;\n}\n\n.shortcut-keys kbd {\n background: var(--test-bg);\n border: 1px solid var(--test-border);\n border-radius: 4px;\n padding: 2px 6px;\n font-size: 11px;\n color: var(--test-text);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .keyboard-shortcuts, .shortcuts-toggle { display: none; }\n}\n\n@media (max-width: 768px) {\n .suite-header { padding: 16px; }\n\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-actions {\n width: 100%;\n justify-content: stretch;\n }\n\n .header-actions button { flex: 1; }\n\n .tab-shortcut { display: none; }\n\n .info-grid { grid-template-columns: 1fr; }\n\n .test-item, .run-item { padding: 14px; }\n}\n\n@media (max-width: 480px) {\n .suite-icon {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n\n .suite-info h1 { font-size: 16px; }\n\n .tab-badge { display: none; }\n\n .test-sequence { display: none; }\n}\n\n@media (hover: none) and (pointer: coarse) {\n .test-item:active, .run-item:active {\n background: rgba(37, 99, 235, 0.1);\n transform: scale(0.98);\n }\n\n .tab { min-height: 48px; }\n .test-item, .run-item { min-height: 64px; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n@media print {\n .header-actions, .tabs-container, .keyboard-shortcuts {\n display: none !important;\n }\n}\n\n/* ===========================\n Tags UI\n =========================== */\n.run-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\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.tag-mini {\n display: inline-flex;\n align-items: center;\n padding: 2px 6px;\n background: #f1f5f9;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 500;\n color: #64748b;\n}\n\n.tag-more {\n font-size: 10px;\n color: #94a3b8;\n font-weight: 500;\n}\n\n/* Evaluation metrics row for Runs list */\n.run-eval-metrics {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n}\n\n.eval-metric {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.eval-metric.status {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.eval-metric.status.status-completed {\n background: #dcfce7;\n color: #166534;\n}\n\n.eval-metric.status.status-failed {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.eval-metric.status.status-running {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.eval-metric.status.status-pending {\n background: #fef3c7;\n color: #92400e;\n}\n\n.eval-metric.human {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #f59e0b;\n color: #92400e;\n}\n\n.eval-metric.human .eval-pending {\n font-size: 9px;\n color: #d97706;\n}\n\n.eval-metric.auto {\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n}\n\n.eval-metric.auto.high {\n background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%);\n border: 1px solid #86efac;\n color: #166534;\n}\n\n.eval-metric.auto.medium {\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border: 1px solid #fcd34d;\n color: #92400e;\n}\n\n.eval-metric.auto.low {\n background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);\n border: 1px solid #fca5a5;\n color: #991b1b;\n}\n\n.tag-cell {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.tag-chip-table {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ===========================\n Analytics Tab\n =========================== */\n.analytics-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n/* Collapsible filters */\n.analytics-filters {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-bottom: 16px;\n box-shadow: var(--test-shadow-sm);\n overflow: hidden;\n}\n\n.analytics-filters.collapsed {\n margin-bottom: 12px;\n}\n\n.filters-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n}\n\n.filters-header:hover {\n background: var(--test-bg);\n}\n\n.filters-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--test-text-secondary);\n}\n\n.filters-title i {\n color: var(--test-primary);\n}\n\n.filter-summary {\n font-weight: 400;\n color: var(--test-text-muted);\n margin-left: 8px;\n}\n\n.filters-header > i {\n color: var(--test-text-muted);\n font-size: 12px;\n}\n\n.filters-content {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 12px 16px 16px 16px;\n border-top: 1px solid var(--test-border);\n}\n\n.filter-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.filter-group label {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--test-text-muted);\n}\n\n.filter-buttons {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.filter-btn {\n padding: 8px 16px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n background: var(--test-surface);\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.filter-btn:hover {\n border-color: var(--test-primary);\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.filter-btn.active {\n background: var(--test-primary);\n border-color: var(--test-primary);\n color: white;\n}\n\n.filter-btn.tag-btn {\n padding: 6px 12px;\n font-size: 12px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn.tag-btn i.fa-check {\n font-size: 10px;\n}\n\n.filter-btn.tag-btn.all-tags-btn {\n font-weight: 600;\n}\n\n.filter-btn.tag-btn.all-tags-btn i {\n font-size: 11px;\n}\n\n.filter-hint {\n font-weight: 400;\n font-size: 10px;\n color: var(--test-primary);\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-filters {\n max-height: 120px;\n overflow-y: auto;\n}\n\n/* KPI Cards */\n.analytics-kpis {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n gap: 16px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n transition: var(--test-transition);\n}\n\n.kpi-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--test-shadow-md);\n}\n\n.kpi-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #eff6ff;\n border-radius: var(--test-radius-md);\n color: var(--test-primary);\n font-size: 20px;\n}\n\n.kpi-icon.success {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-icon.info {\n background: #f0f9ff;\n color: #0ea5e9;\n}\n\n.kpi-icon.warning {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.kpi-content {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n line-height: 1.2;\n}\n\n.kpi-label {\n font-size: 12px;\n color: var(--test-text-secondary);\n margin-top: 2px;\n}\n\n.kpi-trend {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 600;\n margin-top: 4px;\n padding: 2px 8px;\n border-radius: 10px;\n background: #f1f5f9;\n color: var(--test-text-secondary);\n}\n\n.kpi-trend.trend-up {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.kpi-trend.trend-down {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n/* Analytics Table */\n.analytics-table-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.analytics-table-section h3 {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.analytics-table-section h3 i {\n color: var(--test-primary);\n}\n\n.analytics-table-wrapper {\n overflow-x: auto;\n margin: 0 -24px;\n padding: 0 24px;\n}\n\n.analytics-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.analytics-table th {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.analytics-table td {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.analytics-table tbody tr.clickable-row {\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.analytics-table tbody tr.clickable-row:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.status-chip {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-chip.status-completed { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-passed { background: #ecfdf5; color: var(--test-success); }\n.status-chip.status-failed { background: #fef2f2; color: var(--test-error); }\n.status-chip.status-error { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-running { background: #eff6ff; color: var(--test-primary); }\n.status-chip.status-pending { background: #f5f3ff; color: #8b5cf6; }\n.status-chip.status-cancelled { background: #f1f5f9; color: var(--test-disabled); }\n.status-chip.status-missing { background: #f1f5f9; color: var(--test-text-muted); }\n.status-chip.status-timeout { background: #fffbeb; color: var(--test-warning); }\n.status-chip.status-skipped { background: #f1f5f9; color: var(--test-disabled); }\n\n.pass-rate-cell {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 100px;\n}\n\n.pass-rate-bar {\n height: 6px;\n border-radius: 3px;\n background: var(--test-success);\n transition: width 0.3s ease;\n max-width: 60px;\n}\n\n.pass-rate-bar.medium { background: var(--test-warning); }\n.pass-rate-bar.low { background: var(--test-error); }\n\n/* Analytics Sub-navigation */\n.analytics-subnav {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 8px;\n margin-bottom: 20px;\n box-shadow: var(--test-shadow-sm);\n display: inline-flex;\n}\n\n.subnav-tabs {\n display: flex;\n gap: 4px;\n background: var(--test-bg);\n border-radius: var(--test-radius-md);\n padding: 4px;\n}\n\n.subnav-tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n border: none;\n border-radius: var(--test-radius-sm);\n background: transparent;\n color: var(--test-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.subnav-tab:hover {\n color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.subnav-tab.active {\n background: var(--test-surface);\n color: var(--test-primary);\n box-shadow: var(--test-shadow-sm);\n}\n\n.subnav-tab i {\n font-size: 14px;\n}\n\n/* Matrix View */\n.matrix-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 16px;\n box-shadow: var(--test-shadow-sm);\n display: flex;\n flex-direction: column;\n max-height: calc(100vh - 280px);\n min-height: 300px;\n}\n\n.matrix-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 12px;\n margin-bottom: 12px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--test-border);\n flex-shrink: 0;\n}\n\n.matrix-header-right {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.matrix-header h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.matrix-header h3 i {\n color: var(--test-primary);\n}\n\n.matrix-run-count {\n font-size: 12px;\n color: var(--test-text-muted);\n font-weight: 500;\n}\n\n/* Matrix filter input */\n.matrix-filter-input {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #f8fafc;\n border: 1px solid var(--test-border);\n border-radius: 6px;\n padding: 4px 10px;\n min-width: 180px;\n}\n\n.matrix-filter-input i.fa-search {\n color: #94a3b8;\n font-size: 12px;\n}\n\n.matrix-filter-input .filter-input {\n border: none;\n background: transparent;\n outline: none;\n font-size: 12px;\n color: var(--test-text);\n width: 100%;\n}\n\n.matrix-filter-input .filter-input::placeholder {\n color: #94a3b8;\n}\n\n.clear-filter-btn {\n border: none;\n background: none;\n padding: 2px 4px;\n cursor: pointer;\n color: #94a3b8;\n font-size: 10px;\n border-radius: 3px;\n transition: all 0.15s ease;\n}\n\n.clear-filter-btn:hover {\n background: #e2e8f0;\n color: #64748b;\n}\n\n/* Scrollable matrix container with fixed height */\n.matrix-scroll-container {\n flex: 1;\n overflow: auto;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n}\n\n.test-matrix {\n display: table;\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.test-matrix thead {\n display: table-header-group;\n}\n\n.test-matrix thead tr {\n display: table-row;\n}\n\n.test-matrix tbody {\n display: table-row-group;\n}\n\n.test-matrix tbody tr {\n display: table-row;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.test-matrix tbody tr:hover {\n background-color: rgba(59, 130, 246, 0.05);\n}\n\n.test-matrix tbody tr.row-selected {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix tbody tr.row-selected td {\n border-top: 1px solid rgba(59, 130, 246, 0.3);\n border-bottom: 1px solid rgba(59, 130, 246, 0.3);\n}\n\n.test-matrix tbody tr.row-selected .seq-cell,\n.test-matrix tbody tr.row-selected .test-name-cell {\n background-color: rgba(59, 130, 246, 0.12) !important;\n}\n\n.test-matrix tfoot {\n display: table-footer-group;\n}\n\n.test-matrix th,\n.test-matrix td {\n display: table-cell;\n border: 1px solid var(--test-border);\n padding: 8px 12px;\n text-align: center;\n vertical-align: middle;\n}\n\n.test-matrix th {\n background: var(--test-bg);\n font-weight: 600;\n font-size: 11px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n z-index: 10;\n border-bottom: 3px solid #475569 !important;\n}\n\n/* Sequence column - shared styles */\n.test-matrix .seq-header,\n.test-matrix .seq-cell {\n width: 36px;\n min-width: 36px;\n max-width: 36px;\n text-align: center;\n position: sticky;\n left: 0;\n font-size: 11px;\n color: #64748b;\n border-right: 1px solid var(--test-border);\n padding: 6px 4px !important;\n}\n\n/* Seq header - sticky top AND left, highest z-index */\n.test-matrix .seq-header {\n cursor: pointer;\n font-weight: 600;\n background: var(--test-bg);\n z-index: 12; /* Higher than other headers */\n top: 0;\n}\n\n/* Seq body cells - sticky left only, lower z-index */\n.test-matrix .seq-cell {\n background: var(--test-surface);\n z-index: 2;\n}\n\n.test-matrix .seq-header i {\n font-size: 9px;\n margin-left: 2px;\n opacity: 0.6;\n}\n\n.test-matrix .seq-header:hover {\n background: #f1f5f9;\n}\n\n.test-matrix .test-name-header {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-bg);\n z-index: 11;\n border-right: 2px solid var(--test-border);\n cursor: pointer;\n}\n\n.test-matrix .test-name-header i {\n font-size: 9px;\n margin-left: 4px;\n opacity: 0.6;\n}\n\n.test-matrix .test-name-header:hover {\n background: #f1f5f9;\n}\n\n.test-matrix .run-header {\n min-width: 120px;\n width: 120px;\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n/* Spacer column absorbs extra width */\n.test-matrix .spacer-header,\n.test-matrix .spacer-cell {\n width: 100%;\n min-width: 20px;\n background: var(--test-bg);\n border: none;\n}\n\n.test-matrix .spacer-cell {\n background: var(--test-surface);\n}\n\n.test-matrix .run-header:hover {\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-header-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.run-date {\n font-size: 12px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.run-pass-rate {\n font-size: 11px;\n font-weight: 700;\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n.run-pass-rate.high {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.run-pass-rate.medium {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.run-pass-rate.low {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.run-tags {\n display: flex;\n gap: 4px;\n}\n\n.tag-tiny {\n font-size: 9px;\n padding: 2px 6px;\n background: #eff6ff;\n color: var(--test-primary);\n border-radius: 8px;\n white-space: nowrap;\n max-width: 60px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Matrix column header tags - emphasized */\n.run-tags-header {\n display: flex;\n flex-wrap: wrap;\n gap: 3px;\n justify-content: center;\n margin-bottom: 4px;\n}\n\n.tag-chip-header {\n display: inline-block;\n padding: 3px 8px;\n background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);\n border: 1px solid #93c5fd;\n color: #1d4ed8;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n white-space: nowrap;\n max-width: 70px;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: none;\n letter-spacing: normal;\n}\n\n.tag-more-header {\n font-size: 9px;\n color: var(--test-text-secondary);\n padding: 2px 4px;\n}\n\n.test-matrix .test-name-cell {\n text-align: left;\n min-width: 150px;\n max-width: 500px;\n width: auto;\n position: sticky;\n left: 36px;\n background: var(--test-surface);\n z-index: 2;\n border-right: 2px solid var(--test-border);\n padding: 6px 10px !important;\n}\n\n.test-name {\n display: block;\n white-space: nowrap;\n font-weight: 500;\n color: var(--test-text);\n font-size: 12px;\n}\n\n.result-cell {\n position: relative;\n min-width: 120px;\n width: 120px;\n transition: var(--test-transition);\n}\n\n.result-cell.clickable {\n cursor: pointer;\n}\n\n.result-cell.clickable:hover {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 5;\n}\n\n.result-cell i {\n font-size: 14px;\n}\n\n/* Completed cells have neutral white background - pills tell the story */\n.result-cell.cell-passed,\n.result-cell.cell-failed,\n.result-cell.cell-error,\n.result-cell.cell-timeout,\n.result-cell.cell-running,\n.result-cell.cell-pending {\n background: #ffffff;\n color: var(--test-text);\n}\n\n/* Skipped/not-run cells get hatched background */\n.result-cell.cell-skipped {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: var(--test-disabled);\n}\n\n.result-cell.cell-none {\n background: #f8fafc;\n color: var(--test-text-muted);\n}\n\n.cell-score {\n display: block;\n font-size: 10px;\n font-weight: 600;\n margin-top: 2px;\n}\n\n/* Matrix cell evaluation stack - shows multiple eval types horizontally */\n.cell-eval-stack {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n flex-wrap: nowrap;\n}\n\n.result-cell.multi-eval {\n min-width: 120px;\n width: auto;\n}\n\n/* Add timeout status icon */\n.cell-status.status-timeout {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-status.status-failed {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-status.status-error {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-status.status-skipped {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-status.status-pending {\n background: #f3e8ff;\n color: #7c3aed;\n}\n\n.cell-human {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background: #fef3c7;\n color: #d97706;\n font-size: 10px;\n}\n\n.cell-auto {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.cell-auto.high {\n background: #dcfce7;\n color: #166534;\n}\n\n.cell-auto.medium {\n background: #fef3c7;\n color: #92400e;\n}\n\n.cell-auto.low {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.cell-none-indicator {\n color: var(--test-text-muted);\n opacity: 0.5;\n}\n\n.matrix-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n}\n\n.matrix-info i {\n color: var(--test-primary);\n}\n\n/* ===========================\n Chart View\n =========================== */\n.chart-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.chart-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: 16px;\n border-bottom: 1px solid var(--test-border);\n}\n\n.chart-header h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.chart-header h3 i {\n color: var(--test-primary);\n}\n\n.chart-legend {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.chart-legend .legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.chart-legend .legend-item.chart-passed {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.chart-legend .legend-item.chart-failed {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.chart-legend .legend-item.chart-error {\n background: #fffbeb;\n color: var(--test-warning);\n}\n\n.chart-legend .legend-item.chart-skipped {\n background: #f1f5f9;\n color: var(--test-disabled);\n}\n\n.chart-container {\n min-height: 500px;\n position: relative;\n overflow: hidden;\n background: linear-gradient(135deg, #fafbff 0%, #f8fafc 100%);\n border-radius: var(--test-radius-md);\n border: 1px solid var(--test-border);\n}\n\n.d3-chart {\n width: 100%;\n height: 500px;\n}\n\n.d3-chart svg {\n width: 100%;\n height: 100%;\n}\n\n/* D3 Chart Node Styles */\n.d3-chart .node {\n cursor: pointer;\n transition: transform 0.2s ease;\n}\n\n.d3-chart .node:hover {\n transform: scale(1.05);\n}\n\n.d3-chart .node-label {\n font-size: 11px;\n font-weight: 500;\n fill: var(--test-text);\n pointer-events: none;\n}\n\n.d3-chart .link {\n fill: none;\n stroke-opacity: 0.4;\n transition: stroke-opacity 0.2s ease;\n}\n\n.d3-chart .link:hover {\n stroke-opacity: 0.8;\n}\n\n.d3-chart .tooltip {\n position: absolute;\n padding: 10px 14px;\n background: rgba(30, 41, 59, 0.95);\n color: white;\n border-radius: 8px;\n font-size: 12px;\n pointer-events: none;\n z-index: 100;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n max-width: 250px;\n}\n\n.d3-chart .tooltip-title {\n font-weight: 600;\n margin-bottom: 4px;\n}\n\n.d3-chart .tooltip-value {\n opacity: 0.8;\n}\n\n.chart-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: var(--test-text-muted);\n padding: 12px;\n background: var(--test-bg);\n border-radius: var(--test-radius-sm);\n margin-top: 16px;\n}\n\n.chart-info i {\n color: var(--test-primary);\n}\n\n/* ===========================\n Compare Tab\n =========================== */\n.compare-tab {\n animation: fadeIn 0.3s ease-out;\n}\n\n.compare-selection {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n gap: 24px;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.compare-run-selector {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-run-selector h4 {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.run-selector-list {\n max-height: 200px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.run-selector-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border: 1px solid var(--test-border);\n border-radius: var(--test-radius-sm);\n cursor: pointer;\n transition: var(--test-transition);\n}\n\n.run-selector-item:hover {\n border-color: var(--test-primary);\n background: rgba(37, 99, 235, 0.05);\n}\n\n.run-selector-item.selected {\n border-color: var(--test-primary);\n background: #eff6ff;\n}\n\n.run-selector-item.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.selector-status {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.selector-content {\n flex: 1;\n min-width: 0;\n}\n\n.selector-date {\n font-size: 12px;\n font-weight: 500;\n color: var(--test-text);\n}\n\n.selector-rate {\n font-size: 11px;\n color: var(--test-text-secondary);\n}\n\n.selector-tags {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.selected-run-preview {\n padding: 12px;\n background: #f8fafc;\n border-radius: var(--test-radius-sm);\n border: 1px solid var(--test-border);\n}\n\n.preview-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.preview-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n}\n\n.clear-btn {\n padding: 4px 8px;\n border: none;\n background: transparent;\n color: var(--test-error);\n font-size: 11px;\n font-weight: 500;\n cursor: pointer;\n}\n\n.clear-btn:hover { text-decoration: underline; }\n\n.preview-details {\n display: flex;\n justify-content: space-between;\n font-size: 12px;\n color: var(--test-text);\n}\n\n.preview-rate {\n font-weight: 600;\n color: var(--test-success);\n}\n\n.compare-vs {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--test-bg);\n border-radius: 50%;\n color: var(--test-text-muted);\n font-size: 16px;\n align-self: center;\n margin-top: 60px;\n}\n\n/* Compare Results */\n.compare-results {\n animation: fadeIn 0.3s ease-out;\n}\n\n.compare-summary {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.compare-summary-card {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 20px;\n box-shadow: var(--test-shadow-sm);\n text-align: center;\n}\n\n.compare-summary-card .summary-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--test-text-muted);\n margin-bottom: 8px;\n}\n\n.compare-summary-card .summary-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--test-text);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.compare-summary-card .summary-value.positive { color: var(--test-success); }\n.compare-summary-card .summary-value.negative { color: var(--test-error); }\n\n.compare-summary-card.improved {\n border-left: 4px solid var(--test-success);\n}\n\n.compare-summary-card.improved .summary-value { color: var(--test-success); }\n\n.compare-summary-card.regressed {\n border-left: 4px solid var(--test-error);\n}\n\n.compare-summary-card.regressed .summary-value { color: var(--test-error); }\n\n/* Compare Table */\n.compare-table-section {\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n padding: 24px;\n box-shadow: var(--test-shadow-sm);\n}\n\n.compare-table-section h3 {\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--test-text);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.compare-table-section h3 i {\n color: var(--test-primary);\n}\n\n.compare-table-wrapper {\n overflow-x: auto;\n}\n\n.compare-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.compare-table th {\n text-align: left;\n padding: 12px 16px;\n background: #f8fafc;\n border-bottom: 2px solid var(--test-border);\n font-weight: 600;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.compare-table td {\n padding: 14px 16px;\n border-bottom: 1px solid var(--test-border);\n color: var(--test-text);\n}\n\n.compare-table tbody tr.improved {\n background: rgba(16, 185, 129, 0.05);\n}\n\n.compare-table tbody tr.regressed {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.test-name-cell {\n font-weight: 500;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.positive { color: var(--test-success); }\n.negative { color: var(--test-error); }\n.muted { color: var(--test-text-muted); }\n\n.change-indicator {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.change-indicator.improved {\n background: #ecfdf5;\n color: var(--test-success);\n}\n\n.change-indicator.regressed {\n background: #fef2f2;\n color: var(--test-error);\n}\n\n.change-indicator.unchanged {\n background: #f1f5f9;\n color: var(--test-text-muted);\n}\n\n/* Compare Empty State */\n.compare-empty {\n text-align: center;\n padding: 60px 24px;\n background: var(--test-surface);\n border-radius: var(--test-radius-lg);\n margin-top: 24px;\n}\n\n.compare-empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--test-bg);\n border-radius: 50%;\n margin: 0 auto 20px;\n}\n\n.compare-empty-icon i {\n font-size: 32px;\n color: var(--test-text-muted);\n}\n\n.compare-empty h4 {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--test-text);\n}\n\n.compare-empty p {\n margin: 0;\n font-size: 14px;\n color: var(--test-text-secondary);\n max-width: 400px;\n margin: 0 auto;\n}\n\n/* Small empty state variant */\n.empty-state.small {\n padding: 32px 16px;\n}\n\n.empty-state.small p {\n margin: 0;\n}\n\n/* ===========================\n Responsive Analytics/Compare\n =========================== */\n@media (max-width: 1024px) {\n .compare-selection {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n .compare-vs {\n margin: 0;\n align-self: center;\n justify-self: center;\n }\n\n .analytics-kpis {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .filter-buttons {\n flex-direction: column;\n }\n\n .filter-btn {\n width: 100%;\n text-align: center;\n }\n\n .analytics-kpis {\n grid-template-columns: 1fr;\n }\n\n .kpi-card {\n padding: 16px;\n }\n\n .kpi-value {\n font-size: 20px;\n }\n\n .compare-summary {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .analytics-table-wrapper,\n .compare-table-wrapper {\n margin: 0 -20px;\n padding: 0 20px;\n }\n\n .run-selector-list {\n max-height: 150px;\n }\n}\n\n@media (max-width: 480px) {\n .compare-summary {\n grid-template-columns: 1fr;\n }\n\n .compare-summary-card .summary-value {\n font-size: 20px;\n }\n\n .analytics-table th,\n .analytics-table td,\n .compare-table th,\n .compare-table td {\n padding: 10px 12px;\n font-size: 12px;\n }\n}\n\n/* ===========================\n Matrix Evaluation Indicators\n =========================== */\n\n/* Human Feedback Indicators */\n.cell-human {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-human.no-feedback {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-human.no-feedback i {\n font-size: 11px;\n}\n\n.cell-human.has-feedback {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-human.has-feedback i {\n font-size: 9px;\n}\n\n.cell-human.has-feedback .rating-value {\n font-weight: 700;\n font-size: 11px;\n}\n\n/* Human rating color coding: red \u22644, yellow 5-6, light-green 7-8, green 9-10 */\n.cell-human.rating-low {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-human.rating-medium {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-human.rating-good {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-human.rating-excellent {\n background: #dcfce7;\n color: #16a34a;\n}\n\n/* Auto Score Indicators */\n.cell-auto {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 10px;\n}\n\n.cell-auto.no-score {\n background: #f1f5f9;\n color: #94a3b8;\n}\n\n.cell-auto.no-score i {\n font-size: 11px;\n}\n\n.cell-auto.has-score {\n padding: 0 6px;\n border-radius: 12px;\n min-width: 36px;\n}\n\n.cell-auto.has-score i {\n font-size: 9px;\n}\n\n.cell-auto.has-score .score-value {\n font-weight: 700;\n font-size: 10px;\n}\n\n/* Auto score color coding (0-100%): red <50, yellow 50-69, light-green 70-84, green 85+ */\n.cell-auto.score-low {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-auto.score-medium {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-auto.score-good {\n background: #d1fae5;\n color: #059669;\n}\n\n.cell-auto.score-excellent {\n background: #dcfce7;\n color: #16a34a;\n}\n\n/* Status indicators in matrix cells */\n.cell-status {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n font-size: 11px;\n}\n\n.cell-status.status-passed {\n background: #dcfce7;\n color: #16a34a;\n}\n\n.cell-status.status-failed {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.cell-status.status-error {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-timeout {\n background: #fef3c7;\n color: #d97706;\n}\n\n.cell-status.status-skipped,\n.cell-status.status-pending {\n background: #f1f5f9;\n color: #64748b;\n}\n\n.cell-status.status-running {\n background: #dbeafe;\n color: #2563eb;\n}\n\n/* Not-run / Skipped cells with hatch pattern */\n.result-cell.cell-not-run {\n background: repeating-linear-gradient(\n 45deg,\n #f8fafc,\n #f8fafc 4px,\n #e2e8f0 4px,\n #e2e8f0 8px\n );\n color: #94a3b8;\n}\n\n.result-cell.cell-not-run .cell-eval-stack {\n opacity: 0.6;\n}\n\n.cell-not-run-indicator {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n color: #94a3b8;\n font-size: 11px;\n}\n\n/* ===========================\n Matrix Totals Footer Row\n =========================== */\n.test-matrix tfoot {\n position: sticky;\n bottom: 0;\n z-index: 2;\n}\n\n.totals-row {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n border-top: 2px solid var(--test-border);\n}\n\n.totals-row td {\n padding: 10px 12px;\n font-weight: 600;\n}\n\n.totals-row .totals-label {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n font-size: 12px;\n color: var(--test-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.totals-row .totals-cell {\n background: linear-gradient(to bottom, #f8fafc, #f1f5f9);\n}\n\n.totals-stack {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.totals-status,\n.totals-human,\n.totals-auto {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 10px;\n white-space: nowrap;\n}\n\n.totals-status {\n background: #e0f2fe;\n color: #0369a1;\n}\n\n.totals-status .pass-count {\n font-weight: 700;\n}\n\n.totals-human {\n background: #fef3c7;\n color: #92400e;\n}\n\n.totals-human .avg-label {\n font-weight: 700;\n}\n\n.totals-human .count-label {\n font-size: 10px;\n opacity: 0.8;\n}\n\n.totals-auto {\n background: #dbeafe;\n color: #1e40af;\n}\n\n.totals-auto .avg-label {\n font-weight: 700;\n}\n\n.totals-auto .count-label {\n font-size: 10px;\n opacity: 0.8;\n}\n"] }]
3506
+ }], () => [{ 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 }], { chartContainer: [{
3459
3507
  type: ViewChild,
3460
3508
  args: ['chartContainer']
3461
3509
  }], handleKeyboardShortcut: [{
3462
3510
  type: HostListener,
3463
3511
  args: ['document:keydown', ['$event']]
3464
3512
  }] }); })();
3465
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestSuiteFormComponentExtended, { className: "TestSuiteFormComponentExtended", filePath: "src/lib/custom/Tests/test-suite-form.component.ts", lineNumber: 30 }); })();
3466
- export function LoadTestSuiteFormComponentExtended() { }
3467
- LoadTestSuiteFormComponentExtended();
3513
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestSuiteFormComponentExtended, { className: "TestSuiteFormComponentExtended", filePath: "src/lib/custom/tests/test-suite-form.component.ts", lineNumber: 32 }); })();
3468
3514
  //# sourceMappingURL=test-suite-form.component.js.map