llm-testrunner-components 1.0.6 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/README.md +101 -100
  2. package/dist/cjs/app-chips_5.cjs.entry.js +158 -0
  3. package/dist/cjs/app-chips_5.cjs.entry.js.map +1 -0
  4. package/dist/cjs/app-globals-Chb-oJtg.js +34 -0
  5. package/dist/cjs/app-globals-Chb-oJtg.js.map +1 -0
  6. package/dist/cjs/index-By1scwl6.js +25542 -0
  7. package/dist/cjs/index-By1scwl6.js.map +1 -0
  8. package/dist/cjs/index-CgmLNwZO.js +21460 -0
  9. package/dist/cjs/index-CgmLNwZO.js.map +1 -0
  10. package/dist/cjs/index.cjs.js +5 -483
  11. package/dist/cjs/index.cjs.js.map +1 -1
  12. package/dist/cjs/llm-testrunner.cjs.js +6 -4
  13. package/dist/cjs/llm-testrunner.cjs.js.map +1 -1
  14. package/dist/cjs/loader.cjs.js +5 -3
  15. package/dist/collection/collection-manifest.json +8 -3
  16. package/dist/collection/components/error-message/error-message.css +34 -0
  17. package/dist/collection/components/error-message/error-message.js +2 -2
  18. package/dist/collection/components/error-message/error-message.js.map +1 -1
  19. package/dist/collection/components/llm-test-runner/header/llm-test-runner-header.css +60 -0
  20. package/dist/collection/components/llm-test-runner/header/llm-test-runner-header.js +18 -0
  21. package/dist/collection/components/llm-test-runner/header/llm-test-runner-header.js.map +1 -0
  22. package/dist/collection/components/llm-test-runner/llm-test-runner.css +17 -657
  23. package/dist/collection/components/llm-test-runner/llm-test-runner.import-export.test.js +253 -0
  24. package/dist/collection/components/llm-test-runner/llm-test-runner.import-export.test.js.map +1 -0
  25. package/dist/collection/components/llm-test-runner/llm-test-runner.js +191 -200
  26. package/dist/collection/components/llm-test-runner/llm-test-runner.js.map +1 -1
  27. package/dist/collection/components/llm-test-runner/test-cases/actions/row-actions.css +28 -0
  28. package/dist/collection/components/llm-test-runner/test-cases/actions/row-actions.js +6 -0
  29. package/dist/collection/components/llm-test-runner/test-cases/actions/row-actions.js.map +1 -0
  30. package/dist/collection/components/llm-test-runner/test-cases/evaluation/evaluation-summary.css +67 -0
  31. package/dist/collection/components/llm-test-runner/test-cases/evaluation/evaluation-summary.js +5 -0
  32. package/dist/collection/components/llm-test-runner/test-cases/evaluation/evaluation-summary.js.map +1 -0
  33. package/dist/collection/components/llm-test-runner/test-cases/llm-test-case-row.css +42 -0
  34. package/dist/collection/components/llm-test-runner/test-cases/llm-test-case-row.js +39 -0
  35. package/dist/collection/components/llm-test-runner/test-cases/llm-test-case-row.js.map +1 -0
  36. package/dist/collection/components/llm-test-runner/test-cases/llm-test-cases.css +39 -0
  37. package/dist/collection/components/llm-test-runner/test-cases/llm-test-cases.js +7 -0
  38. package/dist/collection/components/llm-test-runner/test-cases/llm-test-cases.js.map +1 -0
  39. package/dist/collection/components/llm-test-runner/test-cases/output/response-output.css +51 -0
  40. package/dist/collection/components/llm-test-runner/test-cases/output/response-output.js +5 -0
  41. package/dist/collection/components/llm-test-runner/test-cases/output/response-output.js.map +1 -0
  42. package/dist/collection/global/env.js +3 -1
  43. package/dist/collection/global/env.js.map +1 -1
  44. package/dist/collection/index.js.map +1 -1
  45. package/dist/collection/lib/evaluation/constants.js +14 -0
  46. package/dist/collection/lib/evaluation/constants.js.map +1 -0
  47. package/dist/collection/lib/evaluation/evaluation-engine.js +45 -45
  48. package/dist/collection/lib/evaluation/evaluation-engine.js.map +1 -1
  49. package/dist/collection/lib/evaluation/evaluation-service.js +33 -0
  50. package/dist/collection/lib/evaluation/evaluation-service.js.map +1 -0
  51. package/dist/collection/lib/evaluation/evaluators/bleu/bleu-evaluator.js +116 -0
  52. package/dist/collection/lib/evaluation/evaluators/bleu/bleu-evaluator.js.map +1 -0
  53. package/dist/collection/lib/evaluation/evaluators/bleu/tests/bleu.test.js +352 -0
  54. package/dist/collection/lib/evaluation/evaluators/bleu/tests/bleu.test.js.map +1 -0
  55. package/dist/collection/lib/evaluation/evaluators/exact/exact.js +44 -0
  56. package/dist/collection/lib/evaluation/evaluators/exact/exact.js.map +1 -0
  57. package/dist/collection/lib/evaluation/evaluators/rouge1-evaluator.js +88 -0
  58. package/dist/collection/lib/evaluation/evaluators/rouge1-evaluator.js.map +1 -0
  59. package/dist/collection/lib/evaluation/evaluators/rougeL-evaluator.js +82 -0
  60. package/dist/collection/lib/evaluation/evaluators/rougeL-evaluator.js.map +1 -0
  61. package/dist/collection/lib/evaluation/evaluators/rougeL-evaluator.test.js +326 -0
  62. package/dist/collection/lib/evaluation/evaluators/rougeL-evaluator.test.js.map +1 -0
  63. package/dist/collection/lib/evaluation/evaluators/semantic/SemanticEvaluator.js +69 -0
  64. package/dist/collection/lib/evaluation/evaluators/semantic/SemanticEvaluator.js.map +1 -0
  65. package/dist/collection/lib/evaluation/evaluators/semantic/evaluate-keywords.js +56 -0
  66. package/dist/collection/lib/evaluation/evaluators/semantic/evaluate-keywords.js.map +1 -0
  67. package/dist/collection/lib/evaluation/evaluators/semantic/index.js +7 -0
  68. package/dist/collection/lib/evaluation/evaluators/semantic/index.js.map +1 -0
  69. package/dist/collection/lib/evaluation/evaluators/semantic/model-loader.js +19 -0
  70. package/dist/collection/lib/evaluation/evaluators/semantic/model-loader.js.map +1 -0
  71. package/dist/collection/lib/evaluation/evaluators/semantic/similarity-utils.js +16 -0
  72. package/dist/collection/lib/evaluation/evaluators/semantic/similarity-utils.js.map +1 -0
  73. package/dist/collection/lib/evaluation/evaluators/semantic/tests/evaluate-keywords.test.js +65 -0
  74. package/dist/collection/lib/evaluation/evaluators/semantic/tests/evaluate-keywords.test.js.map +1 -0
  75. package/dist/collection/lib/evaluation/evaluators/semantic/text-utils.js +5 -0
  76. package/dist/collection/lib/evaluation/evaluators/semantic/text-utils.js.map +1 -0
  77. package/dist/collection/lib/evaluation/index.js.map +1 -1
  78. package/dist/collection/lib/evaluation/rouge1-evaluator.test.js +117 -0
  79. package/dist/collection/lib/evaluation/rouge1-evaluator.test.js.map +1 -0
  80. package/dist/collection/lib/evaluation/types.js.map +1 -1
  81. package/dist/collection/lib/file/file-download.js +18 -0
  82. package/dist/collection/lib/file/file-download.js.map +1 -0
  83. package/dist/collection/lib/file/file-reader.js +14 -0
  84. package/dist/collection/lib/file/file-reader.js.map +1 -0
  85. package/dist/collection/lib/form/components/app-chips.css +97 -0
  86. package/dist/collection/lib/form/components/app-chips.js +155 -0
  87. package/dist/collection/lib/form/components/app-chips.js.map +1 -0
  88. package/dist/collection/lib/form/components/app-select.css +28 -0
  89. package/dist/collection/lib/form/components/app-select.js +101 -0
  90. package/dist/collection/lib/form/components/app-select.js.map +1 -0
  91. package/dist/collection/lib/form/components/app-textarea.css +38 -0
  92. package/dist/collection/lib/form/components/app-textarea.js +126 -0
  93. package/dist/collection/lib/form/components/app-textarea.js.map +1 -0
  94. package/dist/collection/lib/form/form-builder.js +171 -0
  95. package/dist/collection/lib/form/form-builder.js.map +1 -0
  96. package/dist/collection/lib/form/schema/base-input-field-config.js +2 -0
  97. package/dist/collection/lib/form/schema/base-input-field-config.js.map +1 -0
  98. package/dist/collection/lib/form/schema/form-control-config.js +2 -0
  99. package/dist/collection/lib/form/schema/form-control-config.js.map +1 -0
  100. package/dist/collection/lib/form/schema/index.js +8 -0
  101. package/dist/collection/lib/form/schema/index.js.map +1 -0
  102. package/dist/collection/lib/import-export/test-results-csv.js +65 -0
  103. package/dist/collection/lib/import-export/test-results-csv.js.map +1 -0
  104. package/dist/collection/lib/import-export/test-suite-exporter.js +15 -0
  105. package/dist/collection/lib/import-export/test-suite-exporter.js.map +1 -0
  106. package/dist/collection/lib/import-export/test-suite-importer.js +44 -0
  107. package/dist/collection/lib/import-export/test-suite-importer.js.map +1 -0
  108. package/dist/collection/lib/rate-limited-fetcher/rate-limited-fetcher.js +6 -6
  109. package/dist/collection/lib/rate-limited-fetcher/rate-limited-fetcher.js.map +1 -1
  110. package/dist/collection/lib/test-cases/test-case-factory.js +56 -0
  111. package/dist/collection/lib/test-cases/test-case-factory.js.map +1 -0
  112. package/dist/collection/lib/test-cases/test-case-mutations.js +16 -0
  113. package/dist/collection/lib/test-cases/test-case-mutations.js.map +1 -0
  114. package/dist/collection/lib/ui/button/button.css +113 -0
  115. package/dist/collection/lib/ui/button/button.js +21 -0
  116. package/dist/collection/lib/ui/button/button.js.map +1 -0
  117. package/dist/collection/lib/ui/button/index.js +2 -0
  118. package/dist/collection/lib/ui/button/index.js.map +1 -0
  119. package/dist/collection/lib/ui/icon-button/icon-button.css +77 -0
  120. package/dist/collection/lib/ui/icon-button/icon-button.js +19 -0
  121. package/dist/collection/lib/ui/icon-button/icon-button.js.map +1 -0
  122. package/dist/collection/lib/ui/icon-button/index.js +2 -0
  123. package/dist/collection/lib/ui/icon-button/index.js.map +1 -0
  124. package/dist/collection/services/adapters.js +2 -0
  125. package/dist/collection/services/adapters.js.map +1 -0
  126. package/dist/collection/services/models/gemini.js +17 -0
  127. package/dist/collection/services/models/gemini.js.map +1 -0
  128. package/dist/collection/styles/tokens.css +180 -0
  129. package/dist/collection/types/evaluation.js +2 -0
  130. package/dist/collection/types/evaluation.js.map +1 -0
  131. package/dist/collection/types/llm-test-runner.js +2 -0
  132. package/dist/collection/types/llm-test-runner.js.map +1 -0
  133. package/dist/components/app-chips.d.ts +11 -0
  134. package/dist/components/app-chips.js +2 -0
  135. package/dist/components/app-chips.js.map +1 -0
  136. package/dist/components/app-select.d.ts +11 -0
  137. package/dist/components/app-select.js +2 -0
  138. package/dist/components/app-select.js.map +1 -0
  139. package/dist/components/app-textarea.d.ts +11 -0
  140. package/dist/components/app-textarea.js +2 -0
  141. package/dist/components/app-textarea.js.map +1 -0
  142. package/dist/components/form-builder.d.ts +11 -0
  143. package/dist/components/form-builder.js +2 -0
  144. package/dist/components/form-builder.js.map +1 -0
  145. package/dist/components/index.d.ts +2 -0
  146. package/dist/components/index.js +1 -13
  147. package/dist/components/index.js.map +1 -1
  148. package/dist/components/llm-test-runner.js +1 -8
  149. package/dist/components/llm-test-runner.js.map +1 -1
  150. package/dist/components/p--2rdv_J9.js +2 -0
  151. package/dist/components/p--2rdv_J9.js.map +1 -0
  152. package/dist/components/p-B7J48VNq.js +2 -0
  153. package/dist/components/p-B7J48VNq.js.map +1 -0
  154. package/dist/components/p-BCB1rjPS.js +7 -0
  155. package/dist/components/p-BCB1rjPS.js.map +1 -0
  156. package/dist/components/p-BQhb2H_a.js +2 -0
  157. package/dist/components/p-BQhb2H_a.js.map +1 -0
  158. package/dist/components/p-D9BrlHdP.js +297 -0
  159. package/dist/components/p-D9BrlHdP.js.map +1 -0
  160. package/dist/components/p-DtCkZ1g2.js +2 -0
  161. package/dist/components/p-DtCkZ1g2.js.map +1 -0
  162. package/dist/esm/app-chips_5.entry.js +153 -0
  163. package/dist/esm/app-chips_5.entry.js.map +1 -0
  164. package/dist/esm/app-globals-DbR5vV7d.js +32 -0
  165. package/dist/esm/app-globals-DbR5vV7d.js.map +1 -0
  166. package/dist/esm/index-Bvg6mh1M.js +25539 -0
  167. package/dist/esm/index-Bvg6mh1M.js.map +1 -0
  168. package/dist/esm/index-DxzhGhec.js +21450 -0
  169. package/dist/esm/index-DxzhGhec.js.map +1 -0
  170. package/dist/esm/index.js +4 -486
  171. package/dist/esm/index.js.map +1 -1
  172. package/dist/esm/llm-testrunner.js +7 -5
  173. package/dist/esm/llm-testrunner.js.map +1 -1
  174. package/dist/esm/loader.js +6 -4
  175. package/dist/llm-testrunner/index.esm.js +1 -1
  176. package/dist/llm-testrunner/index.esm.js.map +1 -1
  177. package/dist/llm-testrunner/llm-testrunner.esm.js +1 -1
  178. package/dist/llm-testrunner/llm-testrunner.esm.js.map +1 -1
  179. package/dist/llm-testrunner/p-3f04b0fb.entry.js +2 -0
  180. package/dist/llm-testrunner/p-3f04b0fb.entry.js.map +1 -0
  181. package/dist/llm-testrunner/p-DFds8y01.js +7 -0
  182. package/dist/llm-testrunner/p-DFds8y01.js.map +1 -0
  183. package/dist/llm-testrunner/p-DxzhGhec.js +298 -0
  184. package/dist/llm-testrunner/p-DxzhGhec.js.map +1 -0
  185. package/dist/llm-testrunner/p-GQwFOmwJ.js +2 -0
  186. package/dist/llm-testrunner/p-GQwFOmwJ.js.map +1 -0
  187. package/dist/react/components.d.ts +32 -2
  188. package/dist/react/components.d.ts.map +1 -1
  189. package/dist/react/components.js +44 -2
  190. package/dist/types/components/llm-test-runner/header/llm-test-runner-header.d.ts +14 -0
  191. package/dist/types/components/llm-test-runner/llm-test-runner.d.ts +13 -29
  192. package/dist/types/components/llm-test-runner/llm-test-runner.import-export.test.d.ts +1 -0
  193. package/dist/types/components/llm-test-runner/test-cases/actions/row-actions.d.ts +8 -0
  194. package/dist/types/components/llm-test-runner/test-cases/evaluation/evaluation-summary.d.ts +7 -0
  195. package/dist/types/components/llm-test-runner/test-cases/llm-test-case-row.d.ts +25 -0
  196. package/dist/types/components/llm-test-runner/test-cases/llm-test-cases.d.ts +26 -0
  197. package/dist/types/components/llm-test-runner/test-cases/output/response-output.d.ts +6 -0
  198. package/dist/types/components.d.ts +199 -4
  199. package/dist/types/global/env.d.ts +2 -0
  200. package/dist/types/index.d.ts +1 -1
  201. package/dist/types/lib/evaluation/constants.d.ts +11 -0
  202. package/dist/types/lib/evaluation/evaluation-engine.d.ts +0 -4
  203. package/dist/types/lib/evaluation/evaluation-service.d.ts +15 -0
  204. package/dist/types/lib/evaluation/evaluators/bleu/bleu-evaluator.d.ts +18 -0
  205. package/dist/types/lib/evaluation/evaluators/bleu/tests/bleu.test.d.ts +1 -0
  206. package/dist/types/lib/evaluation/evaluators/exact/exact.d.ts +2 -0
  207. package/dist/types/lib/evaluation/evaluators/rouge1-evaluator.d.ts +17 -0
  208. package/dist/types/lib/evaluation/evaluators/rougeL-evaluator.d.ts +2 -0
  209. package/dist/types/lib/evaluation/evaluators/rougeL-evaluator.test.d.ts +1 -0
  210. package/dist/types/lib/evaluation/evaluators/semantic/SemanticEvaluator.d.ts +6 -0
  211. package/dist/types/lib/evaluation/evaluators/semantic/evaluate-keywords.d.ts +7 -0
  212. package/dist/types/lib/evaluation/evaluators/semantic/index.d.ts +2 -0
  213. package/dist/types/lib/evaluation/evaluators/semantic/model-loader.d.ts +1 -0
  214. package/dist/types/lib/evaluation/evaluators/semantic/similarity-utils.d.ts +1 -0
  215. package/dist/types/lib/evaluation/evaluators/semantic/tests/evaluate-keywords.test.d.ts +1 -0
  216. package/dist/types/lib/evaluation/evaluators/semantic/text-utils.d.ts +1 -0
  217. package/dist/types/lib/evaluation/index.d.ts +2 -2
  218. package/dist/types/lib/evaluation/rouge1-evaluator.test.d.ts +1 -0
  219. package/dist/types/lib/evaluation/types.d.ts +19 -7
  220. package/dist/types/lib/file/file-download.d.ts +7 -0
  221. package/dist/types/lib/file/file-reader.d.ts +6 -0
  222. package/dist/types/lib/form/components/app-chips.d.ts +20 -0
  223. package/dist/types/lib/form/components/app-select.d.ts +7 -0
  224. package/dist/types/lib/form/components/app-textarea.d.ts +14 -0
  225. package/dist/types/lib/form/form-builder.d.ts +24 -0
  226. package/dist/types/lib/form/schema/base-input-field-config.d.ts +37 -0
  227. package/dist/types/lib/form/schema/form-control-config.d.ts +13 -0
  228. package/dist/types/lib/form/schema/index.d.ts +9 -0
  229. package/dist/types/lib/import-export/test-results-csv.d.ts +13 -0
  230. package/dist/types/lib/import-export/test-suite-exporter.d.ts +16 -0
  231. package/dist/types/lib/import-export/test-suite-importer.d.ts +12 -0
  232. package/dist/types/lib/rate-limited-fetcher/rate-limited-fetcher.d.ts +1 -1
  233. package/dist/types/lib/test-cases/test-case-factory.d.ts +12 -0
  234. package/dist/types/lib/test-cases/test-case-mutations.d.ts +9 -0
  235. package/dist/types/lib/ui/button/button.d.ts +13 -0
  236. package/dist/types/lib/ui/button/index.d.ts +2 -0
  237. package/dist/types/lib/ui/icon-button/icon-button.d.ts +11 -0
  238. package/dist/types/lib/ui/icon-button/index.d.ts +2 -0
  239. package/dist/types/services/adapters.d.ts +3 -0
  240. package/dist/types/services/models/gemini.d.ts +11 -0
  241. package/dist/types/stencil-public-runtime.d.ts +110 -6
  242. package/dist/types/types/evaluation.d.ts +9 -0
  243. package/dist/types/types/llm-test-runner.d.ts +22 -0
  244. package/package.json +30 -6
  245. package/dist/cjs/app-globals-CbbEbofA.js +0 -14
  246. package/dist/cjs/app-globals-CbbEbofA.js.map +0 -1
  247. package/dist/cjs/index-D-FySkoV.js +0 -1470
  248. package/dist/cjs/index-D-FySkoV.js.map +0 -1
  249. package/dist/cjs/llm-test-runner.cjs.entry.js +0 -9
  250. package/dist/cjs/llm-test-runner.entry.cjs.js.map +0 -1
  251. package/dist/components/p-CYUbsbxt.js +0 -1770
  252. package/dist/components/p-CYUbsbxt.js.map +0 -1
  253. package/dist/esm/app-globals-BOQOUavG.js +0 -12
  254. package/dist/esm/app-globals-BOQOUavG.js.map +0 -1
  255. package/dist/esm/index-cncubhtM.js +0 -1463
  256. package/dist/esm/index-cncubhtM.js.map +0 -1
  257. package/dist/esm/llm-test-runner.entry.js +0 -3
  258. package/dist/esm/llm-test-runner.entry.js.map +0 -1
  259. package/dist/llm-testrunner/llm-test-runner.entry.esm.js.map +0 -1
  260. package/dist/llm-testrunner/loader.esm.js.map +0 -1
  261. package/dist/llm-testrunner/p-BOQOUavG.js +0 -2
  262. package/dist/llm-testrunner/p-BOQOUavG.js.map +0 -1
  263. package/dist/llm-testrunner/p-cncubhtM.js +0 -3
  264. package/dist/llm-testrunner/p-cncubhtM.js.map +0 -1
  265. package/dist/llm-testrunner/p-f68fd660.entry.js +0 -2
  266. package/dist/llm-testrunner/p-f68fd660.entry.js.map +0 -1
@@ -1,671 +1,31 @@
1
1
  :host {
2
2
  display: block;
3
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
4
- background-color: #f8fafc;
3
+ font-family:
4
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu,
5
+ Cantarell, sans-serif;
6
+ background-color: var(--muted);
5
7
  min-height: 100vh;
6
8
  }
7
9
 
8
- .test-runner-container {
9
- padding: 20px;
10
- background: white;
11
- border-radius: 8px;
12
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
13
- margin: 20px 0;
14
- }
15
-
16
- .simple-test {
17
- margin: 20px 0;
18
- padding: 20px;
19
- border: 1px solid #ddd;
20
- border-radius: 4px;
21
- }
22
-
23
- .test-cases {
24
- margin: 20px 0;
25
- }
26
-
27
- .test-case {
28
- margin: 20px 0;
29
- padding: 20px;
30
- border: 1px solid #eee;
31
- border-radius: 4px;
32
- background: #f9f9f9;
33
- }
34
-
35
- .test-case h3 {
36
- margin-top: 0;
37
- color: #333;
38
- }
39
-
40
- .test-case textarea {
41
- width: 100%;
42
- padding: 10px;
43
- border: 1px solid #ddd;
44
- border-radius: 4px;
45
- font-family: inherit;
46
- margin: 10px 0;
47
- }
48
-
49
- .test-case button {
50
- background: #007bff;
51
- color: white;
52
- border: none;
53
- padding: 10px 20px;
54
- border-radius: 4px;
55
- cursor: pointer;
56
- margin: 10px 5px 10px 0;
57
- }
58
-
59
- .test-case button:disabled {
60
- background: #ccc;
61
- cursor: not-allowed;
62
- }
63
-
64
- .output, .error {
65
- margin: 10px 0;
66
- padding: 10px;
67
- border-radius: 4px;
68
- }
69
-
70
- .output {
71
- background: #d4edda;
72
- border: 1px solid #c3e6cb;
73
- color: #155724;
74
- }
75
-
76
- .error {
77
- background: #f8d7da;
78
- border: 1px solid #f5c6cb;
79
- color: #721c24;
10
+ /* CSS Reset for test-runner-container */
11
+ .test-runner-container *,
12
+ .test-runner-container *::before,
13
+ .test-runner-container *::after {
14
+ box-sizing: border-box;
15
+ margin: 0;
16
+ padding: 0;
80
17
  }
81
18
 
82
19
  .test-runner-container {
83
20
  max-width: 1400px;
84
21
  margin: 0 auto;
85
- background: white;
86
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
22
+ padding: var(--spacing-5);
23
+ background: var(--background);
24
+ border-radius: var(--radius);
25
+ box-shadow: var(--shadow-lg);
87
26
  }
88
27
 
89
- /* Header Styles */
90
- .test-runner-header {
91
- display: flex;
92
- justify-content: space-between;
93
- align-items: center;
94
- padding: 20px 24px;
95
- background: /*linear-gradient(135deg, #667eea 0%, #764ba2 100%);*/ white;
96
- color: white;
97
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
98
- }
99
-
100
- .header-left, .header-right {
101
- display: flex;
102
- gap: 12px;
103
- align-items: center;
104
- }
105
-
106
- .header-center {
107
- flex: 1;
108
- display: flex;
109
- justify-content: center;
110
- align-items: center;
111
- }
112
-
113
- .api-status {
114
- display: flex;
115
- align-items: center;
116
- gap: 0.5rem;
117
- }
118
-
119
- .api-status-text {
120
- color: #28a745;
121
- font-weight: 500;
122
- font-size: 0.9rem;
123
- }
124
-
125
- /* Button Styles */
126
- .btn {
127
- display: inline-flex;
128
- align-items: center;
129
- gap: 8px;
130
- padding: 10px 16px;
131
- border: none;
132
- border-radius: 8px;
133
- font-size: 14px;
134
- font-weight: 500;
135
- cursor: pointer;
136
- transition: all 0.2s ease;
137
- text-decoration: none;
138
- position: relative;
139
- }
140
-
141
- .btn:disabled {
142
- opacity: 0.6;
143
- cursor: not-allowed;
144
- transform: none !important;
145
- }
146
-
147
- .btn-primary {
148
- color: black;
149
- box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3);
150
- }
151
-
152
- .btn-primary:hover:not(:disabled) {
153
- transform: translateY(-1px);
154
- box-shadow: 0 4px 8px rgba(59, 130, 246, 0.4);
155
- }
156
-
157
- .btn-secondary {
158
- background: rgba(255, 255, 255, 0.2);
159
- color: blue;
160
- border: 1px solid rgba(255, 255, 255, 0.3);
161
- }
162
-
163
- .btn-secondary:hover:not(:disabled) {
164
- background: rgba(255, 255, 255, 0.3);
165
- transform: translateY(-1px);
166
- }
167
-
168
- .btn-outline {
169
- background: transparent;
170
- color: #6b7280;
171
- border: 2px solid #e5e7eb;
172
- }
173
-
174
- .btn-outline:hover {
175
- background: #f9fafb;
176
- border-color: #d1d5db;
177
- transform: translateY(-1px);
178
- }
179
-
180
- .btn-icon {
181
- padding: 8px;
182
- min-width: 40px;
183
- height: 40px;
184
- display: flex;
185
- align-items: center;
186
- justify-content: center;
187
- font-size: 16px;
188
- }
189
-
190
- .btn-run {
191
- color: white;
192
- }
193
-
194
- .btn-run:hover:not(:disabled) {
195
- transform: translateY(-1px);
196
- }
197
-
198
- .btn-delete {
199
- color: white;
200
- }
201
-
202
- .btn-delete:hover:not(:disabled) {
203
- transform: translateY(-1px);
204
- }
205
-
206
- .icon {
207
- font-size: 16px;
208
- }
209
-
210
- /* Main Content */
211
- .test-runner-content {
28
+ /* Container Element: Content */
29
+ .test-runner-container__content {
212
30
  padding: 0;
213
31
  }
214
-
215
- /* Column Headers */
216
- .column-headers {
217
- display: grid;
218
- grid-template-columns: 1fr 1.5fr 0.5fr 120px;
219
- gap: 1px;
220
- background: #e5e7eb;
221
- border-bottom: 2px solid #d1d5db;
222
- }
223
-
224
- .column-header {
225
- background: #f8fafc;
226
- padding: 16px 20px;
227
- font-weight: 600;
228
- color: #374151;
229
- font-size: 14px;
230
- text-transform: uppercase;
231
- letter-spacing: 0.05em;
232
- }
233
-
234
- /* Test Cases */
235
- .test-cases {
236
- background: white;
237
- }
238
-
239
- .test-case-row {
240
- display: grid;
241
- grid-template-columns: 1fr 1.5fr 0.5fr 120px;
242
- gap: 1px;
243
- border-bottom: 1px solid #e5e7eb;
244
- min-height: 200px;
245
- }
246
-
247
- .test-case-row:hover {
248
- background: #f9fafb;
249
- }
250
-
251
- /* Input Column */
252
- .input-column {
253
- padding: 20px;
254
- background: white;
255
- border-right: 1px solid #e5e7eb;
256
- }
257
-
258
- .input-group {
259
- margin-bottom: 16px;
260
- }
261
-
262
- .input-group label {
263
- display: block;
264
- margin-bottom: 8px;
265
- font-weight: 500;
266
- color: #374151;
267
- font-size: 14px;
268
- }
269
-
270
- .input-group textarea {
271
- width: 95%;
272
- padding: 12px;
273
- border: 2px solid #e5e7eb;
274
- border-radius: 8px;
275
- font-size: 14px;
276
- resize: vertical;
277
- outline: none;
278
- transition: border-color 0.2s ease;
279
- font-family: inherit;
280
- }
281
-
282
- .input-group textarea:focus {
283
- border-color: #3b82f6;
284
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
285
- }
286
-
287
- /* Keywords and Links */
288
- .keywords-group, .links-group {
289
- margin-bottom: 16px;
290
- }
291
-
292
- .keywords-group label, .links-group label {
293
- display: block;
294
- margin-bottom: 8px;
295
- font-weight: 500;
296
- color: #374151;
297
- font-size: 14px;
298
- }
299
-
300
- .tags-container, .links-container {
301
- display: flex;
302
- flex-wrap: wrap;
303
- gap: 8px;
304
- align-items: center;
305
- }
306
-
307
- .tag {
308
- display: inline-flex;
309
- align-items: center;
310
- gap: 6px;
311
- background: #dbeafe;
312
- color: #1e40af;
313
- padding: 4px 8px;
314
- border-radius: 16px;
315
- font-size: 12px;
316
- font-weight: 500;
317
- }
318
-
319
- .tag-remove {
320
- background: none;
321
- border: none;
322
- color: #1e40af;
323
- cursor: pointer;
324
- font-size: 14px;
325
- padding: 0;
326
- width: 16px;
327
- height: 16px;
328
- display: flex;
329
- align-items: center;
330
- justify-content: center;
331
- border-radius: 50%;
332
- }
333
-
334
- .tag-remove:hover {
335
- background: rgba(30, 64, 175, 0.1);
336
- }
337
-
338
- .link-item {
339
- display: flex;
340
- align-items: center;
341
- gap: 6px;
342
- background: #f0f9ff;
343
- padding: 4px 8px;
344
- border-radius: 6px;
345
- font-size: 12px;
346
- }
347
-
348
- .link-item a {
349
- color: #0369a1;
350
- text-decoration: none;
351
- max-width: 200px;
352
- overflow: hidden;
353
- text-overflow: ellipsis;
354
- white-space: nowrap;
355
- }
356
-
357
- .link-item a:hover {
358
- text-decoration: underline;
359
- }
360
-
361
- .link-remove {
362
- background: none;
363
- border: none;
364
- color: #0369a1;
365
- cursor: pointer;
366
- font-size: 12px;
367
- padding: 0;
368
- width: 16px;
369
- height: 16px;
370
- display: flex;
371
- align-items: center;
372
- justify-content: center;
373
- border-radius: 50%;
374
- }
375
-
376
- .link-remove:hover {
377
- background: rgba(3, 105, 161, 0.1);
378
- }
379
-
380
- .tags-container input, .links-container input {
381
- border: 1px solid #d1d5db;
382
- border-radius: 6px;
383
- padding: 6px 8px;
384
- font-size: 12px;
385
- outline: none;
386
- min-width: 120px;
387
- }
388
-
389
- .tags-container input:focus, .links-container input:focus {
390
- border-color: #3b82f6;
391
- box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
392
- }
393
-
394
- /* Output Column */
395
- .output-column {
396
- padding: 20px;
397
- background: white;
398
- border-right: 1px solid #e5e7eb;
399
- display: flex;
400
- flex-direction: column;
401
- }
402
-
403
- .output-content {
404
- background: #f8fafc;
405
- border: 1px solid #e5e7eb;
406
- border-radius: 8px;
407
- padding: 16px;
408
- font-size: 14px;
409
- line-height: 1.6;
410
- color: #374151;
411
- white-space: pre-wrap;
412
- word-wrap: break-word;
413
- flex: 1;
414
- overflow-y: auto;
415
- max-height: 250px;
416
- overflow-x: scroll;
417
- }
418
-
419
- .output-placeholder {
420
- display: flex;
421
- align-items: center;
422
- justify-content: center;
423
- color: #9ca3af;
424
- font-style: italic;
425
- flex: 1;
426
- background: #f9fafb;
427
- border: 2px dashed #d1d5db;
428
- border-radius: 8px;
429
- }
430
-
431
- /* Evaluation Column */
432
- .evaluation-column {
433
- padding: 20px;
434
- background: white;
435
- border-right: 1px solid #e5e7eb;
436
- display: flex;
437
- flex-direction: column;
438
- }
439
-
440
- .evaluation-content {
441
- display: flex;
442
- flex-direction: column;
443
- gap: 12px;
444
- flex: 1;
445
- }
446
-
447
- .score-display {
448
- text-align: center;
449
- }
450
-
451
- .score-number {
452
- font-size: 24px;
453
- font-weight: 700;
454
- color: #111827;
455
- display: block;
456
- margin-bottom: 8px;
457
- }
458
-
459
- .score-bar {
460
- width: 100%;
461
- height: 8px;
462
- background: #e5e7eb;
463
- border-radius: 4px;
464
- overflow: hidden;
465
- }
466
-
467
- .score-fill {
468
- height: 100%;
469
- background: linear-gradient(90deg, #ef4444 0%, #f59e0b 50%, #10b981 100%);
470
- transition: width 0.3s ease;
471
- }
472
-
473
- .evaluation-details {
474
- display: flex;
475
- flex-direction: column;
476
- gap: 8px;
477
- }
478
-
479
- .detail-item {
480
- display: flex;
481
- align-items: center;
482
- gap: 8px;
483
- font-size: 14px;
484
- }
485
-
486
- .status {
487
- width: 20px;
488
- height: 20px;
489
- border-radius: 50%;
490
- display: flex;
491
- align-items: center;
492
- justify-content: center;
493
- font-size: 12px;
494
- font-weight: bold;
495
- }
496
-
497
- .status.pass {
498
- background: #dcfce7;
499
- color: #166534;
500
- }
501
-
502
- .status.fail {
503
- background: #fef2f2;
504
- color: #dc2626;
505
- }
506
-
507
- .evaluation-text {
508
- font-size: 12px;
509
- color: #6b7280;
510
- line-height: 1.4;
511
- background: #f9fafb;
512
- padding: 8px;
513
- border-radius: 6px;
514
- border: 1px solid #e5e7eb;
515
- }
516
-
517
- .evaluation-placeholder {
518
- display: flex;
519
- align-items: center;
520
- justify-content: center;
521
- color: #9ca3af;
522
- font-style: italic;
523
- flex: 1;
524
- background: #f9fafb;
525
- border: 2px dashed #d1d5db;
526
- border-radius: 8px;
527
- }
528
-
529
- /* New evaluation result styles */
530
- .evaluation-result {
531
- display: flex;
532
- flex-direction: column;
533
- gap: 8px;
534
- }
535
-
536
- .evaluation-status {
537
- font-weight: 600;
538
- font-size: 14px;
539
- padding: 8px 12px;
540
- border-radius: 4px;
541
- text-align: center;
542
- }
543
-
544
- .evaluation-status.passed {
545
- background: #d4edda;
546
- color: #155724;
547
- border: 1px solid #c3e6cb;
548
- }
549
-
550
- .evaluation-status.failed {
551
- background: #f8d7da;
552
- color: #721c24;
553
- border: 1px solid #f5c6cb;
554
- }
555
-
556
- .evaluation-score {
557
- font-size: 12px;
558
- color: #495057;
559
- text-align: center;
560
- font-weight: 500;
561
- }
562
-
563
- .evaluation-feedback {
564
- font-size: 12px;
565
- color: #6c757d;
566
- background: #f8f9fa;
567
- padding: 8px;
568
- border-radius: 4px;
569
- border: 1px solid #dee2e6;
570
- }
571
-
572
- /* Actions Column */
573
- .actions-column {
574
- padding: 20px;
575
- background: white;
576
- display: flex;
577
- flex-direction: column;
578
- gap: 12px;
579
- align-items: center;
580
- justify-content: flex-start;
581
- align-self: flex-start;
582
- }
583
-
584
- /* Add Test Case */
585
- .add-test-case {
586
- padding: 24px;
587
- text-align: center;
588
- background: #f9fafb;
589
- border-top: 1px solid #e5e7eb;
590
- }
591
-
592
- .hidden {
593
- display: none;
594
- }
595
-
596
- .error-message {
597
- background: #ffeaea;
598
- color: #b71c1c;
599
- border: 1px solid #f44336;
600
- padding: 0.75em 2.5em 0.75em 1em;
601
- border-radius: 4px;
602
- margin: 1em 0;
603
- position: relative;
604
- font-size: 1em;
605
- display: flex;
606
- align-items: center;
607
- gap: 1em;
608
- }
609
-
610
- .error-close {
611
- background: none;
612
- border: none;
613
- color: #b71c1c;
614
- font-size: 1.25em;
615
- font-weight: bold;
616
- cursor: pointer;
617
- position: absolute;
618
- right: 0.75em;
619
- top: 50%;
620
- transform: translateY(-50%);
621
- line-height: 1;
622
- padding: 0;
623
- }
624
-
625
- /* Responsive Design */
626
- @media (max-width: 1200px) {
627
- .test-case-row {
628
- grid-template-columns: 1fr;
629
- gap: 0;
630
- }
631
-
632
- .column-headers {
633
- display: none;
634
- }
635
-
636
- .input-column, .output-column, .evaluation-column, .actions-column {
637
- border-right: none;
638
- border-bottom: 1px solid #e5e7eb;
639
- }
640
-
641
- .actions-column {
642
- flex-direction: row;
643
- justify-content: center;
644
- }
645
- }
646
-
647
- @media (max-width: 768px) {
648
- .test-runner-header {
649
- flex-direction: column;
650
- gap: 16px;
651
- padding: 16px;
652
- }
653
-
654
- .header-left, .header-right {
655
- flex-wrap: wrap;
656
- justify-content: center;
657
- }
658
-
659
- .btn {
660
- font-size: 12px;
661
- padding: 8px 12px;
662
- }
663
-
664
- .input-column, .output-column, .evaluation-column, .actions-column {
665
- padding: 16px;
666
- }
667
-
668
- .test-case-row {
669
- min-height: auto;
670
- }
671
- }