@memberjunction/ng-core-entity-forms 3.4.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 (1922) 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 +542 -527
  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 +50 -42
  69. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  70. package/dist/lib/custom/Actions/action-param-dialog.component.d.ts +32 -0
  71. package/dist/lib/custom/Actions/action-param-dialog.component.d.ts.map +1 -0
  72. package/dist/lib/custom/Actions/action-param-dialog.component.js +321 -0
  73. package/dist/lib/custom/Actions/action-param-dialog.component.js.map +1 -0
  74. package/dist/lib/custom/Actions/action-result-code-dialog.component.d.ts +20 -0
  75. package/dist/lib/custom/Actions/action-result-code-dialog.component.d.ts.map +1 -0
  76. package/dist/lib/custom/Actions/action-result-code-dialog.component.js +127 -0
  77. package/dist/lib/custom/Actions/action-result-code-dialog.component.js.map +1 -0
  78. package/dist/lib/custom/Actions/action-test-harness-dialog.component.d.ts +15 -0
  79. package/dist/lib/custom/Actions/action-test-harness-dialog.component.d.ts.map +1 -0
  80. package/dist/lib/custom/Actions/action-test-harness-dialog.component.js +96 -0
  81. package/dist/lib/custom/Actions/action-test-harness-dialog.component.js.map +1 -0
  82. package/dist/lib/custom/Actions/action-test-harness.component.d.ts +50 -0
  83. package/dist/lib/custom/Actions/action-test-harness.component.d.ts.map +1 -0
  84. package/dist/lib/custom/Actions/action-test-harness.component.js +710 -0
  85. package/dist/lib/custom/Actions/action-test-harness.component.js.map +1 -0
  86. package/dist/lib/custom/Actions/actions-top-area-extended.d.ts +8 -0
  87. package/dist/lib/custom/Actions/actions-top-area-extended.d.ts.map +1 -0
  88. package/dist/lib/custom/Actions/actions-top-area-extended.js +64 -0
  89. package/dist/lib/custom/Actions/actions-top-area-extended.js.map +1 -0
  90. package/dist/lib/custom/Entities/entities-form.component.d.ts +10 -0
  91. package/dist/lib/custom/Entities/entities-form.component.d.ts.map +1 -0
  92. package/dist/lib/custom/Entities/entities-form.component.js +198 -0
  93. package/dist/lib/custom/Entities/entities-form.component.js.map +1 -0
  94. package/dist/lib/custom/Entities/entity-form.component.d.ts +0 -1
  95. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  96. package/dist/lib/custom/Entities/entity-form.component.js +722 -691
  97. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  98. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +0 -1
  99. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
  100. package/dist/lib/custom/EntityActions/entityaction.form.component.js +24 -27
  101. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  102. package/dist/lib/custom/Lists/list-form.component.d.ts +0 -1
  103. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  104. package/dist/lib/custom/Lists/list-form.component.js +425 -438
  105. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  106. package/dist/lib/custom/Queries/query-category-dialog.component.d.ts.map +1 -1
  107. package/dist/lib/custom/Queries/query-category-dialog.component.js +28 -29
  108. package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
  109. package/dist/lib/custom/Queries/query-form.component.d.ts +0 -1
  110. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  111. package/dist/lib/custom/Queries/query-form.component.js +185 -183
  112. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  113. package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -1
  114. package/dist/lib/custom/Queries/query-run-dialog.component.js +90 -89
  115. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  116. package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
  117. package/dist/lib/custom/Templates/template-param-dialog.component.js +76 -75
  118. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  119. package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
  120. package/dist/lib/custom/Templates/template-params-grid.component.js +98 -93
  121. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
  122. package/dist/lib/custom/Templates/templates-form.component.d.ts +0 -1
  123. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  124. package/dist/lib/custom/Templates/templates-form.component.js +15 -25
  125. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  126. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts +0 -1
  127. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
  128. package/dist/lib/custom/Tests/entity-link-pill.component.js +16 -18
  129. package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
  130. package/dist/lib/custom/Tests/test-form.component.d.ts +0 -1
  131. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  132. package/dist/lib/custom/Tests/test-form.component.js +419 -400
  133. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  134. package/dist/lib/custom/Tests/test-rubric-form.component.d.ts +0 -1
  135. package/dist/lib/custom/Tests/test-rubric-form.component.d.ts.map +1 -1
  136. package/dist/lib/custom/Tests/test-rubric-form.component.js +6 -8
  137. package/dist/lib/custom/Tests/test-rubric-form.component.js.map +1 -1
  138. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +0 -1
  139. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -1
  140. package/dist/lib/custom/Tests/test-run-feedback-form.component.js +17 -17
  141. package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
  142. package/dist/lib/custom/Tests/test-run-form.component.d.ts +0 -1
  143. package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
  144. package/dist/lib/custom/Tests/test-run-form.component.js +405 -390
  145. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  146. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +0 -1
  147. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  148. package/dist/lib/custom/Tests/test-suite-form.component.js +646 -621
  149. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  150. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +0 -1
  151. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
  152. package/dist/lib/custom/Tests/test-suite-run-form.component.js +616 -585
  153. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  154. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
  155. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +240 -243
  156. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  157. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
  158. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +42 -40
  159. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  160. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
  161. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +37 -36
  162. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
  163. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  164. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +68 -78
  165. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  166. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -1
  167. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +6 -6
  168. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
  169. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +0 -1
  170. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  171. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +289 -271
  172. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  173. package/dist/lib/custom/custom-forms.module.d.ts +51 -54
  174. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  175. package/dist/lib/custom/custom-forms.module.js +29 -59
  176. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  177. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  178. package/dist/lib/custom/shared/entity-selector-dialog.component.js +85 -82
  179. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  180. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.d.ts.map +1 -1
  181. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js +17 -18
  182. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js.map +1 -1
  183. package/dist/lib/generated/Entities/AIAction/sections/details.component.d.ts +11 -0
  184. package/dist/lib/generated/Entities/AIAction/sections/details.component.d.ts.map +1 -0
  185. package/dist/lib/generated/Entities/AIAction/sections/details.component.js +127 -0
  186. package/dist/lib/generated/Entities/AIAction/sections/details.component.js.map +1 -0
  187. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.d.ts.map +1 -1
  188. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +137 -138
  189. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
  190. package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.d.ts +54 -0
  191. package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.d.ts.map +1 -0
  192. package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.js +492 -0
  193. package/dist/lib/generated/Entities/AIAgent/sections/aiagent-form-overview.component.js.map +1 -0
  194. package/dist/lib/generated/Entities/AIAgent/sections/details.component.d.ts +11 -0
  195. package/dist/lib/generated/Entities/AIAgent/sections/details.component.d.ts.map +1 -0
  196. package/dist/lib/generated/Entities/AIAgent/sections/details.component.js +576 -0
  197. package/dist/lib/generated/Entities/AIAgent/sections/details.component.js.map +1 -0
  198. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.d.ts.map +1 -1
  199. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js +3 -3
  200. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js.map +1 -1
  201. package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.d.ts +11 -0
  202. package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.d.ts.map +1 -0
  203. package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.js +194 -0
  204. package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.js.map +1 -0
  205. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.d.ts.map +1 -1
  206. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js +3 -3
  207. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js.map +1 -1
  208. package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.d.ts +11 -0
  209. package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.d.ts.map +1 -0
  210. package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.js +120 -0
  211. package/dist/lib/generated/Entities/AIAgentArtifactType/sections/details.component.js.map +1 -0
  212. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.d.ts.map +1 -1
  213. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js +3 -3
  214. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js.map +1 -1
  215. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.d.ts.map +1 -1
  216. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js +3 -3
  217. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js.map +1 -1
  218. package/dist/lib/generated/Entities/AIAgentDataSource/sections/details.component.d.ts +11 -0
  219. package/dist/lib/generated/Entities/AIAgentDataSource/sections/details.component.d.ts.map +1 -0
  220. package/dist/lib/generated/Entities/AIAgentDataSource/sections/details.component.js +253 -0
  221. package/dist/lib/generated/Entities/AIAgentDataSource/sections/details.component.js.map +1 -0
  222. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.d.ts.map +1 -1
  223. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js +3 -3
  224. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js.map +1 -1
  225. package/dist/lib/generated/Entities/AIAgentExample/sections/details.component.d.ts +11 -0
  226. package/dist/lib/generated/Entities/AIAgentExample/sections/details.component.d.ts.map +1 -0
  227. package/dist/lib/generated/Entities/AIAgentExample/sections/details.component.js +265 -0
  228. package/dist/lib/generated/Entities/AIAgentExample/sections/details.component.js.map +1 -0
  229. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.d.ts.map +1 -1
  230. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js +3 -3
  231. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js.map +1 -1
  232. package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.d.ts +11 -0
  233. package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.d.ts.map +1 -0
  234. package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.js +127 -0
  235. package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.js.map +1 -0
  236. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.d.ts.map +1 -1
  237. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js +3 -3
  238. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js.map +1 -1
  239. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.d.ts.map +1 -1
  240. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js +3 -3
  241. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js.map +1 -1
  242. package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.d.ts +11 -0
  243. package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.d.ts.map +1 -0
  244. package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.js +129 -0
  245. package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.js.map +1 -0
  246. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.d.ts.map +1 -1
  247. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js +3 -3
  248. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js.map +1 -1
  249. package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.d.ts +11 -0
  250. package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.d.ts.map +1 -0
  251. package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.js +267 -0
  252. package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.js.map +1 -0
  253. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.d.ts.map +1 -1
  254. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js +11 -12
  255. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js.map +1 -1
  256. package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.d.ts +11 -0
  257. package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.d.ts.map +1 -0
  258. package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.js +107 -0
  259. package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.js.map +1 -0
  260. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.d.ts.map +1 -1
  261. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js +3 -3
  262. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js.map +1 -1
  263. package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.d.ts +11 -0
  264. package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.d.ts.map +1 -0
  265. package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.js +176 -0
  266. package/dist/lib/generated/Entities/AIAgentPermission/sections/details.component.js.map +1 -0
  267. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.d.ts.map +1 -1
  268. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js +3 -3
  269. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js.map +1 -1
  270. package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.d.ts +11 -0
  271. package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.d.ts.map +1 -0
  272. package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.js +176 -0
  273. package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.js.map +1 -0
  274. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.d.ts.map +1 -1
  275. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js +3 -3
  276. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js.map +1 -1
  277. package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.d.ts +11 -0
  278. package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.d.ts.map +1 -0
  279. package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.js +165 -0
  280. package/dist/lib/generated/Entities/AIAgentRelationship/sections/details.component.js.map +1 -0
  281. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.d.ts.map +1 -1
  282. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js +3 -3
  283. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js.map +1 -1
  284. package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.d.ts +11 -0
  285. package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.d.ts.map +1 -0
  286. package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.js +185 -0
  287. package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.js.map +1 -0
  288. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.d.ts.map +1 -1
  289. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +41 -42
  290. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
  291. package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.d.ts +11 -0
  292. package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.d.ts.map +1 -0
  293. package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.js +496 -0
  294. package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.js.map +1 -0
  295. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.d.ts.map +1 -1
  296. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js +3 -3
  297. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js.map +1 -1
  298. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.d.ts.map +1 -1
  299. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js +21 -22
  300. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js.map +1 -1
  301. package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.d.ts +11 -0
  302. package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.d.ts.map +1 -0
  303. package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js +255 -0
  304. package/dist/lib/generated/Entities/AIAgentRunStep/sections/details.component.js.map +1 -0
  305. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.d.ts.map +1 -1
  306. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js +16 -17
  307. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js.map +1 -1
  308. package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts +11 -0
  309. package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.d.ts.map +1 -0
  310. package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js +295 -0
  311. package/dist/lib/generated/Entities/AIAgentStep/sections/details.component.js.map +1 -0
  312. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.d.ts.map +1 -1
  313. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js +3 -3
  314. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js.map +1 -1
  315. package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts +11 -0
  316. package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.d.ts.map +1 -0
  317. package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js +147 -0
  318. package/dist/lib/generated/Entities/AIAgentStepPath/sections/details.component.js.map +1 -0
  319. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.d.ts.map +1 -1
  320. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js +11 -12
  321. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js.map +1 -1
  322. package/dist/lib/generated/Entities/AIAgentType/sections/details.component.d.ts +11 -0
  323. package/dist/lib/generated/Entities/AIAgentType/sections/details.component.d.ts.map +1 -0
  324. package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js +163 -0
  325. package/dist/lib/generated/Entities/AIAgentType/sections/details.component.js.map +1 -0
  326. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.d.ts.map +1 -1
  327. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js +17 -18
  328. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js.map +1 -1
  329. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.d.ts.map +1 -1
  330. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +53 -54
  331. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
  332. package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.d.ts +11 -0
  333. package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.d.ts.map +1 -0
  334. package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.js +147 -0
  335. package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.js.map +1 -0
  336. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.d.ts.map +1 -1
  337. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js +3 -3
  338. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js.map +1 -1
  339. package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.d.ts +11 -0
  340. package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.d.ts.map +1 -0
  341. package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.js +127 -0
  342. package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.js.map +1 -0
  343. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.d.ts.map +1 -1
  344. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js +3 -3
  345. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js.map +1 -1
  346. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.d.ts.map +1 -1
  347. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js +47 -48
  348. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js.map +1 -1
  349. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.d.ts.map +1 -1
  350. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +125 -126
  351. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
  352. package/dist/lib/generated/Entities/AIModel/sections/details.component.d.ts +11 -0
  353. package/dist/lib/generated/Entities/AIModel/sections/details.component.d.ts.map +1 -0
  354. package/dist/lib/generated/Entities/AIModel/sections/details.component.js +217 -0
  355. package/dist/lib/generated/Entities/AIModel/sections/details.component.js.map +1 -0
  356. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.d.ts.map +1 -1
  357. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js +3 -3
  358. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js.map +1 -1
  359. package/dist/lib/generated/Entities/AIModelAction/sections/details.component.d.ts +11 -0
  360. package/dist/lib/generated/Entities/AIModelAction/sections/details.component.d.ts.map +1 -0
  361. package/dist/lib/generated/Entities/AIModelAction/sections/details.component.js +120 -0
  362. package/dist/lib/generated/Entities/AIModelAction/sections/details.component.js.map +1 -0
  363. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.d.ts.map +1 -1
  364. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js +3 -3
  365. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js.map +1 -1
  366. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.d.ts.map +1 -1
  367. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js +3 -3
  368. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js.map +1 -1
  369. package/dist/lib/generated/Entities/AIModelCost/sections/details.component.d.ts +11 -0
  370. package/dist/lib/generated/Entities/AIModelCost/sections/details.component.d.ts.map +1 -0
  371. package/dist/lib/generated/Entities/AIModelCost/sections/details.component.js +223 -0
  372. package/dist/lib/generated/Entities/AIModelCost/sections/details.component.js.map +1 -0
  373. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.d.ts.map +1 -1
  374. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js +3 -3
  375. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js.map +1 -1
  376. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.d.ts.map +1 -1
  377. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js +11 -12
  378. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js.map +1 -1
  379. package/dist/lib/generated/Entities/AIModelPriceType/sections/details.component.d.ts +11 -0
  380. package/dist/lib/generated/Entities/AIModelPriceType/sections/details.component.d.ts.map +1 -0
  381. package/dist/lib/generated/Entities/AIModelPriceType/sections/details.component.js +89 -0
  382. package/dist/lib/generated/Entities/AIModelPriceType/sections/details.component.js.map +1 -0
  383. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.d.ts.map +1 -1
  384. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js +11 -12
  385. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js.map +1 -1
  386. package/dist/lib/generated/Entities/AIModelPriceUnitType/sections/details.component.d.ts +11 -0
  387. package/dist/lib/generated/Entities/AIModelPriceUnitType/sections/details.component.d.ts.map +1 -0
  388. package/dist/lib/generated/Entities/AIModelPriceUnitType/sections/details.component.js +98 -0
  389. package/dist/lib/generated/Entities/AIModelPriceUnitType/sections/details.component.js.map +1 -0
  390. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.d.ts.map +1 -1
  391. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +17 -18
  392. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
  393. package/dist/lib/generated/Entities/AIModelType/sections/details.component.d.ts +11 -0
  394. package/dist/lib/generated/Entities/AIModelType/sections/details.component.d.ts.map +1 -0
  395. package/dist/lib/generated/Entities/AIModelType/sections/details.component.js +89 -0
  396. package/dist/lib/generated/Entities/AIModelType/sections/details.component.js.map +1 -0
  397. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.d.ts.map +1 -1
  398. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js +11 -12
  399. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js.map +1 -1
  400. package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.d.ts +11 -0
  401. package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.d.ts.map +1 -0
  402. package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.js +221 -0
  403. package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.js.map +1 -0
  404. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.d.ts.map +1 -1
  405. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +77 -78
  406. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
  407. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.d.ts +11 -0
  408. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.d.ts.map +1 -0
  409. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js +567 -0
  410. package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js.map +1 -0
  411. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.d.ts.map +1 -1
  412. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js +17 -18
  413. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js.map +1 -1
  414. package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.d.ts +11 -0
  415. package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.d.ts.map +1 -0
  416. package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.js +118 -0
  417. package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.js.map +1 -0
  418. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.d.ts.map +1 -1
  419. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js +11 -12
  420. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js.map +1 -1
  421. package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.d.ts +11 -0
  422. package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.d.ts.map +1 -0
  423. package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.js +214 -0
  424. package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.js.map +1 -0
  425. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.d.ts.map +1 -1
  426. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +23 -24
  427. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
  428. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts +11 -0
  429. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts.map +1 -0
  430. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js +903 -0
  431. package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js.map +1 -0
  432. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.d.ts.map +1 -1
  433. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js +11 -12
  434. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js.map +1 -1
  435. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.d.ts.map +1 -1
  436. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js +11 -12
  437. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js.map +1 -1
  438. package/dist/lib/generated/Entities/AIPromptType/sections/details.component.d.ts +11 -0
  439. package/dist/lib/generated/Entities/AIPromptType/sections/details.component.d.ts.map +1 -0
  440. package/dist/lib/generated/Entities/AIPromptType/sections/details.component.js +89 -0
  441. package/dist/lib/generated/Entities/AIPromptType/sections/details.component.js.map +1 -0
  442. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.d.ts.map +1 -1
  443. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js +3 -3
  444. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js.map +1 -1
  445. package/dist/lib/generated/Entities/AIResultCache/sections/details.component.d.ts +11 -0
  446. package/dist/lib/generated/Entities/AIResultCache/sections/details.component.d.ts.map +1 -0
  447. package/dist/lib/generated/Entities/AIResultCache/sections/details.component.js +236 -0
  448. package/dist/lib/generated/Entities/AIResultCache/sections/details.component.js.map +1 -0
  449. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.d.ts.map +1 -1
  450. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +53 -54
  451. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
  452. package/dist/lib/generated/Entities/AIVendor/sections/details.component.d.ts +11 -0
  453. package/dist/lib/generated/Entities/AIVendor/sections/details.component.d.ts.map +1 -0
  454. package/dist/lib/generated/Entities/AIVendor/sections/details.component.js +89 -0
  455. package/dist/lib/generated/Entities/AIVendor/sections/details.component.js.map +1 -0
  456. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.d.ts.map +1 -1
  457. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js +3 -3
  458. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js.map +1 -1
  459. package/dist/lib/generated/Entities/AIVendorType/sections/details.component.d.ts +11 -0
  460. package/dist/lib/generated/Entities/AIVendorType/sections/details.component.d.ts.map +1 -0
  461. package/dist/lib/generated/Entities/AIVendorType/sections/details.component.js +129 -0
  462. package/dist/lib/generated/Entities/AIVendorType/sections/details.component.js.map +1 -0
  463. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.d.ts.map +1 -1
  464. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js +17 -18
  465. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js.map +1 -1
  466. package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.d.ts +11 -0
  467. package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.d.ts.map +1 -0
  468. package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.js +89 -0
  469. package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.js.map +1 -0
  470. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.d.ts.map +1 -1
  471. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.js +23 -24
  472. package/dist/lib/generated/Entities/APIApplication/apiapplication.form.component.js.map +1 -1
  473. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.d.ts.map +1 -1
  474. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.js +3 -3
  475. package/dist/lib/generated/Entities/APIApplicationScope/apiapplicationscope.form.component.js.map +1 -1
  476. package/dist/lib/generated/Entities/APIKey/apikey.form.component.d.ts.map +1 -1
  477. package/dist/lib/generated/Entities/APIKey/apikey.form.component.js +23 -24
  478. package/dist/lib/generated/Entities/APIKey/apikey.form.component.js.map +1 -1
  479. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.d.ts.map +1 -1
  480. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.js +3 -3
  481. package/dist/lib/generated/Entities/APIKeyApplication/apikeyapplication.form.component.js.map +1 -1
  482. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.d.ts.map +1 -1
  483. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.js +3 -3
  484. package/dist/lib/generated/Entities/APIKeyScope/apikeyscope.form.component.js.map +1 -1
  485. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.d.ts.map +1 -1
  486. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.js +3 -3
  487. package/dist/lib/generated/Entities/APIKeyUsageLog/apikeyusagelog.form.component.js.map +1 -1
  488. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.d.ts.map +1 -1
  489. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js +23 -24
  490. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js.map +1 -1
  491. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.d.ts.map +1 -1
  492. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js +3 -3
  493. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js.map +1 -1
  494. package/dist/lib/generated/Entities/AccessControlRule/sections/details.component.d.ts +11 -0
  495. package/dist/lib/generated/Entities/AccessControlRule/sections/details.component.d.ts.map +1 -0
  496. package/dist/lib/generated/Entities/AccessControlRule/sections/details.component.js +192 -0
  497. package/dist/lib/generated/Entities/AccessControlRule/sections/details.component.js.map +1 -0
  498. package/dist/lib/generated/Entities/Action/action.form.component.d.ts.map +1 -1
  499. package/dist/lib/generated/Entities/Action/action.form.component.js +77 -78
  500. package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
  501. package/dist/lib/generated/Entities/Action/sections/code.component.d.ts +11 -0
  502. package/dist/lib/generated/Entities/Action/sections/code.component.d.ts.map +1 -0
  503. package/dist/lib/generated/Entities/Action/sections/code.component.js +62 -0
  504. package/dist/lib/generated/Entities/Action/sections/code.component.js.map +1 -0
  505. package/dist/lib/generated/Entities/Action/sections/details.component.d.ts +11 -0
  506. package/dist/lib/generated/Entities/Action/sections/details.component.d.ts.map +1 -0
  507. package/dist/lib/generated/Entities/Action/sections/details.component.js +277 -0
  508. package/dist/lib/generated/Entities/Action/sections/details.component.js.map +1 -0
  509. package/dist/lib/generated/Entities/Action/sections/top.component.d.ts +11 -0
  510. package/dist/lib/generated/Entities/Action/sections/top.component.d.ts.map +1 -0
  511. package/dist/lib/generated/Entities/Action/sections/top.component.js +71 -0
  512. package/dist/lib/generated/Entities/Action/sections/top.component.js.map +1 -0
  513. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.d.ts.map +1 -1
  514. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js +3 -3
  515. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js.map +1 -1
  516. package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.d.ts +11 -0
  517. package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.d.ts.map +1 -0
  518. package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.js +120 -0
  519. package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.js.map +1 -0
  520. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.d.ts.map +1 -1
  521. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js +23 -24
  522. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js.map +1 -1
  523. package/dist/lib/generated/Entities/ActionCategory/sections/details.component.d.ts +11 -0
  524. package/dist/lib/generated/Entities/ActionCategory/sections/details.component.d.ts.map +1 -0
  525. package/dist/lib/generated/Entities/ActionCategory/sections/details.component.js +127 -0
  526. package/dist/lib/generated/Entities/ActionCategory/sections/details.component.js.map +1 -0
  527. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.d.ts.map +1 -1
  528. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js +3 -3
  529. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js.map +1 -1
  530. package/dist/lib/generated/Entities/ActionContext/sections/details.component.d.ts +11 -0
  531. package/dist/lib/generated/Entities/ActionContext/sections/details.component.d.ts.map +1 -0
  532. package/dist/lib/generated/Entities/ActionContext/sections/details.component.js +120 -0
  533. package/dist/lib/generated/Entities/ActionContext/sections/details.component.js.map +1 -0
  534. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.d.ts.map +1 -1
  535. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js +11 -12
  536. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js.map +1 -1
  537. package/dist/lib/generated/Entities/ActionContextType/sections/details.component.d.ts +11 -0
  538. package/dist/lib/generated/Entities/ActionContextType/sections/details.component.d.ts.map +1 -0
  539. package/dist/lib/generated/Entities/ActionContextType/sections/details.component.js +89 -0
  540. package/dist/lib/generated/Entities/ActionContextType/sections/details.component.js.map +1 -0
  541. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.d.ts.map +1 -1
  542. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js +3 -3
  543. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js.map +1 -1
  544. package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.d.ts +11 -0
  545. package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.d.ts.map +1 -0
  546. package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.js +165 -0
  547. package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.js.map +1 -0
  548. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.d.ts.map +1 -1
  549. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js +11 -12
  550. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js.map +1 -1
  551. package/dist/lib/generated/Entities/ActionFilter/sections/details.component.d.ts +11 -0
  552. package/dist/lib/generated/Entities/ActionFilter/sections/details.component.d.ts.map +1 -0
  553. package/dist/lib/generated/Entities/ActionFilter/sections/details.component.js +107 -0
  554. package/dist/lib/generated/Entities/ActionFilter/sections/details.component.js.map +1 -0
  555. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.d.ts.map +1 -1
  556. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js +3 -3
  557. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js.map +1 -1
  558. package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.d.ts +11 -0
  559. package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.d.ts.map +1 -0
  560. package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.js +120 -0
  561. package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.js.map +1 -0
  562. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.d.ts.map +1 -1
  563. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js +17 -18
  564. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js.map +1 -1
  565. package/dist/lib/generated/Entities/ActionParam/sections/details.component.d.ts +11 -0
  566. package/dist/lib/generated/Entities/ActionParam/sections/details.component.d.ts.map +1 -0
  567. package/dist/lib/generated/Entities/ActionParam/sections/details.component.js +154 -0
  568. package/dist/lib/generated/Entities/ActionParam/sections/details.component.js.map +1 -0
  569. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.d.ts.map +1 -1
  570. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js +3 -3
  571. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js.map +1 -1
  572. package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.d.ts +11 -0
  573. package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.d.ts.map +1 -0
  574. package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.js +118 -0
  575. package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.js.map +1 -0
  576. package/dist/lib/generated/Entities/Application/application.form.component.d.ts.map +1 -1
  577. package/dist/lib/generated/Entities/Application/application.form.component.js +35 -36
  578. package/dist/lib/generated/Entities/Application/application.form.component.js.map +1 -1
  579. package/dist/lib/generated/Entities/Application/sections/details.component.d.ts +11 -0
  580. package/dist/lib/generated/Entities/Application/sections/details.component.d.ts.map +1 -0
  581. package/dist/lib/generated/Entities/Application/sections/details.component.js +116 -0
  582. package/dist/lib/generated/Entities/Application/sections/details.component.js.map +1 -0
  583. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.d.ts.map +1 -1
  584. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js +3 -3
  585. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js.map +1 -1
  586. package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.d.ts +11 -0
  587. package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.d.ts.map +1 -0
  588. package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.js +165 -0
  589. package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.js.map +1 -0
  590. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.d.ts.map +1 -1
  591. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js +3 -3
  592. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js.map +1 -1
  593. package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.d.ts +11 -0
  594. package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.d.ts.map +1 -0
  595. package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.js +118 -0
  596. package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.js.map +1 -0
  597. package/dist/lib/generated/Entities/Artifact/artifact.form.component.d.ts.map +1 -1
  598. package/dist/lib/generated/Entities/Artifact/artifact.form.component.js +23 -24
  599. package/dist/lib/generated/Entities/Artifact/artifact.form.component.js.map +1 -1
  600. package/dist/lib/generated/Entities/Artifact/sections/details.component.d.ts +11 -0
  601. package/dist/lib/generated/Entities/Artifact/sections/details.component.d.ts.map +1 -0
  602. package/dist/lib/generated/Entities/Artifact/sections/details.component.js +167 -0
  603. package/dist/lib/generated/Entities/Artifact/sections/details.component.js.map +1 -0
  604. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.d.ts.map +1 -1
  605. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js +3 -3
  606. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js.map +1 -1
  607. package/dist/lib/generated/Entities/ArtifactPermission/sections/details.component.d.ts +11 -0
  608. package/dist/lib/generated/Entities/ArtifactPermission/sections/details.component.d.ts.map +1 -0
  609. package/dist/lib/generated/Entities/ArtifactPermission/sections/details.component.js +167 -0
  610. package/dist/lib/generated/Entities/ArtifactPermission/sections/details.component.js.map +1 -0
  611. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.d.ts.map +1 -1
  612. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js +35 -36
  613. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js.map +1 -1
  614. package/dist/lib/generated/Entities/ArtifactType/sections/details.component.d.ts +11 -0
  615. package/dist/lib/generated/Entities/ArtifactType/sections/details.component.d.ts.map +1 -0
  616. package/dist/lib/generated/Entities/ArtifactType/sections/details.component.js +154 -0
  617. package/dist/lib/generated/Entities/ArtifactType/sections/details.component.js.map +1 -0
  618. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.d.ts.map +1 -1
  619. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js +3 -3
  620. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js.map +1 -1
  621. package/dist/lib/generated/Entities/ArtifactUse/sections/details.component.d.ts +11 -0
  622. package/dist/lib/generated/Entities/ArtifactUse/sections/details.component.d.ts.map +1 -0
  623. package/dist/lib/generated/Entities/ArtifactUse/sections/details.component.js +129 -0
  624. package/dist/lib/generated/Entities/ArtifactUse/sections/details.component.js.map +1 -0
  625. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.d.ts.map +1 -1
  626. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js +29 -30
  627. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js.map +1 -1
  628. package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.d.ts +11 -0
  629. package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.d.ts.map +1 -0
  630. package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.js +174 -0
  631. package/dist/lib/generated/Entities/ArtifactVersion/sections/details.component.js.map +1 -0
  632. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.d.ts.map +1 -1
  633. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js +3 -3
  634. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js.map +1 -1
  635. package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.d.ts +11 -0
  636. package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.d.ts.map +1 -0
  637. package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.js +127 -0
  638. package/dist/lib/generated/Entities/ArtifactVersionAttribute/sections/details.component.js.map +1 -0
  639. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.d.ts.map +1 -1
  640. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js +3 -3
  641. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js.map +1 -1
  642. package/dist/lib/generated/Entities/AuditLog/sections/details.component.d.ts +11 -0
  643. package/dist/lib/generated/Entities/AuditLog/sections/details.component.d.ts.map +1 -0
  644. package/dist/lib/generated/Entities/AuditLog/sections/details.component.js +187 -0
  645. package/dist/lib/generated/Entities/AuditLog/sections/details.component.js.map +1 -0
  646. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.d.ts.map +1 -1
  647. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js +17 -18
  648. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js.map +1 -1
  649. package/dist/lib/generated/Entities/AuditLogType/sections/details.component.d.ts +11 -0
  650. package/dist/lib/generated/Entities/AuditLogType/sections/details.component.d.ts.map +1 -0
  651. package/dist/lib/generated/Entities/AuditLogType/sections/details.component.js +138 -0
  652. package/dist/lib/generated/Entities/AuditLogType/sections/details.component.js.map +1 -0
  653. package/dist/lib/generated/Entities/Authorization/authorization.form.component.d.ts.map +1 -1
  654. package/dist/lib/generated/Entities/Authorization/authorization.form.component.js +35 -36
  655. package/dist/lib/generated/Entities/Authorization/authorization.form.component.js.map +1 -1
  656. package/dist/lib/generated/Entities/Authorization/sections/details.component.d.ts +11 -0
  657. package/dist/lib/generated/Entities/Authorization/sections/details.component.d.ts.map +1 -0
  658. package/dist/lib/generated/Entities/Authorization/sections/details.component.js +136 -0
  659. package/dist/lib/generated/Entities/Authorization/sections/details.component.js.map +1 -0
  660. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.d.ts.map +1 -1
  661. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js +3 -3
  662. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js.map +1 -1
  663. package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.d.ts +11 -0
  664. package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.d.ts.map +1 -0
  665. package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.js +120 -0
  666. package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.js.map +1 -0
  667. package/dist/lib/generated/Entities/Collection/collection.form.component.d.ts.map +1 -1
  668. package/dist/lib/generated/Entities/Collection/collection.form.component.js +23 -24
  669. package/dist/lib/generated/Entities/Collection/collection.form.component.js.map +1 -1
  670. package/dist/lib/generated/Entities/Collection/sections/details.component.d.ts +11 -0
  671. package/dist/lib/generated/Entities/Collection/sections/details.component.d.ts.map +1 -0
  672. package/dist/lib/generated/Entities/Collection/sections/details.component.js +185 -0
  673. package/dist/lib/generated/Entities/Collection/sections/details.component.js.map +1 -0
  674. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.d.ts.map +1 -1
  675. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js +3 -3
  676. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js.map +1 -1
  677. package/dist/lib/generated/Entities/CollectionArtifact/sections/details.component.d.ts +11 -0
  678. package/dist/lib/generated/Entities/CollectionArtifact/sections/details.component.d.ts.map +1 -0
  679. package/dist/lib/generated/Entities/CollectionArtifact/sections/details.component.js +120 -0
  680. package/dist/lib/generated/Entities/CollectionArtifact/sections/details.component.js.map +1 -0
  681. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.d.ts.map +1 -1
  682. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js +3 -3
  683. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js.map +1 -1
  684. package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.d.ts +11 -0
  685. package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.d.ts.map +1 -0
  686. package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.js +167 -0
  687. package/dist/lib/generated/Entities/CollectionPermission/sections/details.component.js.map +1 -0
  688. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.d.ts.map +1 -1
  689. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js +17 -18
  690. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js.map +1 -1
  691. package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.d.ts +11 -0
  692. package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.d.ts.map +1 -0
  693. package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.js +116 -0
  694. package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.js.map +1 -0
  695. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.d.ts.map +1 -1
  696. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js +3 -3
  697. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js.map +1 -1
  698. package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.d.ts +11 -0
  699. package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.d.ts.map +1 -0
  700. package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.js +167 -0
  701. package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.js.map +1 -0
  702. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.d.ts.map +1 -1
  703. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js +17 -18
  704. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js.map +1 -1
  705. package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.d.ts +11 -0
  706. package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.d.ts.map +1 -0
  707. package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.js +152 -0
  708. package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.js.map +1 -0
  709. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.d.ts.map +1 -1
  710. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js +11 -12
  711. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js.map +1 -1
  712. package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.d.ts +11 -0
  713. package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.d.ts.map +1 -0
  714. package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.js +138 -0
  715. package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.js.map +1 -0
  716. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.d.ts.map +1 -1
  717. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js +11 -12
  718. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js.map +1 -1
  719. package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.d.ts +11 -0
  720. package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.d.ts.map +1 -0
  721. package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.js +145 -0
  722. package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.js.map +1 -0
  723. package/dist/lib/generated/Entities/Company/company.form.component.d.ts.map +1 -1
  724. package/dist/lib/generated/Entities/Company/company.form.component.js +41 -42
  725. package/dist/lib/generated/Entities/Company/company.form.component.js.map +1 -1
  726. package/dist/lib/generated/Entities/Company/sections/details.component.d.ts +11 -0
  727. package/dist/lib/generated/Entities/Company/sections/details.component.d.ts.map +1 -0
  728. package/dist/lib/generated/Entities/Company/sections/details.component.js +118 -0
  729. package/dist/lib/generated/Entities/Company/sections/details.component.js.map +1 -0
  730. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.d.ts.map +1 -1
  731. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js +29 -30
  732. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js.map +1 -1
  733. package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.d.ts +11 -0
  734. package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.d.ts.map +1 -0
  735. package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.js +255 -0
  736. package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.js.map +1 -0
  737. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.d.ts.map +1 -1
  738. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js +3 -3
  739. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js.map +1 -1
  740. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.d.ts +11 -0
  741. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.d.ts.map +1 -0
  742. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.js +129 -0
  743. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.js.map +1 -0
  744. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.d.ts.map +1 -1
  745. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js +23 -24
  746. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js.map +1 -1
  747. package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.d.ts +11 -0
  748. package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.d.ts.map +1 -0
  749. package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.js +183 -0
  750. package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.js.map +1 -0
  751. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.d.ts.map +1 -1
  752. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js +3 -3
  753. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js.map +1 -1
  754. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.d.ts +11 -0
  755. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.d.ts.map +1 -0
  756. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.js +127 -0
  757. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.js.map +1 -0
  758. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.d.ts.map +1 -1
  759. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js +11 -12
  760. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js.map +1 -1
  761. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.d.ts +11 -0
  762. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.d.ts.map +1 -0
  763. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.js +156 -0
  764. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.js.map +1 -0
  765. package/dist/lib/generated/Entities/Component/component.form.component.d.ts.map +1 -1
  766. package/dist/lib/generated/Entities/Component/component.form.component.js +22 -23
  767. package/dist/lib/generated/Entities/Component/component.form.component.js.map +1 -1
  768. package/dist/lib/generated/Entities/Component/sections/details.component.d.ts +11 -0
  769. package/dist/lib/generated/Entities/Component/sections/details.component.d.ts.map +1 -0
  770. package/dist/lib/generated/Entities/Component/sections/details.component.js +316 -0
  771. package/dist/lib/generated/Entities/Component/sections/details.component.js.map +1 -0
  772. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.d.ts.map +1 -1
  773. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js +3 -3
  774. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js.map +1 -1
  775. package/dist/lib/generated/Entities/ComponentDependency/sections/details.component.d.ts +11 -0
  776. package/dist/lib/generated/Entities/ComponentDependency/sections/details.component.d.ts.map +1 -0
  777. package/dist/lib/generated/Entities/ComponentDependency/sections/details.component.js +111 -0
  778. package/dist/lib/generated/Entities/ComponentDependency/sections/details.component.js.map +1 -0
  779. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.d.ts.map +1 -1
  780. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js +11 -12
  781. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js.map +1 -1
  782. package/dist/lib/generated/Entities/ComponentLibrary/sections/details.component.d.ts +11 -0
  783. package/dist/lib/generated/Entities/ComponentLibrary/sections/details.component.d.ts.map +1 -0
  784. package/dist/lib/generated/Entities/ComponentLibrary/sections/details.component.js +179 -0
  785. package/dist/lib/generated/Entities/ComponentLibrary/sections/details.component.js.map +1 -0
  786. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.d.ts.map +1 -1
  787. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js +3 -3
  788. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js.map +1 -1
  789. package/dist/lib/generated/Entities/ComponentLibraryLink/sections/details.component.d.ts +11 -0
  790. package/dist/lib/generated/Entities/ComponentLibraryLink/sections/details.component.d.ts.map +1 -0
  791. package/dist/lib/generated/Entities/ComponentLibraryLink/sections/details.component.js +120 -0
  792. package/dist/lib/generated/Entities/ComponentLibraryLink/sections/details.component.js.map +1 -0
  793. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.d.ts.map +1 -1
  794. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js +11 -12
  795. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js.map +1 -1
  796. package/dist/lib/generated/Entities/ComponentRegistry/sections/details.component.d.ts +11 -0
  797. package/dist/lib/generated/Entities/ComponentRegistry/sections/details.component.d.ts.map +1 -0
  798. package/dist/lib/generated/Entities/ComponentRegistry/sections/details.component.js +125 -0
  799. package/dist/lib/generated/Entities/ComponentRegistry/sections/details.component.js.map +1 -0
  800. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.d.ts.map +1 -1
  801. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js +17 -18
  802. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js.map +1 -1
  803. package/dist/lib/generated/Entities/ContentFileType/sections/details.component.d.ts +11 -0
  804. package/dist/lib/generated/Entities/ContentFileType/sections/details.component.d.ts.map +1 -0
  805. package/dist/lib/generated/Entities/ContentFileType/sections/details.component.js +89 -0
  806. package/dist/lib/generated/Entities/ContentFileType/sections/details.component.js.map +1 -0
  807. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.d.ts.map +1 -1
  808. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js +17 -18
  809. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js.map +1 -1
  810. package/dist/lib/generated/Entities/ContentItem/sections/details.component.d.ts +11 -0
  811. package/dist/lib/generated/Entities/ContentItem/sections/details.component.d.ts.map +1 -0
  812. package/dist/lib/generated/Entities/ContentItem/sections/details.component.js +196 -0
  813. package/dist/lib/generated/Entities/ContentItem/sections/details.component.js.map +1 -0
  814. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.d.ts.map +1 -1
  815. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js +3 -3
  816. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js.map +1 -1
  817. package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.d.ts +11 -0
  818. package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.d.ts.map +1 -0
  819. package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.js +109 -0
  820. package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.js.map +1 -0
  821. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.d.ts.map +1 -1
  822. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js +3 -3
  823. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js.map +1 -1
  824. package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.d.ts +11 -0
  825. package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.d.ts.map +1 -0
  826. package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.js +100 -0
  827. package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.js.map +1 -0
  828. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.d.ts.map +1 -1
  829. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js +3 -3
  830. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js.map +1 -1
  831. package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.d.ts +11 -0
  832. package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.d.ts.map +1 -0
  833. package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.js +127 -0
  834. package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.js.map +1 -0
  835. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.d.ts.map +1 -1
  836. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js +23 -24
  837. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js.map +1 -1
  838. package/dist/lib/generated/Entities/ContentSource/sections/details.component.d.ts +11 -0
  839. package/dist/lib/generated/Entities/ContentSource/sections/details.component.d.ts.map +1 -0
  840. package/dist/lib/generated/Entities/ContentSource/sections/details.component.js +149 -0
  841. package/dist/lib/generated/Entities/ContentSource/sections/details.component.js.map +1 -0
  842. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.d.ts.map +1 -1
  843. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js +3 -3
  844. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js.map +1 -1
  845. package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.d.ts +11 -0
  846. package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.d.ts.map +1 -0
  847. package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.js +109 -0
  848. package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.js.map +1 -0
  849. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.d.ts.map +1 -1
  850. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js +17 -18
  851. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js.map +1 -1
  852. package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.d.ts +11 -0
  853. package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.d.ts.map +1 -0
  854. package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.js +89 -0
  855. package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.js.map +1 -0
  856. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.d.ts.map +1 -1
  857. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js +3 -3
  858. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js.map +1 -1
  859. package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.d.ts +11 -0
  860. package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.d.ts.map +1 -0
  861. package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.js +116 -0
  862. package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.js.map +1 -0
  863. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.d.ts.map +1 -1
  864. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js +17 -18
  865. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js.map +1 -1
  866. package/dist/lib/generated/Entities/ContentType/sections/details.component.d.ts +11 -0
  867. package/dist/lib/generated/Entities/ContentType/sections/details.component.d.ts.map +1 -0
  868. package/dist/lib/generated/Entities/ContentType/sections/details.component.js +127 -0
  869. package/dist/lib/generated/Entities/ContentType/sections/details.component.js.map +1 -0
  870. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.d.ts.map +1 -1
  871. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js +3 -3
  872. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js.map +1 -1
  873. package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.d.ts +11 -0
  874. package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.d.ts.map +1 -0
  875. package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.js +107 -0
  876. package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.js.map +1 -0
  877. package/dist/lib/generated/Entities/Conversation/conversation.form.component.d.ts.map +1 -1
  878. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +42 -43
  879. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js.map +1 -1
  880. package/dist/lib/generated/Entities/Conversation/sections/details.component.d.ts +11 -0
  881. package/dist/lib/generated/Entities/Conversation/sections/details.component.d.ts.map +1 -0
  882. package/dist/lib/generated/Entities/Conversation/sections/details.component.js +243 -0
  883. package/dist/lib/generated/Entities/Conversation/sections/details.component.js.map +1 -0
  884. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.d.ts.map +1 -1
  885. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js +23 -24
  886. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js.map +1 -1
  887. package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.d.ts +11 -0
  888. package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.d.ts.map +1 -0
  889. package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.js +147 -0
  890. package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.js.map +1 -0
  891. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.d.ts.map +1 -1
  892. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js +3 -3
  893. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js.map +1 -1
  894. package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.d.ts +11 -0
  895. package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.d.ts.map +1 -0
  896. package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.js +109 -0
  897. package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.js.map +1 -0
  898. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.d.ts.map +1 -1
  899. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js +11 -12
  900. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js.map +1 -1
  901. package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.d.ts +11 -0
  902. package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.d.ts.map +1 -0
  903. package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.js +127 -0
  904. package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.js.map +1 -0
  905. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.d.ts.map +1 -1
  906. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js +59 -60
  907. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js.map +1 -1
  908. package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.d.ts +11 -0
  909. package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.d.ts.map +1 -0
  910. package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js +299 -0
  911. package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js.map +1 -0
  912. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.d.ts.map +1 -1
  913. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js +3 -3
  914. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js.map +1 -1
  915. package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.d.ts +11 -0
  916. package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.d.ts.map +1 -0
  917. package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.js +111 -0
  918. package/dist/lib/generated/Entities/ConversationDetailArtifact/sections/details.component.js.map +1 -0
  919. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.d.ts.map +1 -1
  920. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js +3 -3
  921. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js.map +1 -1
  922. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.d.ts.map +1 -1
  923. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js +7 -13
  924. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js.map +1 -1
  925. package/dist/lib/generated/Entities/ConversationDetailRating/sections/details.component.d.ts +11 -0
  926. package/dist/lib/generated/Entities/ConversationDetailRating/sections/details.component.d.ts.map +1 -0
  927. package/dist/lib/generated/Entities/ConversationDetailRating/sections/details.component.js +120 -0
  928. package/dist/lib/generated/Entities/ConversationDetailRating/sections/details.component.js.map +1 -0
  929. package/dist/lib/generated/Entities/Credential/credential.form.component.d.ts.map +1 -1
  930. package/dist/lib/generated/Entities/Credential/credential.form.component.js +40 -23
  931. package/dist/lib/generated/Entities/Credential/credential.form.component.js.map +1 -1
  932. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.d.ts.map +1 -1
  933. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js +17 -18
  934. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js.map +1 -1
  935. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.d.ts.map +1 -1
  936. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js +23 -24
  937. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js.map +1 -1
  938. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.d.ts.map +1 -1
  939. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js +29 -30
  940. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js.map +1 -1
  941. package/dist/lib/generated/Entities/Dashboard/sections/details.component.d.ts +11 -0
  942. package/dist/lib/generated/Entities/Dashboard/sections/details.component.d.ts.map +1 -0
  943. package/dist/lib/generated/Entities/Dashboard/sections/details.component.js +223 -0
  944. package/dist/lib/generated/Entities/Dashboard/sections/details.component.js.map +1 -0
  945. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.d.ts.map +1 -1
  946. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js +29 -30
  947. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js.map +1 -1
  948. package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.d.ts +11 -0
  949. package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.d.ts.map +1 -0
  950. package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.js +138 -0
  951. package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.js.map +1 -0
  952. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.d.ts.map +1 -1
  953. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js +3 -3
  954. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js.map +1 -1
  955. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.d.ts.map +1 -1
  956. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js +3 -3
  957. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js.map +1 -1
  958. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.d.ts.map +1 -1
  959. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js +3 -3
  960. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js.map +1 -1
  961. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.d.ts.map +1 -1
  962. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js +3 -3
  963. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js.map +1 -1
  964. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.d.ts.map +1 -1
  965. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js +3 -3
  966. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js.map +1 -1
  967. package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.d.ts +11 -0
  968. package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.d.ts.map +1 -0
  969. package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.js +149 -0
  970. package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.js.map +1 -0
  971. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.d.ts.map +1 -1
  972. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js +3 -3
  973. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js.map +1 -1
  974. package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.d.ts +11 -0
  975. package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.d.ts.map +1 -0
  976. package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.js +120 -0
  977. package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.js.map +1 -0
  978. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.d.ts.map +1 -1
  979. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js +23 -24
  980. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js.map +1 -1
  981. package/dist/lib/generated/Entities/DataContext/sections/details.component.d.ts +11 -0
  982. package/dist/lib/generated/Entities/DataContext/sections/details.component.d.ts.map +1 -0
  983. package/dist/lib/generated/Entities/DataContext/sections/details.component.js +118 -0
  984. package/dist/lib/generated/Entities/DataContext/sections/details.component.js.map +1 -0
  985. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.d.ts.map +1 -1
  986. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js +3 -3
  987. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js.map +1 -1
  988. package/dist/lib/generated/Entities/DataContextItem/sections/details.component.d.ts +11 -0
  989. package/dist/lib/generated/Entities/DataContextItem/sections/details.component.d.ts.map +1 -0
  990. package/dist/lib/generated/Entities/DataContextItem/sections/details.component.js +214 -0
  991. package/dist/lib/generated/Entities/DataContextItem/sections/details.component.js.map +1 -0
  992. package/dist/lib/generated/Entities/Dataset/dataset.form.component.d.ts.map +1 -1
  993. package/dist/lib/generated/Entities/Dataset/dataset.form.component.js +11 -12
  994. package/dist/lib/generated/Entities/Dataset/dataset.form.component.js.map +1 -1
  995. package/dist/lib/generated/Entities/Dataset/sections/details.component.d.ts +11 -0
  996. package/dist/lib/generated/Entities/Dataset/sections/details.component.d.ts.map +1 -0
  997. package/dist/lib/generated/Entities/Dataset/sections/details.component.js +89 -0
  998. package/dist/lib/generated/Entities/Dataset/sections/details.component.js.map +1 -0
  999. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.d.ts.map +1 -1
  1000. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js +3 -3
  1001. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js.map +1 -1
  1002. package/dist/lib/generated/Entities/DatasetItem/sections/details.component.d.ts +11 -0
  1003. package/dist/lib/generated/Entities/DatasetItem/sections/details.component.d.ts.map +1 -0
  1004. package/dist/lib/generated/Entities/DatasetItem/sections/details.component.js +165 -0
  1005. package/dist/lib/generated/Entities/DatasetItem/sections/details.component.js.map +1 -0
  1006. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.d.ts.map +1 -1
  1007. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js +11 -12
  1008. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js.map +1 -1
  1009. package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.d.ts +11 -0
  1010. package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.d.ts.map +1 -0
  1011. package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.js +205 -0
  1012. package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.js.map +1 -0
  1013. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.d.ts.map +1 -1
  1014. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js +11 -12
  1015. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js.map +1 -1
  1016. package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.d.ts +11 -0
  1017. package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.d.ts.map +1 -0
  1018. package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.js +136 -0
  1019. package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.js.map +1 -0
  1020. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.d.ts.map +1 -1
  1021. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js +3 -3
  1022. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js.map +1 -1
  1023. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.d.ts +11 -0
  1024. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.d.ts.map +1 -0
  1025. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.js +165 -0
  1026. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.js.map +1 -0
  1027. package/dist/lib/generated/Entities/Employee/employee.form.component.d.ts.map +1 -1
  1028. package/dist/lib/generated/Entities/Employee/employee.form.component.js +35 -36
  1029. package/dist/lib/generated/Entities/Employee/employee.form.component.js.map +1 -1
  1030. package/dist/lib/generated/Entities/Employee/sections/details.component.d.ts +11 -0
  1031. package/dist/lib/generated/Entities/Employee/sections/details.component.d.ts.map +1 -0
  1032. package/dist/lib/generated/Entities/Employee/sections/details.component.js +202 -0
  1033. package/dist/lib/generated/Entities/Employee/sections/details.component.js.map +1 -0
  1034. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.d.ts.map +1 -1
  1035. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js +3 -3
  1036. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js.map +1 -1
  1037. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.d.ts +11 -0
  1038. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.d.ts.map +1 -0
  1039. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.js +120 -0
  1040. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.js.map +1 -0
  1041. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.d.ts.map +1 -1
  1042. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js +3 -3
  1043. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js.map +1 -1
  1044. package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.d.ts +11 -0
  1045. package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.d.ts.map +1 -0
  1046. package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.js +102 -0
  1047. package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.js.map +1 -0
  1048. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.d.ts.map +1 -1
  1049. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js +3 -3
  1050. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js.map +1 -1
  1051. package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.d.ts +11 -0
  1052. package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.d.ts.map +1 -0
  1053. package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.js +102 -0
  1054. package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.js.map +1 -0
  1055. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.d.ts.map +1 -1
  1056. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js +11 -12
  1057. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js.map +1 -1
  1058. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.d.ts.map +1 -1
  1059. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js +11 -12
  1060. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js.map +1 -1
  1061. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.d.ts.map +1 -1
  1062. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js +11 -12
  1063. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js.map +1 -1
  1064. package/dist/lib/generated/Entities/Entity/entity.form.component.d.ts.map +1 -1
  1065. package/dist/lib/generated/Entities/Entity/entity.form.component.js +308 -273
  1066. package/dist/lib/generated/Entities/Entity/entity.form.component.js.map +1 -1
  1067. package/dist/lib/generated/Entities/Entity/sections/api.component.d.ts +11 -0
  1068. package/dist/lib/generated/Entities/Entity/sections/api.component.d.ts.map +1 -0
  1069. package/dist/lib/generated/Entities/Entity/sections/api.component.js +116 -0
  1070. package/dist/lib/generated/Entities/Entity/sections/api.component.js.map +1 -0
  1071. package/dist/lib/generated/Entities/Entity/sections/audit.component.d.ts +11 -0
  1072. package/dist/lib/generated/Entities/Entity/sections/audit.component.d.ts.map +1 -0
  1073. package/dist/lib/generated/Entities/Entity/sections/audit.component.js +71 -0
  1074. package/dist/lib/generated/Entities/Entity/sections/audit.component.js.map +1 -0
  1075. package/dist/lib/generated/Entities/Entity/sections/db.component.d.ts +11 -0
  1076. package/dist/lib/generated/Entities/Entity/sections/db.component.d.ts.map +1 -0
  1077. package/dist/lib/generated/Entities/Entity/sections/db.component.js +107 -0
  1078. package/dist/lib/generated/Entities/Entity/sections/db.component.js.map +1 -0
  1079. package/dist/lib/generated/Entities/Entity/sections/details.component.d.ts +11 -0
  1080. package/dist/lib/generated/Entities/Entity/sections/details.component.d.ts.map +1 -0
  1081. package/dist/lib/generated/Entities/Entity/sections/details.component.js +415 -0
  1082. package/dist/lib/generated/Entities/Entity/sections/details.component.js.map +1 -0
  1083. package/dist/lib/generated/Entities/Entity/sections/top.component.d.ts +11 -0
  1084. package/dist/lib/generated/Entities/Entity/sections/top.component.d.ts.map +1 -0
  1085. package/dist/lib/generated/Entities/Entity/sections/top.component.js +107 -0
  1086. package/dist/lib/generated/Entities/Entity/sections/top.component.js.map +1 -0
  1087. package/dist/lib/generated/Entities/Entity/sections/ui.component.d.ts +11 -0
  1088. package/dist/lib/generated/Entities/Entity/sections/ui.component.d.ts.map +1 -0
  1089. package/dist/lib/generated/Entities/Entity/sections/ui.component.js +62 -0
  1090. package/dist/lib/generated/Entities/Entity/sections/ui.component.js.map +1 -0
  1091. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.d.ts.map +1 -1
  1092. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js +3 -3
  1093. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js.map +1 -1
  1094. package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.d.ts +11 -0
  1095. package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.d.ts.map +1 -0
  1096. package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.js +223 -0
  1097. package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.js.map +1 -0
  1098. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.d.ts.map +1 -1
  1099. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js +23 -24
  1100. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js.map +1 -1
  1101. package/dist/lib/generated/Entities/EntityAction/sections/details.component.d.ts +11 -0
  1102. package/dist/lib/generated/Entities/EntityAction/sections/details.component.d.ts.map +1 -0
  1103. package/dist/lib/generated/Entities/EntityAction/sections/details.component.js +120 -0
  1104. package/dist/lib/generated/Entities/EntityAction/sections/details.component.js.map +1 -0
  1105. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.d.ts.map +1 -1
  1106. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js +12 -6
  1107. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js.map +1 -1
  1108. package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.d.ts +11 -0
  1109. package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.d.ts.map +1 -0
  1110. package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.js +111 -0
  1111. package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.js.map +1 -0
  1112. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.d.ts.map +1 -1
  1113. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js +3 -3
  1114. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js.map +1 -1
  1115. package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.d.ts +11 -0
  1116. package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.d.ts.map +1 -0
  1117. package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.js +111 -0
  1118. package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.js.map +1 -0
  1119. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.d.ts.map +1 -1
  1120. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js +11 -12
  1121. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js.map +1 -1
  1122. package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.d.ts +11 -0
  1123. package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.d.ts.map +1 -0
  1124. package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.js +98 -0
  1125. package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.js.map +1 -0
  1126. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.d.ts.map +1 -1
  1127. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js +13 -7
  1128. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js.map +1 -1
  1129. package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.d.ts +11 -0
  1130. package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.d.ts.map +1 -0
  1131. package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.js +129 -0
  1132. package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.js.map +1 -0
  1133. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.d.ts.map +1 -1
  1134. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js +3 -3
  1135. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js.map +1 -1
  1136. package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.d.ts +11 -0
  1137. package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.d.ts.map +1 -0
  1138. package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.js +100 -0
  1139. package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.js.map +1 -0
  1140. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.d.ts.map +1 -1
  1141. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js +11 -12
  1142. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js.map +1 -1
  1143. package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.d.ts +11 -0
  1144. package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.d.ts.map +1 -0
  1145. package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.js +120 -0
  1146. package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.js.map +1 -0
  1147. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.d.ts.map +1 -1
  1148. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js +23 -24
  1149. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js.map +1 -1
  1150. package/dist/lib/generated/Entities/EntityDocument/sections/details.component.d.ts +11 -0
  1151. package/dist/lib/generated/Entities/EntityDocument/sections/details.component.d.ts.map +1 -0
  1152. package/dist/lib/generated/Entities/EntityDocument/sections/details.component.js +207 -0
  1153. package/dist/lib/generated/Entities/EntityDocument/sections/details.component.js.map +1 -0
  1154. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.d.ts.map +1 -1
  1155. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js +3 -3
  1156. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js.map +1 -1
  1157. package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.d.ts +11 -0
  1158. package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.d.ts.map +1 -0
  1159. package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.js +118 -0
  1160. package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.js.map +1 -0
  1161. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.d.ts.map +1 -1
  1162. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js +3 -3
  1163. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js.map +1 -1
  1164. package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.d.ts +11 -0
  1165. package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.d.ts.map +1 -0
  1166. package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.js +118 -0
  1167. package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.js.map +1 -0
  1168. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.d.ts.map +1 -1
  1169. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js +11 -12
  1170. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js.map +1 -1
  1171. package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.d.ts +11 -0
  1172. package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.d.ts.map +1 -0
  1173. package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.js +89 -0
  1174. package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.js.map +1 -0
  1175. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.d.ts.map +1 -1
  1176. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js +31 -26
  1177. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js.map +1 -1
  1178. package/dist/lib/generated/Entities/EntityField/sections/details.component.d.ts +11 -0
  1179. package/dist/lib/generated/Entities/EntityField/sections/details.component.d.ts.map +1 -0
  1180. package/dist/lib/generated/Entities/EntityField/sections/details.component.js +561 -0
  1181. package/dist/lib/generated/Entities/EntityField/sections/details.component.js.map +1 -0
  1182. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.d.ts.map +1 -1
  1183. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js +3 -3
  1184. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js.map +1 -1
  1185. package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.d.ts +11 -0
  1186. package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.d.ts.map +1 -0
  1187. package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.js +145 -0
  1188. package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.js.map +1 -0
  1189. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.d.ts.map +1 -1
  1190. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js +3 -3
  1191. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js.map +1 -1
  1192. package/dist/lib/generated/Entities/EntityPermission/sections/details.component.d.ts +11 -0
  1193. package/dist/lib/generated/Entities/EntityPermission/sections/details.component.d.ts.map +1 -0
  1194. package/dist/lib/generated/Entities/EntityPermission/sections/details.component.js +236 -0
  1195. package/dist/lib/generated/Entities/EntityPermission/sections/details.component.js.map +1 -0
  1196. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.d.ts.map +1 -1
  1197. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js +3 -3
  1198. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js.map +1 -1
  1199. package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.d.ts +11 -0
  1200. package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.d.ts.map +1 -0
  1201. package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.js +176 -0
  1202. package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.js.map +1 -0
  1203. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.d.ts.map +1 -1
  1204. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js +3 -3
  1205. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js.map +1 -1
  1206. package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.d.ts +11 -0
  1207. package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.d.ts.map +1 -0
  1208. package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.js +349 -0
  1209. package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.js.map +1 -0
  1210. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.d.ts.map +1 -1
  1211. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js +11 -12
  1212. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js.map +1 -1
  1213. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.d.ts +11 -0
  1214. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.d.ts.map +1 -0
  1215. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.js +98 -0
  1216. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.js.map +1 -0
  1217. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.d.ts.map +1 -1
  1218. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js +3 -3
  1219. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js.map +1 -1
  1220. package/dist/lib/generated/Entities/EntitySetting/sections/details.component.d.ts +11 -0
  1221. package/dist/lib/generated/Entities/EntitySetting/sections/details.component.d.ts.map +1 -0
  1222. package/dist/lib/generated/Entities/EntitySetting/sections/details.component.js +118 -0
  1223. package/dist/lib/generated/Entities/EntitySetting/sections/details.component.js.map +1 -0
  1224. package/dist/lib/generated/Entities/Environment/environment.form.component.d.ts.map +1 -1
  1225. package/dist/lib/generated/Entities/Environment/environment.form.component.js +47 -48
  1226. package/dist/lib/generated/Entities/Environment/environment.form.component.js.map +1 -1
  1227. package/dist/lib/generated/Entities/Environment/sections/details.component.d.ts +11 -0
  1228. package/dist/lib/generated/Entities/Environment/sections/details.component.d.ts.map +1 -0
  1229. package/dist/lib/generated/Entities/Environment/sections/details.component.js +107 -0
  1230. package/dist/lib/generated/Entities/Environment/sections/details.component.js.map +1 -0
  1231. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.d.ts.map +1 -1
  1232. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js +18 -12
  1233. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js.map +1 -1
  1234. package/dist/lib/generated/Entities/ErrorLog/sections/details.component.d.ts +11 -0
  1235. package/dist/lib/generated/Entities/ErrorLog/sections/details.component.d.ts.map +1 -0
  1236. package/dist/lib/generated/Entities/ErrorLog/sections/details.component.js +147 -0
  1237. package/dist/lib/generated/Entities/ErrorLog/sections/details.component.js.map +1 -0
  1238. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.d.ts.map +1 -1
  1239. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js +3 -3
  1240. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js.map +1 -1
  1241. package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.d.ts +11 -0
  1242. package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.d.ts.map +1 -0
  1243. package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.js +152 -0
  1244. package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.js.map +1 -0
  1245. package/dist/lib/generated/Entities/File/file.form.component.d.ts.map +1 -1
  1246. package/dist/lib/generated/Entities/File/file.form.component.js +29 -30
  1247. package/dist/lib/generated/Entities/File/file.form.component.js.map +1 -1
  1248. package/dist/lib/generated/Entities/File/sections/details.component.d.ts +11 -0
  1249. package/dist/lib/generated/Entities/File/sections/details.component.d.ts.map +1 -0
  1250. package/dist/lib/generated/Entities/File/sections/details.component.js +156 -0
  1251. package/dist/lib/generated/Entities/File/sections/details.component.js.map +1 -0
  1252. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.d.ts.map +1 -1
  1253. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js +17 -18
  1254. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js.map +1 -1
  1255. package/dist/lib/generated/Entities/FileCategory/sections/details.component.d.ts +11 -0
  1256. package/dist/lib/generated/Entities/FileCategory/sections/details.component.d.ts.map +1 -0
  1257. package/dist/lib/generated/Entities/FileCategory/sections/details.component.js +118 -0
  1258. package/dist/lib/generated/Entities/FileCategory/sections/details.component.js.map +1 -0
  1259. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.d.ts.map +1 -1
  1260. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js +3 -3
  1261. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js.map +1 -1
  1262. package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.d.ts +11 -0
  1263. package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.d.ts.map +1 -0
  1264. package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.js +120 -0
  1265. package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.js.map +1 -0
  1266. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.d.ts.map +1 -1
  1267. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.js +3 -3
  1268. package/dist/lib/generated/Entities/FileStorageAccount/filestorageaccount.form.component.js.map +1 -1
  1269. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.d.ts.map +1 -1
  1270. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js +29 -30
  1271. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js.map +1 -1
  1272. package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.d.ts +11 -0
  1273. package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.d.ts.map +1 -0
  1274. package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.js +134 -0
  1275. package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.js.map +1 -0
  1276. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.d.ts.map +1 -1
  1277. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js +3 -3
  1278. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js.map +1 -1
  1279. package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.d.ts +11 -0
  1280. package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.d.ts.map +1 -0
  1281. package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.js +203 -0
  1282. package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.js.map +1 -0
  1283. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.d.ts.map +1 -1
  1284. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js +17 -18
  1285. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js.map +1 -1
  1286. package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.d.ts +11 -0
  1287. package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.d.ts.map +1 -0
  1288. package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.js +118 -0
  1289. package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.js.map +1 -0
  1290. package/dist/lib/generated/Entities/Integration/integration.form.component.d.ts.map +1 -1
  1291. package/dist/lib/generated/Entities/Integration/integration.form.component.js +23 -24
  1292. package/dist/lib/generated/Entities/Integration/integration.form.component.js.map +1 -1
  1293. package/dist/lib/generated/Entities/Integration/sections/details.component.d.ts +11 -0
  1294. package/dist/lib/generated/Entities/Integration/sections/details.component.d.ts.map +1 -0
  1295. package/dist/lib/generated/Entities/Integration/sections/details.component.js +135 -0
  1296. package/dist/lib/generated/Entities/Integration/sections/details.component.js.map +1 -0
  1297. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.d.ts.map +1 -1
  1298. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js +3 -3
  1299. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js.map +1 -1
  1300. package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.d.ts +11 -0
  1301. package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.d.ts.map +1 -0
  1302. package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.js +139 -0
  1303. package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.js.map +1 -0
  1304. package/dist/lib/generated/Entities/Library/library.form.component.d.ts.map +1 -1
  1305. package/dist/lib/generated/Entities/Library/library.form.component.js +17 -18
  1306. package/dist/lib/generated/Entities/Library/library.form.component.js.map +1 -1
  1307. package/dist/lib/generated/Entities/Library/sections/details.component.d.ts +11 -0
  1308. package/dist/lib/generated/Entities/Library/sections/details.component.d.ts.map +1 -0
  1309. package/dist/lib/generated/Entities/Library/sections/details.component.js +116 -0
  1310. package/dist/lib/generated/Entities/Library/sections/details.component.js.map +1 -0
  1311. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.d.ts.map +1 -1
  1312. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js +3 -3
  1313. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js.map +1 -1
  1314. package/dist/lib/generated/Entities/LibraryItem/sections/details.component.d.ts +11 -0
  1315. package/dist/lib/generated/Entities/LibraryItem/sections/details.component.d.ts.map +1 -0
  1316. package/dist/lib/generated/Entities/LibraryItem/sections/details.component.js +109 -0
  1317. package/dist/lib/generated/Entities/LibraryItem/sections/details.component.js.map +1 -0
  1318. package/dist/lib/generated/Entities/List/list.form.component.d.ts.map +1 -1
  1319. package/dist/lib/generated/Entities/List/list.form.component.js +29 -30
  1320. package/dist/lib/generated/Entities/List/list.form.component.js.map +1 -1
  1321. package/dist/lib/generated/Entities/List/sections/details.component.d.ts +11 -0
  1322. package/dist/lib/generated/Entities/List/sections/details.component.d.ts.map +1 -0
  1323. package/dist/lib/generated/Entities/List/sections/details.component.js +178 -0
  1324. package/dist/lib/generated/Entities/List/sections/details.component.js.map +1 -0
  1325. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.d.ts.map +1 -1
  1326. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js +17 -18
  1327. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js.map +1 -1
  1328. package/dist/lib/generated/Entities/ListCategory/sections/details.component.d.ts +11 -0
  1329. package/dist/lib/generated/Entities/ListCategory/sections/details.component.d.ts.map +1 -0
  1330. package/dist/lib/generated/Entities/ListCategory/sections/details.component.js +138 -0
  1331. package/dist/lib/generated/Entities/ListCategory/sections/details.component.js.map +1 -0
  1332. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.d.ts.map +1 -1
  1333. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js +3 -3
  1334. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js.map +1 -1
  1335. package/dist/lib/generated/Entities/ListDetail/sections/details.component.d.ts +11 -0
  1336. package/dist/lib/generated/Entities/ListDetail/sections/details.component.d.ts.map +1 -0
  1337. package/dist/lib/generated/Entities/ListDetail/sections/details.component.js +127 -0
  1338. package/dist/lib/generated/Entities/ListDetail/sections/details.component.js.map +1 -0
  1339. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.d.ts.map +1 -1
  1340. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js +3 -3
  1341. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js.map +1 -1
  1342. package/dist/lib/generated/Entities/ListShare/listshare.form.component.d.ts.map +1 -1
  1343. package/dist/lib/generated/Entities/ListShare/listshare.form.component.js +3 -3
  1344. package/dist/lib/generated/Entities/ListShare/listshare.form.component.js.map +1 -1
  1345. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.d.ts.map +1 -1
  1346. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js +56 -21
  1347. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js.map +1 -1
  1348. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.d.ts.map +1 -1
  1349. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js +77 -24
  1350. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js.map +1 -1
  1351. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.d.ts.map +1 -1
  1352. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js +3 -3
  1353. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js.map +1 -1
  1354. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.d.ts.map +1 -1
  1355. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js +3 -3
  1356. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js.map +1 -1
  1357. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.d.ts.map +1 -1
  1358. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js +17 -18
  1359. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js.map +1 -1
  1360. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.d.ts.map +1 -1
  1361. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js +10 -10
  1362. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js.map +1 -1
  1363. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.d.ts +11 -0
  1364. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.d.ts.map +1 -0
  1365. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.js +75 -0
  1366. package/dist/lib/generated/Entities/OAuthAuthServerMetadataCache/oauthauthservermetadatacache.form.component.js.map +1 -0
  1367. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.d.ts +11 -0
  1368. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.d.ts.map +1 -0
  1369. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.js +81 -0
  1370. package/dist/lib/generated/Entities/OAuthAuthorizationState/oauthauthorizationstate.form.component.js.map +1 -0
  1371. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.d.ts +11 -0
  1372. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.d.ts.map +1 -0
  1373. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.js +81 -0
  1374. package/dist/lib/generated/Entities/OAuthClientRegistration/oauthclientregistration.form.component.js.map +1 -0
  1375. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.d.ts +11 -0
  1376. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.d.ts.map +1 -0
  1377. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.js +67 -0
  1378. package/dist/lib/generated/Entities/OAuthToken/oauthtoken.form.component.js.map +1 -0
  1379. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.d.ts.map +1 -1
  1380. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js +11 -12
  1381. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js.map +1 -1
  1382. package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.d.ts +11 -0
  1383. package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.d.ts.map +1 -0
  1384. package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.js +89 -0
  1385. package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.js.map +1 -0
  1386. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.d.ts.map +1 -1
  1387. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js +11 -12
  1388. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js.map +1 -1
  1389. package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.d.ts +11 -0
  1390. package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.d.ts.map +1 -0
  1391. package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.js +98 -0
  1392. package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.js.map +1 -0
  1393. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.d.ts.map +1 -1
  1394. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js +11 -12
  1395. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js.map +1 -1
  1396. package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.d.ts +11 -0
  1397. package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.d.ts.map +1 -0
  1398. package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.js +89 -0
  1399. package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.js.map +1 -0
  1400. package/dist/lib/generated/Entities/Project/project.form.component.d.ts.map +1 -1
  1401. package/dist/lib/generated/Entities/Project/project.form.component.js +23 -24
  1402. package/dist/lib/generated/Entities/Project/project.form.component.js.map +1 -1
  1403. package/dist/lib/generated/Entities/Project/sections/details.component.d.ts +11 -0
  1404. package/dist/lib/generated/Entities/Project/sections/details.component.d.ts.map +1 -0
  1405. package/dist/lib/generated/Entities/Project/sections/details.component.js +165 -0
  1406. package/dist/lib/generated/Entities/Project/sections/details.component.js.map +1 -0
  1407. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.d.ts.map +1 -1
  1408. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js +3 -3
  1409. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js.map +1 -1
  1410. package/dist/lib/generated/Entities/PublicLink/sections/details.component.d.ts +11 -0
  1411. package/dist/lib/generated/Entities/PublicLink/sections/details.component.d.ts.map +1 -0
  1412. package/dist/lib/generated/Entities/PublicLink/sections/details.component.js +163 -0
  1413. package/dist/lib/generated/Entities/PublicLink/sections/details.component.js.map +1 -0
  1414. package/dist/lib/generated/Entities/Query/query.form.component.d.ts.map +1 -1
  1415. package/dist/lib/generated/Entities/Query/query.form.component.js +35 -36
  1416. package/dist/lib/generated/Entities/Query/query.form.component.js.map +1 -1
  1417. package/dist/lib/generated/Entities/Query/sections/details.component.d.ts +11 -0
  1418. package/dist/lib/generated/Entities/Query/sections/details.component.d.ts.map +1 -0
  1419. package/dist/lib/generated/Entities/Query/sections/details.component.js +255 -0
  1420. package/dist/lib/generated/Entities/Query/sections/details.component.js.map +1 -0
  1421. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.d.ts.map +1 -1
  1422. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js +17 -18
  1423. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js.map +1 -1
  1424. package/dist/lib/generated/Entities/QueryCategory/sections/details.component.d.ts +11 -0
  1425. package/dist/lib/generated/Entities/QueryCategory/sections/details.component.d.ts.map +1 -0
  1426. package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js +174 -0
  1427. package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js.map +1 -0
  1428. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.d.ts.map +1 -1
  1429. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js +3 -3
  1430. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js.map +1 -1
  1431. package/dist/lib/generated/Entities/QueryEntity/sections/details.component.d.ts +11 -0
  1432. package/dist/lib/generated/Entities/QueryEntity/sections/details.component.d.ts.map +1 -0
  1433. package/dist/lib/generated/Entities/QueryEntity/sections/details.component.js +129 -0
  1434. package/dist/lib/generated/Entities/QueryEntity/sections/details.component.js.map +1 -0
  1435. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.d.ts.map +1 -1
  1436. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js +3 -3
  1437. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js.map +1 -1
  1438. package/dist/lib/generated/Entities/QueryField/sections/details.component.d.ts +11 -0
  1439. package/dist/lib/generated/Entities/QueryField/sections/details.component.d.ts.map +1 -0
  1440. package/dist/lib/generated/Entities/QueryField/sections/details.component.js +219 -0
  1441. package/dist/lib/generated/Entities/QueryField/sections/details.component.js.map +1 -0
  1442. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.d.ts.map +1 -1
  1443. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js +3 -3
  1444. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js.map +1 -1
  1445. package/dist/lib/generated/Entities/QueryParameter/sections/details.component.d.ts +11 -0
  1446. package/dist/lib/generated/Entities/QueryParameter/sections/details.component.d.ts.map +1 -0
  1447. package/dist/lib/generated/Entities/QueryParameter/sections/details.component.js +172 -0
  1448. package/dist/lib/generated/Entities/QueryParameter/sections/details.component.js.map +1 -0
  1449. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.d.ts.map +1 -1
  1450. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js +3 -3
  1451. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js.map +1 -1
  1452. package/dist/lib/generated/Entities/QueryPermission/sections/details.component.d.ts +11 -0
  1453. package/dist/lib/generated/Entities/QueryPermission/sections/details.component.d.ts.map +1 -0
  1454. package/dist/lib/generated/Entities/QueryPermission/sections/details.component.js +111 -0
  1455. package/dist/lib/generated/Entities/QueryPermission/sections/details.component.js.map +1 -0
  1456. package/dist/lib/generated/Entities/Queue/queue.form.component.d.ts.map +1 -1
  1457. package/dist/lib/generated/Entities/Queue/queue.form.component.js +11 -12
  1458. package/dist/lib/generated/Entities/Queue/queue.form.component.js.map +1 -1
  1459. package/dist/lib/generated/Entities/Queue/sections/details.component.d.ts +11 -0
  1460. package/dist/lib/generated/Entities/Queue/sections/details.component.d.ts.map +1 -0
  1461. package/dist/lib/generated/Entities/Queue/sections/details.component.js +226 -0
  1462. package/dist/lib/generated/Entities/Queue/sections/details.component.js.map +1 -0
  1463. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.d.ts.map +1 -1
  1464. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js +3 -3
  1465. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js.map +1 -1
  1466. package/dist/lib/generated/Entities/QueueTask/sections/details.component.d.ts +11 -0
  1467. package/dist/lib/generated/Entities/QueueTask/sections/details.component.d.ts.map +1 -0
  1468. package/dist/lib/generated/Entities/QueueTask/sections/details.component.js +163 -0
  1469. package/dist/lib/generated/Entities/QueueTask/sections/details.component.js.map +1 -0
  1470. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.d.ts.map +1 -1
  1471. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js +11 -12
  1472. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js.map +1 -1
  1473. package/dist/lib/generated/Entities/QueueType/sections/details.component.d.ts +11 -0
  1474. package/dist/lib/generated/Entities/QueueType/sections/details.component.d.ts.map +1 -0
  1475. package/dist/lib/generated/Entities/QueueType/sections/details.component.js +116 -0
  1476. package/dist/lib/generated/Entities/QueueType/sections/details.component.js.map +1 -0
  1477. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.d.ts.map +1 -1
  1478. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js +16 -23
  1479. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js.map +1 -1
  1480. package/dist/lib/generated/Entities/Recommendation/sections/details.component.d.ts +11 -0
  1481. package/dist/lib/generated/Entities/Recommendation/sections/details.component.d.ts.map +1 -0
  1482. package/dist/lib/generated/Entities/Recommendation/sections/details.component.js +111 -0
  1483. package/dist/lib/generated/Entities/Recommendation/sections/details.component.js.map +1 -0
  1484. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.d.ts.map +1 -1
  1485. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js +7 -13
  1486. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js.map +1 -1
  1487. package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.d.ts +11 -0
  1488. package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.d.ts.map +1 -0
  1489. package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.js +120 -0
  1490. package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.js.map +1 -0
  1491. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.d.ts.map +1 -1
  1492. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js +11 -12
  1493. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js.map +1 -1
  1494. package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.d.ts +11 -0
  1495. package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.d.ts.map +1 -0
  1496. package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.js +89 -0
  1497. package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.js.map +1 -0
  1498. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.d.ts.map +1 -1
  1499. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js +11 -12
  1500. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js.map +1 -1
  1501. package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.d.ts +11 -0
  1502. package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.d.ts.map +1 -0
  1503. package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.js +147 -0
  1504. package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.js.map +1 -0
  1505. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.d.ts.map +1 -1
  1506. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js +31 -19
  1507. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js.map +1 -1
  1508. package/dist/lib/generated/Entities/RecordChange/sections/details.component.d.ts +11 -0
  1509. package/dist/lib/generated/Entities/RecordChange/sections/details.component.d.ts.map +1 -0
  1510. package/dist/lib/generated/Entities/RecordChange/sections/details.component.js +232 -0
  1511. package/dist/lib/generated/Entities/RecordChange/sections/details.component.js.map +1 -0
  1512. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.d.ts.map +1 -1
  1513. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js +11 -12
  1514. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js.map +1 -1
  1515. package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.d.ts +11 -0
  1516. package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.d.ts.map +1 -0
  1517. package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.js +118 -0
  1518. package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.js.map +1 -0
  1519. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.d.ts.map +1 -1
  1520. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js +3 -3
  1521. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js.map +1 -1
  1522. package/dist/lib/generated/Entities/RecordLink/sections/details.component.d.ts +11 -0
  1523. package/dist/lib/generated/Entities/RecordLink/sections/details.component.d.ts.map +1 -0
  1524. package/dist/lib/generated/Entities/RecordLink/sections/details.component.js +156 -0
  1525. package/dist/lib/generated/Entities/RecordLink/sections/details.component.js.map +1 -0
  1526. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.d.ts.map +1 -1
  1527. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js +7 -13
  1528. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js.map +1 -1
  1529. package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.d.ts +11 -0
  1530. package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.d.ts.map +1 -0
  1531. package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.js +109 -0
  1532. package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.js.map +1 -0
  1533. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.d.ts.map +1 -1
  1534. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js +17 -18
  1535. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js.map +1 -1
  1536. package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.d.ts +11 -0
  1537. package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.d.ts.map +1 -0
  1538. package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.js +194 -0
  1539. package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.js.map +1 -0
  1540. package/dist/lib/generated/Entities/Report/report.form.component.d.ts.map +1 -1
  1541. package/dist/lib/generated/Entities/Report/report.form.component.js +28 -35
  1542. package/dist/lib/generated/Entities/Report/report.form.component.js.map +1 -1
  1543. package/dist/lib/generated/Entities/Report/sections/details.component.d.ts +11 -0
  1544. package/dist/lib/generated/Entities/Report/sections/details.component.d.ts.map +1 -0
  1545. package/dist/lib/generated/Entities/Report/sections/details.component.js +325 -0
  1546. package/dist/lib/generated/Entities/Report/sections/details.component.js.map +1 -0
  1547. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.d.ts.map +1 -1
  1548. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js +17 -18
  1549. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js.map +1 -1
  1550. package/dist/lib/generated/Entities/ReportCategory/sections/details.component.d.ts +11 -0
  1551. package/dist/lib/generated/Entities/ReportCategory/sections/details.component.d.ts.map +1 -0
  1552. package/dist/lib/generated/Entities/ReportCategory/sections/details.component.js +138 -0
  1553. package/dist/lib/generated/Entities/ReportCategory/sections/details.component.js.map +1 -0
  1554. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.d.ts.map +1 -1
  1555. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js +3 -3
  1556. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js.map +1 -1
  1557. package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.d.ts +11 -0
  1558. package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.d.ts.map +1 -0
  1559. package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.js +120 -0
  1560. package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.js.map +1 -0
  1561. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.d.ts.map +1 -1
  1562. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js +3 -3
  1563. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js.map +1 -1
  1564. package/dist/lib/generated/Entities/ReportUserState/sections/details.component.d.ts +11 -0
  1565. package/dist/lib/generated/Entities/ReportUserState/sections/details.component.d.ts.map +1 -0
  1566. package/dist/lib/generated/Entities/ReportUserState/sections/details.component.js +120 -0
  1567. package/dist/lib/generated/Entities/ReportUserState/sections/details.component.js.map +1 -0
  1568. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.d.ts.map +1 -1
  1569. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js +3 -3
  1570. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js.map +1 -1
  1571. package/dist/lib/generated/Entities/ReportVersion/sections/details.component.d.ts +11 -0
  1572. package/dist/lib/generated/Entities/ReportVersion/sections/details.component.d.ts.map +1 -0
  1573. package/dist/lib/generated/Entities/ReportVersion/sections/details.component.js +136 -0
  1574. package/dist/lib/generated/Entities/ReportVersion/sections/details.component.js.map +1 -0
  1575. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.d.ts.map +1 -1
  1576. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js +3 -3
  1577. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js.map +1 -1
  1578. package/dist/lib/generated/Entities/ResourceLink/sections/details.component.d.ts +11 -0
  1579. package/dist/lib/generated/Entities/ResourceLink/sections/details.component.d.ts.map +1 -0
  1580. package/dist/lib/generated/Entities/ResourceLink/sections/details.component.js +129 -0
  1581. package/dist/lib/generated/Entities/ResourceLink/sections/details.component.js.map +1 -0
  1582. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.d.ts.map +1 -1
  1583. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js +3 -3
  1584. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js.map +1 -1
  1585. package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.d.ts +11 -0
  1586. package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.d.ts.map +1 -0
  1587. package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.js +185 -0
  1588. package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.js.map +1 -0
  1589. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.d.ts.map +1 -1
  1590. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js +29 -30
  1591. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js.map +1 -1
  1592. package/dist/lib/generated/Entities/ResourceType/sections/details.component.d.ts +11 -0
  1593. package/dist/lib/generated/Entities/ResourceType/sections/details.component.d.ts.map +1 -0
  1594. package/dist/lib/generated/Entities/ResourceType/sections/details.component.js +147 -0
  1595. package/dist/lib/generated/Entities/ResourceType/sections/details.component.js.map +1 -0
  1596. package/dist/lib/generated/Entities/Role/role.form.component.d.ts.map +1 -1
  1597. package/dist/lib/generated/Entities/Role/role.form.component.js +53 -54
  1598. package/dist/lib/generated/Entities/Role/role.form.component.js.map +1 -1
  1599. package/dist/lib/generated/Entities/Role/sections/details.component.d.ts +11 -0
  1600. package/dist/lib/generated/Entities/Role/sections/details.component.d.ts.map +1 -0
  1601. package/dist/lib/generated/Entities/Role/sections/details.component.js +107 -0
  1602. package/dist/lib/generated/Entities/Role/sections/details.component.js.map +1 -0
  1603. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.d.ts.map +1 -1
  1604. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js +11 -12
  1605. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js.map +1 -1
  1606. package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.d.ts +11 -0
  1607. package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.d.ts.map +1 -0
  1608. package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.js +98 -0
  1609. package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.js.map +1 -0
  1610. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.d.ts.map +1 -1
  1611. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js +11 -12
  1612. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js.map +1 -1
  1613. package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.d.ts +11 -0
  1614. package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.d.ts.map +1 -0
  1615. package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.js +210 -0
  1616. package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.js.map +1 -0
  1617. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.d.ts.map +1 -1
  1618. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js +3 -3
  1619. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js.map +1 -1
  1620. package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.d.ts +11 -0
  1621. package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.d.ts.map +1 -0
  1622. package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.js +138 -0
  1623. package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.js.map +1 -0
  1624. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.d.ts.map +1 -1
  1625. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js +11 -12
  1626. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js.map +1 -1
  1627. package/dist/lib/generated/Entities/ScheduledJob/sections/details.component.d.ts +11 -0
  1628. package/dist/lib/generated/Entities/ScheduledJob/sections/details.component.d.ts.map +1 -0
  1629. package/dist/lib/generated/Entities/ScheduledJob/sections/details.component.js +329 -0
  1630. package/dist/lib/generated/Entities/ScheduledJob/sections/details.component.js.map +1 -0
  1631. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.d.ts.map +1 -1
  1632. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js +11 -12
  1633. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js.map +1 -1
  1634. package/dist/lib/generated/Entities/ScheduledJobRun/sections/details.component.d.ts +11 -0
  1635. package/dist/lib/generated/Entities/ScheduledJobRun/sections/details.component.d.ts.map +1 -0
  1636. package/dist/lib/generated/Entities/ScheduledJobRun/sections/details.component.js +174 -0
  1637. package/dist/lib/generated/Entities/ScheduledJobRun/sections/details.component.js.map +1 -0
  1638. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.d.ts.map +1 -1
  1639. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js +11 -12
  1640. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js.map +1 -1
  1641. package/dist/lib/generated/Entities/ScheduledJobType/sections/details.component.d.ts +11 -0
  1642. package/dist/lib/generated/Entities/ScheduledJobType/sections/details.component.d.ts.map +1 -0
  1643. package/dist/lib/generated/Entities/ScheduledJobType/sections/details.component.js +125 -0
  1644. package/dist/lib/generated/Entities/ScheduledJobType/sections/details.component.js.map +1 -0
  1645. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.d.ts.map +1 -1
  1646. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js +3 -3
  1647. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js.map +1 -1
  1648. package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.d.ts +11 -0
  1649. package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.d.ts.map +1 -0
  1650. package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.js +107 -0
  1651. package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.js.map +1 -0
  1652. package/dist/lib/generated/Entities/Skill/sections/details.component.d.ts +11 -0
  1653. package/dist/lib/generated/Entities/Skill/sections/details.component.d.ts.map +1 -0
  1654. package/dist/lib/generated/Entities/Skill/sections/details.component.js +109 -0
  1655. package/dist/lib/generated/Entities/Skill/sections/details.component.js.map +1 -0
  1656. package/dist/lib/generated/Entities/Skill/skill.form.component.d.ts.map +1 -1
  1657. package/dist/lib/generated/Entities/Skill/skill.form.component.js +17 -18
  1658. package/dist/lib/generated/Entities/Skill/skill.form.component.js.map +1 -1
  1659. package/dist/lib/generated/Entities/Tag/sections/details.component.d.ts +11 -0
  1660. package/dist/lib/generated/Entities/Tag/sections/details.component.d.ts.map +1 -0
  1661. package/dist/lib/generated/Entities/Tag/sections/details.component.js +127 -0
  1662. package/dist/lib/generated/Entities/Tag/sections/details.component.js.map +1 -0
  1663. package/dist/lib/generated/Entities/Tag/tag.form.component.d.ts.map +1 -1
  1664. package/dist/lib/generated/Entities/Tag/tag.form.component.js +17 -18
  1665. package/dist/lib/generated/Entities/Tag/tag.form.component.js.map +1 -1
  1666. package/dist/lib/generated/Entities/TaggedItem/sections/details.component.d.ts +11 -0
  1667. package/dist/lib/generated/Entities/TaggedItem/sections/details.component.d.ts.map +1 -0
  1668. package/dist/lib/generated/Entities/TaggedItem/sections/details.component.js +120 -0
  1669. package/dist/lib/generated/Entities/TaggedItem/sections/details.component.js.map +1 -0
  1670. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.d.ts.map +1 -1
  1671. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js +3 -3
  1672. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js.map +1 -1
  1673. package/dist/lib/generated/Entities/Task/sections/details.component.d.ts +11 -0
  1674. package/dist/lib/generated/Entities/Task/sections/details.component.d.ts.map +1 -0
  1675. package/dist/lib/generated/Entities/Task/sections/details.component.js +274 -0
  1676. package/dist/lib/generated/Entities/Task/sections/details.component.js.map +1 -0
  1677. package/dist/lib/generated/Entities/Task/task.form.component.d.ts.map +1 -1
  1678. package/dist/lib/generated/Entities/Task/task.form.component.js +22 -23
  1679. package/dist/lib/generated/Entities/Task/task.form.component.js.map +1 -1
  1680. package/dist/lib/generated/Entities/TaskDependency/sections/details.component.d.ts +11 -0
  1681. package/dist/lib/generated/Entities/TaskDependency/sections/details.component.d.ts.map +1 -0
  1682. package/dist/lib/generated/Entities/TaskDependency/sections/details.component.js +120 -0
  1683. package/dist/lib/generated/Entities/TaskDependency/sections/details.component.js.map +1 -0
  1684. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.d.ts.map +1 -1
  1685. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js +3 -3
  1686. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js.map +1 -1
  1687. package/dist/lib/generated/Entities/TaskType/sections/details.component.d.ts +11 -0
  1688. package/dist/lib/generated/Entities/TaskType/sections/details.component.d.ts.map +1 -0
  1689. package/dist/lib/generated/Entities/TaskType/sections/details.component.js +89 -0
  1690. package/dist/lib/generated/Entities/TaskType/sections/details.component.js.map +1 -0
  1691. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.d.ts.map +1 -1
  1692. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js +11 -12
  1693. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js.map +1 -1
  1694. package/dist/lib/generated/Entities/Template/sections/details.component.d.ts +11 -0
  1695. package/dist/lib/generated/Entities/Template/sections/details.component.d.ts.map +1 -0
  1696. package/dist/lib/generated/Entities/Template/sections/details.component.js +165 -0
  1697. package/dist/lib/generated/Entities/Template/sections/details.component.js.map +1 -0
  1698. package/dist/lib/generated/Entities/Template/template.form.component.d.ts.map +1 -1
  1699. package/dist/lib/generated/Entities/Template/template.form.component.js +41 -42
  1700. package/dist/lib/generated/Entities/Template/template.form.component.js.map +1 -1
  1701. package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.d.ts +11 -0
  1702. package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.d.ts.map +1 -0
  1703. package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.js +138 -0
  1704. package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.js.map +1 -0
  1705. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.d.ts.map +1 -1
  1706. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js +17 -18
  1707. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js.map +1 -1
  1708. package/dist/lib/generated/Entities/TemplateContent/sections/details.component.d.ts +11 -0
  1709. package/dist/lib/generated/Entities/TemplateContent/sections/details.component.d.ts.map +1 -0
  1710. package/dist/lib/generated/Entities/TemplateContent/sections/details.component.js +138 -0
  1711. package/dist/lib/generated/Entities/TemplateContent/sections/details.component.js.map +1 -0
  1712. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.d.ts.map +1 -1
  1713. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js +11 -12
  1714. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js.map +1 -1
  1715. package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.d.ts +11 -0
  1716. package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.d.ts.map +1 -0
  1717. package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.js +98 -0
  1718. package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.js.map +1 -0
  1719. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.d.ts.map +1 -1
  1720. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js +11 -12
  1721. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js.map +1 -1
  1722. package/dist/lib/generated/Entities/TemplateParam/sections/details.component.d.ts +11 -0
  1723. package/dist/lib/generated/Entities/TemplateParam/sections/details.component.d.ts.map +1 -0
  1724. package/dist/lib/generated/Entities/TemplateParam/sections/details.component.js +212 -0
  1725. package/dist/lib/generated/Entities/TemplateParam/sections/details.component.js.map +1 -0
  1726. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.d.ts.map +1 -1
  1727. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js +12 -18
  1728. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js.map +1 -1
  1729. package/dist/lib/generated/Entities/Test/test.form.component.d.ts.map +1 -1
  1730. package/dist/lib/generated/Entities/Test/test.form.component.js +17 -18
  1731. package/dist/lib/generated/Entities/Test/test.form.component.js.map +1 -1
  1732. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.d.ts.map +1 -1
  1733. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js +3 -3
  1734. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js.map +1 -1
  1735. package/dist/lib/generated/Entities/TestRun/testrun.form.component.d.ts.map +1 -1
  1736. package/dist/lib/generated/Entities/TestRun/testrun.form.component.js +35 -36
  1737. package/dist/lib/generated/Entities/TestRun/testrun.form.component.js.map +1 -1
  1738. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.d.ts.map +1 -1
  1739. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js +3 -3
  1740. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js.map +1 -1
  1741. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.d.ts.map +1 -1
  1742. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js +23 -24
  1743. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js.map +1 -1
  1744. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.d.ts.map +1 -1
  1745. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js +11 -12
  1746. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js.map +1 -1
  1747. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.d.ts.map +1 -1
  1748. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js +3 -3
  1749. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js.map +1 -1
  1750. package/dist/lib/generated/Entities/TestType/testtype.form.component.d.ts.map +1 -1
  1751. package/dist/lib/generated/Entities/TestType/testtype.form.component.js +17 -18
  1752. package/dist/lib/generated/Entities/TestType/testtype.form.component.js.map +1 -1
  1753. package/dist/lib/generated/Entities/User/sections/details.component.d.ts +11 -0
  1754. package/dist/lib/generated/Entities/User/sections/details.component.d.ts.map +1 -0
  1755. package/dist/lib/generated/Entities/User/sections/details.component.js +247 -0
  1756. package/dist/lib/generated/Entities/User/sections/details.component.js.map +1 -0
  1757. package/dist/lib/generated/Entities/User/user.form.component.d.ts.map +1 -1
  1758. package/dist/lib/generated/Entities/User/user.form.component.js +540 -487
  1759. package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
  1760. package/dist/lib/generated/Entities/UserApplication/sections/details.component.d.ts +11 -0
  1761. package/dist/lib/generated/Entities/UserApplication/sections/details.component.d.ts.map +1 -0
  1762. package/dist/lib/generated/Entities/UserApplication/sections/details.component.js +129 -0
  1763. package/dist/lib/generated/Entities/UserApplication/sections/details.component.js.map +1 -0
  1764. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.d.ts.map +1 -1
  1765. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js +11 -12
  1766. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js.map +1 -1
  1767. package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.d.ts +11 -0
  1768. package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.d.ts.map +1 -0
  1769. package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.js +129 -0
  1770. package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.js.map +1 -0
  1771. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.d.ts.map +1 -1
  1772. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js +3 -3
  1773. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js.map +1 -1
  1774. package/dist/lib/generated/Entities/UserFavorite/sections/details.component.d.ts +11 -0
  1775. package/dist/lib/generated/Entities/UserFavorite/sections/details.component.d.ts.map +1 -0
  1776. package/dist/lib/generated/Entities/UserFavorite/sections/details.component.js +129 -0
  1777. package/dist/lib/generated/Entities/UserFavorite/sections/details.component.js.map +1 -0
  1778. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.d.ts.map +1 -1
  1779. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js +3 -3
  1780. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js.map +1 -1
  1781. package/dist/lib/generated/Entities/UserNotification/sections/details.component.d.ts +11 -0
  1782. package/dist/lib/generated/Entities/UserNotification/sections/details.component.d.ts.map +1 -0
  1783. package/dist/lib/generated/Entities/UserNotification/sections/details.component.js +165 -0
  1784. package/dist/lib/generated/Entities/UserNotification/sections/details.component.js.map +1 -0
  1785. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.d.ts.map +1 -1
  1786. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js +3 -3
  1787. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js.map +1 -1
  1788. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.d.ts.map +1 -1
  1789. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.js +3 -3
  1790. package/dist/lib/generated/Entities/UserNotificationPreference/usernotificationpreference.form.component.js.map +1 -1
  1791. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.d.ts.map +1 -1
  1792. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.js +17 -18
  1793. package/dist/lib/generated/Entities/UserNotificationType/usernotificationtype.form.component.js.map +1 -1
  1794. package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.d.ts +11 -0
  1795. package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.d.ts.map +1 -0
  1796. package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.js +183 -0
  1797. package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.js.map +1 -0
  1798. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.d.ts.map +1 -1
  1799. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js +3 -3
  1800. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js.map +1 -1
  1801. package/dist/lib/generated/Entities/UserRole/sections/details.component.d.ts +11 -0
  1802. package/dist/lib/generated/Entities/UserRole/sections/details.component.d.ts.map +1 -0
  1803. package/dist/lib/generated/Entities/UserRole/sections/details.component.js +111 -0
  1804. package/dist/lib/generated/Entities/UserRole/sections/details.component.js.map +1 -0
  1805. package/dist/lib/generated/Entities/UserRole/userrole.form.component.d.ts.map +1 -1
  1806. package/dist/lib/generated/Entities/UserRole/userrole.form.component.js +3 -3
  1807. package/dist/lib/generated/Entities/UserRole/userrole.form.component.js.map +1 -1
  1808. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.d.ts.map +1 -1
  1809. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js +3 -3
  1810. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js.map +1 -1
  1811. package/dist/lib/generated/Entities/UserView/sections/details.component.d.ts +11 -0
  1812. package/dist/lib/generated/Entities/UserView/sections/details.component.d.ts.map +1 -0
  1813. package/dist/lib/generated/Entities/UserView/sections/details.component.js +293 -0
  1814. package/dist/lib/generated/Entities/UserView/sections/details.component.js.map +1 -0
  1815. package/dist/lib/generated/Entities/UserView/userview.form.component.d.ts.map +1 -1
  1816. package/dist/lib/generated/Entities/UserView/userview.form.component.js +23 -24
  1817. package/dist/lib/generated/Entities/UserView/userview.form.component.js.map +1 -1
  1818. package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.d.ts +11 -0
  1819. package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.d.ts.map +1 -0
  1820. package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.js +158 -0
  1821. package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.js.map +1 -0
  1822. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.d.ts.map +1 -1
  1823. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js +17 -18
  1824. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js.map +1 -1
  1825. package/dist/lib/generated/Entities/UserViewRun/sections/details.component.d.ts +11 -0
  1826. package/dist/lib/generated/Entities/UserViewRun/sections/details.component.d.ts.map +1 -0
  1827. package/dist/lib/generated/Entities/UserViewRun/sections/details.component.js +120 -0
  1828. package/dist/lib/generated/Entities/UserViewRun/sections/details.component.js.map +1 -0
  1829. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.d.ts.map +1 -1
  1830. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js +11 -12
  1831. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js.map +1 -1
  1832. package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.d.ts +11 -0
  1833. package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.d.ts.map +1 -0
  1834. package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.js +109 -0
  1835. package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.js.map +1 -0
  1836. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.d.ts.map +1 -1
  1837. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js +3 -3
  1838. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js.map +1 -1
  1839. package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.d.ts +11 -0
  1840. package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.d.ts.map +1 -0
  1841. package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.js +107 -0
  1842. package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.js.map +1 -0
  1843. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.d.ts.map +1 -1
  1844. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js +17 -18
  1845. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js.map +1 -1
  1846. package/dist/lib/generated/Entities/VectorIndex/sections/details.component.d.ts +11 -0
  1847. package/dist/lib/generated/Entities/VectorIndex/sections/details.component.d.ts.map +1 -0
  1848. package/dist/lib/generated/Entities/VectorIndex/sections/details.component.js +129 -0
  1849. package/dist/lib/generated/Entities/VectorIndex/sections/details.component.js.map +1 -0
  1850. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.d.ts.map +1 -1
  1851. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js +11 -12
  1852. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js.map +1 -1
  1853. package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.d.ts +11 -0
  1854. package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.d.ts.map +1 -0
  1855. package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.js +152 -0
  1856. package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.js.map +1 -0
  1857. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.d.ts.map +1 -1
  1858. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js +3 -3
  1859. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js.map +1 -1
  1860. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.d.ts +11 -0
  1861. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.d.ts.map +1 -0
  1862. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.js +167 -0
  1863. package/dist/lib/generated/Entities/VersionLabel/versionlabel.form.component.js.map +1 -0
  1864. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.d.ts +11 -0
  1865. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.d.ts.map +1 -0
  1866. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.js +73 -0
  1867. package/dist/lib/generated/Entities/VersionLabelItem/versionlabelitem.form.component.js.map +1 -0
  1868. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.d.ts +11 -0
  1869. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.d.ts.map +1 -0
  1870. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.js +85 -0
  1871. package/dist/lib/generated/Entities/VersionLabelRestore/versionlabelrestore.form.component.js.map +1 -0
  1872. package/dist/lib/generated/Entities/Workflow/sections/details.component.d.ts +11 -0
  1873. package/dist/lib/generated/Entities/Workflow/sections/details.component.d.ts.map +1 -0
  1874. package/dist/lib/generated/Entities/Workflow/sections/details.component.js +154 -0
  1875. package/dist/lib/generated/Entities/Workflow/sections/details.component.js.map +1 -0
  1876. package/dist/lib/generated/Entities/Workflow/workflow.form.component.d.ts.map +1 -1
  1877. package/dist/lib/generated/Entities/Workflow/workflow.form.component.js +17 -18
  1878. package/dist/lib/generated/Entities/Workflow/workflow.form.component.js.map +1 -1
  1879. package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.d.ts +11 -0
  1880. package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.d.ts.map +1 -0
  1881. package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.js +107 -0
  1882. package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.js.map +1 -0
  1883. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.d.ts.map +1 -1
  1884. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js +11 -12
  1885. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js.map +1 -1
  1886. package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.d.ts +11 -0
  1887. package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.d.ts.map +1 -0
  1888. package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.js +145 -0
  1889. package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.js.map +1 -0
  1890. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.d.ts.map +1 -1
  1891. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js +3 -3
  1892. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js.map +1 -1
  1893. package/dist/lib/generated/Entities/Workspace/sections/details.component.d.ts +11 -0
  1894. package/dist/lib/generated/Entities/Workspace/sections/details.component.d.ts.map +1 -0
  1895. package/dist/lib/generated/Entities/Workspace/sections/details.component.js +109 -0
  1896. package/dist/lib/generated/Entities/Workspace/sections/details.component.js.map +1 -0
  1897. package/dist/lib/generated/Entities/Workspace/workspace.form.component.d.ts.map +1 -1
  1898. package/dist/lib/generated/Entities/Workspace/workspace.form.component.js +11 -12
  1899. package/dist/lib/generated/Entities/Workspace/workspace.form.component.js.map +1 -1
  1900. package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.d.ts +11 -0
  1901. package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.d.ts.map +1 -0
  1902. package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.js +156 -0
  1903. package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.js.map +1 -0
  1904. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.d.ts.map +1 -1
  1905. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js +3 -3
  1906. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js.map +1 -1
  1907. package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.d.ts +11 -0
  1908. package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.d.ts.map +1 -0
  1909. package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.js +67 -0
  1910. package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.js.map +1 -0
  1911. package/dist/lib/generated/generated-forms.module.d.ts +92 -85
  1912. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  1913. package/dist/lib/generated/generated-forms.module.js +90 -62
  1914. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  1915. package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
  1916. package/dist/lib/shared/components/template-editor.component.js +167 -164
  1917. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  1918. package/dist/public-api.d.ts +0 -1
  1919. package/dist/public-api.d.ts.map +1 -1
  1920. package/dist/public-api.js +1 -1
  1921. package/dist/public-api.js.map +1 -1
  1922. package/package.json +54 -52
@@ -34,8 +34,8 @@ const _c5 = (a0, a1, a2) => ({ "high": a0, "medium": a1, "low": a2 });
34
34
  const _c6 = (a0, a1) => ({ "positive": a0, "negative": a1 });
35
35
  const _c7 = (a0, a1, a2) => ({ "fa-arrow-down": a0, "fa-arrow-up": a1, "fa-minus": a2 });
36
36
  const _c8 = (a0, a1) => ({ "improved": a0, "regressed": a1 });
37
- function TestSuiteFormComponentExtended_span_25_Template(rf, ctx) { if (rf & 1) {
38
- i0.ɵɵelementStart(0, "span", 43);
37
+ function TestSuiteFormComponentExtended_Conditional_25_Template(rf, ctx) { if (rf & 1) {
38
+ i0.ɵɵelementStart(0, "span", 17);
39
39
  i0.ɵɵelement(1, "i", 29);
40
40
  i0.ɵɵtext(2);
41
41
  i0.ɵɵelementEnd();
@@ -44,8 +44,8 @@ function TestSuiteFormComponentExtended_span_25_Template(rf, ctx) { if (rf & 1)
44
44
  i0.ɵɵadvance(2);
45
45
  i0.ɵɵtextInterpolate1(" ", ctx_r0.suiteTests.length, " tests ");
46
46
  } }
47
- function TestSuiteFormComponentExtended_div_37_Template(rf, ctx) { if (rf & 1) {
48
- i0.ɵɵelementStart(0, "div", 44)(1, "p");
47
+ function TestSuiteFormComponentExtended_Conditional_37_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelementStart(0, "div", 24)(1, "p");
49
49
  i0.ɵɵtext(2);
50
50
  i0.ɵɵelementEnd()();
51
51
  } if (rf & 2) {
@@ -53,8 +53,8 @@ function TestSuiteFormComponentExtended_div_37_Template(rf, ctx) { if (rf & 1) {
53
53
  i0.ɵɵadvance(2);
54
54
  i0.ɵɵtextInterpolate(ctx_r0.record.Description);
55
55
  } }
56
- function TestSuiteFormComponentExtended_span_46_Template(rf, ctx) { if (rf & 1) {
57
- i0.ɵɵelementStart(0, "span", 45);
56
+ function TestSuiteFormComponentExtended_Conditional_46_Template(rf, ctx) { if (rf & 1) {
57
+ i0.ɵɵelementStart(0, "span", 30);
58
58
  i0.ɵɵtext(1);
59
59
  i0.ɵɵelementEnd();
60
60
  } if (rf & 2) {
@@ -62,8 +62,8 @@ function TestSuiteFormComponentExtended_span_46_Template(rf, ctx) { if (rf & 1)
62
62
  i0.ɵɵadvance();
63
63
  i0.ɵɵtextInterpolate(ctx_r0.suiteTests.length);
64
64
  } }
65
- function TestSuiteFormComponentExtended_span_50_Template(rf, ctx) { if (rf & 1) {
66
- i0.ɵɵelementStart(0, "span", 45);
65
+ function TestSuiteFormComponentExtended_Conditional_50_Template(rf, ctx) { if (rf & 1) {
66
+ i0.ɵɵelementStart(0, "span", 30);
67
67
  i0.ɵɵtext(1);
68
68
  i0.ɵɵelementEnd();
69
69
  } if (rf & 2) {
@@ -71,55 +71,55 @@ function TestSuiteFormComponentExtended_span_50_Template(rf, ctx) { if (rf & 1)
71
71
  i0.ɵɵadvance();
72
72
  i0.ɵɵtextInterpolate(ctx_r0.suiteRuns.length);
73
73
  } }
74
- function TestSuiteFormComponentExtended_div_58_Template(rf, ctx) { if (rf & 1) {
74
+ function TestSuiteFormComponentExtended_Conditional_58_Template(rf, ctx) { if (rf & 1) {
75
75
  const _r2 = i0.ɵɵgetCurrentView();
76
- i0.ɵɵelementStart(0, "div", 46)(1, "div", 47)(2, "h3");
77
- i0.ɵɵelement(3, "i", 48);
76
+ i0.ɵɵelementStart(0, "div", 35)(1, "div", 43)(2, "h3");
77
+ i0.ɵɵelement(3, "i", 44);
78
78
  i0.ɵɵtext(4, " Suite Information");
79
79
  i0.ɵɵelementEnd();
80
- i0.ɵɵelementStart(5, "div", 49)(6, "div", 50)(7, "div", 51);
80
+ i0.ɵɵelementStart(5, "div", 45)(6, "div", 46)(7, "div", 47);
81
81
  i0.ɵɵtext(8, "Name");
82
82
  i0.ɵɵelementEnd();
83
- i0.ɵɵelementStart(9, "div", 52);
83
+ i0.ɵɵelementStart(9, "div", 48);
84
84
  i0.ɵɵtext(10);
85
85
  i0.ɵɵelementEnd()();
86
- i0.ɵɵelementStart(11, "div", 50)(12, "div", 51);
86
+ i0.ɵɵelementStart(11, "div", 46)(12, "div", 47);
87
87
  i0.ɵɵtext(13, "Status");
88
88
  i0.ɵɵelementEnd();
89
- i0.ɵɵelementStart(14, "div", 52)(15, "span", 53);
89
+ i0.ɵɵelementStart(14, "div", 48)(15, "span", 49);
90
90
  i0.ɵɵtext(16);
91
91
  i0.ɵɵelementEnd()()();
92
- i0.ɵɵelementStart(17, "div", 50)(18, "div", 51);
92
+ i0.ɵɵelementStart(17, "div", 46)(18, "div", 47);
93
93
  i0.ɵɵtext(19, "Created");
94
94
  i0.ɵɵelementEnd();
95
- i0.ɵɵelementStart(20, "div", 52);
95
+ i0.ɵɵelementStart(20, "div", 48);
96
96
  i0.ɵɵtext(21);
97
97
  i0.ɵɵpipe(22, "date");
98
98
  i0.ɵɵelementEnd()();
99
- i0.ɵɵelementStart(23, "div", 50)(24, "div", 51);
99
+ i0.ɵɵelementStart(23, "div", 46)(24, "div", 47);
100
100
  i0.ɵɵtext(25, "Updated");
101
101
  i0.ɵɵelementEnd();
102
- i0.ɵɵelementStart(26, "div", 52);
102
+ i0.ɵɵelementStart(26, "div", 48);
103
103
  i0.ɵɵtext(27);
104
104
  i0.ɵɵpipe(28, "date");
105
105
  i0.ɵɵelementEnd()();
106
- i0.ɵɵelementStart(29, "div", 50)(30, "div", 51);
106
+ i0.ɵɵelementStart(29, "div", 46)(30, "div", 47);
107
107
  i0.ɵɵtext(31, "Max Execution Time");
108
108
  i0.ɵɵelementEnd();
109
- i0.ɵɵelementStart(32, "div", 52);
109
+ i0.ɵɵelementStart(32, "div", 48);
110
110
  i0.ɵɵtext(33);
111
111
  i0.ɵɵelementEnd()()()();
112
- i0.ɵɵelementStart(34, "div", 54)(35, "h3");
113
- i0.ɵɵelement(36, "i", 55);
112
+ i0.ɵɵelementStart(34, "div", 50)(35, "h3");
113
+ i0.ɵɵelement(36, "i", 51);
114
114
  i0.ɵɵtext(37, " Execution Settings");
115
115
  i0.ɵɵelementEnd();
116
- i0.ɵɵelementStart(38, "div", 56)(39, "div", 57)(40, "label");
116
+ i0.ɵɵelementStart(38, "div", 52)(39, "div", 53)(40, "label");
117
117
  i0.ɵɵtext(41, "Max Execution Time (ms)");
118
118
  i0.ɵɵelementEnd();
119
- i0.ɵɵelementStart(42, "input", 58);
120
- i0.ɵɵtwoWayListener("ngModelChange", function TestSuiteFormComponentExtended_div_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); });
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); });
121
121
  i0.ɵɵelementEnd();
122
- i0.ɵɵelementStart(43, "span", 59);
122
+ i0.ɵɵelementStart(43, "span", 55);
123
123
  i0.ɵɵtext(44, "Default timeout for tests in this suite");
124
124
  i0.ɵɵelementEnd()()()()();
125
125
  } if (rf & 2) {
@@ -139,48 +139,48 @@ function TestSuiteFormComponentExtended_div_58_Template(rf, ctx) { if (rf & 1) {
139
139
  i0.ɵɵadvance(9);
140
140
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.record.MaxExecutionTimeMS);
141
141
  } }
142
- function TestSuiteFormComponentExtended_div_59_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
143
- i0.ɵɵelementStart(0, "div", 67);
144
- i0.ɵɵelement(1, "div", 68)(2, "div", 69);
145
- i0.ɵɵelementStart(3, "div", 70);
146
- i0.ɵɵelement(4, "div", 71)(5, "div", 72);
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);
147
147
  i0.ɵɵelementEnd()();
148
148
  } }
149
- function TestSuiteFormComponentExtended_div_59_div_1_Template(rf, ctx) { if (rf & 1) {
150
- i0.ɵɵelementStart(0, "div", 64)(1, "div", 65);
151
- i0.ɵɵtemplate(2, TestSuiteFormComponentExtended_div_59_div_1_div_2_Template, 6, 0, "div", 66);
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);
152
152
  i0.ɵɵelementEnd()();
153
153
  } if (rf & 2) {
154
154
  i0.ɵɵadvance(2);
155
- i0.ɵɵproperty("ngForOf", i0.ɵɵpureFunction0(1, _c1));
155
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c1));
156
156
  } }
157
- function TestSuiteFormComponentExtended_div_59_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) {
158
158
  i0.ɵɵelementStart(0, "span");
159
- i0.ɵɵelement(1, "i", 48);
159
+ i0.ɵɵelement(1, "i", 44);
160
160
  i0.ɵɵtext(2);
161
161
  i0.ɵɵelementEnd();
162
162
  } if (rf & 2) {
163
163
  const test_r4 = i0.ɵɵnextContext().$implicit;
164
164
  i0.ɵɵadvance(2);
165
- i0.ɵɵtextInterpolate1(" ", test_r4.Status, "");
165
+ i0.ɵɵtextInterpolate1(" ", test_r4.Status);
166
166
  } }
167
- function TestSuiteFormComponentExtended_div_59_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) {
168
168
  const _r3 = i0.ɵɵgetCurrentView();
169
- i0.ɵɵelementStart(0, "div", 75);
170
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_59_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)); });
171
- i0.ɵɵelementStart(1, "div", 76);
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);
172
172
  i0.ɵɵtext(2);
173
173
  i0.ɵɵelementEnd();
174
- i0.ɵɵelementStart(3, "div", 77);
174
+ i0.ɵɵelementStart(3, "div", 69);
175
175
  i0.ɵɵelement(4, "i", 29);
176
176
  i0.ɵɵelementEnd();
177
- i0.ɵɵelementStart(5, "div", 78)(6, "div", 79);
177
+ i0.ɵɵelementStart(5, "div", 70)(6, "div", 71);
178
178
  i0.ɵɵtext(7);
179
179
  i0.ɵɵelementEnd();
180
- i0.ɵɵelementStart(8, "div", 80);
181
- i0.ɵɵtemplate(9, TestSuiteFormComponentExtended_div_59_div_2_div_1_span_9_Template, 3, 1, "span", 81);
180
+ i0.ɵɵelementStart(8, "div", 72);
181
+ i0.ɵɵconditionalCreate(9, TestSuiteFormComponentExtended_Conditional_59_Conditional_2_For_2_Conditional_9_Template, 3, 1, "span");
182
182
  i0.ɵɵelementEnd()();
183
- i0.ɵɵelement(10, "i", 82);
183
+ i0.ɵɵelement(10, "i", 73);
184
184
  i0.ɵɵelementEnd();
185
185
  } if (rf & 2) {
186
186
  const test_r4 = ctx.$implicit;
@@ -189,19 +189,19 @@ function TestSuiteFormComponentExtended_div_59_div_2_div_1_Template(rf, ctx) { i
189
189
  i0.ɵɵadvance(5);
190
190
  i0.ɵɵtextInterpolate(test_r4.Test);
191
191
  i0.ɵɵadvance(2);
192
- i0.ɵɵproperty("ngIf", test_r4.Status);
192
+ i0.ɵɵconditional(test_r4.Status ? 9 : -1);
193
193
  } }
194
- function TestSuiteFormComponentExtended_div_59_div_2_Template(rf, ctx) { if (rf & 1) {
195
- i0.ɵɵelementStart(0, "div", 73);
196
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_59_div_2_div_1_Template, 11, 3, "div", 74);
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);
197
197
  i0.ɵɵelementEnd();
198
198
  } if (rf & 2) {
199
199
  const ctx_r0 = i0.ɵɵnextContext(2);
200
200
  i0.ɵɵadvance();
201
- i0.ɵɵproperty("ngForOf", ctx_r0.suiteTests);
201
+ i0.ɵɵrepeater(ctx_r0.suiteTests);
202
202
  } }
203
- function TestSuiteFormComponentExtended_div_59_div_3_Template(rf, ctx) { if (rf & 1) {
204
- i0.ɵɵelementStart(0, "div", 83)(1, "div", 84);
203
+ function TestSuiteFormComponentExtended_Conditional_59_Conditional_3_Template(rf, ctx) { if (rf & 1) {
204
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
205
205
  i0.ɵɵelement(2, "i", 29);
206
206
  i0.ɵɵelementEnd();
207
207
  i0.ɵɵelementStart(3, "h4");
@@ -211,37 +211,39 @@ function TestSuiteFormComponentExtended_div_59_div_3_Template(rf, ctx) { if (rf
211
211
  i0.ɵɵtext(6, "Add tests to this suite to start running them together.");
212
212
  i0.ɵɵelementEnd()();
213
213
  } }
214
- function TestSuiteFormComponentExtended_div_59_Template(rf, ctx) { if (rf & 1) {
215
- i0.ɵɵelementStart(0, "div", 60);
216
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_59_div_1_Template, 3, 2, "div", 61)(2, TestSuiteFormComponentExtended_div_59_div_2_Template, 2, 1, "div", 62)(3, TestSuiteFormComponentExtended_div_59_div_3_Template, 7, 0, "div", 63);
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);
217
219
  i0.ɵɵelementEnd();
218
220
  } if (rf & 2) {
219
221
  const ctx_r0 = i0.ɵɵnextContext();
220
222
  i0.ɵɵadvance();
221
- i0.ɵɵproperty("ngIf", ctx_r0.loadingTests);
223
+ i0.ɵɵconditional(ctx_r0.loadingTests ? 1 : -1);
222
224
  i0.ɵɵadvance();
223
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingTests && ctx_r0.suiteTests.length > 0);
225
+ i0.ɵɵconditional(!ctx_r0.loadingTests && ctx_r0.suiteTests.length > 0 ? 2 : -1);
224
226
  i0.ɵɵadvance();
225
- 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);
226
228
  } }
227
- function TestSuiteFormComponentExtended_div_60_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
228
- i0.ɵɵelementStart(0, "div", 67);
229
- i0.ɵɵelement(1, "div", 69);
230
- i0.ɵɵelementStart(2, "div", 70);
231
- i0.ɵɵelement(3, "div", 71)(4, "div", 72);
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);
232
234
  i0.ɵɵelementEnd()();
233
235
  } }
234
- function TestSuiteFormComponentExtended_div_60_div_1_Template(rf, ctx) { if (rf & 1) {
235
- i0.ɵɵelementStart(0, "div", 64)(1, "div", 65);
236
- i0.ɵɵtemplate(2, TestSuiteFormComponentExtended_div_60_div_1_div_2_Template, 5, 0, "div", 66);
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);
237
239
  i0.ɵɵelementEnd()();
238
240
  } if (rf & 2) {
239
241
  i0.ɵɵadvance(2);
240
- i0.ɵɵproperty("ngForOf", i0.ɵɵpureFunction0(1, _c2));
242
+ i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c2));
241
243
  } }
242
- function TestSuiteFormComponentExtended_div_60_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) {
243
245
  i0.ɵɵelementStart(0, "span");
244
- i0.ɵɵelement(1, "i", 103);
246
+ i0.ɵɵelement(1, "i", 91);
245
247
  i0.ɵɵtext(2);
246
248
  i0.ɵɵelementEnd();
247
249
  } if (rf & 2) {
@@ -250,9 +252,9 @@ function TestSuiteFormComponentExtended_div_60_div_2_div_1_span_13_Template(rf,
250
252
  i0.ɵɵadvance(2);
251
253
  i0.ɵɵtextInterpolate3(" ", run_r6.PassedTests, "/", run_r6.TotalTests, " (", ctx_r0.getPassRate(run_r6).toFixed(0), "%) ");
252
254
  } }
253
- function TestSuiteFormComponentExtended_div_60_div_2_div_1_span_15_Template(rf, ctx) { if (rf & 1) {
254
- i0.ɵɵelementStart(0, "span", 104);
255
- i0.ɵɵelement(1, "i", 91);
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);
256
258
  i0.ɵɵelementEnd();
257
259
  } if (rf & 2) {
258
260
  const run_r6 = i0.ɵɵnextContext().$implicit;
@@ -260,16 +262,16 @@ function TestSuiteFormComponentExtended_div_60_div_2_div_1_span_15_Template(rf,
260
262
  i0.ɵɵadvance();
261
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");
262
264
  } }
263
- function TestSuiteFormComponentExtended_div_60_div_2_div_1_span_16_Template(rf, ctx) { if (rf & 1) {
264
- i0.ɵɵelementStart(0, "span", 105);
265
- i0.ɵɵelement(1, "i", 106);
266
- i0.ɵɵelementStart(2, "span", 107);
267
- i0.ɵɵelement(3, "i", 108);
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);
268
270
  i0.ɵɵelementEnd()();
269
271
  } }
270
- function TestSuiteFormComponentExtended_div_60_div_2_div_1_span_17_Template(rf, ctx) { if (rf & 1) {
271
- i0.ɵɵelementStart(0, "span", 109);
272
- i0.ɵɵelement(1, "i", 110);
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);
273
275
  i0.ɵɵelementStart(2, "span");
274
276
  i0.ɵɵtext(3);
275
277
  i0.ɵɵelementEnd()();
@@ -280,8 +282,8 @@ function TestSuiteFormComponentExtended_div_60_div_2_div_1_span_17_Template(rf,
280
282
  i0.ɵɵadvance(3);
281
283
  i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(run_r6).toFixed(0), "%");
282
284
  } }
283
- function TestSuiteFormComponentExtended_div_60_div_2_div_1_div_18_span_1_Template(rf, ctx) { if (rf & 1) {
284
- i0.ɵɵelementStart(0, "span", 113);
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);
285
287
  i0.ɵɵtext(1);
286
288
  i0.ɵɵelementEnd();
287
289
  } if (rf & 2) {
@@ -289,41 +291,43 @@ function TestSuiteFormComponentExtended_div_60_div_2_div_1_div_18_span_1_Templat
289
291
  i0.ɵɵadvance();
290
292
  i0.ɵɵtextInterpolate(tag_r7);
291
293
  } }
292
- function TestSuiteFormComponentExtended_div_60_div_2_div_1_div_18_Template(rf, ctx) { if (rf & 1) {
293
- i0.ɵɵelementStart(0, "div", 111);
294
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_60_div_2_div_1_div_18_span_1_Template, 2, 1, "span", 112);
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);
295
297
  i0.ɵɵelementEnd();
296
298
  } if (rf & 2) {
297
299
  const run_r6 = i0.ɵɵnextContext().$implicit;
298
300
  const ctx_r0 = i0.ɵɵnextContext(3);
299
301
  i0.ɵɵadvance();
300
- i0.ɵɵproperty("ngForOf", ctx_r0.getRunTags(run_r6));
302
+ i0.ɵɵrepeater(ctx_r0.getRunTags(run_r6));
301
303
  } }
302
- function TestSuiteFormComponentExtended_div_60_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) {
303
305
  const _r5 = i0.ɵɵgetCurrentView();
304
- i0.ɵɵelementStart(0, "div", 89);
305
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_60_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)); });
306
- i0.ɵɵelementStart(1, "div", 90);
307
- i0.ɵɵelement(2, "i", 91);
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);
308
310
  i0.ɵɵelementEnd();
309
- i0.ɵɵelementStart(3, "div", 92)(4, "div", 93)(5, "span", 94);
311
+ i0.ɵɵelementStart(3, "div", 80)(4, "div", 81)(5, "span", 82);
310
312
  i0.ɵɵtext(6);
311
313
  i0.ɵɵelementEnd();
312
- i0.ɵɵelementStart(7, "span", 95);
314
+ i0.ɵɵelementStart(7, "span", 83);
313
315
  i0.ɵɵtext(8);
314
316
  i0.ɵɵelementEnd()();
315
- i0.ɵɵelementStart(9, "div", 96)(10, "span");
316
- i0.ɵɵelement(11, "i", 97);
317
+ i0.ɵɵelementStart(9, "div", 84)(10, "span");
318
+ i0.ɵɵelement(11, "i", 85);
317
319
  i0.ɵɵtext(12);
318
320
  i0.ɵɵelementEnd();
319
- i0.ɵɵtemplate(13, TestSuiteFormComponentExtended_div_60_div_2_div_1_span_13_Template, 3, 3, "span", 81);
321
+ i0.ɵɵconditionalCreate(13, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_13_Template, 3, 3, "span");
320
322
  i0.ɵɵelementEnd();
321
- i0.ɵɵelementStart(14, "div", 98);
322
- i0.ɵɵtemplate(15, TestSuiteFormComponentExtended_div_60_div_2_div_1_span_15_Template, 2, 12, "span", 99)(16, TestSuiteFormComponentExtended_div_60_div_2_div_1_span_16_Template, 4, 0, "span", 100)(17, TestSuiteFormComponentExtended_div_60_div_2_div_1_span_17_Template, 4, 7, "span", 101);
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);
323
327
  i0.ɵɵelementEnd();
324
- i0.ɵɵtemplate(18, TestSuiteFormComponentExtended_div_60_div_2_div_1_div_18_Template, 2, 1, "div", 102);
328
+ i0.ɵɵconditionalCreate(18, TestSuiteFormComponentExtended_Conditional_60_Conditional_2_For_2_Conditional_18_Template, 3, 0, "div", 90);
325
329
  i0.ɵɵelementEnd();
326
- i0.ɵɵelement(19, "i", 82);
330
+ i0.ɵɵelement(19, "i", 73);
327
331
  i0.ɵɵelementEnd();
328
332
  } if (rf & 2) {
329
333
  const run_r6 = ctx.$implicit;
@@ -333,37 +337,37 @@ function TestSuiteFormComponentExtended_div_60_div_2_div_1_Template(rf, ctx) { i
333
337
  i0.ɵɵadvance();
334
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");
335
339
  i0.ɵɵadvance(4);
336
- i0.ɵɵtextInterpolate1("Run #", run_r6.ID.substring(0, 8), "");
340
+ i0.ɵɵtextInterpolate1("Run #", run_r6.ID.substring(0, 8));
337
341
  i0.ɵɵadvance();
338
342
  i0.ɵɵstyleProp("color", ctx_r0.getRunStatusColor(run_r6.Status));
339
343
  i0.ɵɵadvance();
340
344
  i0.ɵɵtextInterpolate(run_r6.Status);
341
345
  i0.ɵɵadvance(4);
342
- i0.ɵɵtextInterpolate1(" ", ctx_r0.getRelativeTime(run_r6.StartedAt), "");
346
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.getRelativeTime(run_r6.StartedAt));
343
347
  i0.ɵɵadvance();
344
- i0.ɵɵproperty("ngIf", run_r6.TotalTests);
348
+ i0.ɵɵconditional(run_r6.TotalTests ? 13 : -1);
345
349
  i0.ɵɵadvance(2);
346
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
350
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 15 : -1);
347
351
  i0.ɵɵadvance();
348
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showHuman);
352
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman ? 16 : -1);
349
353
  i0.ɵɵadvance();
350
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto && run_r6.TotalTests);
354
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto && run_r6.TotalTests ? 17 : -1);
351
355
  i0.ɵɵadvance();
352
- i0.ɵɵproperty("ngIf", ctx_r0.getRunTags(run_r6).length > 0);
356
+ i0.ɵɵconditional(ctx_r0.getRunTags(run_r6).length > 0 ? 18 : -1);
353
357
  } }
354
- function TestSuiteFormComponentExtended_div_60_div_2_Template(rf, ctx) { if (rf & 1) {
355
- i0.ɵɵelementStart(0, "div", 87);
356
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_60_div_2_div_1_Template, 20, 22, "div", 88);
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);
357
361
  i0.ɵɵelementEnd();
358
362
  } if (rf & 2) {
359
363
  const ctx_r0 = i0.ɵɵnextContext(2);
360
364
  i0.ɵɵadvance();
361
- i0.ɵɵproperty("ngForOf", ctx_r0.suiteRuns);
365
+ i0.ɵɵrepeater(ctx_r0.suiteRuns);
362
366
  } }
363
- function TestSuiteFormComponentExtended_div_60_div_3_Template(rf, ctx) { if (rf & 1) {
367
+ function TestSuiteFormComponentExtended_Conditional_60_Conditional_3_Template(rf, ctx) { if (rf & 1) {
364
368
  const _r8 = i0.ɵɵgetCurrentView();
365
- i0.ɵɵelementStart(0, "div", 83)(1, "div", 84);
366
- i0.ɵɵelement(2, "i", 114);
369
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
370
+ i0.ɵɵelement(2, "i", 99);
367
371
  i0.ɵɵelementEnd();
368
372
  i0.ɵɵelementStart(3, "h4");
369
373
  i0.ɵɵtext(4, "No Suite Runs Yet");
@@ -372,30 +376,32 @@ function TestSuiteFormComponentExtended_div_60_div_3_Template(rf, ctx) { if (rf
372
376
  i0.ɵɵtext(6, "Run this suite to see execution history and results here.");
373
377
  i0.ɵɵelementEnd();
374
378
  i0.ɵɵelementStart(7, "button", 21);
375
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_60_div_3_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runSuite()); });
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()); });
376
380
  i0.ɵɵelement(8, "i", 22);
377
381
  i0.ɵɵtext(9, " Run Suite Now ");
378
382
  i0.ɵɵelementEnd()();
379
383
  } }
380
- function TestSuiteFormComponentExtended_div_60_Template(rf, ctx) { if (rf & 1) {
381
- i0.ɵɵelementStart(0, "div", 85);
382
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_60_div_1_Template, 3, 2, "div", 61)(2, TestSuiteFormComponentExtended_div_60_div_2_Template, 2, 1, "div", 86)(3, TestSuiteFormComponentExtended_div_60_div_3_Template, 10, 0, "div", 63);
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);
383
389
  i0.ɵɵelementEnd();
384
390
  } if (rf & 2) {
385
391
  const ctx_r0 = i0.ɵɵnextContext();
386
392
  i0.ɵɵadvance();
387
- i0.ɵɵproperty("ngIf", ctx_r0.loadingRuns);
393
+ i0.ɵɵconditional(ctx_r0.loadingRuns ? 1 : -1);
388
394
  i0.ɵɵadvance();
389
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0);
395
+ i0.ɵɵconditional(!ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0 ? 2 : -1);
390
396
  i0.ɵɵadvance();
391
- 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);
392
398
  } }
393
- function TestSuiteFormComponentExtended_div_61_div_1_Template(rf, ctx) { if (rf & 1) {
394
- i0.ɵɵelementStart(0, "div", 64);
395
- i0.ɵɵelement(1, "mj-loading", 116);
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);
396
402
  i0.ɵɵelementEnd();
397
403
  } }
398
- function TestSuiteFormComponentExtended_div_61_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) {
399
405
  i0.ɵɵelementStart(0, "span");
400
406
  i0.ɵɵtext(1);
401
407
  i0.ɵɵelementEnd();
@@ -404,20 +410,20 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_span_20_span_2_Tem
404
410
  i0.ɵɵadvance();
405
411
  i0.ɵɵtextInterpolate1(" \u00B7 ", ctx_r0.selectedTags.length, " tags");
406
412
  } }
407
- function TestSuiteFormComponentExtended_div_61_ng_container_2_span_20_Template(rf, ctx) { if (rf & 1) {
408
- i0.ɵɵelementStart(0, "span", 129);
413
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
414
+ i0.ɵɵelementStart(0, "span", 111);
409
415
  i0.ɵɵtext(1);
410
- i0.ɵɵtemplate(2, TestSuiteFormComponentExtended_div_61_ng_container_2_span_20_span_2_Template, 2, 1, "span", 81);
416
+ i0.ɵɵconditionalCreate(2, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_19_Conditional_2_Template, 2, 1, "span");
411
417
  i0.ɵɵelementEnd();
412
418
  } if (rf & 2) {
413
419
  const ctx_r0 = i0.ɵɵnextContext(3);
414
420
  i0.ɵɵadvance();
415
421
  i0.ɵɵtextInterpolate1(" ", ctx_r0.analyticsTimeRange === "all" ? "All Time" : ctx_r0.analyticsTimeRange, " ");
416
422
  i0.ɵɵadvance();
417
- i0.ɵɵproperty("ngIf", ctx_r0.selectedTags.length > 0);
423
+ i0.ɵɵconditional(ctx_r0.selectedTags.length > 0 ? 2 : -1);
418
424
  } }
419
- function TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_div_13_span_3_Template(rf, ctx) { if (rf & 1) {
420
- i0.ɵɵelementStart(0, "span", 139);
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);
421
427
  i0.ɵɵtext(1);
422
428
  i0.ɵɵelementEnd();
423
429
  } if (rf & 2) {
@@ -425,14 +431,14 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_div_13_span
425
431
  i0.ɵɵadvance();
426
432
  i0.ɵɵtextInterpolate1("(", ctx_r0.selectedTags.length, " selected)");
427
433
  } }
428
- function TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_div_13_button_8_i_1_Template(rf, ctx) { if (rf & 1) {
429
- i0.ɵɵelement(0, "i", 142);
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);
430
436
  } }
431
- function TestSuiteFormComponentExtended_div_61_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) {
432
438
  const _r12 = i0.ɵɵgetCurrentView();
433
- i0.ɵɵelementStart(0, "button", 140);
434
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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)); });
435
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_div_13_button_8_i_1_Template, 1, 0, "i", 141);
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);
436
442
  i0.ɵɵtext(2);
437
443
  i0.ɵɵelementEnd();
438
444
  } if (rf & 2) {
@@ -440,54 +446,54 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_div_13_butt
440
446
  const ctx_r0 = i0.ɵɵnextContext(5);
441
447
  i0.ɵɵclassProp("active", ctx_r0.isTagSelected(tag_r13));
442
448
  i0.ɵɵadvance();
443
- i0.ɵɵproperty("ngIf", ctx_r0.isTagSelected(tag_r13));
449
+ i0.ɵɵconditional(ctx_r0.isTagSelected(tag_r13) ? 1 : -1);
444
450
  i0.ɵɵadvance();
445
451
  i0.ɵɵtextInterpolate1(" ", tag_r13, " ");
446
452
  } }
447
- function TestSuiteFormComponentExtended_div_61_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) {
448
454
  const _r11 = i0.ɵɵgetCurrentView();
449
- i0.ɵɵelementStart(0, "div", 131)(1, "label");
455
+ i0.ɵɵelementStart(0, "div", 113)(1, "label");
450
456
  i0.ɵɵtext(2, "Filter by Tag ");
451
- i0.ɵɵtemplate(3, TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_div_13_span_3_Template, 2, 1, "span", 135);
457
+ i0.ɵɵconditionalCreate(3, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_Conditional_3_Template, 2, 1, "span", 116);
452
458
  i0.ɵɵelementEnd();
453
- i0.ɵɵelementStart(4, "div", 136)(5, "button", 137);
454
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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)); });
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)); });
455
461
  i0.ɵɵelement(6, "i", 9);
456
462
  i0.ɵɵtext(7, " All Tags ");
457
463
  i0.ɵɵelementEnd();
458
- i0.ɵɵtemplate(8, TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_div_13_button_8_Template, 3, 4, "button", 138);
464
+ i0.ɵɵrepeaterCreate(8, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_For_9_Template, 3, 4, "button", 119, i0.ɵɵrepeaterTrackByIdentity);
459
465
  i0.ɵɵelementEnd()();
460
466
  } if (rf & 2) {
461
467
  const ctx_r0 = i0.ɵɵnextContext(4);
462
468
  i0.ɵɵadvance(3);
463
- i0.ɵɵproperty("ngIf", ctx_r0.selectedTags.length > 0);
469
+ i0.ɵɵconditional(ctx_r0.selectedTags.length > 0 ? 3 : -1);
464
470
  i0.ɵɵadvance(2);
465
471
  i0.ɵɵclassProp("active", ctx_r0.selectedTags.length === 0);
466
472
  i0.ɵɵadvance(3);
467
- i0.ɵɵproperty("ngForOf", ctx_r0.uniqueTags);
473
+ i0.ɵɵrepeater(ctx_r0.uniqueTags);
468
474
  } }
469
- function TestSuiteFormComponentExtended_div_61_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) {
470
476
  const _r10 = i0.ɵɵgetCurrentView();
471
- i0.ɵɵelementStart(0, "div", 130)(1, "div", 131)(2, "label");
477
+ i0.ɵɵelementStart(0, "div", 112)(1, "div", 113)(2, "label");
472
478
  i0.ɵɵtext(3, "Time Range");
473
479
  i0.ɵɵelementEnd();
474
- i0.ɵɵelementStart(4, "div", 132)(5, "button", 133);
475
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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")); });
476
482
  i0.ɵɵtext(6, "7 Days");
477
483
  i0.ɵɵelementEnd();
478
- i0.ɵɵelementStart(7, "button", 133);
479
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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")); });
480
486
  i0.ɵɵtext(8, "30 Days");
481
487
  i0.ɵɵelementEnd();
482
- i0.ɵɵelementStart(9, "button", 133);
483
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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")); });
484
490
  i0.ɵɵtext(10, "90 Days");
485
491
  i0.ɵɵelementEnd();
486
- i0.ɵɵelementStart(11, "button", 133);
487
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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")); });
488
494
  i0.ɵɵtext(12, "All Time");
489
495
  i0.ɵɵelementEnd()()();
490
- i0.ɵɵtemplate(13, TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_div_13_Template, 9, 4, "div", 134);
496
+ i0.ɵɵconditionalCreate(13, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Conditional_13_Template, 10, 3, "div", 113);
491
497
  i0.ɵɵelementEnd();
492
498
  } if (rf & 2) {
493
499
  const ctx_r0 = i0.ɵɵnextContext(3);
@@ -500,10 +506,10 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_Template(rf
500
506
  i0.ɵɵadvance(2);
501
507
  i0.ɵɵclassProp("active", ctx_r0.analyticsTimeRange === "all");
502
508
  i0.ɵɵadvance(2);
503
- i0.ɵɵproperty("ngIf", ctx_r0.uniqueTags.length > 0);
509
+ i0.ɵɵconditional(ctx_r0.uniqueTags.length > 0 ? 13 : -1);
504
510
  } }
505
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_tr_60_span_20_Template(rf, ctx) { if (rf & 1) {
506
- i0.ɵɵelementStart(0, "span", 167);
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);
507
513
  i0.ɵɵtext(1);
508
514
  i0.ɵɵelementEnd();
509
515
  } if (rf & 2) {
@@ -511,28 +517,28 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_tr
511
517
  i0.ɵɵadvance();
512
518
  i0.ɵɵtextInterpolate(tag_r16);
513
519
  } }
514
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_tr_60_span_21_Template(rf, ctx) { if (rf & 1) {
515
- i0.ɵɵelementStart(0, "span", 168);
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);
516
522
  i0.ɵɵtext(1);
517
523
  i0.ɵɵelementEnd();
518
524
  } if (rf & 2) {
519
525
  const dp_r15 = i0.ɵɵnextContext().$implicit;
520
526
  i0.ɵɵadvance();
521
- i0.ɵɵtextInterpolate1("+", dp_r15.tags.length - 2, "");
527
+ i0.ɵɵtextInterpolate1("+", dp_r15.tags.length - 2);
522
528
  } }
523
- function TestSuiteFormComponentExtended_div_61_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) {
524
530
  const _r14 = i0.ɵɵgetCurrentView();
525
- i0.ɵɵelementStart(0, "tr", 160);
526
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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)); });
527
533
  i0.ɵɵelementStart(1, "td");
528
534
  i0.ɵɵtext(2);
529
535
  i0.ɵɵpipe(3, "date");
530
536
  i0.ɵɵelementEnd();
531
- i0.ɵɵelementStart(4, "td")(5, "span", 161);
537
+ i0.ɵɵelementStart(4, "td")(5, "span", 140);
532
538
  i0.ɵɵtext(6);
533
539
  i0.ɵɵelementEnd()();
534
- i0.ɵɵelementStart(7, "td")(8, "div", 162);
535
- i0.ɵɵelement(9, "div", 163);
540
+ i0.ɵɵelementStart(7, "td")(8, "div", 141);
541
+ i0.ɵɵelement(9, "div", 142);
536
542
  i0.ɵɵelementStart(10, "span");
537
543
  i0.ɵɵtext(11);
538
544
  i0.ɵɵelementEnd()()();
@@ -545,122 +551,121 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_tr
545
551
  i0.ɵɵelementStart(16, "td");
546
552
  i0.ɵɵtext(17);
547
553
  i0.ɵɵelementEnd();
548
- i0.ɵɵelementStart(18, "td")(19, "div", 164);
549
- i0.ɵɵtemplate(20, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_tr_60_span_20_Template, 2, 1, "span", 165)(21, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_tr_60_span_21_Template, 2, 1, "span", 166);
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);
550
557
  i0.ɵɵelementEnd()()();
551
558
  } if (rf & 2) {
552
559
  const dp_r15 = ctx.$implicit;
553
560
  const ctx_r0 = i0.ɵɵnextContext(4);
554
561
  i0.ɵɵadvance(2);
555
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 13, dp_r15.date, "short"));
562
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 12, dp_r15.date, "short"));
556
563
  i0.ɵɵadvance(3);
557
564
  i0.ɵɵproperty("ngClass", "status-" + dp_r15.status.toLowerCase());
558
565
  i0.ɵɵadvance();
559
566
  i0.ɵɵtextInterpolate(dp_r15.status);
560
567
  i0.ɵɵadvance(3);
561
568
  i0.ɵɵstyleProp("width", dp_r15.passRate, "%");
562
- 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));
563
570
  i0.ɵɵadvance(2);
564
571
  i0.ɵɵtextInterpolate1("", dp_r15.passRate.toFixed(0), "%");
565
572
  i0.ɵɵadvance(2);
566
- i0.ɵɵtextInterpolate2("", dp_r15.passedTests, "/", dp_r15.totalTests, "");
573
+ i0.ɵɵtextInterpolate2("", dp_r15.passedTests, "/", dp_r15.totalTests);
567
574
  i0.ɵɵadvance(2);
568
575
  i0.ɵɵtextInterpolate(ctx_r0.formatDuration(dp_r15.duration));
569
576
  i0.ɵɵadvance(2);
570
577
  i0.ɵɵtextInterpolate(ctx_r0.formatCost(dp_r15.cost));
571
578
  i0.ɵɵadvance(3);
572
- i0.ɵɵproperty("ngForOf", dp_r15.tags.slice(0, 2));
573
- i0.ɵɵadvance();
574
- 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);
575
582
  } }
576
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_div_61_Template(rf, ctx) { if (rf & 1) {
577
- i0.ɵɵelementStart(0, "div", 169)(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");
578
585
  i0.ɵɵtext(2, "No runs match the current filters.");
579
586
  i0.ɵɵelementEnd()();
580
587
  } }
581
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_Template(rf, ctx) { if (rf & 1) {
582
- i0.ɵɵelementContainerStart(0);
583
- i0.ɵɵelementStart(1, "div", 143)(2, "div", 144)(3, "div", 145);
584
- i0.ɵɵelement(4, "i", 114);
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);
585
591
  i0.ɵɵelementEnd();
586
- i0.ɵɵelementStart(5, "div", 146)(6, "div", 147);
587
- i0.ɵɵtext(7);
592
+ i0.ɵɵelementStart(4, "div", 125)(5, "div", 126);
593
+ i0.ɵɵtext(6);
588
594
  i0.ɵɵelementEnd();
589
- i0.ɵɵelementStart(8, "div", 148);
590
- i0.ɵɵtext(9, "Total Runs");
595
+ i0.ɵɵelementStart(7, "div", 127);
596
+ i0.ɵɵtext(8, "Total Runs");
591
597
  i0.ɵɵelementEnd()()();
592
- i0.ɵɵelementStart(10, "div", 144)(11, "div", 149);
593
- i0.ɵɵelement(12, "i", 103);
598
+ i0.ɵɵelementStart(9, "div", 123)(10, "div", 128);
599
+ i0.ɵɵelement(11, "i", 91);
594
600
  i0.ɵɵelementEnd();
595
- i0.ɵɵelementStart(13, "div", 146)(14, "div", 147);
596
- i0.ɵɵtext(15);
601
+ i0.ɵɵelementStart(12, "div", 125)(13, "div", 126);
602
+ i0.ɵɵtext(14);
597
603
  i0.ɵɵelementEnd();
598
- i0.ɵɵelementStart(16, "div", 148);
599
- i0.ɵɵtext(17, "Avg Pass Rate");
604
+ i0.ɵɵelementStart(15, "div", 127);
605
+ i0.ɵɵtext(16, "Avg Pass Rate");
600
606
  i0.ɵɵelementEnd();
601
- i0.ɵɵelementStart(18, "div", 150);
602
- i0.ɵɵelement(19, "i", 16);
603
- i0.ɵɵtext(20);
607
+ i0.ɵɵelementStart(17, "div", 129);
608
+ i0.ɵɵelement(18, "i", 16);
609
+ i0.ɵɵtext(19);
604
610
  i0.ɵɵelementEnd()()();
605
- i0.ɵɵelementStart(21, "div", 144)(22, "div", 151);
606
- i0.ɵɵelement(23, "i", 108);
611
+ i0.ɵɵelementStart(20, "div", 123)(21, "div", 130);
612
+ i0.ɵɵelement(22, "i", 95);
607
613
  i0.ɵɵelementEnd();
608
- i0.ɵɵelementStart(24, "div", 146)(25, "div", 147);
609
- i0.ɵɵtext(26);
614
+ i0.ɵɵelementStart(23, "div", 125)(24, "div", 126);
615
+ i0.ɵɵtext(25);
610
616
  i0.ɵɵelementEnd();
611
- i0.ɵɵelementStart(27, "div", 148);
612
- i0.ɵɵtext(28, "Avg Duration");
617
+ i0.ɵɵelementStart(26, "div", 127);
618
+ i0.ɵɵtext(27, "Avg Duration");
613
619
  i0.ɵɵelementEnd()()();
614
- i0.ɵɵelementStart(29, "div", 144)(30, "div", 152);
615
- i0.ɵɵelement(31, "i", 153);
620
+ i0.ɵɵelementStart(28, "div", 123)(29, "div", 131);
621
+ i0.ɵɵelement(30, "i", 132);
616
622
  i0.ɵɵelementEnd();
617
- i0.ɵɵelementStart(32, "div", 146)(33, "div", 147);
618
- i0.ɵɵtext(34);
623
+ i0.ɵɵelementStart(31, "div", 125)(32, "div", 126);
624
+ i0.ɵɵtext(33);
619
625
  i0.ɵɵelementEnd();
620
- i0.ɵɵelementStart(35, "div", 148);
621
- i0.ɵɵtext(36, "Total Cost");
626
+ i0.ɵɵelementStart(34, "div", 127);
627
+ i0.ɵɵtext(35, "Total Cost");
622
628
  i0.ɵɵelementEnd()()()();
623
- i0.ɵɵelementStart(37, "div", 154)(38, "h3");
624
- i0.ɵɵelement(39, "i", 155);
625
- 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");
626
632
  i0.ɵɵelementEnd();
627
- i0.ɵɵelementStart(41, "div", 156)(42, "table", 157)(43, "thead")(44, "tr")(45, "th");
628
- i0.ɵɵtext(46, "Date");
633
+ i0.ɵɵelementStart(40, "div", 135)(41, "table", 136)(42, "thead")(43, "tr")(44, "th");
634
+ i0.ɵɵtext(45, "Date");
629
635
  i0.ɵɵelementEnd();
630
- i0.ɵɵelementStart(47, "th");
631
- i0.ɵɵtext(48, "Status");
636
+ i0.ɵɵelementStart(46, "th");
637
+ i0.ɵɵtext(47, "Status");
632
638
  i0.ɵɵelementEnd();
633
- i0.ɵɵelementStart(49, "th");
634
- i0.ɵɵtext(50, "Pass Rate");
639
+ i0.ɵɵelementStart(48, "th");
640
+ i0.ɵɵtext(49, "Pass Rate");
635
641
  i0.ɵɵelementEnd();
636
- i0.ɵɵelementStart(51, "th");
637
- i0.ɵɵtext(52, "Tests");
642
+ i0.ɵɵelementStart(50, "th");
643
+ i0.ɵɵtext(51, "Tests");
638
644
  i0.ɵɵelementEnd();
639
- i0.ɵɵelementStart(53, "th");
640
- i0.ɵɵtext(54, "Duration");
645
+ i0.ɵɵelementStart(52, "th");
646
+ i0.ɵɵtext(53, "Duration");
641
647
  i0.ɵɵelementEnd();
642
- i0.ɵɵelementStart(55, "th");
643
- i0.ɵɵtext(56, "Cost");
648
+ i0.ɵɵelementStart(54, "th");
649
+ i0.ɵɵtext(55, "Cost");
644
650
  i0.ɵɵelementEnd();
645
- i0.ɵɵelementStart(57, "th");
646
- i0.ɵɵtext(58, "Tags");
651
+ i0.ɵɵelementStart(56, "th");
652
+ i0.ɵɵtext(57, "Tags");
647
653
  i0.ɵɵelementEnd()()();
648
- i0.ɵɵelementStart(59, "tbody");
649
- i0.ɵɵtemplate(60, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_tr_60_Template, 22, 20, "tr", 158);
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);
650
656
  i0.ɵɵelementEnd()()();
651
- i0.ɵɵtemplate(61, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_div_61_Template, 3, 0, "div", 159);
657
+ i0.ɵɵconditionalCreate(61, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_22_Conditional_61_Template, 3, 0, "div", 138);
652
658
  i0.ɵɵelementEnd();
653
- i0.ɵɵelementContainerEnd();
654
659
  } if (rf & 2) {
655
660
  const ctx_r0 = i0.ɵɵnextContext(3);
656
- i0.ɵɵadvance(7);
661
+ i0.ɵɵadvance(6);
657
662
  i0.ɵɵtextInterpolate(ctx_r0.getTotalRuns());
658
663
  i0.ɵɵadvance(8);
659
664
  i0.ɵɵtextInterpolate1("", ctx_r0.getAveragePassRate().toFixed(1), "%");
660
665
  i0.ɵɵadvance(3);
661
- 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"));
662
667
  i0.ɵɵadvance();
663
- 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"));
664
669
  i0.ɵɵadvance();
665
670
  i0.ɵɵtextInterpolate1(" ", ctx_r0.getPassRateTrend().value.toFixed(1), "% ");
666
671
  i0.ɵɵadvance(6);
@@ -668,24 +673,24 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_Te
668
673
  i0.ɵɵadvance(8);
669
674
  i0.ɵɵtextInterpolate(ctx_r0.formatCost(ctx_r0.getTotalCost()));
670
675
  i0.ɵɵadvance(26);
671
- i0.ɵɵproperty("ngForOf", ctx_r0.getFilteredAnalyticsData());
672
- i0.ɵɵadvance();
673
- 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);
674
679
  } }
675
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_1_Template(rf, ctx) { if (rf & 1) {
676
- i0.ɵɵelementStart(0, "div", 64);
677
- i0.ɵɵelement(1, "mj-loading", 171);
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);
678
683
  i0.ɵɵelementEnd();
679
684
  } }
680
- function TestSuiteFormComponentExtended_div_61_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) {
681
686
  const _r18 = i0.ɵɵgetCurrentView();
682
- i0.ɵɵelementStart(0, "button", 194);
683
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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()); });
684
- i0.ɵɵelement(1, "i", 195);
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);
685
690
  i0.ɵɵelementEnd();
686
691
  } }
687
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_th_25_div_3_span_1_Template(rf, ctx) { if (rf & 1) {
688
- i0.ɵɵelementStart(0, "span", 204);
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);
689
694
  i0.ɵɵtext(1);
690
695
  i0.ɵɵelementEnd();
691
696
  } if (rf & 2) {
@@ -693,37 +698,38 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
693
698
  i0.ɵɵadvance();
694
699
  i0.ɵɵtextInterpolate(tag_r21);
695
700
  } }
696
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_th_25_div_3_span_2_Template(rf, ctx) { if (rf & 1) {
697
- i0.ɵɵelementStart(0, "span", 205);
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);
698
703
  i0.ɵɵtext(1);
699
704
  i0.ɵɵelementEnd();
700
705
  } if (rf & 2) {
701
706
  const run_r20 = i0.ɵɵnextContext(2).$implicit;
702
707
  i0.ɵɵadvance();
703
- i0.ɵɵtextInterpolate1("+", run_r20.tags.length - 2, "");
708
+ i0.ɵɵtextInterpolate1("+", run_r20.tags.length - 2);
704
709
  } }
705
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_th_25_div_3_Template(rf, ctx) { if (rf & 1) {
706
- i0.ɵɵelementStart(0, "div", 201);
707
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_th_25_div_3_span_1_Template, 2, 1, "span", 202)(2, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_th_25_div_3_span_2_Template, 2, 1, "span", 203);
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);
708
714
  i0.ɵɵelementEnd();
709
715
  } if (rf & 2) {
710
716
  const run_r20 = i0.ɵɵnextContext().$implicit;
711
717
  i0.ɵɵadvance();
712
- i0.ɵɵproperty("ngForOf", run_r20.tags.slice(0, 2));
713
- i0.ɵɵadvance();
714
- 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);
715
721
  } }
716
- function TestSuiteFormComponentExtended_div_61_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) {
717
723
  const _r19 = i0.ɵɵgetCurrentView();
718
- i0.ɵɵelementStart(0, "th", 196);
724
+ i0.ɵɵelementStart(0, "th", 171);
719
725
  i0.ɵɵpipe(1, "date");
720
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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)); });
721
- i0.ɵɵelementStart(2, "div", 197);
722
- i0.ɵɵtemplate(3, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_th_25_div_3_Template, 3, 2, "div", 198);
723
- i0.ɵɵelementStart(4, "div", 199);
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);
724
730
  i0.ɵɵtext(5);
725
731
  i0.ɵɵelementEnd();
726
- i0.ɵɵelementStart(6, "div", 200);
732
+ i0.ɵɵelementStart(6, "div", 175);
727
733
  i0.ɵɵtext(7);
728
734
  i0.ɵɵelementEnd()()();
729
735
  } if (rf & 2) {
@@ -731,7 +737,7 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
731
737
  const ctx_r0 = i0.ɵɵnextContext(5);
732
738
  i0.ɵɵproperty("title", "Click to view suite run - " + i0.ɵɵpipeBind2(1, 5, run_r20.date, "medium"));
733
739
  i0.ɵɵadvance(3);
734
- i0.ɵɵproperty("ngIf", run_r20.tags.length > 0);
740
+ i0.ɵɵconditional(run_r20.tags.length > 0 ? 3 : -1);
735
741
  i0.ɵɵadvance(2);
736
742
  i0.ɵɵtextInterpolate(ctx_r0.getRelativeTime(run_r20.date));
737
743
  i0.ɵɵadvance();
@@ -739,110 +745,114 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
739
745
  i0.ɵɵadvance();
740
746
  i0.ɵɵtextInterpolate1(" ", run_r20.passRate.toFixed(0), "% ");
741
747
  } }
742
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
743
- i0.ɵɵelementStart(0, "span", 219);
744
- i0.ɵɵelement(1, "i", 91);
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);
745
751
  i0.ɵɵelementEnd();
746
752
  } if (rf & 2) {
747
- const result_r26 = i0.ɵɵnextContext().ngIf;
753
+ const result_r26 = i0.ɵɵnextContext();
748
754
  const ctx_r0 = i0.ɵɵnextContext(7);
749
755
  i0.ɵɵclassProp("cell-skipped-status", result_r26.status === "Skipped" || result_r26.status === "Pending");
750
756
  i0.ɵɵproperty("ngClass", "status-" + result_r26.status.toLowerCase())("title", ctx_r0.getStatusTooltip(result_r26.status));
751
757
  i0.ɵɵadvance();
752
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");
753
759
  } }
754
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
755
- i0.ɵɵelementStart(0, "span", 220);
756
- i0.ɵɵelement(1, "i", 221);
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);
757
763
  i0.ɵɵelementEnd();
758
764
  } }
759
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_4_Template(rf, ctx) { if (rf & 1) {
760
- i0.ɵɵelementStart(0, "span", 222);
761
- i0.ɵɵelement(1, "i", 106);
762
- i0.ɵɵelementStart(2, "span", 223);
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);
763
769
  i0.ɵɵtext(3);
764
770
  i0.ɵɵelementEnd()();
765
771
  } if (rf & 2) {
766
- const result_r26 = i0.ɵɵnextContext().ngIf;
772
+ const result_r26 = i0.ɵɵnextContext();
767
773
  const ctx_r0 = i0.ɵɵnextContext(7);
768
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);
769
775
  i0.ɵɵproperty("title", ctx_r0.getHumanTooltip(result_r26.humanRating, result_r26.humanComments));
770
776
  i0.ɵɵadvance(3);
771
777
  i0.ɵɵtextInterpolate(result_r26.humanRating);
772
778
  } }
773
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_5_Template(rf, ctx) { if (rf & 1) {
774
- i0.ɵɵelementStart(0, "span", 224);
775
- i0.ɵɵelement(1, "i", 110);
776
- i0.ɵɵelementStart(2, "span", 225);
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);
777
783
  i0.ɵɵtext(3);
778
784
  i0.ɵɵelementEnd()();
779
785
  } if (rf & 2) {
780
- const result_r26 = i0.ɵɵnextContext().ngIf;
786
+ const result_r26 = i0.ɵɵnextContext();
781
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);
782
788
  i0.ɵɵproperty("title", "Auto Score: " + (result_r26.score * 100).toFixed(0) + "% automated evaluation");
783
789
  i0.ɵɵadvance(3);
784
790
  i0.ɵɵtextInterpolate((result_r26.score * 100).toFixed(0));
785
791
  } }
786
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_6_Template(rf, ctx) { if (rf & 1) {
787
- i0.ɵɵelementStart(0, "span", 226);
788
- i0.ɵɵelement(1, "i", 110);
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);
789
795
  i0.ɵɵelementEnd();
790
796
  } }
791
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
792
- i0.ɵɵelementContainerStart(0);
793
- i0.ɵɵelementStart(1, "div", 213);
794
- i0.ɵɵtemplate(2, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_2_Template, 2, 18, "span", 214)(3, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_3_Template, 2, 0, "span", 215)(4, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_4_Template, 4, 10, "span", 216)(5, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_5_Template, 4, 10, "span", 217)(6, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_span_6_Template, 2, 0, "span", 218);
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);
795
804
  i0.ɵɵelementEnd();
796
- i0.ɵɵelementContainerEnd();
797
805
  } if (rf & 2) {
798
- const result_r26 = ctx.ngIf;
806
+ const result_r26 = ctx;
799
807
  const ctx_r0 = i0.ɵɵnextContext(7);
800
- i0.ɵɵadvance(2);
801
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
802
808
  i0.ɵɵadvance();
803
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showHuman && !result_r26.humanRating);
809
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 1 : -1);
810
+ i0.ɵɵadvance();
811
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman && !result_r26.humanRating ? 2 : -1);
804
812
  i0.ɵɵadvance();
805
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showHuman && result_r26.humanRating);
813
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman && result_r26.humanRating ? 3 : -1);
806
814
  i0.ɵɵadvance();
807
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto && result_r26.score != null);
815
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto && result_r26.score != null ? 4 : -1);
808
816
  i0.ɵɵadvance();
809
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto && result_r26.score == null);
817
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto && result_r26.score == null ? 5 : -1);
810
818
  } }
811
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_span_2_Template(rf, ctx) { if (rf & 1) {
812
- i0.ɵɵelementStart(0, "span", 227);
813
- i0.ɵɵelement(1, "i", 228);
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);
814
822
  i0.ɵɵelementEnd();
815
823
  } }
816
- function TestSuiteFormComponentExtended_div_61_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) {
817
825
  const _r24 = i0.ɵɵgetCurrentView();
818
- i0.ɵɵelementStart(0, "td", 211);
819
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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)); });
820
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_ng_container_1_Template, 7, 5, "ng-container", 81)(2, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_span_2_Template, 2, 0, "span", 212);
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);
821
830
  i0.ɵɵelementEnd();
822
831
  } if (rf & 2) {
823
- let tmp_11_0;
832
+ let tmp_27_0;
833
+ let tmp_28_0;
824
834
  const run_r25 = ctx.$implicit;
825
835
  const test_r23 = i0.ɵɵnextContext().$implicit;
826
836
  const ctx_r0 = i0.ɵɵnextContext(5);
827
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));
828
- 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");
829
839
  i0.ɵɵadvance();
830
- 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);
831
841
  i0.ɵɵadvance();
832
- 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);
833
843
  } }
834
- function TestSuiteFormComponentExtended_div_61_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) {
835
845
  const _r22 = i0.ɵɵgetCurrentView();
836
- i0.ɵɵelementStart(0, "tr", 206);
837
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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)); });
838
- i0.ɵɵelementStart(1, "td", 207);
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);
839
849
  i0.ɵɵtext(2);
840
850
  i0.ɵɵelementEnd();
841
- i0.ɵɵelementStart(3, "td", 208)(4, "span", 209);
851
+ i0.ɵɵelementStart(3, "td", 180)(4, "span", 181);
842
852
  i0.ɵɵtext(5);
843
853
  i0.ɵɵelementEnd()();
844
- i0.ɵɵtemplate(6, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_td_6_Template, 3, 8, "td", 210);
845
- i0.ɵɵelement(7, "td", 193);
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);
846
856
  i0.ɵɵelementEnd();
847
857
  } if (rf & 2) {
848
858
  const test_r23 = ctx.$implicit;
@@ -855,45 +865,45 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
855
865
  i0.ɵɵadvance();
856
866
  i0.ɵɵtextInterpolate(test_r23.testName);
857
867
  i0.ɵɵadvance();
858
- i0.ɵɵproperty("ngForOf", ctx_r0.matrixData);
868
+ i0.ɵɵrepeater(ctx_r0.matrixData);
859
869
  } }
860
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_td_35_span_2_Template(rf, ctx) { if (rf & 1) {
861
- i0.ɵɵelementStart(0, "span", 234)(1, "span", 235);
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);
862
872
  i0.ɵɵtext(2);
863
873
  i0.ɵɵelementEnd()();
864
874
  } if (rf & 2) {
865
875
  const run_r27 = i0.ɵɵnextContext().$implicit;
866
876
  const ctx_r0 = i0.ɵɵnextContext(5);
867
877
  i0.ɵɵadvance(2);
868
- 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));
869
879
  } }
870
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_td_35_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
871
- i0.ɵɵelementStart(0, "span", 239);
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);
872
882
  i0.ɵɵtext(1);
873
883
  i0.ɵɵelementEnd();
874
884
  } if (rf & 2) {
875
- let tmp_8_0;
885
+ let tmp_16_0;
876
886
  const run_r27 = i0.ɵɵnextContext(2).$implicit;
877
887
  const ctx_r0 = i0.ɵɵnextContext(5);
878
888
  i0.ɵɵadvance();
879
- 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));
880
890
  } }
881
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_td_35_span_3_Template(rf, ctx) { if (rf & 1) {
882
- i0.ɵɵelementStart(0, "span", 236);
883
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_td_35_span_3_span_1_Template, 2, 1, "span", 237);
884
- i0.ɵɵelementStart(2, "span", 238);
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);
885
895
  i0.ɵɵtext(3);
886
896
  i0.ɵɵelementEnd()();
887
897
  } if (rf & 2) {
888
898
  const run_r27 = i0.ɵɵnextContext().$implicit;
889
899
  const ctx_r0 = i0.ɵɵnextContext(5);
890
900
  i0.ɵɵadvance();
891
- i0.ɵɵproperty("ngIf", ctx_r0.getRunHumanAvg(run_r27) != null);
901
+ i0.ɵɵconditional(ctx_r0.getRunHumanAvg(run_r27) != null ? 1 : -1);
892
902
  i0.ɵɵadvance(2);
893
903
  i0.ɵɵtextInterpolate1("(", ctx_r0.getRunHumanCount(run_r27), ")");
894
904
  } }
895
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_td_35_span_4_span_1_Template(rf, ctx) { if (rf & 1) {
896
- i0.ɵɵelementStart(0, "span", 239);
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);
897
907
  i0.ɵɵtext(1);
898
908
  i0.ɵɵelementEnd();
899
909
  } if (rf & 2) {
@@ -902,84 +912,86 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
902
912
  i0.ɵɵadvance();
903
913
  i0.ɵɵtextInterpolate1("", (ctx_r0.getRunAutoAvg(run_r27) * 100).toFixed(0), "%");
904
914
  } }
905
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_td_35_span_4_Template(rf, ctx) { if (rf & 1) {
906
- i0.ɵɵelementStart(0, "span", 240);
907
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_td_35_span_4_span_1_Template, 2, 1, "span", 237);
908
- i0.ɵɵelementStart(2, "span", 238);
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);
909
919
  i0.ɵɵtext(3);
910
920
  i0.ɵɵelementEnd()();
911
921
  } if (rf & 2) {
912
922
  const run_r27 = i0.ɵɵnextContext().$implicit;
913
923
  const ctx_r0 = i0.ɵɵnextContext(5);
914
924
  i0.ɵɵadvance();
915
- i0.ɵɵproperty("ngIf", ctx_r0.getRunAutoAvg(run_r27) != null);
925
+ i0.ɵɵconditional(ctx_r0.getRunAutoAvg(run_r27) != null ? 1 : -1);
916
926
  i0.ɵɵadvance(2);
917
927
  i0.ɵɵtextInterpolate1("(", ctx_r0.getRunAutoCount(run_r27), ")");
918
928
  } }
919
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_td_35_Template(rf, ctx) { if (rf & 1) {
920
- i0.ɵɵelementStart(0, "td", 229)(1, "div", 230);
921
- i0.ɵɵtemplate(2, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_td_35_span_2_Template, 3, 2, "span", 231)(3, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_td_35_span_3_Template, 4, 2, "span", 232)(4, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_td_35_span_4_Template, 4, 2, "span", 233);
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);
922
934
  i0.ɵɵelementEnd()();
923
935
  } if (rf & 2) {
924
936
  const ctx_r0 = i0.ɵɵnextContext(5);
925
937
  i0.ɵɵadvance(2);
926
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showExecution);
938
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showExecution ? 2 : -1);
927
939
  i0.ɵɵadvance();
928
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showHuman);
940
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showHuman ? 3 : -1);
929
941
  i0.ɵɵadvance();
930
- i0.ɵɵproperty("ngIf", ctx_r0.evalPreferences.showAuto);
942
+ i0.ɵɵconditional(ctx_r0.evalPreferences.showAuto ? 4 : -1);
931
943
  } }
932
- function TestSuiteFormComponentExtended_div_61_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) {
933
945
  const _r17 = i0.ɵɵgetCurrentView();
934
- i0.ɵɵelementStart(0, "div", 172)(1, "div", 173)(2, "h3");
935
- i0.ɵɵelement(3, "i", 121);
946
+ i0.ɵɵelementStart(0, "div", 146)(1, "div", 148)(2, "h3");
947
+ i0.ɵɵelement(3, "i", 105);
936
948
  i0.ɵɵtext(4, " Test Results Matrix");
937
949
  i0.ɵɵelementEnd();
938
- i0.ɵɵelementStart(5, "div", 174)(6, "div", 175);
939
- i0.ɵɵelement(7, "i", 176);
940
- i0.ɵɵelementStart(8, "input", 177);
941
- i0.ɵɵlistener("input", function TestSuiteFormComponentExtended_div_61_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)); });
942
954
  i0.ɵɵelementEnd();
943
- i0.ɵɵtemplate(9, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_button_9_Template, 2, 0, "button", 178);
955
+ i0.ɵɵconditionalCreate(9, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_23_Conditional_1_Conditional_9_Template, 2, 0, "button", 153);
944
956
  i0.ɵɵelementEnd();
945
- i0.ɵɵelementStart(10, "span", 179);
957
+ i0.ɵɵelementStart(10, "span", 154);
946
958
  i0.ɵɵtext(11);
947
959
  i0.ɵɵelementEnd();
948
- i0.ɵɵelementStart(12, "button", 180);
949
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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()); });
950
- i0.ɵɵelement(13, "i", 181);
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);
951
963
  i0.ɵɵtext(14, " Export ");
952
964
  i0.ɵɵelementEnd()()();
953
- i0.ɵɵelementStart(15, "div", 182)(16, "table", 183)(17, "thead")(18, "tr")(19, "th", 184);
954
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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")); });
955
967
  i0.ɵɵtext(20, " # ");
956
968
  i0.ɵɵelement(21, "i", 16);
957
969
  i0.ɵɵelementEnd();
958
- i0.ɵɵelementStart(22, "th", 185);
959
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_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")); });
960
972
  i0.ɵɵtext(23, " Test ");
961
973
  i0.ɵɵelement(24, "i", 16);
962
974
  i0.ɵɵelementEnd();
963
- i0.ɵɵtemplate(25, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_th_25_Template, 8, 12, "th", 186);
964
- i0.ɵɵelement(26, "th", 187);
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);
965
977
  i0.ɵɵelementEnd()();
966
- i0.ɵɵelementStart(27, "tbody");
967
- i0.ɵɵtemplate(28, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_tr_28_Template, 8, 6, "tr", 188);
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);
968
980
  i0.ɵɵelementEnd();
969
- i0.ɵɵelementStart(29, "tfoot")(30, "tr", 189);
970
- i0.ɵɵelement(31, "td", 190);
971
- i0.ɵɵelementStart(32, "td", 191)(33, "strong");
972
- 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");
973
985
  i0.ɵɵelementEnd()();
974
- i0.ɵɵtemplate(35, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_td_35_Template, 5, 3, "td", 192);
975
- i0.ɵɵelement(36, "td", 193);
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);
976
988
  i0.ɵɵelementEnd()()()()();
977
989
  } if (rf & 2) {
978
990
  const ctx_r0 = i0.ɵɵnextContext(4);
979
991
  i0.ɵɵadvance(8);
980
992
  i0.ɵɵproperty("value", ctx_r0.matrixTestFilter);
981
993
  i0.ɵɵadvance();
982
- i0.ɵɵproperty("ngIf", ctx_r0.matrixTestFilter);
994
+ i0.ɵɵconditional(ctx_r0.matrixTestFilter ? 9 : -1);
983
995
  i0.ɵɵadvance(2);
984
996
  i0.ɵɵtextInterpolate2("", ctx_r0.matrixData.length, " runs \u00B7 ", ctx_r0.getUniqueTestsFromMatrix().length, " tests");
985
997
  i0.ɵɵadvance();
@@ -989,15 +1001,15 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
989
1001
  i0.ɵɵadvance(3);
990
1002
  i0.ɵɵproperty("ngClass", ctx_r0.matrixSortBy === "name" ? ctx_r0.matrixSortAsc ? "fa-sort-up" : "fa-sort-down" : "fa-sort");
991
1003
  i0.ɵɵadvance();
992
- i0.ɵɵproperty("ngForOf", ctx_r0.matrixData);
993
- i0.ɵɵadvance(3);
994
- i0.ɵɵproperty("ngForOf", ctx_r0.getUniqueTestsFromMatrix());
995
- i0.ɵɵadvance(7);
996
- 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);
997
1009
  } }
998
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_3_Template(rf, ctx) { if (rf & 1) {
999
- i0.ɵɵelementStart(0, "div", 83)(1, "div", 84);
1000
- i0.ɵɵelement(2, "i", 121);
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);
1001
1013
  i0.ɵɵelementEnd();
1002
1014
  i0.ɵɵelementStart(3, "h4");
1003
1015
  i0.ɵɵtext(4, "No Matrix Data");
@@ -1006,50 +1018,49 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_di
1006
1018
  i0.ɵɵtext(6, "No suite runs match the current filters.");
1007
1019
  i0.ɵɵelementEnd()();
1008
1020
  } }
1009
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_Template(rf, ctx) { if (rf & 1) {
1010
- i0.ɵɵelementContainerStart(0);
1011
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_1_Template, 2, 0, "div", 61)(2, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_2_Template, 37, 10, "div", 170)(3, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_div_3_Template, 7, 0, "div", 63);
1012
- 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);
1013
1025
  } if (rf & 2) {
1014
1026
  const ctx_r0 = i0.ɵɵnextContext(3);
1027
+ i0.ɵɵconditional(ctx_r0.loadingMatrix ? 0 : -1);
1015
1028
  i0.ɵɵadvance();
1016
- i0.ɵɵproperty("ngIf", ctx_r0.loadingMatrix);
1017
- i0.ɵɵadvance();
1018
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length > 0);
1029
+ i0.ɵɵconditional(!ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length > 0 ? 1 : -1);
1019
1030
  i0.ɵɵadvance();
1020
- 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);
1021
1032
  } }
1022
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_25_div_1_Template(rf, ctx) { if (rf & 1) {
1023
- i0.ɵɵelementStart(0, "div", 64);
1024
- i0.ɵɵelement(1, "mj-loading", 242);
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);
1025
1036
  i0.ɵɵelementEnd();
1026
1037
  } }
1027
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_25_div_2_Template(rf, ctx) { if (rf & 1) {
1028
- i0.ɵɵelementStart(0, "div", 243)(1, "div", 244)(2, "h3");
1029
- i0.ɵɵelement(3, "i", 122);
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);
1030
1041
  i0.ɵɵtext(4, " Test Results Flow");
1031
1042
  i0.ɵɵelementEnd();
1032
- i0.ɵɵelementStart(5, "div", 245)(6, "span", 246);
1033
- i0.ɵɵelement(7, "i", 142);
1043
+ i0.ɵɵelementStart(5, "div", 208)(6, "span", 209);
1044
+ i0.ɵɵelement(7, "i", 121);
1034
1045
  i0.ɵɵtext(8, " Passed");
1035
1046
  i0.ɵɵelementEnd();
1036
- i0.ɵɵelementStart(9, "span", 247);
1037
- i0.ɵɵelement(10, "i", 195);
1047
+ i0.ɵɵelementStart(9, "span", 210);
1048
+ i0.ɵɵelement(10, "i", 170);
1038
1049
  i0.ɵɵtext(11, " Failed");
1039
1050
  i0.ɵɵelementEnd();
1040
- i0.ɵɵelementStart(12, "span", 248);
1041
- i0.ɵɵelement(13, "i", 249);
1051
+ i0.ɵɵelementStart(12, "span", 211);
1052
+ i0.ɵɵelement(13, "i", 212);
1042
1053
  i0.ɵɵtext(14, " Error");
1043
1054
  i0.ɵɵelementEnd();
1044
- i0.ɵɵelementStart(15, "span", 250);
1045
- i0.ɵɵelement(16, "i", 251);
1055
+ i0.ɵɵelementStart(15, "span", 213);
1056
+ i0.ɵɵelement(16, "i", 214);
1046
1057
  i0.ɵɵtext(17, " Skipped");
1047
1058
  i0.ɵɵelementEnd()()();
1048
- i0.ɵɵelementStart(18, "div", 252);
1049
- i0.ɵɵelement(19, "div", 253, 0);
1059
+ i0.ɵɵelementStart(18, "div", 215);
1060
+ i0.ɵɵelement(19, "div", 216, 0);
1050
1061
  i0.ɵɵelementEnd();
1051
- i0.ɵɵelementStart(21, "div", 254);
1052
- i0.ɵɵelement(22, "i", 48);
1062
+ i0.ɵɵelementStart(21, "div", 217);
1063
+ i0.ɵɵelement(22, "i", 44);
1053
1064
  i0.ɵɵtext(23);
1054
1065
  i0.ɵɵelementEnd()();
1055
1066
  } if (rf & 2) {
@@ -1057,9 +1068,9 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_25_di
1057
1068
  i0.ɵɵadvance(23);
1058
1069
  i0.ɵɵtextInterpolate1(" Interactive visualization showing test results across ", ctx_r0.matrixData.length, " runs. Hover over elements for details, click nodes to navigate. ");
1059
1070
  } }
1060
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_25_div_3_Template(rf, ctx) { if (rf & 1) {
1061
- i0.ɵɵelementStart(0, "div", 83)(1, "div", 84);
1062
- i0.ɵɵelement(2, "i", 122);
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);
1063
1074
  i0.ɵɵelementEnd();
1064
1075
  i0.ɵɵelementStart(3, "h4");
1065
1076
  i0.ɵɵtext(4, "No Chart Data");
@@ -1068,56 +1079,55 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_25_di
1068
1079
  i0.ɵɵtext(6, "No suite runs match the current filters.");
1069
1080
  i0.ɵɵelementEnd()();
1070
1081
  } }
1071
- function TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_25_Template(rf, ctx) { if (rf & 1) {
1072
- i0.ɵɵelementContainerStart(0);
1073
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_25_div_1_Template, 2, 0, "div", 61)(2, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_25_div_2_Template, 24, 1, "div", 241)(3, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_25_div_3_Template, 7, 0, "div", 63);
1074
- 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);
1075
1086
  } if (rf & 2) {
1076
1087
  const ctx_r0 = i0.ɵɵnextContext(3);
1088
+ i0.ɵɵconditional(ctx_r0.loadingMatrix ? 0 : -1);
1077
1089
  i0.ɵɵadvance();
1078
- i0.ɵɵproperty("ngIf", ctx_r0.loadingMatrix);
1090
+ i0.ɵɵconditional(!ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length > 0 ? 1 : -1);
1079
1091
  i0.ɵɵadvance();
1080
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingMatrix && ctx_r0.matrixLoaded && ctx_r0.matrixData.length > 0);
1081
- i0.ɵɵadvance();
1082
- 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);
1083
1093
  } }
1084
- function TestSuiteFormComponentExtended_div_61_ng_container_2_Template(rf, ctx) { if (rf & 1) {
1094
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1085
1095
  const _r9 = i0.ɵɵgetCurrentView();
1086
- i0.ɵɵelementContainerStart(0);
1087
- i0.ɵɵelementStart(1, "div", 117)(2, "div", 118)(3, "button", 119);
1088
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_ng_container_2_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setAnalyticsView("summary")); });
1089
- i0.ɵɵelement(4, "i", 120);
1090
- i0.ɵɵelementStart(5, "span");
1091
- 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");
1092
1101
  i0.ɵɵelementEnd()();
1093
- i0.ɵɵelementStart(7, "button", 119);
1094
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_ng_container_2_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setAnalyticsView("matrix")); });
1095
- i0.ɵɵelement(8, "i", 121);
1096
- i0.ɵɵelementStart(9, "span");
1097
- 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");
1098
1107
  i0.ɵɵelementEnd()();
1099
- i0.ɵɵelementStart(11, "button", 119);
1100
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_ng_container_2_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.setAnalyticsView("chart")); });
1101
- i0.ɵɵelement(12, "i", 122);
1102
- i0.ɵɵelementStart(13, "span");
1103
- 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");
1104
1113
  i0.ɵɵelementEnd()()()();
1105
- i0.ɵɵelementStart(15, "div", 123)(16, "div", 124);
1106
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_ng_container_2_Template_div_click_16_listener() { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.toggleFilters()); });
1107
- i0.ɵɵelementStart(17, "span", 125);
1108
- i0.ɵɵelement(18, "i", 126);
1109
- i0.ɵɵtext(19, " Filters ");
1110
- i0.ɵɵtemplate(20, TestSuiteFormComponentExtended_div_61_ng_container_2_span_20_Template, 3, 2, "span", 127);
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);
1111
1120
  i0.ɵɵelementEnd();
1112
- i0.ɵɵelement(21, "i", 16);
1121
+ i0.ɵɵelement(20, "i", 16);
1113
1122
  i0.ɵɵelementEnd();
1114
- i0.ɵɵtemplate(22, TestSuiteFormComponentExtended_div_61_ng_container_2_div_22_Template, 14, 9, "div", 128);
1123
+ i0.ɵɵconditionalCreate(21, TestSuiteFormComponentExtended_Conditional_61_Conditional_2_Conditional_21_Template, 14, 9, "div", 112);
1115
1124
  i0.ɵɵelementEnd();
1116
- i0.ɵɵtemplate(23, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_23_Template, 62, 16, "ng-container", 81)(24, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_24_Template, 4, 3, "ng-container", 81)(25, TestSuiteFormComponentExtended_div_61_ng_container_2_ng_container_25_Template, 4, 3, "ng-container", 81);
1117
- 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);
1118
1128
  } if (rf & 2) {
1119
1129
  const ctx_r0 = i0.ɵɵnextContext(2);
1120
- i0.ɵɵadvance(3);
1130
+ i0.ɵɵadvance(2);
1121
1131
  i0.ɵɵclassProp("active", ctx_r0.analyticsView === "summary");
1122
1132
  i0.ɵɵadvance(4);
1123
1133
  i0.ɵɵclassProp("active", ctx_r0.analyticsView === "matrix");
@@ -1126,21 +1136,21 @@ function TestSuiteFormComponentExtended_div_61_ng_container_2_Template(rf, ctx)
1126
1136
  i0.ɵɵadvance(4);
1127
1137
  i0.ɵɵclassProp("collapsed", ctx_r0.filtersCollapsed);
1128
1138
  i0.ɵɵadvance(5);
1129
- i0.ɵɵproperty("ngIf", ctx_r0.filtersCollapsed);
1139
+ i0.ɵɵconditional(ctx_r0.filtersCollapsed ? 19 : -1);
1130
1140
  i0.ɵɵadvance();
1131
1141
  i0.ɵɵproperty("ngClass", ctx_r0.filtersCollapsed ? "fa-chevron-down" : "fa-chevron-up");
1132
1142
  i0.ɵɵadvance();
1133
- i0.ɵɵproperty("ngIf", !ctx_r0.filtersCollapsed);
1143
+ i0.ɵɵconditional(!ctx_r0.filtersCollapsed ? 21 : -1);
1134
1144
  i0.ɵɵadvance();
1135
- i0.ɵɵproperty("ngIf", ctx_r0.analyticsView === "summary");
1145
+ i0.ɵɵconditional(ctx_r0.analyticsView === "summary" ? 22 : -1);
1136
1146
  i0.ɵɵadvance();
1137
- i0.ɵɵproperty("ngIf", ctx_r0.analyticsView === "matrix");
1147
+ i0.ɵɵconditional(ctx_r0.analyticsView === "matrix" ? 23 : -1);
1138
1148
  i0.ɵɵadvance();
1139
- i0.ɵɵproperty("ngIf", ctx_r0.analyticsView === "chart");
1149
+ i0.ɵɵconditional(ctx_r0.analyticsView === "chart" ? 24 : -1);
1140
1150
  } }
1141
- function TestSuiteFormComponentExtended_div_61_div_3_Template(rf, ctx) { if (rf & 1) {
1151
+ function TestSuiteFormComponentExtended_Conditional_61_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1142
1152
  const _r28 = i0.ɵɵgetCurrentView();
1143
- i0.ɵɵelementStart(0, "div", 83)(1, "div", 84);
1153
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
1144
1154
  i0.ɵɵelement(2, "i", 32);
1145
1155
  i0.ɵɵelementEnd();
1146
1156
  i0.ɵɵelementStart(3, "h4");
@@ -1150,26 +1160,28 @@ function TestSuiteFormComponentExtended_div_61_div_3_Template(rf, ctx) { if (rf
1150
1160
  i0.ɵɵtext(6, "Run this suite to start collecting analytics data.");
1151
1161
  i0.ɵɵelementEnd();
1152
1162
  i0.ɵɵelementStart(7, "button", 21);
1153
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_61_div_3_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r28); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runSuite()); });
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()); });
1154
1164
  i0.ɵɵelement(8, "i", 22);
1155
1165
  i0.ɵɵtext(9, " Run Suite Now ");
1156
1166
  i0.ɵɵelementEnd()();
1157
1167
  } }
1158
- function TestSuiteFormComponentExtended_div_61_Template(rf, ctx) { if (rf & 1) {
1159
- i0.ɵɵelementStart(0, "div", 115);
1160
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_61_div_1_Template, 2, 0, "div", 61)(2, TestSuiteFormComponentExtended_div_61_ng_container_2_Template, 26, 14, "ng-container", 81)(3, TestSuiteFormComponentExtended_div_61_div_3_Template, 10, 0, "div", 63);
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);
1161
1173
  i0.ɵɵelementEnd();
1162
1174
  } if (rf & 2) {
1163
1175
  const ctx_r0 = i0.ɵɵnextContext();
1164
1176
  i0.ɵɵadvance();
1165
- i0.ɵɵproperty("ngIf", ctx_r0.loadingAnalytics);
1177
+ i0.ɵɵconditional(ctx_r0.loadingAnalytics ? 1 : -1);
1166
1178
  i0.ɵɵadvance();
1167
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingAnalytics && ctx_r0.analyticsLoaded);
1179
+ i0.ɵɵconditional(!ctx_r0.loadingAnalytics && ctx_r0.analyticsLoaded ? 2 : -1);
1168
1180
  i0.ɵɵadvance();
1169
- 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);
1170
1182
  } }
1171
- function TestSuiteFormComponentExtended_div_62_div_5_div_1_div_8_span_1_Template(rf, ctx) { if (rf & 1) {
1172
- i0.ɵɵelementStart(0, "span", 274);
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);
1173
1185
  i0.ɵɵtext(1);
1174
1186
  i0.ɵɵelementEnd();
1175
1187
  } if (rf & 2) {
@@ -1177,29 +1189,29 @@ function TestSuiteFormComponentExtended_div_62_div_5_div_1_div_8_span_1_Template
1177
1189
  i0.ɵɵadvance();
1178
1190
  i0.ɵɵtextInterpolate(tag_r31);
1179
1191
  } }
1180
- function TestSuiteFormComponentExtended_div_62_div_5_div_1_div_8_Template(rf, ctx) { if (rf & 1) {
1181
- i0.ɵɵelementStart(0, "div", 272);
1182
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_62_div_5_div_1_div_8_span_1_Template, 2, 1, "span", 273);
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);
1183
1195
  i0.ɵɵelementEnd();
1184
1196
  } if (rf & 2) {
1185
1197
  const run_r30 = i0.ɵɵnextContext().$implicit;
1186
1198
  const ctx_r0 = i0.ɵɵnextContext(3);
1187
1199
  i0.ɵɵadvance();
1188
- i0.ɵɵproperty("ngForOf", ctx_r0.getRunTags(run_r30).slice(0, 2));
1200
+ i0.ɵɵrepeater(ctx_r0.getRunTags(run_r30).slice(0, 2));
1189
1201
  } }
1190
- function TestSuiteFormComponentExtended_div_62_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) {
1191
1203
  const _r29 = i0.ɵɵgetCurrentView();
1192
- i0.ɵɵelementStart(0, "div", 266);
1193
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_62_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)); });
1194
- i0.ɵɵelement(1, "div", 267);
1195
- i0.ɵɵelementStart(2, "div", 268)(3, "div", 269);
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);
1196
1208
  i0.ɵɵtext(4);
1197
1209
  i0.ɵɵpipe(5, "date");
1198
1210
  i0.ɵɵelementEnd();
1199
- i0.ɵɵelementStart(6, "div", 270);
1211
+ i0.ɵɵelementStart(6, "div", 231);
1200
1212
  i0.ɵɵtext(7);
1201
1213
  i0.ɵɵelementEnd()();
1202
- i0.ɵɵtemplate(8, TestSuiteFormComponentExtended_div_62_div_5_div_1_div_8_Template, 2, 1, "div", 271);
1214
+ i0.ɵɵconditionalCreate(8, TestSuiteFormComponentExtended_Conditional_62_Conditional_5_For_2_Conditional_8_Template, 3, 0, "div", 232);
1203
1215
  i0.ɵɵelementEnd();
1204
1216
  } if (rf & 2) {
1205
1217
  const run_r30 = ctx.$implicit;
@@ -1212,31 +1224,31 @@ function TestSuiteFormComponentExtended_div_62_div_5_div_1_Template(rf, ctx) { i
1212
1224
  i0.ɵɵadvance(3);
1213
1225
  i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(run_r30).toFixed(0), "% pass");
1214
1226
  i0.ɵɵadvance();
1215
- i0.ɵɵproperty("ngIf", ctx_r0.getRunTags(run_r30).length > 0);
1227
+ i0.ɵɵconditional(ctx_r0.getRunTags(run_r30).length > 0 ? 8 : -1);
1216
1228
  } }
1217
- function TestSuiteFormComponentExtended_div_62_div_5_Template(rf, ctx) { if (rf & 1) {
1218
- i0.ɵɵelementStart(0, "div", 264);
1219
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_62_div_5_div_1_Template, 9, 10, "div", 265);
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);
1220
1232
  i0.ɵɵelementEnd();
1221
1233
  } if (rf & 2) {
1222
1234
  const ctx_r0 = i0.ɵɵnextContext(2);
1223
1235
  i0.ɵɵadvance();
1224
- i0.ɵɵproperty("ngForOf", ctx_r0.suiteRuns);
1236
+ i0.ɵɵrepeater(ctx_r0.suiteRuns);
1225
1237
  } }
1226
- function TestSuiteFormComponentExtended_div_62_div_6_Template(rf, ctx) { if (rf & 1) {
1238
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1227
1239
  const _r32 = i0.ɵɵgetCurrentView();
1228
- i0.ɵɵelementStart(0, "div", 275)(1, "div", 276)(2, "span", 277);
1240
+ i0.ɵɵelementStart(0, "div", 221)(1, "div", 234)(2, "span", 235);
1229
1241
  i0.ɵɵtext(3, "Selected:");
1230
1242
  i0.ɵɵelementEnd();
1231
- i0.ɵɵelementStart(4, "button", 278);
1232
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_62_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 = []); });
1233
1245
  i0.ɵɵtext(5, "Clear");
1234
1246
  i0.ɵɵelementEnd()();
1235
- i0.ɵɵelementStart(6, "div", 279)(7, "span");
1247
+ i0.ɵɵelementStart(6, "div", 237)(7, "span");
1236
1248
  i0.ɵɵtext(8);
1237
1249
  i0.ɵɵpipe(9, "date");
1238
1250
  i0.ɵɵelementEnd();
1239
- i0.ɵɵelementStart(10, "span", 280);
1251
+ i0.ɵɵelementStart(10, "span", 238);
1240
1252
  i0.ɵɵtext(11);
1241
1253
  i0.ɵɵelementEnd()()();
1242
1254
  } if (rf & 2) {
@@ -1246,8 +1258,8 @@ function TestSuiteFormComponentExtended_div_62_div_6_Template(rf, ctx) { if (rf
1246
1258
  i0.ɵɵadvance(3);
1247
1259
  i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(ctx_r0.compareRunA).toFixed(1), "%");
1248
1260
  } }
1249
- function TestSuiteFormComponentExtended_div_62_div_12_div_1_div_8_span_1_Template(rf, ctx) { if (rf & 1) {
1250
- i0.ɵɵelementStart(0, "span", 274);
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);
1251
1263
  i0.ɵɵtext(1);
1252
1264
  i0.ɵɵelementEnd();
1253
1265
  } if (rf & 2) {
@@ -1255,29 +1267,29 @@ function TestSuiteFormComponentExtended_div_62_div_12_div_1_div_8_span_1_Templat
1255
1267
  i0.ɵɵadvance();
1256
1268
  i0.ɵɵtextInterpolate(tag_r35);
1257
1269
  } }
1258
- function TestSuiteFormComponentExtended_div_62_div_12_div_1_div_8_Template(rf, ctx) { if (rf & 1) {
1259
- i0.ɵɵelementStart(0, "div", 272);
1260
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_62_div_12_div_1_div_8_span_1_Template, 2, 1, "span", 273);
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);
1261
1273
  i0.ɵɵelementEnd();
1262
1274
  } if (rf & 2) {
1263
1275
  const run_r34 = i0.ɵɵnextContext().$implicit;
1264
1276
  const ctx_r0 = i0.ɵɵnextContext(3);
1265
1277
  i0.ɵɵadvance();
1266
- i0.ɵɵproperty("ngForOf", ctx_r0.getRunTags(run_r34).slice(0, 2));
1278
+ i0.ɵɵrepeater(ctx_r0.getRunTags(run_r34).slice(0, 2));
1267
1279
  } }
1268
- function TestSuiteFormComponentExtended_div_62_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) {
1269
1281
  const _r33 = i0.ɵɵgetCurrentView();
1270
- i0.ɵɵelementStart(0, "div", 266);
1271
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_62_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)); });
1272
- i0.ɵɵelement(1, "div", 267);
1273
- i0.ɵɵelementStart(2, "div", 268)(3, "div", 269);
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);
1274
1286
  i0.ɵɵtext(4);
1275
1287
  i0.ɵɵpipe(5, "date");
1276
1288
  i0.ɵɵelementEnd();
1277
- i0.ɵɵelementStart(6, "div", 270);
1289
+ i0.ɵɵelementStart(6, "div", 231);
1278
1290
  i0.ɵɵtext(7);
1279
1291
  i0.ɵɵelementEnd()();
1280
- i0.ɵɵtemplate(8, TestSuiteFormComponentExtended_div_62_div_12_div_1_div_8_Template, 2, 1, "div", 271);
1292
+ i0.ɵɵconditionalCreate(8, TestSuiteFormComponentExtended_Conditional_62_Conditional_12_For_2_Conditional_8_Template, 3, 0, "div", 232);
1281
1293
  i0.ɵɵelementEnd();
1282
1294
  } if (rf & 2) {
1283
1295
  const run_r34 = ctx.$implicit;
@@ -1290,31 +1302,31 @@ function TestSuiteFormComponentExtended_div_62_div_12_div_1_Template(rf, ctx) {
1290
1302
  i0.ɵɵadvance(3);
1291
1303
  i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(run_r34).toFixed(0), "% pass");
1292
1304
  i0.ɵɵadvance();
1293
- i0.ɵɵproperty("ngIf", ctx_r0.getRunTags(run_r34).length > 0);
1305
+ i0.ɵɵconditional(ctx_r0.getRunTags(run_r34).length > 0 ? 8 : -1);
1294
1306
  } }
1295
- function TestSuiteFormComponentExtended_div_62_div_12_Template(rf, ctx) { if (rf & 1) {
1296
- i0.ɵɵelementStart(0, "div", 264);
1297
- i0.ɵɵtemplate(1, TestSuiteFormComponentExtended_div_62_div_12_div_1_Template, 9, 12, "div", 281);
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);
1298
1310
  i0.ɵɵelementEnd();
1299
1311
  } if (rf & 2) {
1300
1312
  const ctx_r0 = i0.ɵɵnextContext(2);
1301
1313
  i0.ɵɵadvance();
1302
- i0.ɵɵproperty("ngForOf", ctx_r0.suiteRuns);
1314
+ i0.ɵɵrepeater(ctx_r0.suiteRuns);
1303
1315
  } }
1304
- function TestSuiteFormComponentExtended_div_62_div_13_Template(rf, ctx) { if (rf & 1) {
1316
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1305
1317
  const _r36 = i0.ɵɵgetCurrentView();
1306
- i0.ɵɵelementStart(0, "div", 275)(1, "div", 276)(2, "span", 277);
1318
+ i0.ɵɵelementStart(0, "div", 221)(1, "div", 234)(2, "span", 235);
1307
1319
  i0.ɵɵtext(3, "Selected:");
1308
1320
  i0.ɵɵelementEnd();
1309
- i0.ɵɵelementStart(4, "button", 278);
1310
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_62_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 = []); });
1311
1323
  i0.ɵɵtext(5, "Clear");
1312
1324
  i0.ɵɵelementEnd()();
1313
- i0.ɵɵelementStart(6, "div", 279)(7, "span");
1325
+ i0.ɵɵelementStart(6, "div", 237)(7, "span");
1314
1326
  i0.ɵɵtext(8);
1315
1327
  i0.ɵɵpipe(9, "date");
1316
1328
  i0.ɵɵelementEnd();
1317
- i0.ɵɵelementStart(10, "span", 280);
1329
+ i0.ɵɵelementStart(10, "span", 238);
1318
1330
  i0.ɵɵtext(11);
1319
1331
  i0.ɵɵelementEnd()()();
1320
1332
  } if (rf & 2) {
@@ -1324,8 +1336,8 @@ function TestSuiteFormComponentExtended_div_62_div_13_Template(rf, ctx) { if (rf
1324
1336
  i0.ɵɵadvance(3);
1325
1337
  i0.ɵɵtextInterpolate1("", ctx_r0.getPassRate(ctx_r0.compareRunB).toFixed(1), "%");
1326
1338
  } }
1327
- function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_4_Template(rf, ctx) { if (rf & 1) {
1328
- i0.ɵɵelementStart(0, "span", 161);
1339
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1340
+ i0.ɵɵelementStart(0, "span", 140);
1329
1341
  i0.ɵɵtext(1);
1330
1342
  i0.ɵɵelementEnd();
1331
1343
  } if (rf & 2) {
@@ -1334,13 +1346,13 @@ function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_4_Template(rf,
1334
1346
  i0.ɵɵadvance();
1335
1347
  i0.ɵɵtextInterpolate(result_r37.runA.status);
1336
1348
  } }
1337
- function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_5_Template(rf, ctx) { if (rf & 1) {
1338
- i0.ɵɵelementStart(0, "span", 303);
1349
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1350
+ i0.ɵɵelementStart(0, "span", 252);
1339
1351
  i0.ɵɵtext(1, "N/A");
1340
1352
  i0.ɵɵelementEnd();
1341
1353
  } }
1342
- function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_7_Template(rf, ctx) { if (rf & 1) {
1343
- i0.ɵɵelementStart(0, "span", 161);
1354
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1355
+ i0.ɵɵelementStart(0, "span", 140);
1344
1356
  i0.ɵɵtext(1);
1345
1357
  i0.ɵɵelementEnd();
1346
1358
  } if (rf & 2) {
@@ -1349,13 +1361,13 @@ function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_7_Template(rf,
1349
1361
  i0.ɵɵadvance();
1350
1362
  i0.ɵɵtextInterpolate(result_r37.runB.status);
1351
1363
  } }
1352
- function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_8_Template(rf, ctx) { if (rf & 1) {
1353
- i0.ɵɵelementStart(0, "span", 303);
1364
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1365
+ i0.ɵɵelementStart(0, "span", 252);
1354
1366
  i0.ɵɵtext(1, "N/A");
1355
1367
  i0.ɵɵelementEnd();
1356
1368
  } }
1357
- function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_10_Template(rf, ctx) { if (rf & 1) {
1358
- i0.ɵɵelementStart(0, "span", 295);
1369
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1370
+ i0.ɵɵelementStart(0, "span", 251);
1359
1371
  i0.ɵɵtext(1);
1360
1372
  i0.ɵɵelementEnd();
1361
1373
  } if (rf & 2) {
@@ -1364,13 +1376,13 @@ function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_10_Template(rf,
1364
1376
  i0.ɵɵadvance();
1365
1377
  i0.ɵɵtextInterpolate2(" ", result_r37.scoreDiff > 0 ? "+" : "", "", (result_r37.scoreDiff * 100).toFixed(1), "% ");
1366
1378
  } }
1367
- function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_11_Template(rf, ctx) { if (rf & 1) {
1368
- i0.ɵɵelementStart(0, "span", 304);
1379
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1380
+ i0.ɵɵelementStart(0, "span", 253);
1369
1381
  i0.ɵɵtext(1, "-");
1370
1382
  i0.ɵɵelementEnd();
1371
1383
  } }
1372
- function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_13_Template(rf, ctx) { if (rf & 1) {
1373
- i0.ɵɵelementStart(0, "span", 295);
1384
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1385
+ i0.ɵɵelementStart(0, "span", 251);
1374
1386
  i0.ɵɵtext(1);
1375
1387
  i0.ɵɵelementEnd();
1376
1388
  } if (rf & 2) {
@@ -1379,46 +1391,52 @@ function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_13_Template(rf,
1379
1391
  i0.ɵɵadvance();
1380
1392
  i0.ɵɵtextInterpolate2(" ", result_r37.durationDiff > 0 ? "+" : "", "", result_r37.durationDiff.toFixed(1), "s ");
1381
1393
  } }
1382
- function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_14_Template(rf, ctx) { if (rf & 1) {
1383
- i0.ɵɵelementStart(0, "span", 304);
1394
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1395
+ i0.ɵɵelementStart(0, "span", 253);
1384
1396
  i0.ɵɵtext(1, "-");
1385
1397
  i0.ɵɵelementEnd();
1386
1398
  } }
1387
- function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_16_Template(rf, ctx) { if (rf & 1) {
1388
- i0.ɵɵelementStart(0, "span", 305);
1389
- i0.ɵɵelement(1, "i", 306);
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);
1390
1402
  i0.ɵɵtext(2, " Fixed ");
1391
1403
  i0.ɵɵelementEnd();
1392
1404
  } }
1393
- function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_17_Template(rf, ctx) { if (rf & 1) {
1394
- i0.ɵɵelementStart(0, "span", 307);
1395
- i0.ɵɵelement(1, "i", 308);
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);
1396
1408
  i0.ɵɵtext(2, " Broke ");
1397
1409
  i0.ɵɵelementEnd();
1398
1410
  } }
1399
- function TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_18_Template(rf, ctx) { if (rf & 1) {
1400
- i0.ɵɵelementStart(0, "span", 309);
1401
- i0.ɵɵelement(1, "i", 228);
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);
1402
1414
  i0.ɵɵelementEnd();
1403
1415
  } }
1404
- function TestSuiteFormComponentExtended_div_62_div_14_tr_45_Template(rf, ctx) { if (rf & 1) {
1405
- i0.ɵɵelementStart(0, "tr", 295)(1, "td", 208);
1416
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Template(rf, ctx) { if (rf & 1) {
1417
+ i0.ɵɵelementStart(0, "tr", 251)(1, "td", 180);
1406
1418
  i0.ɵɵtext(2);
1407
1419
  i0.ɵɵelementEnd();
1408
1420
  i0.ɵɵelementStart(3, "td");
1409
- i0.ɵɵtemplate(4, TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_4_Template, 2, 2, "span", 296)(5, TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_5_Template, 2, 0, "span", 297);
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);
1410
1423
  i0.ɵɵelementEnd();
1411
1424
  i0.ɵɵelementStart(6, "td");
1412
- i0.ɵɵtemplate(7, TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_7_Template, 2, 2, "span", 296)(8, TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_8_Template, 2, 0, "span", 297);
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);
1413
1427
  i0.ɵɵelementEnd();
1414
1428
  i0.ɵɵelementStart(9, "td");
1415
- i0.ɵɵtemplate(10, TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_10_Template, 2, 6, "span", 298)(11, TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_11_Template, 2, 0, "span", 299);
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);
1416
1431
  i0.ɵɵelementEnd();
1417
1432
  i0.ɵɵelementStart(12, "td");
1418
- i0.ɵɵtemplate(13, TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_13_Template, 2, 6, "span", 298)(14, TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_14_Template, 2, 0, "span", 299);
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);
1419
1435
  i0.ɵɵelementEnd();
1420
1436
  i0.ɵɵelementStart(15, "td");
1421
- i0.ɵɵtemplate(16, TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_16_Template, 3, 0, "span", 300)(17, TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_17_Template, 3, 0, "span", 301)(18, TestSuiteFormComponentExtended_div_62_div_14_tr_45_span_18_Template, 2, 0, "span", 302);
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);
1422
1440
  i0.ɵɵelementEnd()();
1423
1441
  } if (rf & 2) {
1424
1442
  const result_r37 = ctx.$implicit;
@@ -1426,60 +1444,60 @@ function TestSuiteFormComponentExtended_div_62_div_14_tr_45_Template(rf, ctx) {
1426
1444
  i0.ɵɵadvance(2);
1427
1445
  i0.ɵɵtextInterpolate(result_r37.testName);
1428
1446
  i0.ɵɵadvance(2);
1429
- i0.ɵɵproperty("ngIf", result_r37.runA);
1447
+ i0.ɵɵconditional(result_r37.runA ? 4 : -1);
1430
1448
  i0.ɵɵadvance();
1431
- i0.ɵɵproperty("ngIf", !result_r37.runA);
1449
+ i0.ɵɵconditional(!result_r37.runA ? 5 : -1);
1432
1450
  i0.ɵɵadvance(2);
1433
- i0.ɵɵproperty("ngIf", result_r37.runB);
1451
+ i0.ɵɵconditional(result_r37.runB ? 7 : -1);
1434
1452
  i0.ɵɵadvance();
1435
- i0.ɵɵproperty("ngIf", !result_r37.runB);
1453
+ i0.ɵɵconditional(!result_r37.runB ? 8 : -1);
1436
1454
  i0.ɵɵadvance(2);
1437
- i0.ɵɵproperty("ngIf", result_r37.scoreDiff != null);
1455
+ i0.ɵɵconditional(result_r37.scoreDiff != null ? 10 : -1);
1438
1456
  i0.ɵɵadvance();
1439
- i0.ɵɵproperty("ngIf", result_r37.scoreDiff == null);
1457
+ i0.ɵɵconditional(result_r37.scoreDiff == null ? 11 : -1);
1440
1458
  i0.ɵɵadvance(2);
1441
- i0.ɵɵproperty("ngIf", result_r37.durationDiff != null);
1459
+ i0.ɵɵconditional(result_r37.durationDiff != null ? 13 : -1);
1442
1460
  i0.ɵɵadvance();
1443
- i0.ɵɵproperty("ngIf", result_r37.durationDiff == null);
1461
+ i0.ɵɵconditional(result_r37.durationDiff == null ? 14 : -1);
1444
1462
  i0.ɵɵadvance(2);
1445
- 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);
1446
1464
  i0.ɵɵadvance();
1447
- 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);
1448
1466
  i0.ɵɵadvance();
1449
- i0.ɵɵproperty("ngIf", !result_r37.statusChanged);
1467
+ i0.ɵɵconditional(!result_r37.statusChanged ? 18 : -1);
1450
1468
  } }
1451
- function TestSuiteFormComponentExtended_div_62_div_14_Template(rf, ctx) { if (rf & 1) {
1452
- i0.ɵɵelementStart(0, "div", 282)(1, "div", 283)(2, "div", 284)(3, "div", 285);
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);
1453
1471
  i0.ɵɵtext(4, "Pass Rate Change");
1454
1472
  i0.ɵɵelementEnd();
1455
- i0.ɵɵelementStart(5, "div", 286);
1473
+ i0.ɵɵelementStart(5, "div", 243);
1456
1474
  i0.ɵɵelement(6, "i", 16);
1457
1475
  i0.ɵɵtext(7);
1458
1476
  i0.ɵɵelementEnd()();
1459
- i0.ɵɵelementStart(8, "div", 284)(9, "div", 285);
1477
+ i0.ɵɵelementStart(8, "div", 241)(9, "div", 242);
1460
1478
  i0.ɵɵtext(10, "Duration Change");
1461
1479
  i0.ɵɵelementEnd();
1462
- i0.ɵɵelementStart(11, "div", 286);
1480
+ i0.ɵɵelementStart(11, "div", 243);
1463
1481
  i0.ɵɵelement(12, "i", 16);
1464
1482
  i0.ɵɵtext(13);
1465
1483
  i0.ɵɵelementEnd()();
1466
- i0.ɵɵelementStart(14, "div", 287)(15, "div", 285);
1484
+ i0.ɵɵelementStart(14, "div", 244)(15, "div", 242);
1467
1485
  i0.ɵɵtext(16, "Improved");
1468
1486
  i0.ɵɵelementEnd();
1469
- i0.ɵɵelementStart(17, "div", 288);
1487
+ i0.ɵɵelementStart(17, "div", 245);
1470
1488
  i0.ɵɵtext(18);
1471
1489
  i0.ɵɵelementEnd()();
1472
- i0.ɵɵelementStart(19, "div", 289)(20, "div", 285);
1490
+ i0.ɵɵelementStart(19, "div", 246)(20, "div", 242);
1473
1491
  i0.ɵɵtext(21, "Regressed");
1474
1492
  i0.ɵɵelementEnd();
1475
- i0.ɵɵelementStart(22, "div", 288);
1493
+ i0.ɵɵelementStart(22, "div", 245);
1476
1494
  i0.ɵɵtext(23);
1477
1495
  i0.ɵɵelementEnd()()();
1478
- i0.ɵɵelementStart(24, "div", 290)(25, "h3");
1479
- i0.ɵɵelement(26, "i", 291);
1496
+ i0.ɵɵelementStart(24, "div", 247)(25, "h3");
1497
+ i0.ɵɵelement(26, "i", 248);
1480
1498
  i0.ɵɵtext(27, " Test-by-Test Comparison");
1481
1499
  i0.ɵɵelementEnd();
1482
- i0.ɵɵelementStart(28, "div", 292)(29, "table", 293)(30, "thead")(31, "tr")(32, "th");
1500
+ i0.ɵɵelementStart(28, "div", 249)(29, "table", 250)(30, "thead")(31, "tr")(32, "th");
1483
1501
  i0.ɵɵtext(33, "Test");
1484
1502
  i0.ɵɵelementEnd();
1485
1503
  i0.ɵɵelementStart(34, "th");
@@ -1498,21 +1516,21 @@ function TestSuiteFormComponentExtended_div_62_div_14_Template(rf, ctx) { if (rf
1498
1516
  i0.ɵɵtext(43, "Change");
1499
1517
  i0.ɵɵelementEnd()()();
1500
1518
  i0.ɵɵelementStart(44, "tbody");
1501
- i0.ɵɵtemplate(45, TestSuiteFormComponentExtended_div_62_div_14_tr_45_Template, 19, 16, "tr", 294);
1519
+ i0.ɵɵrepeaterCreate(45, TestSuiteFormComponentExtended_Conditional_62_Conditional_14_For_46_Template, 19, 16, "tr", 251, i0.ɵɵrepeaterTrackByIdentity);
1502
1520
  i0.ɵɵelementEnd()()()()();
1503
1521
  } if (rf & 2) {
1504
1522
  let tmp_4_0;
1505
1523
  const ctx_r0 = i0.ɵɵnextContext(2);
1506
1524
  i0.ɵɵadvance(5);
1507
- 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));
1508
1526
  i0.ɵɵadvance();
1509
- 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));
1510
1528
  i0.ɵɵadvance();
1511
1529
  i0.ɵɵtextInterpolate2(" ", ctx_r0.getComparePassRateDiff() > 0 ? "+" : "", "", (tmp_4_0 = ctx_r0.getComparePassRateDiff()) == null ? null : tmp_4_0.toFixed(1), "% ");
1512
1530
  i0.ɵɵadvance(4);
1513
- 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));
1514
1532
  i0.ɵɵadvance();
1515
- 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));
1516
1534
  i0.ɵɵadvance();
1517
1535
  i0.ɵɵtextInterpolate1(" ", ctx_r0.formatDuration(ctx_r0.getAbsCompareDurationDiff()), " ");
1518
1536
  i0.ɵɵadvance(5);
@@ -1520,15 +1538,15 @@ function TestSuiteFormComponentExtended_div_62_div_14_Template(rf, ctx) { if (rf
1520
1538
  i0.ɵɵadvance(5);
1521
1539
  i0.ɵɵtextInterpolate(ctx_r0.getCompareRegressedCount());
1522
1540
  i0.ɵɵadvance(22);
1523
- i0.ɵɵproperty("ngForOf", ctx_r0.compareResults);
1541
+ i0.ɵɵrepeater(ctx_r0.compareResults);
1524
1542
  } }
1525
- function TestSuiteFormComponentExtended_div_62_div_15_Template(rf, ctx) { if (rf & 1) {
1526
- i0.ɵɵelementStart(0, "div", 64);
1527
- i0.ɵɵelement(1, "mj-loading", 310);
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);
1528
1546
  i0.ɵɵelementEnd();
1529
1547
  } }
1530
- function TestSuiteFormComponentExtended_div_62_div_16_Template(rf, ctx) { if (rf & 1) {
1531
- i0.ɵɵelementStart(0, "div", 311)(1, "div", 312);
1548
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1549
+ i0.ɵɵelementStart(0, "div", 225)(1, "div", 260);
1532
1550
  i0.ɵɵelement(2, "i", 33);
1533
1551
  i0.ɵɵelementEnd();
1534
1552
  i0.ɵɵelementStart(3, "h4");
@@ -1538,9 +1556,9 @@ function TestSuiteFormComponentExtended_div_62_div_16_Template(rf, ctx) { if (rf
1538
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.");
1539
1557
  i0.ɵɵelementEnd()();
1540
1558
  } }
1541
- function TestSuiteFormComponentExtended_div_62_div_17_Template(rf, ctx) { if (rf & 1) {
1559
+ function TestSuiteFormComponentExtended_Conditional_62_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1542
1560
  const _r38 = i0.ɵɵgetCurrentView();
1543
- i0.ɵɵelementStart(0, "div", 83)(1, "div", 84);
1561
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 74);
1544
1562
  i0.ɵɵelement(2, "i", 33);
1545
1563
  i0.ɵɵelementEnd();
1546
1564
  i0.ɵɵelementStart(3, "h4");
@@ -1550,77 +1568,82 @@ function TestSuiteFormComponentExtended_div_62_div_17_Template(rf, ctx) { if (rf
1550
1568
  i0.ɵɵtext(6, "You need at least 2 suite runs to use the comparison feature.");
1551
1569
  i0.ɵɵelementEnd();
1552
1570
  i0.ɵɵelementStart(7, "button", 21);
1553
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_62_div_17_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r38); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.runSuite()); });
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()); });
1554
1572
  i0.ɵɵelement(8, "i", 22);
1555
1573
  i0.ɵɵtext(9, " Run Suite Now ");
1556
1574
  i0.ɵɵelementEnd()();
1557
1575
  } }
1558
- function TestSuiteFormComponentExtended_div_62_Template(rf, ctx) { if (rf & 1) {
1559
- i0.ɵɵelementStart(0, "div", 255)(1, "div", 256)(2, "div", 257)(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");
1560
1578
  i0.ɵɵtext(4, "Run A (Baseline)");
1561
1579
  i0.ɵɵelementEnd();
1562
- i0.ɵɵtemplate(5, TestSuiteFormComponentExtended_div_62_div_5_Template, 2, 1, "div", 258)(6, TestSuiteFormComponentExtended_div_62_div_6_Template, 12, 5, "div", 259);
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);
1563
1582
  i0.ɵɵelementEnd();
1564
- i0.ɵɵelementStart(7, "div", 260);
1565
- i0.ɵɵelement(8, "i", 261);
1583
+ i0.ɵɵelementStart(7, "div", 222);
1584
+ i0.ɵɵelement(8, "i", 223);
1566
1585
  i0.ɵɵelementEnd();
1567
- i0.ɵɵelementStart(9, "div", 257)(10, "h4");
1586
+ i0.ɵɵelementStart(9, "div", 219)(10, "h4");
1568
1587
  i0.ɵɵtext(11, "Run B (Compare)");
1569
1588
  i0.ɵɵelementEnd();
1570
- i0.ɵɵtemplate(12, TestSuiteFormComponentExtended_div_62_div_12_Template, 2, 1, "div", 258)(13, TestSuiteFormComponentExtended_div_62_div_13_Template, 12, 5, "div", 259);
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);
1571
1591
  i0.ɵɵelementEnd()();
1572
- i0.ɵɵtemplate(14, TestSuiteFormComponentExtended_div_62_div_14_Template, 46, 24, "div", 262)(15, TestSuiteFormComponentExtended_div_62_div_15_Template, 2, 0, "div", 61)(16, TestSuiteFormComponentExtended_div_62_div_16_Template, 7, 0, "div", 263)(17, TestSuiteFormComponentExtended_div_62_div_17_Template, 10, 0, "div", 63);
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);
1573
1596
  i0.ɵɵelementEnd();
1574
1597
  } if (rf & 2) {
1575
1598
  const ctx_r0 = i0.ɵɵnextContext();
1576
1599
  i0.ɵɵadvance(5);
1577
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0);
1600
+ i0.ɵɵconditional(!ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0 ? 5 : -1);
1578
1601
  i0.ɵɵadvance();
1579
- i0.ɵɵproperty("ngIf", ctx_r0.compareRunA);
1602
+ i0.ɵɵconditional(ctx_r0.compareRunA ? 6 : -1);
1580
1603
  i0.ɵɵadvance(6);
1581
- i0.ɵɵproperty("ngIf", !ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0);
1604
+ i0.ɵɵconditional(!ctx_r0.loadingRuns && ctx_r0.suiteRuns.length > 0 ? 12 : -1);
1582
1605
  i0.ɵɵadvance();
1583
- i0.ɵɵproperty("ngIf", ctx_r0.compareRunB);
1606
+ i0.ɵɵconditional(ctx_r0.compareRunB ? 13 : -1);
1584
1607
  i0.ɵɵadvance();
1585
- 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);
1586
1609
  i0.ɵɵadvance();
1587
- i0.ɵɵproperty("ngIf", ctx_r0.loadingCompare);
1610
+ i0.ɵɵconditional(ctx_r0.loadingCompare ? 15 : -1);
1588
1611
  i0.ɵɵadvance();
1589
- i0.ɵɵproperty("ngIf", !ctx_r0.compareRunA || !ctx_r0.compareRunB);
1612
+ i0.ɵɵconditional(!ctx_r0.compareRunA || !ctx_r0.compareRunB ? 16 : -1);
1590
1613
  i0.ɵɵadvance();
1591
- i0.ɵɵproperty("ngIf", ctx_r0.runsLoaded && ctx_r0.suiteRuns.length < 2);
1614
+ i0.ɵɵconditional(ctx_r0.runsLoaded && ctx_r0.suiteRuns.length < 2 ? 17 : -1);
1592
1615
  } }
1593
- function TestSuiteFormComponentExtended_div_65_Template(rf, ctx) { if (rf & 1) {
1616
+ function TestSuiteFormComponentExtended_Conditional_65_Template(rf, ctx) { if (rf & 1) {
1594
1617
  const _r39 = i0.ɵɵgetCurrentView();
1595
- i0.ɵɵelementStart(0, "div", 313)(1, "div", 314);
1618
+ i0.ɵɵelementStart(0, "div", 42)(1, "div", 261);
1596
1619
  i0.ɵɵelement(2, "i", 41);
1597
1620
  i0.ɵɵtext(3, " Shortcuts ");
1598
- i0.ɵɵelementStart(4, "button", 315);
1599
- i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_div_65_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r39); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleShortcuts()); });
1600
- i0.ɵɵelement(5, "i", 195);
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);
1601
1624
  i0.ɵɵelementEnd()();
1602
- i0.ɵɵelementStart(6, "div", 316)(7, "div", 317)(8, "span");
1625
+ i0.ɵɵelementStart(6, "div", 263)(7, "div", 264)(8, "span");
1603
1626
  i0.ɵɵtext(9, "Refresh");
1604
1627
  i0.ɵɵelementEnd();
1605
- i0.ɵɵelementStart(10, "span", 318)(11, "kbd");
1628
+ i0.ɵɵelementStart(10, "span", 265)(11, "kbd");
1606
1629
  i0.ɵɵtext(12, "Cmd");
1607
1630
  i0.ɵɵelementEnd();
1608
1631
  i0.ɵɵelementStart(13, "kbd");
1609
1632
  i0.ɵɵtext(14, "R");
1610
1633
  i0.ɵɵelementEnd()()();
1611
- i0.ɵɵelementStart(15, "div", 317)(16, "span");
1634
+ i0.ɵɵelementStart(15, "div", 264)(16, "span");
1612
1635
  i0.ɵɵtext(17, "Run Suite");
1613
1636
  i0.ɵɵelementEnd();
1614
- i0.ɵɵelementStart(18, "span", 318)(19, "kbd");
1637
+ i0.ɵɵelementStart(18, "span", 265)(19, "kbd");
1615
1638
  i0.ɵɵtext(20, "Cmd");
1616
1639
  i0.ɵɵelementEnd();
1617
1640
  i0.ɵɵelementStart(21, "kbd");
1618
1641
  i0.ɵɵtext(22, "Enter");
1619
1642
  i0.ɵɵelementEnd()()();
1620
- i0.ɵɵelementStart(23, "div", 317)(24, "span");
1643
+ i0.ɵɵelementStart(23, "div", 264)(24, "span");
1621
1644
  i0.ɵɵtext(25, "Switch Tabs");
1622
1645
  i0.ɵɵelementEnd();
1623
- i0.ɵɵelementStart(26, "span", 318)(27, "kbd");
1646
+ i0.ɵɵelementStart(26, "span", 265)(27, "kbd");
1624
1647
  i0.ɵɵtext(28, "1");
1625
1648
  i0.ɵɵelementEnd();
1626
1649
  i0.ɵɵtext(29, "-");
@@ -3331,8 +3354,8 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3331
3354
  let _t;
3332
3355
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.chartContainer = _t.first);
3333
3356
  } }, hostBindings: function TestSuiteFormComponentExtended_HostBindings(rf, ctx) { if (rf & 1) {
3334
- i0.ɵɵlistener("keydown", function TestSuiteFormComponentExtended_keydown_HostBindingHandler($event) { return ctx.handleKeyboardShortcut($event); }, false, i0.ɵɵresolveDocument);
3335
- } }, 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"], ["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) {
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) {
3336
3359
  i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "nav", 3)(3, "ol")(4, "li")(5, "a", 4);
3337
3360
  i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_a_click_5_listener() { return ctx.navigateToTestingDashboard(); });
3338
3361
  i0.ɵɵelement(6, "i", 5);
@@ -3354,7 +3377,7 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3354
3377
  i0.ɵɵelement(23, "i", 16);
3355
3378
  i0.ɵɵtext(24);
3356
3379
  i0.ɵɵelementEnd();
3357
- i0.ɵɵtemplate(25, TestSuiteFormComponentExtended_span_25_Template, 3, 1, "span", 17);
3380
+ i0.ɵɵconditionalCreate(25, TestSuiteFormComponentExtended_Conditional_25_Template, 3, 1, "span", 17);
3358
3381
  i0.ɵɵelementEnd()()();
3359
3382
  i0.ɵɵelementStart(26, "div", 18);
3360
3383
  i0.ɵɵelement(27, "app-evaluation-mode-toggle");
@@ -3373,7 +3396,7 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3373
3396
  i0.ɵɵelement(35, "i", 16);
3374
3397
  i0.ɵɵtext(36);
3375
3398
  i0.ɵɵelementEnd()()();
3376
- i0.ɵɵtemplate(37, TestSuiteFormComponentExtended_div_37_Template, 3, 1, "div", 24);
3399
+ i0.ɵɵconditionalCreate(37, TestSuiteFormComponentExtended_Conditional_37_Template, 3, 1, "div", 24);
3377
3400
  i0.ɵɵelementEnd();
3378
3401
  i0.ɵɵelementStart(38, "div", 25)(39, "div", 26)(40, "button", 27);
3379
3402
  i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_40_listener() { return ctx.changeTab("overview"); });
@@ -3384,13 +3407,13 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3384
3407
  i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_43_listener() { return ctx.changeTab("tests"); });
3385
3408
  i0.ɵɵelement(44, "i", 29);
3386
3409
  i0.ɵɵtext(45, " Tests ");
3387
- i0.ɵɵtemplate(46, TestSuiteFormComponentExtended_span_46_Template, 2, 1, "span", 30);
3410
+ i0.ɵɵconditionalCreate(46, TestSuiteFormComponentExtended_Conditional_46_Template, 2, 1, "span", 30);
3388
3411
  i0.ɵɵelementEnd();
3389
3412
  i0.ɵɵelementStart(47, "button", 27);
3390
3413
  i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_47_listener() { return ctx.changeTab("runs"); });
3391
3414
  i0.ɵɵelement(48, "i", 31);
3392
3415
  i0.ɵɵtext(49, " Runs ");
3393
- i0.ɵɵtemplate(50, TestSuiteFormComponentExtended_span_50_Template, 2, 1, "span", 30);
3416
+ i0.ɵɵconditionalCreate(50, TestSuiteFormComponentExtended_Conditional_50_Template, 2, 1, "span", 30);
3394
3417
  i0.ɵɵelementEnd();
3395
3418
  i0.ɵɵelementStart(51, "button", 27);
3396
3419
  i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_51_listener() { return ctx.changeTab("analytics"); });
@@ -3403,13 +3426,17 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3403
3426
  i0.ɵɵtext(56, " Compare ");
3404
3427
  i0.ɵɵelementEnd()()();
3405
3428
  i0.ɵɵelementStart(57, "div", 34);
3406
- i0.ɵɵtemplate(58, TestSuiteFormComponentExtended_div_58_Template, 45, 13, "div", 35)(59, TestSuiteFormComponentExtended_div_59_Template, 4, 3, "div", 36)(60, TestSuiteFormComponentExtended_div_60_Template, 4, 3, "div", 37)(61, TestSuiteFormComponentExtended_div_61_Template, 4, 3, "div", 38)(62, TestSuiteFormComponentExtended_div_62_Template, 18, 8, "div", 39);
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);
3407
3434
  i0.ɵɵelementEnd();
3408
3435
  i0.ɵɵelementStart(63, "button", 40);
3409
3436
  i0.ɵɵlistener("click", function TestSuiteFormComponentExtended_Template_button_click_63_listener() { return ctx.toggleShortcuts(); });
3410
3437
  i0.ɵɵelement(64, "i", 41);
3411
3438
  i0.ɵɵelementEnd();
3412
- i0.ɵɵtemplate(65, TestSuiteFormComponentExtended_div_65_Template, 32, 0, "div", 42);
3439
+ i0.ɵɵconditionalCreate(65, TestSuiteFormComponentExtended_Conditional_65_Template, 32, 0, "div", 42);
3413
3440
  i0.ɵɵelementEnd();
3414
3441
  } if (rf & 2) {
3415
3442
  i0.ɵɵadvance(13);
@@ -3425,7 +3452,7 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3425
3452
  i0.ɵɵadvance();
3426
3453
  i0.ɵɵtextInterpolate1(" ", ctx.record.Status, " ");
3427
3454
  i0.ɵɵadvance();
3428
- i0.ɵɵproperty("ngIf", ctx.testsLoaded);
3455
+ i0.ɵɵconditional(ctx.testsLoaded ? 25 : -1);
3429
3456
  i0.ɵɵadvance(9);
3430
3457
  i0.ɵɵproperty("disabled", ctx.isRefreshing);
3431
3458
  i0.ɵɵadvance();
@@ -3433,7 +3460,7 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3433
3460
  i0.ɵɵadvance();
3434
3461
  i0.ɵɵtextInterpolate1(" ", ctx.isRefreshing ? "Refreshing..." : "Refresh", " ");
3435
3462
  i0.ɵɵadvance();
3436
- i0.ɵɵproperty("ngIf", ctx.record.Description);
3463
+ i0.ɵɵconditional(ctx.record.Description ? 37 : -1);
3437
3464
  i0.ɵɵadvance(3);
3438
3465
  i0.ɵɵclassProp("active", ctx.activeTab === "overview");
3439
3466
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "overview");
@@ -3441,12 +3468,12 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3441
3468
  i0.ɵɵclassProp("active", ctx.activeTab === "tests");
3442
3469
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "tests");
3443
3470
  i0.ɵɵadvance(3);
3444
- i0.ɵɵproperty("ngIf", ctx.testsLoaded);
3471
+ i0.ɵɵconditional(ctx.testsLoaded ? 46 : -1);
3445
3472
  i0.ɵɵadvance();
3446
3473
  i0.ɵɵclassProp("active", ctx.activeTab === "runs");
3447
3474
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "runs");
3448
3475
  i0.ɵɵadvance(3);
3449
- i0.ɵɵproperty("ngIf", ctx.runsLoaded);
3476
+ i0.ɵɵconditional(ctx.runsLoaded ? 50 : -1);
3450
3477
  i0.ɵɵadvance();
3451
3478
  i0.ɵɵclassProp("active", ctx.activeTab === "analytics");
3452
3479
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "analytics");
@@ -3454,20 +3481,20 @@ let TestSuiteFormComponentExtended = class TestSuiteFormComponentExtended extend
3454
3481
  i0.ɵɵclassProp("active", ctx.activeTab === "compare");
3455
3482
  i0.ɵɵattribute("aria-selected", ctx.activeTab === "compare");
3456
3483
  i0.ɵɵadvance(4);
3457
- i0.ɵɵproperty("ngIf", ctx.activeTab === "overview");
3484
+ i0.ɵɵconditional(ctx.activeTab === "overview" ? 58 : -1);
3458
3485
  i0.ɵɵadvance();
3459
- i0.ɵɵproperty("ngIf", ctx.activeTab === "tests");
3486
+ i0.ɵɵconditional(ctx.activeTab === "tests" ? 59 : -1);
3460
3487
  i0.ɵɵadvance();
3461
- i0.ɵɵproperty("ngIf", ctx.activeTab === "runs");
3488
+ i0.ɵɵconditional(ctx.activeTab === "runs" ? 60 : -1);
3462
3489
  i0.ɵɵadvance();
3463
- i0.ɵɵproperty("ngIf", ctx.activeTab === "analytics");
3490
+ i0.ɵɵconditional(ctx.activeTab === "analytics" ? 61 : -1);
3464
3491
  i0.ɵɵadvance();
3465
- i0.ɵɵproperty("ngIf", ctx.activeTab === "compare");
3492
+ i0.ɵɵconditional(ctx.activeTab === "compare" ? 62 : -1);
3466
3493
  i0.ɵɵadvance();
3467
3494
  i0.ɵɵproperty("title", ctx.showShortcuts ? "Hide keyboard shortcuts" : "Show keyboard shortcuts");
3468
3495
  i0.ɵɵadvance(2);
3469
- i0.ɵɵproperty("ngIf", ctx.showShortcuts);
3470
- } }, dependencies: [i5.NgClass, i5.NgForOf, i5.NgIf, 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 }); }
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 }); }
3471
3498
  };
3472
3499
  TestSuiteFormComponentExtended = __decorate([
3473
3500
  RegisterClass(BaseFormComponent, 'MJ: Test Suites')
@@ -3475,7 +3502,7 @@ TestSuiteFormComponentExtended = __decorate([
3475
3502
  export { TestSuiteFormComponentExtended };
3476
3503
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestSuiteFormComponentExtended, [{
3477
3504
  type: Component,
3478
- 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 <!-- 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 <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/* 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"] }]
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"] }]
3479
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: [{
3480
3507
  type: ViewChild,
3481
3508
  args: ['chartContainer']
@@ -3483,7 +3510,5 @@ export { TestSuiteFormComponentExtended };
3483
3510
  type: HostListener,
3484
3511
  args: ['document:keydown', ['$event']]
3485
3512
  }] }); })();
3486
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestSuiteFormComponentExtended, { className: "TestSuiteFormComponentExtended", filePath: "src/lib/custom/Tests/test-suite-form.component.ts", lineNumber: 31 }); })();
3487
- export function LoadTestSuiteFormComponentExtended() { }
3488
- LoadTestSuiteFormComponentExtended();
3513
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestSuiteFormComponentExtended, { className: "TestSuiteFormComponentExtended", filePath: "src/lib/custom/tests/test-suite-form.component.ts", lineNumber: 32 }); })();
3489
3514
  //# sourceMappingURL=test-suite-form.component.js.map