yhavinga Claude commited on
Commit
4143018
Β·
1 Parent(s): afb3003

Fix UI issues and improve model presentation accuracy

Browse files

The interface had critical usability problems that prevented effective use
of the demo. The dark mode was rendering checkboxes invisible and making
the interface hard to read. Additionally, the performance qualifiers
(Snelste/Beste kwaliteit/Gebalanceerd) were misleading users since all
three models have nearly identical SARI scores (66.44-67.80).

This commit resolves these issues by:
- Switching to Default light theme to ensure consistent visibility
- Adding full 'Leesplank Noot' branding to model names for clarity
- Removing misleading performance qualifiers that suggest false differences
- Simplifying to Dutch-only interface as this is a Dutch-specific tool
- Improving layout with clickable example cards in a two-column design

These changes make the demo more honest about model capabilities and more
usable for its target audience of Dutch government communication teams.

πŸ€– Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>

Files changed (1) hide show
  1. app.py +158 -113
app.py CHANGED
@@ -8,9 +8,9 @@ import random
8
 
9
  # Model configurations - ordered as requested
10
  MODEL_ORDER = [
11
- ("EuroLLM-1.7b", "UWV/leesplank-noot-eurollm-1.7b"),
12
- ("Granite-3.3-2b", "UWV/leesplank-noot-granite-3.3-2b"),
13
- ("Llama-3.2-3b", "UWV/leesplank-noot-llama-3.2-3b")
14
  ]
15
 
16
  # System prompt for Llama and Granite models
@@ -115,7 +115,7 @@ def simplify_text_sequential(text: str, selected_models: List[str]):
115
  """Simplify text using multiple models sequentially with progressive updates"""
116
 
117
  if not text.strip():
118
- empty_result = "Voer tekst in om te vereenvoudigen / Enter text to simplify"
119
  yield (empty_result, "") + ("", "") * 2
120
  return
121
 
@@ -123,7 +123,7 @@ def simplify_text_sequential(text: str, selected_models: List[str]):
123
  models_to_run = [(name, path) for name, path in MODEL_ORDER if name in selected_models]
124
 
125
  if not models_to_run:
126
- empty_result = "Selecteer minstens één model / Select at least one model"
127
  yield (empty_result, "") + ("", "") * 2
128
  return
129
 
@@ -132,12 +132,12 @@ def simplify_text_sequential(text: str, selected_models: List[str]):
132
  for name, _ in MODEL_ORDER:
133
  if name in selected_models:
134
  results[name] = {
135
- "text": "⏳ Wachten op verwerking / Waiting for processing...",
136
  "metrics": ""
137
  }
138
  else:
139
  results[name] = {
140
- "text": "Model niet geselecteerd / Model not selected",
141
  "metrics": ""
142
  }
143
 
@@ -155,7 +155,7 @@ def simplify_text_sequential(text: str, selected_models: List[str]):
155
  # Run models sequentially and update progressively
156
  for name, path in models_to_execute:
157
  # Update status to processing
158
- results[name]["text"] = "πŸ”„ Verwerken / Processing..."
159
 
160
  # Yield current state
161
  output_tuple = []
@@ -197,118 +197,119 @@ def simplify_text_sequential(text: str, selected_models: List[str]):
197
  def create_interface():
198
  """Create Gradio interface with enhanced UX"""
199
 
200
- # Enhanced color scheme with salmon/peach accents
201
- uwv_theme = gr.themes.Base(
202
- primary_hue=gr.themes.Color(
203
- c50="#E8F4F8",
204
- c100="#C7E9F1",
205
- c200="#99D4E4",
206
- c300="#66B1CF",
207
- c400="#3397BF",
208
- c500="#01689B",
209
- c600="#01547D",
210
- c700="#01405F",
211
- c800="#002B41",
212
- c900="#001623",
213
- c950="#000B12"
214
- ),
215
- secondary_hue=gr.themes.Color(
216
- c50="#FFF4E6",
217
- c100="#FFE9CC",
218
- c200="#FCE1BF",
219
- c300="#FFBC66",
220
- c400="#FFA633",
221
- c500="#E17000",
222
- c600="#B45A00",
223
- c700="#874400",
224
- c800="#5A2D00",
225
- c900="#2D1700",
226
- c950="#170B00"
227
- ),
228
  font=[gr.themes.GoogleFont("Open Sans"), "Arial", "sans-serif"]
229
  ).set(
230
- body_background_fill="#E8F4F8",
 
 
 
 
 
231
  button_primary_background_fill="#01689B",
 
232
  button_primary_background_fill_hover="#01547D",
 
 
 
 
 
233
  block_title_text_color="#01689B",
 
234
  block_label_text_color="#333333",
 
 
 
 
 
235
  panel_background_fill="#FFFFFF",
236
- panel_border_color="#C7E9F1"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
  )
238
 
239
  with gr.Blocks(
240
  title="Leesplank Noot - UWV Innovatie Hub",
241
  theme=uwv_theme,
242
  css="""
243
- .gradio-container {
244
- font-family: 'Open Sans', Arial, sans-serif !important;
245
- background: linear-gradient(180deg, #E8F4F8 0%, #FFFFFF 100%);
246
- }
247
  h1 {
248
- color: #01689B !important;
249
  border-top: 4px solid #01689B;
250
  padding-top: 1.5rem;
251
- margin-top: 0;
252
- }
253
- h2 {
254
- color: #01547D !important;
255
  }
 
256
  .author-block {
257
  background: linear-gradient(135deg, #FCE1BF 0%, #FFE9CC 100%);
258
  padding: 1.5rem;
259
  border-left: 4px solid #01689B;
260
  margin: 1.5rem 0;
261
  border-radius: 0 8px 8px 0;
262
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
263
  }
264
- .model-output-card {
265
- background: white;
266
- border-radius: 8px;
 
 
 
267
  padding: 1.5rem;
268
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
269
- border-top: 3px solid #01689B;
270
- min-height: 200px;
271
- }
272
- .model-title {
273
- color: #01689B;
274
- font-weight: bold;
275
- font-size: 1.1em;
276
- margin-bottom: 1rem;
277
- padding-bottom: 0.5rem;
278
- border-bottom: 1px solid #E8F4F8;
279
- }
280
- .checkbox-group {
281
- background: #FCE1BF;
282
- padding: 1rem;
283
  border-radius: 8px;
284
- margin: 1rem 0;
285
  }
286
- .footer-section {
287
- border-top: 4px solid #01689B;
288
- background: linear-gradient(180deg, #FFFFFF 0%, #E8F4F8 100%);
289
- margin-top: 3rem;
290
- padding-top: 2rem;
291
- }
292
- .examples-section {
293
- background: #FFF4E6;
294
- padding: 1rem;
295
- border-radius: 8px;
296
- margin: 1rem 0;
297
  }
298
  """
299
  ) as demo:
300
  gr.Markdown("""
301
  # πŸ“ Leesplank Noot
302
- ## Nederlandse Tekstvereenvoudiging / Dutch Text Simplification
303
-
304
- <div class="author-block">
305
- <strong>Ontwikkeld door / Developed by:</strong> UWV Innovatie Hub<br>
306
- <strong>Contact:</strong> <a href="mailto:innovatie@uwv.nl">innovatie@uwv.nl</a><br>
307
- <strong>Mede mogelijk gemaakt door / Partly funded by:</strong> IDO 2024 (Innovatie en Digitalisering Ontwikkelingen)
308
- </div>
309
-
310
- Vergelijk tekstvereenvoudiging van drie AI-modellen tegelijk.
311
- *Compare text simplification from three AI models simultaneously.*
312
  """)
313
 
314
  with gr.Row():
@@ -317,28 +318,73 @@ def create_interface():
317
  model_checkboxes = gr.CheckboxGroup(
318
  choices=[name for name, _ in MODEL_ORDER],
319
  value=[name for name, _ in MODEL_ORDER], # All selected by default
320
- label="Selecteer modellen / Select models",
321
- info="Kies welke modellen gebruikt worden / Choose which models to use"
322
  )
323
 
 
 
 
 
 
 
 
 
 
 
 
 
 
324
  with gr.Row():
325
  with gr.Column(scale=1):
326
  input_text = gr.Textbox(
327
- label="Originele tekst / Original text",
328
- placeholder="Voer hier de te vereenvoudigen tekst in...\nEnter text to simplify here...",
329
- lines=8
 
330
  )
331
 
332
  simplify_btn = gr.Button(
333
- "πŸ”„ Vereenvoudig met alle geselecteerde modellen / Simplify with all selected models",
334
  variant="primary",
335
- scale=1
336
  )
337
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
338
  # Three-column layout for results
339
  with gr.Row(equal_height=True):
340
  with gr.Column(scale=1, visible=True) as col_eurollm:
341
- gr.Markdown('<div class="model-title">πŸš€ EuroLLM-1.7b (Snelste / Fastest)</div>')
342
  output_eurollm = gr.Textbox(
343
  label="",
344
  lines=10,
@@ -347,7 +393,7 @@ def create_interface():
347
  metrics_eurollm = gr.Markdown("")
348
 
349
  with gr.Column(scale=1, visible=True) as col_granite:
350
- gr.Markdown('<div class="model-title">πŸ’Ž Granite-3.3-2b (Beste kwaliteit / Best quality)</div>')
351
  output_granite = gr.Textbox(
352
  label="",
353
  lines=10,
@@ -356,7 +402,7 @@ def create_interface():
356
  metrics_granite = gr.Markdown("")
357
 
358
  with gr.Column(scale=1, visible=True) as col_llama:
359
- gr.Markdown('<div class="model-title">πŸ¦™ Llama-3.2-3b (Gebalanceerd / Balanced)</div>')
360
  output_llama = gr.Textbox(
361
  label="",
362
  lines=10,
@@ -364,33 +410,26 @@ def create_interface():
364
  )
365
  metrics_llama = gr.Markdown("")
366
 
367
- with gr.Row():
368
- gr.Examples(
369
- examples=EXAMPLES,
370
- inputs=input_text,
371
- label="Voorbeelden / Examples"
372
- )
373
-
374
- with gr.Accordion("ℹ️ Over deze demo / About this demo", open=False):
375
  gr.Markdown("""
376
- ## Project Informatie / Project Information
377
 
378
  Deze demo toont drie Nederlandse tekstvereenvoudigingsmodellen ontwikkeld door **UWV Innovatie Hub** als onderdeel van het Leesplank Noot project.
379
 
380
- ### Modellen / Models:
381
- - **EuroLLM-1.7b**: Snelste model (27.5 tokens/s)
382
- - **Granite-3.3-2b**: Hoogste kwaliteit (SARI 67.80)
383
- - **Llama-3.2-3b**: Gebalanceerde prestaties
384
 
385
  Alle modellen zijn getraind op 1.89M Nederlandse Wikipedia-vereenvoudigingen en produceren tekst op B1-niveau voor betere toegankelijkheid van overheidscommunicatie.
386
 
387
- ### Ontwikkeling / Development:
388
  - **Ontwikkeld door:** UWV Innovatie Hub
389
  - **Projectleiding:** innovatie@uwv.nl
390
  - **Financiering:** Dit project is mede mogelijk gemaakt door **IDO 2024** (Innovatie en Digitalisering Ontwikkelingen)
391
  - **Licentie:** Apache 2.0
392
 
393
- ### Doel / Purpose:
394
  Het verbeteren van de toegankelijkheid van overheidsteksten voor burgers met leesmoeilijkheden, in lijn met de Wet digitale overheid en EU toegankelijkheidsrichtlijnen.
395
  """)
396
 
@@ -415,6 +454,12 @@ def create_interface():
415
  ]
416
  )
417
 
 
 
 
 
 
 
418
  # Footer
419
  gr.Markdown("""
420
  <div class="footer-section">
 
8
 
9
  # Model configurations - ordered as requested
10
  MODEL_ORDER = [
11
+ ("Leesplank Noot EuroLLM-1.7b", "UWV/leesplank-noot-eurollm-1.7b"),
12
+ ("Leesplank Noot Granite-3.3-2b", "UWV/leesplank-noot-granite-3.3-2b"),
13
+ ("Leesplank Noot Llama-3.2-3b", "UWV/leesplank-noot-llama-3.2-3b")
14
  ]
15
 
16
  # System prompt for Llama and Granite models
 
115
  """Simplify text using multiple models sequentially with progressive updates"""
116
 
117
  if not text.strip():
118
+ empty_result = "Voer tekst in om te vereenvoudigen"
119
  yield (empty_result, "") + ("", "") * 2
120
  return
121
 
 
123
  models_to_run = [(name, path) for name, path in MODEL_ORDER if name in selected_models]
124
 
125
  if not models_to_run:
126
+ empty_result = "Selecteer minstens één model"
127
  yield (empty_result, "") + ("", "") * 2
128
  return
129
 
 
132
  for name, _ in MODEL_ORDER:
133
  if name in selected_models:
134
  results[name] = {
135
+ "text": "⏳ Wachten op verwerking...",
136
  "metrics": ""
137
  }
138
  else:
139
  results[name] = {
140
+ "text": "Model niet geselecteerd",
141
  "metrics": ""
142
  }
143
 
 
155
  # Run models sequentially and update progressively
156
  for name, path in models_to_execute:
157
  # Update status to processing
158
+ results[name]["text"] = "πŸ”„ Verwerken..."
159
 
160
  # Yield current state
161
  output_tuple = []
 
197
  def create_interface():
198
  """Create Gradio interface with enhanced UX"""
199
 
200
+ # Use Default theme which is light by default
201
+ uwv_theme = gr.themes.Default(
202
+ primary_hue=gr.themes.colors.blue,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  font=[gr.themes.GoogleFont("Open Sans"), "Arial", "sans-serif"]
204
  ).set(
205
+ body_background_fill="#FFFFFF",
206
+ body_background_fill_dark="#FFFFFF",
207
+ background_fill_primary="#F7F9FB",
208
+ background_fill_primary_dark="#F7F9FB",
209
+ background_fill_secondary="#FFFFFF",
210
+ background_fill_secondary_dark="#FFFFFF",
211
  button_primary_background_fill="#01689B",
212
+ button_primary_background_fill_dark="#01689B",
213
  button_primary_background_fill_hover="#01547D",
214
+ button_primary_background_fill_hover_dark="#01547D",
215
+ button_primary_text_color="#FFFFFF",
216
+ button_primary_text_color_dark="#FFFFFF",
217
+ block_background_fill="#FFFFFF",
218
+ block_background_fill_dark="#FFFFFF",
219
  block_title_text_color="#01689B",
220
+ block_title_text_color_dark="#01689B",
221
  block_label_text_color="#333333",
222
+ block_label_text_color_dark="#333333",
223
+ body_text_color="#333333",
224
+ body_text_color_dark="#333333",
225
+ body_text_color_subdued="#666666",
226
+ body_text_color_subdued_dark="#666666",
227
  panel_background_fill="#FFFFFF",
228
+ panel_background_fill_dark="#FFFFFF",
229
+ panel_border_color="#E0E0E0",
230
+ panel_border_color_dark="#E0E0E0",
231
+ input_background_fill="#FFFFFF",
232
+ input_background_fill_dark="#FFFFFF",
233
+ input_background_fill_focus="#FFFFFF",
234
+ input_background_fill_focus_dark="#FFFFFF",
235
+ input_background_fill_hover="#FFFFFF",
236
+ input_background_fill_hover_dark="#FFFFFF",
237
+ input_border_color="#E0E0E0",
238
+ input_border_color_dark="#E0E0E0",
239
+ input_border_color_focus="#01689B",
240
+ input_border_color_focus_dark="#01689B",
241
+ input_border_color_hover="#01689B",
242
+ input_border_color_hover_dark="#01689B",
243
+ input_placeholder_color="#999999",
244
+ input_placeholder_color_dark="#999999",
245
+ checkbox_background_color="#FFFFFF",
246
+ checkbox_background_color_dark="#FFFFFF",
247
+ checkbox_background_color_focus="#FFFFFF",
248
+ checkbox_background_color_focus_dark="#FFFFFF",
249
+ checkbox_background_color_hover="#FFFFFF",
250
+ checkbox_background_color_hover_dark="#FFFFFF",
251
+ checkbox_background_color_selected="#01689B",
252
+ checkbox_background_color_selected_dark="#01689B",
253
+ checkbox_border_color="#01689B",
254
+ checkbox_border_color_dark="#01689B",
255
+ checkbox_border_color_focus="#01689B",
256
+ checkbox_border_color_focus_dark="#01689B",
257
+ checkbox_border_color_hover="#01547D",
258
+ checkbox_border_color_hover_dark="#01547D",
259
+ checkbox_border_color_selected="#01689B",
260
+ checkbox_border_color_selected_dark="#01689B",
261
+ checkbox_label_background_fill="#FFFFFF",
262
+ checkbox_label_background_fill_dark="#FFFFFF",
263
+ checkbox_label_background_fill_hover="#F7F9FB",
264
+ checkbox_label_background_fill_hover_dark="#F7F9FB",
265
+ checkbox_label_background_fill_selected="#E8F4F8",
266
+ checkbox_label_background_fill_selected_dark="#E8F4F8",
267
+ checkbox_label_text_color="#333333",
268
+ checkbox_label_text_color_dark="#333333",
269
+ checkbox_label_text_color_selected="#01689B",
270
+ checkbox_label_text_color_selected_dark="#01689B"
271
  )
272
 
273
  with gr.Blocks(
274
  title="Leesplank Noot - UWV Innovatie Hub",
275
  theme=uwv_theme,
276
  css="""
277
+ /* Minimal UWV styling - let Gradio handle most things */
 
 
 
278
  h1 {
279
+ color: #01689B;
280
  border-top: 4px solid #01689B;
281
  padding-top: 1.5rem;
 
 
 
 
282
  }
283
+
284
  .author-block {
285
  background: linear-gradient(135deg, #FCE1BF 0%, #FFE9CC 100%);
286
  padding: 1.5rem;
287
  border-left: 4px solid #01689B;
288
  margin: 1.5rem 0;
289
  border-radius: 0 8px 8px 0;
 
290
  }
291
+
292
+ /* Simple styling for example text cards */
293
+ .example-text-card {
294
+ background: linear-gradient(135deg, #FCE1BF 0%, #FFE9CC 100%);
295
+ border: 2px solid #E8F4F8;
296
+ color: #333;
297
  padding: 1.5rem;
298
+ min-height: 140px;
299
+ line-height: 1.6;
300
+ white-space: pre-wrap;
301
+ cursor: pointer;
 
 
 
 
 
 
 
 
 
 
 
302
  border-radius: 8px;
 
303
  }
304
+ .example-text-card:hover {
305
+ border-color: #01689B;
306
+ transform: translateY(-2px);
 
 
 
 
 
 
 
 
307
  }
308
  """
309
  ) as demo:
310
  gr.Markdown("""
311
  # πŸ“ Leesplank Noot
312
+ ## Nederlandse Tekstvereenvoudiging
 
 
 
 
 
 
 
 
 
313
  """)
314
 
315
  with gr.Row():
 
318
  model_checkboxes = gr.CheckboxGroup(
319
  choices=[name for name, _ in MODEL_ORDER],
320
  value=[name for name, _ in MODEL_ORDER], # All selected by default
321
+ label="Selecteer modellen",
322
+ info="Kies welke modellen je wilt vergelijken"
323
  )
324
 
325
+ with gr.Column(scale=1):
326
+ gr.HTML("""
327
+ <div class="author-block">
328
+ <strong>Ontwikkeld door:</strong> UWV Innovatie Hub<br>
329
+ <strong>Contact:</strong> <a href="mailto:innovatie@uwv.nl">innovatie@uwv.nl</a><br>
330
+ <strong>Mede mogelijk gemaakt door:</strong> IDO 2024 (Innovatie en Digitalisering Ontwikkelingen)
331
+ </div>
332
+ """)
333
+
334
+ gr.Markdown("""
335
+ Vergelijk tekstvereenvoudiging van drie AI-modellen naast elkaar.
336
+ """)
337
+
338
  with gr.Row():
339
  with gr.Column(scale=1):
340
  input_text = gr.Textbox(
341
+ label="Voer je tekst in",
342
+ placeholder="Typ of plak hier de tekst die je wilt vereenvoudigen...",
343
+ lines=12,
344
+ max_lines=20
345
  )
346
 
347
  simplify_btn = gr.Button(
348
+ "πŸ”„ Vereenvoudig tekst",
349
  variant="primary",
350
+ size="lg"
351
  )
352
 
353
+ with gr.Column(scale=2):
354
+ gr.Markdown("### πŸ“š Voorbeeldteksten")
355
+
356
+ with gr.Row():
357
+ with gr.Column(scale=1):
358
+ btn1 = gr.Button(
359
+ f"πŸ”¬ FYSICA\n\n{EXAMPLES[0][:120]}...",
360
+ elem_classes="example-text-card",
361
+ size="lg"
362
+ )
363
+ with gr.Column(scale=1):
364
+ btn2 = gr.Button(
365
+ f"βš›οΈ NATUURKUNDE\n\n{EXAMPLES[1][:120]}...",
366
+ elem_classes="example-text-card",
367
+ size="lg"
368
+ )
369
+
370
+ with gr.Row():
371
+ with gr.Column(scale=1):
372
+ btn3 = gr.Button(
373
+ f"🧬 BIOLOGIE\n\n{EXAMPLES[2][:120]}...",
374
+ elem_classes="example-text-card",
375
+ size="lg"
376
+ )
377
+ with gr.Column(scale=1):
378
+ btn4 = gr.Button(
379
+ f"πŸ’» INFORMATICA\n\n{EXAMPLES[3][:120]}...",
380
+ elem_classes="example-text-card",
381
+ size="lg"
382
+ )
383
+
384
  # Three-column layout for results
385
  with gr.Row(equal_height=True):
386
  with gr.Column(scale=1, visible=True) as col_eurollm:
387
+ gr.Markdown('<div class="model-title">πŸš€ Leesplank Noot EuroLLM-1.7b</div>')
388
  output_eurollm = gr.Textbox(
389
  label="",
390
  lines=10,
 
393
  metrics_eurollm = gr.Markdown("")
394
 
395
  with gr.Column(scale=1, visible=True) as col_granite:
396
+ gr.Markdown('<div class="model-title">πŸ’Ž Leesplank Noot Granite-3.3-2b</div>')
397
  output_granite = gr.Textbox(
398
  label="",
399
  lines=10,
 
402
  metrics_granite = gr.Markdown("")
403
 
404
  with gr.Column(scale=1, visible=True) as col_llama:
405
+ gr.Markdown('<div class="model-title">πŸ¦™ Leesplank Noot Llama-3.2-3b</div>')
406
  output_llama = gr.Textbox(
407
  label="",
408
  lines=10,
 
410
  )
411
  metrics_llama = gr.Markdown("")
412
 
413
+ with gr.Accordion("ℹ️ Over deze demo", open=False):
 
 
 
 
 
 
 
414
  gr.Markdown("""
415
+ ## Projectinformatie
416
 
417
  Deze demo toont drie Nederlandse tekstvereenvoudigingsmodellen ontwikkeld door **UWV Innovatie Hub** als onderdeel van het Leesplank Noot project.
418
 
419
+ ### Modellen:
420
+ - **Leesplank Noot EuroLLM-1.7b**: 1.7B parameters, SARI score: 66.44
421
+ - **Leesplank Noot Granite-3.3-2b**: 2B parameters, SARI score: 67.80
422
+ - **Leesplank Noot Llama-3.2-3b**: 3B parameters, SARI score: 67.50
423
 
424
  Alle modellen zijn getraind op 1.89M Nederlandse Wikipedia-vereenvoudigingen en produceren tekst op B1-niveau voor betere toegankelijkheid van overheidscommunicatie.
425
 
426
+ ### Ontwikkeling:
427
  - **Ontwikkeld door:** UWV Innovatie Hub
428
  - **Projectleiding:** innovatie@uwv.nl
429
  - **Financiering:** Dit project is mede mogelijk gemaakt door **IDO 2024** (Innovatie en Digitalisering Ontwikkelingen)
430
  - **Licentie:** Apache 2.0
431
 
432
+ ### Doel:
433
  Het verbeteren van de toegankelijkheid van overheidsteksten voor burgers met leesmoeilijkheden, in lijn met de Wet digitale overheid en EU toegankelijkheidsrichtlijnen.
434
  """)
435
 
 
454
  ]
455
  )
456
 
457
+ # Example button handlers
458
+ btn1.click(fn=lambda: EXAMPLES[0], outputs=input_text)
459
+ btn2.click(fn=lambda: EXAMPLES[1], outputs=input_text)
460
+ btn3.click(fn=lambda: EXAMPLES[2], outputs=input_text)
461
+ btn4.click(fn=lambda: EXAMPLES[3], outputs=input_text)
462
+
463
  # Footer
464
  gr.Markdown("""
465
  <div class="footer-section">