Update content and style
Browse files- app.py +14 -17
- src/about.py +54 -49
- src/display/css_html_js.py +33 -221
app.py
CHANGED
@@ -1,15 +1,11 @@
|
|
1 |
import gradio as gr
|
2 |
-
from gradio_leaderboard import Leaderboard, ColumnFilter, SelectColumns
|
3 |
-
import pandas as pd
|
4 |
from apscheduler.schedulers.background import BackgroundScheduler
|
5 |
from huggingface_hub import snapshot_download
|
6 |
|
7 |
from src.about import (
|
8 |
-
|
9 |
-
CITATION_BUTTON_TEXT,
|
10 |
-
EVALUATION_QUEUE_TEXT,
|
11 |
INTRODUCTION_TEXT,
|
12 |
-
|
13 |
TITLE,
|
14 |
)
|
15 |
from src.display.css_html_js import custom_css, custom_js
|
@@ -18,12 +14,8 @@ from src.display.utils import (
|
|
18 |
ST_BENCHMARK_COLS,
|
19 |
AGENTIC_BENCHMARK_COLS,
|
20 |
EVAL_COLS,
|
21 |
-
EVAL_TYPES,
|
22 |
AutoEvalColumn,
|
23 |
-
ModelType,
|
24 |
fields,
|
25 |
-
WeightType,
|
26 |
-
Precision
|
27 |
)
|
28 |
from src.envs import API, EVAL_REQUESTS_PATH, EVAL_RESULTS_PATH, QUEUE_REPO, REPO_ID, RESULTS_REPO, TOKEN
|
29 |
from src.populate import get_evaluation_queue_df, get_leaderboard_df, TASK_NAME_INVERSE_MAP
|
@@ -92,26 +84,31 @@ with demo:
|
|
92 |
</div>
|
93 |
<div id="centre-container">
|
94 |
<h1 style="margin-bottom: 0.25rem;">{TITLE}</h1>
|
95 |
-
<p style="color:#eb088a; margin:0; font-size:1.2rem;">
|
|
|
|
|
96 |
</div>
|
97 |
-
<div id="right-container"></div>
|
98 |
</div>
|
99 |
</div>
|
100 |
""")
|
101 |
# gr.HTML(TITLE)
|
102 |
-
with gr.Group(elem_classes="intro-block"):
|
103 |
-
|
104 |
# gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
|
|
|
105 |
|
106 |
with gr.Tabs(elem_classes=["leaderboard-table", "tab-buttons"]) as tabs:
|
107 |
-
with gr.TabItem("Base
|
108 |
leaderboard = init_leaderboard(ST_LEADERBOARD_DF, "base")
|
109 |
|
110 |
-
with gr.TabItem("Agentic
|
111 |
leaderboard = init_leaderboard(AGENTIC_LEADERBOARD_DF, "agentic")
|
112 |
|
113 |
with gr.TabItem("About", elem_classes="llm-benchmark-tab-table", id=2):
|
114 |
-
gr.Markdown(
|
|
|
|
|
|
|
115 |
|
116 |
assets = [black_logo_path, white_logo_path]
|
117 |
|
|
|
1 |
import gradio as gr
|
|
|
|
|
2 |
from apscheduler.schedulers.background import BackgroundScheduler
|
3 |
from huggingface_hub import snapshot_download
|
4 |
|
5 |
from src.about import (
|
6 |
+
REPRODUCIBILITY_TEXT,
|
|
|
|
|
7 |
INTRODUCTION_TEXT,
|
8 |
+
ABOUT_TEXT,
|
9 |
TITLE,
|
10 |
)
|
11 |
from src.display.css_html_js import custom_css, custom_js
|
|
|
14 |
ST_BENCHMARK_COLS,
|
15 |
AGENTIC_BENCHMARK_COLS,
|
16 |
EVAL_COLS,
|
|
|
17 |
AutoEvalColumn,
|
|
|
18 |
fields,
|
|
|
|
|
19 |
)
|
20 |
from src.envs import API, EVAL_REQUESTS_PATH, EVAL_RESULTS_PATH, QUEUE_REPO, REPO_ID, RESULTS_REPO, TOKEN
|
21 |
from src.populate import get_evaluation_queue_df, get_leaderboard_df, TASK_NAME_INVERSE_MAP
|
|
|
84 |
</div>
|
85 |
<div id="centre-container">
|
86 |
<h1 style="margin-bottom: 0.25rem;">{TITLE}</h1>
|
87 |
+
<p style="color:#eb088a; margin:0; font-size:1.2rem;">Explore Interactive Results & Traces</p>
|
88 |
+
</div>
|
89 |
+
<div id="right-container">
|
90 |
</div>
|
|
|
91 |
</div>
|
92 |
</div>
|
93 |
""")
|
94 |
# gr.HTML(TITLE)
|
95 |
+
# with gr.Group(elem_classes="intro-block"):
|
96 |
+
# gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
|
97 |
# gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
|
98 |
+
gr.Markdown(INTRODUCTION_TEXT, elem_classes="intro-text")
|
99 |
|
100 |
with gr.Tabs(elem_classes=["leaderboard-table", "tab-buttons"]) as tabs:
|
101 |
+
with gr.TabItem("Base Benchmarks", elem_classes="llm-benchmark-tab-table", id=0):
|
102 |
leaderboard = init_leaderboard(ST_LEADERBOARD_DF, "base")
|
103 |
|
104 |
+
with gr.TabItem("Agentic Benchmarks", elem_classes="llm-benchmark-tab-table", id=1):
|
105 |
leaderboard = init_leaderboard(AGENTIC_LEADERBOARD_DF, "agentic")
|
106 |
|
107 |
with gr.TabItem("About", elem_classes="llm-benchmark-tab-table", id=2):
|
108 |
+
gr.Markdown(ABOUT_TEXT, elem_classes="markdown-text")
|
109 |
+
|
110 |
+
with gr.TabItem("Reproducibility", elem_classes="llm-benchmark-tab-table", id=3):
|
111 |
+
gr.Markdown(REPRODUCIBILITY_TEXT, elem_classes="markdown-text")
|
112 |
|
113 |
assets = [black_logo_path, white_logo_path]
|
114 |
|
src/about.py
CHANGED
@@ -46,66 +46,74 @@ NUM_FEWSHOT = 0 # Change with your few shot
|
|
46 |
|
47 |
|
48 |
# Your leaderboard name
|
49 |
-
TITLE = """<h1 align="center" id="space-title">
|
50 |
|
51 |
SINGLE_TURN_TASK_NAMES = ", ".join([f"[{task.value.col_name}]({task.value.source})" for task in Tasks if task.value.type == "base"])
|
52 |
AGENTIC_TASK_NAMES = ", ".join([f"[{task.value.col_name}]({task.value.source})" for task in Tasks if task.value.type == "agentic"])
|
53 |
|
54 |
# What does your leaderboard evaluate?
|
55 |
INTRODUCTION_TEXT = f"""
|
56 |
-
|
57 |
|
58 |
# Which evaluations are you running? how can people reproduce what you have?
|
59 |
-
|
60 |
-
# Vector State of Evaluation Leaderboard
|
61 |
|
62 |
-
##
|
63 |
-
The **Vector
|
64 |
|
65 |
-
|
66 |
-
- **Agentic Tasks**: GAIA, GDM-InterCode-CTF, GDM-In-House-CTF, AgentHarm, AgentHarm-Benign, SWE-Bench
|
67 |
|
68 |
-
|
69 |
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
- **
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
"""
|
106 |
|
107 |
-
|
108 |
-
##
|
109 |
|
110 |
### 1) Make sure you can load your model and tokenizer using AutoClasses:
|
111 |
```python
|
@@ -134,6 +142,3 @@ Make sure you have followed the above steps first.
|
|
134 |
If everything is done, check you can launch the EleutherAIHarness on your model locally, using the above command without modifications (you can add `--limit` to limit the number of examples per task).
|
135 |
"""
|
136 |
|
137 |
-
CITATION_BUTTON_LABEL = "Copy the following snippet to cite these results"
|
138 |
-
CITATION_BUTTON_TEXT = r"""
|
139 |
-
"""
|
|
|
46 |
|
47 |
|
48 |
# Your leaderboard name
|
49 |
+
TITLE = """<h1 align="center" id="space-title">State of Evaluation Leaderboard</h1>"""
|
50 |
|
51 |
SINGLE_TURN_TASK_NAMES = ", ".join([f"[{task.value.col_name}]({task.value.source})" for task in Tasks if task.value.type == "base"])
|
52 |
AGENTIC_TASK_NAMES = ", ".join([f"[{task.value.col_name}]({task.value.source})" for task in Tasks if task.value.type == "agentic"])
|
53 |
|
54 |
# What does your leaderboard evaluate?
|
55 |
INTRODUCTION_TEXT = f"""
|
56 |
+
Powered by **Inspect** and **Inspect Evals**, the **Vector State of Evaluation Leaderboard** presents an objective evaluation of leading frontier models across a comprehensive suite of benchmarks. Go beyond the summary metrics: click through to interactive reporting for each model and benchmark to explore sample-level performance and detailed traces."""
|
57 |
|
58 |
# Which evaluations are you running? how can people reproduce what you have?
|
59 |
+
ABOUT_TEXT = f"""
|
|
|
60 |
|
61 |
+
## Vector Institute
|
62 |
+
The **Vector Institute** is dedicated to advancing the fields of artificial intelligence and machine learning through cutting-edge research, collaborative projects, and open-source contributions. Our mission is to drive excellence and innovation in AI, fostering a vibrant community of researchers, developers, and industry partners.
|
63 |
|
64 |
+
## 🎯 Benchmarks
|
|
|
65 |
|
66 |
+
This leaderboard showcases performance across a comprehensive suite of benchmarks, designed to rigorously evaluate different aspects of AI model capabilities. Let's explore the benchmarks we use:
|
67 |
|
68 |
+
### Inspect Evals
|
69 |
+
|
70 |
+
This leaderboard leverages [Inspect Evals](https://ukgovernmentbeis.github.io/inspect_evals/) to power evaluation. Inspect Evals is an open-source repository built upon the Inspect AI framework. Developed in collaboration between the Vector Institute, Arcadia Impact and the UK AI Safety Institute, Inspect Evals provides a comprehensive suite of high-quality benchmarks spanning diverse domains like coding, mathematics, cybersecurity, reasoning, and general knowledge.
|
71 |
+
|
72 |
+
#### Transparent and Detailed Insights
|
73 |
+
|
74 |
+
All evaluations presented on this leaderboard are run using Inspect Evals. To facilitate in-depth analysis and promote transparency, we provide [Inspect Logs](https://inspect.ai-safety-institute.org.uk/log-viewer.html) for every benchmark run. These logs offer sample and trace level reporting, allowing the community to explore the granular details of model performance.
|
75 |
+
|
76 |
+
### ⚙️ Base Benchmarks
|
77 |
+
|
78 |
+
These benchmarks assess fundamental reasoning and knowledge capabilities of models.
|
79 |
+
|
80 |
+
<div class="benchmark-table-container">
|
81 |
+
|
82 |
+
| Benchmark | Description | Key Skills |
|
83 |
+
|--------------------|----------------------------------------------------------------------------------|-----------------------------------------------|
|
84 |
+
| **ARC-Easy** / **ARC-Challenge** | Multiple-choice science questions measuring scientific & commonsense reasoning. | Scientific Reasoning, Commonsense Reasoning |
|
85 |
+
| **DROP** | Reading comprehension benchmark emphasizing discrete reasoning steps. | Reading Comprehension, Discrete Reasoning |
|
86 |
+
| **WinoGrande** | Commonsense reasoning challenge focused on co-reference resolution. | Commonsense Reasoning, Co-reference Resolution|
|
87 |
+
| **GSM8K** | Grade-school math word problems testing arithmetic & multi-step reasoning. | Arithmetic Reasoning, Multi-step Reasoning |
|
88 |
+
| **HellaSwag** | Commonsense inference task centered on action completion. | Commonsense Inference, Action Completion |
|
89 |
+
| **HumanEval** | Evaluates code generation and reasoning in a programming context. | Code Generation, Code Reasoning |
|
90 |
+
| **IFEval** | Specialized benchmark for incremental formal reasoning. | Incremental Formal Reasoning |
|
91 |
+
| **MATH** | High school-level math questions requiring detailed solutions. | Mathematical Reasoning, Problem Solving |
|
92 |
+
| **MMLU** / **MMLU-Pro**| Multi-subject multiple-choice tests of advanced knowledge. | Broad Knowledge, Multi-domain Understanding |
|
93 |
+
| **GPQA-Diamond** | Question-answering benchmark assessing deeper reasoning & knowledge linking. | Deep Reasoning, Knowledge Linking |
|
94 |
+
| **MMMU** (Multi-Choice / Open-Ended) | Multilingual & multi-domain tasks testing structured & open responses. | Multilingual Understanding, Open-form Response |
|
95 |
+
|
96 |
+
</div>
|
97 |
+
|
98 |
+
### 🚀 Agentic Benchmarks
|
99 |
+
|
100 |
+
These benchmarks go beyond basic reasoning and evaluate more advanced, autonomous, or "agentic" capabilities of models, such as planning and interaction.
|
101 |
+
|
102 |
+
<div class="benchmark-table-container">
|
103 |
+
|
104 |
+
| Benchmark | Description | Key Skills |
|
105 |
+
|-----------------------|-----------------------------------------------------------------------------|-------------------------------------------------|
|
106 |
+
| **GAIA** | Evaluates autonomous reasoning, planning, problem-solving, & multi-turn interactions. | Autonomous Reasoning, Planning, Problem Solving |
|
107 |
+
| [**InterCode-CTF**](https://ukgovernmentbeis.github.io/inspect_evals/evals/cybersecurity/in_house_ctf/) | Capture-the-flag challenge focused on code interpretation & debugging. | Code Interpretation, Generative Debugging |
|
108 |
+
| **GDM-In-House-CTF** | Capture-the-flag challenge testing web application security skills. | Web Security Skills, Security Awareness |
|
109 |
+
| **AgentHarm** / **AgentHarm-Benign** | Measures harmfulness of LLM agents (and benign behavior baseline). | Harmfulness Detection, Agent Safety |
|
110 |
+
| **SWE-Bench** | Tests AI agent ability to solve software engineering tasks. | Software Engineering Tasks, Bug Fixing |
|
111 |
+
|
112 |
+
</div>
|
113 |
"""
|
114 |
|
115 |
+
REPRODUCIBILITY_TEXT = """
|
116 |
+
## Reproduce and Extend the Leaderboard
|
117 |
|
118 |
### 1) Make sure you can load your model and tokenizer using AutoClasses:
|
119 |
```python
|
|
|
142 |
If everything is done, check you can launch the EleutherAIHarness on your model locally, using the above command without modifications (you can add `--limit` to limit the number of examples per task).
|
143 |
"""
|
144 |
|
|
|
|
|
|
src/display/css_html_js.py
CHANGED
@@ -1,219 +1,4 @@
|
|
1 |
-
# custom_css = """
|
2 |
|
3 |
-
# .markdown-text {
|
4 |
-
# font-size: 16px !important;
|
5 |
-
# }
|
6 |
-
|
7 |
-
# #models-to-add-text {
|
8 |
-
# font-size: 18px !important;
|
9 |
-
# }
|
10 |
-
|
11 |
-
# #citation-button span {
|
12 |
-
# font-size: 16px !important;
|
13 |
-
# }
|
14 |
-
|
15 |
-
# #citation-button textarea {
|
16 |
-
# font-size: 16px !important;
|
17 |
-
# }
|
18 |
-
|
19 |
-
# #citation-button > label > button {
|
20 |
-
# margin: 6px;
|
21 |
-
# transform: scale(1.3);
|
22 |
-
# }
|
23 |
-
|
24 |
-
# #leaderboard-table {
|
25 |
-
# margin-top: 15px
|
26 |
-
# }
|
27 |
-
|
28 |
-
# #leaderboard-table-lite {
|
29 |
-
# margin-top: 15px
|
30 |
-
# }
|
31 |
-
|
32 |
-
# #search-bar-table-box > div:first-child {
|
33 |
-
# background: none;
|
34 |
-
# border: none;
|
35 |
-
# }
|
36 |
-
|
37 |
-
# #search-bar {
|
38 |
-
# padding: 0px;
|
39 |
-
# }
|
40 |
-
|
41 |
-
# /* Limit the width of the first AutoEvalColumn so that names don't expand too much */
|
42 |
-
# #leaderboard-table td:nth-child(2),
|
43 |
-
# #leaderboard-table th:nth-child(2) {
|
44 |
-
# max-width: 400px;
|
45 |
-
# overflow: auto;
|
46 |
-
# white-space: nowrap;
|
47 |
-
# }
|
48 |
-
|
49 |
-
# .tab-buttons button {
|
50 |
-
# font-size: 20px;
|
51 |
-
# }
|
52 |
-
|
53 |
-
# #scale-logo {
|
54 |
-
# border-style: none !important;
|
55 |
-
# box-shadow: none;
|
56 |
-
# display: block;
|
57 |
-
# margin-left: auto;
|
58 |
-
# margin-right: auto;
|
59 |
-
# max-width: 600px;
|
60 |
-
# }
|
61 |
-
|
62 |
-
# #scale-logo .download {
|
63 |
-
# display: none;
|
64 |
-
# }
|
65 |
-
# #filter_type{
|
66 |
-
# border: 0;
|
67 |
-
# padding-left: 0;
|
68 |
-
# padding-top: 0;
|
69 |
-
# }
|
70 |
-
# #filter_type label {
|
71 |
-
# display: flex;
|
72 |
-
# }
|
73 |
-
# #filter_type label > span{
|
74 |
-
# margin-top: var(--spacing-lg);
|
75 |
-
# margin-right: 0.5em;
|
76 |
-
# }
|
77 |
-
# #filter_type label > .wrap{
|
78 |
-
# width: 103px;
|
79 |
-
# }
|
80 |
-
# #filter_type label > .wrap .wrap-inner{
|
81 |
-
# padding: 2px;
|
82 |
-
# }
|
83 |
-
# #filter_type label > .wrap .wrap-inner input{
|
84 |
-
# width: 1px
|
85 |
-
# }
|
86 |
-
# #filter-columns-type{
|
87 |
-
# border:0;
|
88 |
-
# padding:0.5;
|
89 |
-
# }
|
90 |
-
# #filter-columns-size{
|
91 |
-
# border:0;
|
92 |
-
# padding:0.5;
|
93 |
-
# }
|
94 |
-
# #box-filter > .form{
|
95 |
-
# border: 0
|
96 |
-
# }
|
97 |
-
|
98 |
-
# body, .gradio-container {
|
99 |
-
# font-family: Roboto, sans-serif;
|
100 |
-
# background-color: #ffffff;
|
101 |
-
# color: #000000; /* main text color */
|
102 |
-
# margin: 0;
|
103 |
-
# padding: 0;
|
104 |
-
# }
|
105 |
-
|
106 |
-
# h1, h2, h3, h4, h5, h6 {
|
107 |
-
# color: #eb088a; /* your brand color for headings */
|
108 |
-
# font-weight: 600;
|
109 |
-
# margin-bottom: 1rem;
|
110 |
-
# }
|
111 |
-
|
112 |
-
# /* Example ‘intro-block’ styling if you want extra flair */
|
113 |
-
# .intro-block {
|
114 |
-
# background-color: #eb088a10; /* light tinted background */
|
115 |
-
# padding: 1.5rem;
|
116 |
-
# border-radius: 10px;
|
117 |
-
# margin-bottom: 2rem;
|
118 |
-
# }
|
119 |
-
|
120 |
-
# """
|
121 |
-
|
122 |
-
# custom_css = """
|
123 |
-
# /* 1) Load Karbon Font: Make sure this points to your actual font files */
|
124 |
-
# @font-face {
|
125 |
-
# font-family: 'Karbon';
|
126 |
-
# src: url('path/to/Karbon.woff2') format('woff2'),
|
127 |
-
# url('path/to/Karbon.woff') format('woff');
|
128 |
-
# font-weight: normal;
|
129 |
-
# font-style: normal;
|
130 |
-
# }
|
131 |
-
|
132 |
-
# /* 2) Global Container */
|
133 |
-
# body, .gradio-container {
|
134 |
-
# font-family: 'Karbon', sans-serif;
|
135 |
-
# margin: 0;
|
136 |
-
# padding: 0;
|
137 |
-
# background-color: #fafafa; /* Light background */
|
138 |
-
# color: #000000;
|
139 |
-
# }
|
140 |
-
|
141 |
-
# .gradio-container {
|
142 |
-
# max-width: 1200px;
|
143 |
-
# margin: 0 auto;
|
144 |
-
# padding: 2rem 1rem;
|
145 |
-
# }
|
146 |
-
|
147 |
-
# /* 3) Headings, with brand color #eb088a */
|
148 |
-
# h1, h2, h3, h4, h5, h6 {
|
149 |
-
# color: #000000;
|
150 |
-
# margin-bottom: 1rem;
|
151 |
-
# font-weight: 600;
|
152 |
-
# }
|
153 |
-
|
154 |
-
# /* 4) Intro Block for a slight highlight */
|
155 |
-
# .intro-block {
|
156 |
-
# background-color: #ffe2f1; /* lighter tint of #eb088a */
|
157 |
-
# padding: 1.5rem;
|
158 |
-
# border-radius: 8px;
|
159 |
-
# border: 1px solid #f8badb;
|
160 |
-
# margin-bottom: 2rem;
|
161 |
-
# }
|
162 |
-
|
163 |
-
# /* 5) Tab styling - remove default orange styling */
|
164 |
-
# .tab-buttons {
|
165 |
-
# margin-top: 1rem;
|
166 |
-
# margin-bottom: 1rem;
|
167 |
-
# display: flex;
|
168 |
-
# }
|
169 |
-
# .tab-buttons > .tabitem {
|
170 |
-
# padding: 0.6rem 1.2rem;
|
171 |
-
# background-color: #ffffff;
|
172 |
-
# border: 1px solid #eb088a;
|
173 |
-
# border-radius: 6px;
|
174 |
-
# color: #eb088a;
|
175 |
-
# margin-right: 5px;
|
176 |
-
# cursor: pointer;
|
177 |
-
# transition: background-color 0.2s ease, color 0.2s ease;
|
178 |
-
# font-weight: 500;
|
179 |
-
# }
|
180 |
-
# .tab-buttons > .tabitem.selected {
|
181 |
-
# background-color: #eb088a;
|
182 |
-
# color: #ffffff;
|
183 |
-
# }
|
184 |
-
# .tab-buttons > .tabitem:hover {
|
185 |
-
# background-color: #eb088a;
|
186 |
-
# color: #ffffff;
|
187 |
-
# }
|
188 |
-
|
189 |
-
# /* 6) Dataframe Styling */
|
190 |
-
# .gr-dataframe table {
|
191 |
-
# width: 100%;
|
192 |
-
# border-collapse: collapse;
|
193 |
-
# border: 1px solid #cccccc;
|
194 |
-
# margin-bottom: 2rem;
|
195 |
-
# }
|
196 |
-
# .gr-dataframe th {
|
197 |
-
# background-color: #eb088a;
|
198 |
-
# color: #ffffff;
|
199 |
-
# padding: 0.6rem;
|
200 |
-
# text-align: left;
|
201 |
-
# font-weight: 600;
|
202 |
-
# }
|
203 |
-
# .gr-dataframe td {
|
204 |
-
# padding: 0.6rem;
|
205 |
-
# border-bottom: 1px solid #e0e0e0;
|
206 |
-
# }
|
207 |
-
# .gr-dataframe tr:nth-child(even) {
|
208 |
-
# background-color: #fdfdfd;
|
209 |
-
# }
|
210 |
-
|
211 |
-
# /* 7) Make default markdown text nice */
|
212 |
-
# .markdown-text p {
|
213 |
-
# margin-bottom: 1rem;
|
214 |
-
# line-height: 1.6;
|
215 |
-
# }
|
216 |
-
# """
|
217 |
custom_js = """
|
218 |
function tableLinkHack() {
|
219 |
// This is a hack to make the table links work
|
@@ -228,6 +13,18 @@ function tableLinkHack() {
|
|
228 |
|
229 |
custom_css = """
|
230 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
231 |
.tab-buttons button {
|
232 |
font-size: 20px;
|
233 |
}
|
@@ -311,15 +108,30 @@ custom_css = """
|
|
311 |
}
|
312 |
}
|
313 |
|
|
|
|
|
|
|
|
|
|
|
314 |
|
315 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
316 |
|
317 |
-
# .selected.svelte-1tcem6n.svelte-1tcem6n {
|
318 |
-
# background-color: #000000 !important; /* Desired background color */
|
319 |
-
# color: #eb088a !important; /* Desired text color */
|
320 |
-
# border-color: #eb088a !important; /* Desired border color */
|
321 |
-
# }
|
322 |
|
|
|
323 |
|
324 |
get_window_url_params = """
|
325 |
function(url_params) {
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
custom_js = """
|
3 |
function tableLinkHack() {
|
4 |
// This is a hack to make the table links work
|
|
|
13 |
|
14 |
custom_css = """
|
15 |
|
16 |
+
.intro-text {
|
17 |
+
text-align: center; /* Center the text */
|
18 |
+
font-size: 3rem; /* Slightly larger font size if desired */
|
19 |
+
color: #555; /* A slightly softer color than black */
|
20 |
+
margin-bottom: 5px; /* Add some space below the text before the tabs */
|
21 |
+
padding: 0 10px; /* Add some horizontal padding for wider screens */
|
22 |
+
line-height: 1.2; /* Improve readability with line height */
|
23 |
+
max-width: 1200px; /* Limit width for better readability on large screens */
|
24 |
+
margin-left: auto; /* Center the block horizontally */
|
25 |
+
margin-right: auto; /* Center the block horizontally */
|
26 |
+
}
|
27 |
+
|
28 |
.tab-buttons button {
|
29 |
font-size: 20px;
|
30 |
}
|
|
|
108 |
}
|
109 |
}
|
110 |
|
111 |
+
.benchmark-table-container table {
|
112 |
+
width: 100%; /* Make table take full width of its container */
|
113 |
+
border-collapse: collapse; /* Remove spacing between table cells */
|
114 |
+
margin-bottom: 20px; /* Add some space below the table */
|
115 |
+
}
|
116 |
|
117 |
+
.benchmark-table-container th, .benchmark-table-container td {
|
118 |
+
border: 1px solid #ddd; /* Light gray border for cells */
|
119 |
+
padding: 8px; /* Padding within cells for better spacing */
|
120 |
+
text-align: left; /* Align text to the left within cells */
|
121 |
+
vertical-align: top; /* Align content to the top of cells */
|
122 |
+
}
|
123 |
+
|
124 |
+
.benchmark-table-container th {
|
125 |
+
background-color: #f2f2f2; /* Light gray background for header row */
|
126 |
+
font-weight: bold; /* Make header text bold */
|
127 |
+
}
|
128 |
+
|
129 |
+
.benchmark-table-container tbody tr:nth-child(even) {
|
130 |
+
background-color: #f9f9f9; /* Very light gray background for even rows for zebra striping */
|
131 |
+
}
|
132 |
|
|
|
|
|
|
|
|
|
|
|
133 |
|
134 |
+
"""
|
135 |
|
136 |
get_window_url_params = """
|
137 |
function(url_params) {
|