desy-html 15.0.3 → 16.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 (184) hide show
  1. package/AGENTS.md +180 -0
  2. package/README.md +22 -4
  3. package/TESTING_PLAN.md +369 -0
  4. package/branding/BRANDING.md +369 -0
  5. package/branding/branding.config.js +69 -0
  6. package/branding/branding.config.yourorganization.js +65 -0
  7. package/branding/logos/aragon-compact.svg +1 -0
  8. package/branding/logos/aragon-expanded.svg +1 -0
  9. package/branding/logos/aragon-mini.svg +1 -0
  10. package/branding/logos/yourlogo-compact.svg +13 -0
  11. package/branding/logos/yourlogo-expanded.svg +17 -0
  12. package/branding/logos/yourlogo-mini.svg +17 -0
  13. package/branding/vite-branding-plugin.js +128 -0
  14. package/docs/_global.head.njk +12 -4
  15. package/docs/_macro.example-render.njk +6 -0
  16. package/docs/catalogo.html +2 -2
  17. package/docs/componentes.html +2 -2
  18. package/docs/estilos.html +1 -1
  19. package/docs/examples-accordion-history.html +1 -1
  20. package/docs/examples-accordion.html +1 -1
  21. package/docs/examples-alert.html +1 -1
  22. package/docs/examples-breadcrumbs.html +1 -1
  23. package/docs/examples-button-loader.html +1 -1
  24. package/docs/examples-button.html +1 -1
  25. package/docs/examples-card.html +2 -2
  26. package/docs/examples-character-count.html +1 -1
  27. package/docs/examples-checkboxes.html +2 -2
  28. package/docs/examples-collapsible.html +2 -2
  29. package/docs/examples-date-input.html +1 -1
  30. package/docs/examples-datepicker.html +1 -1
  31. package/docs/examples-description-list.html +1 -1
  32. package/docs/examples-details.html +1 -1
  33. package/docs/examples-dialog.html +2 -2
  34. package/docs/examples-dropdown.html +1 -1
  35. package/docs/examples-error-message.html +1 -1
  36. package/docs/examples-error-summary.html +1 -1
  37. package/docs/examples-fieldset.html +1 -1
  38. package/docs/examples-file-upload.html +1 -1
  39. package/docs/examples-footer.html +1 -1
  40. package/docs/examples-header-advanced.html +1 -1
  41. package/docs/examples-header-mini.html +1 -1
  42. package/docs/examples-header.html +1 -1
  43. package/docs/examples-hint.html +1 -1
  44. package/docs/examples-input-group.html +1 -1
  45. package/docs/examples-input.html +1 -1
  46. package/docs/examples-item.html +1 -1
  47. package/docs/examples-label.html +1 -1
  48. package/docs/examples-links-list.html +2 -2
  49. package/docs/examples-listbox.html +1 -1
  50. package/docs/examples-media-object.html +2 -2
  51. package/docs/examples-menu-horizontal.html +1 -1
  52. package/docs/examples-menu-navigation.html +1 -1
  53. package/docs/examples-menu-vertical.html +2 -2
  54. package/docs/examples-menubar.html +2 -2
  55. package/docs/examples-modal.html +2 -2
  56. package/docs/examples-nav.html +1 -1
  57. package/docs/examples-notification.html +1 -1
  58. package/docs/examples-pagination.html +1 -1
  59. package/docs/examples-pill.html +1 -1
  60. package/docs/examples-radios.html +1 -1
  61. package/docs/examples-searchbar.html +1 -1
  62. package/docs/examples-select.html +1 -2
  63. package/docs/examples-skip-link.html +1 -1
  64. package/docs/examples-spinner.html +1 -1
  65. package/docs/examples-status-item.html +1 -1
  66. package/docs/examples-status.html +1 -1
  67. package/docs/examples-table-advanced.html +1 -1
  68. package/docs/examples-table.html +1 -1
  69. package/docs/examples-tabs.html +1 -1
  70. package/docs/examples-textarea.html +1 -1
  71. package/docs/examples-toggle.html +1 -1
  72. package/docs/examples-tooltip.html +1 -1
  73. package/docs/examples-tree.html +1 -1
  74. package/docs/examples-treegrid.html +1 -1
  75. package/docs/index.html +10 -3
  76. package/docs/pagina-accesibilidad.html +4 -4
  77. package/docs/pagina-mapa-web.html +3 -3
  78. package/docs/pagina-prueba.html +2 -2
  79. package/docs/plantilla-con-header-advanced.html +2 -2
  80. package/docs/plantilla-editar-con-cabecera-fija-y-sidebar-sticky.html +2 -2
  81. package/docs/plantilla-editar-con-cabecera-fija.html +2 -2
  82. package/docs/plantilla-logueado-con-cabecera-fija-headroom.html +2 -2
  83. package/docs/plantilla-logueado-con-cabecera-fija.html +2 -2
  84. package/docs/plantilla-logueado-con-selector-de-app-y-sidebar.html +2 -2
  85. package/docs/plantilla-logueado-con-selector-de-app-y-subheader.html +2 -2
  86. package/docs/plantilla-logueado-con-selector-de-app.html +2 -2
  87. package/docs/plantilla-logueado-con-titulo-de-app.html +2 -2
  88. package/docs/plantilla-sin-loguear.html +2 -2
  89. package/docs/plantillas.html +3 -3
  90. package/docs/spinner-plantilla-con-header-advanced.html +2 -2
  91. package/docs/spinner-plantilla-editar-con-cabecera-fija.html +1 -2
  92. package/docs/spinner-plantilla-logueado-con-cabecera-fija.html +2 -2
  93. package/docs/spinner-plantilla-logueado-con-selector-de-app-y-subheader.html +1 -3
  94. package/docs/spinner-plantilla-logueado-con-titulo-de-app.html +2 -2
  95. package/docs/spinner-plantilla-sin-loguear.html +2 -2
  96. package/package.json +7 -2
  97. package/replit.md +2 -2
  98. package/src/css/branding-variables.css +37 -0
  99. package/src/css/component.text.css +5 -0
  100. package/src/css/styles.css +18 -3
  101. package/src/js/aria/notification.js +6 -6
  102. package/src/js/desy-html.js +5 -0
  103. package/src/templates/components/accordion/_examples.accordion.njk +84 -0
  104. package/src/templates/components/accordion-history/_examples.accordion-history.njk +90 -0
  105. package/src/templates/components/alert/_examples.alert.njk +12 -0
  106. package/src/templates/components/breadcrumbs/_examples.breadcrumbs.njk +90 -0
  107. package/src/templates/components/breadcrumbs/_template.breadcrumbs.njk +1 -1
  108. package/src/templates/components/button/_examples.button.njk +216 -0
  109. package/src/templates/components/button-loader/_examples.button-loader.njk +204 -0
  110. package/src/templates/components/card/_examples.card.njk +78 -0
  111. package/src/templates/components/character-count/_examples.character-count.njk +60 -0
  112. package/src/templates/components/checkboxes/_examples.checkboxes.njk +120 -0
  113. package/src/templates/components/collapsible/_examples.collapsible.njk +30 -0
  114. package/src/templates/components/date-input/_examples.date-input.njk +78 -0
  115. package/src/templates/components/datepicker/_examples.datepicker.njk +84 -0
  116. package/src/templates/components/datepicker/_template.datepicker.njk +1 -1
  117. package/src/templates/components/description-list/_examples.description-list.njk +66 -0
  118. package/src/templates/components/details/_examples.details.njk +24 -0
  119. package/src/templates/components/dialog/_examples.dialog.njk +18 -0
  120. package/src/templates/components/dropdown/_examples.dropdown.njk +90 -0
  121. package/src/templates/components/error-message/_examples.error-message.njk +12 -0
  122. package/src/templates/components/error-summary/_examples.error-summary.njk +30 -0
  123. package/src/templates/components/fieldset/_examples.fieldset.njk +18 -0
  124. package/src/templates/components/file-upload/_examples.file-upload.njk +30 -0
  125. package/src/templates/components/footer/_examples.footer.njk +108 -0
  126. package/src/templates/components/footer/_styles.footer.css +20 -20
  127. package/src/templates/components/footer/_template.footer.njk +21 -6
  128. package/src/templates/components/footer/params.footer.yaml +4 -4
  129. package/src/templates/components/header/_examples.header.njk +85 -1
  130. package/src/templates/components/header/_template.header.njk +20 -4
  131. package/src/templates/components/header/params.header.yaml +2 -2
  132. package/src/templates/components/header-advanced/_examples.header-advanced.njk +84 -7
  133. package/src/templates/components/header-advanced/_template.header-advanced.njk +3 -1
  134. package/src/templates/components/header-mini/_examples.header-mini.njk +15 -3
  135. package/src/templates/components/header-mini/_template.header-mini.njk +14 -2
  136. package/src/templates/components/header-mini/params.header-mini.yaml +1 -1
  137. package/src/templates/components/hint/_examples.hint.njk +12 -0
  138. package/src/templates/components/input/_examples.input.njk +120 -0
  139. package/src/templates/components/input/_template.input.njk +1 -1
  140. package/src/templates/components/input-group/_examples.input-group.njk +54 -0
  141. package/src/templates/components/item/_examples.item.njk +96 -0
  142. package/src/templates/components/label/_examples.label.njk +24 -0
  143. package/src/templates/components/links-list/_examples.links-list.njk +114 -0
  144. package/src/templates/components/listbox/_examples.listbox.njk +140 -20
  145. package/src/templates/components/media-object/_examples.media-object.njk +30 -0
  146. package/src/templates/components/menu-horizontal/_examples.menu-horizontal.njk +84 -0
  147. package/src/templates/components/menu-navigation/_examples.menu-navigation.njk +102 -0
  148. package/src/templates/components/menu-vertical/_examples.menu-vertical.njk +96 -0
  149. package/src/templates/components/menubar/_examples.menubar.njk +66 -0
  150. package/src/templates/components/modal/_examples.modal.njk +78 -0
  151. package/src/templates/components/nav/_examples.nav.njk +66 -0
  152. package/src/templates/components/notification/_examples.notification.njk +78 -0
  153. package/src/templates/components/pagination/_examples.pagination.njk +42 -0
  154. package/src/templates/components/pill/_examples.pill.njk +78 -0
  155. package/src/templates/components/radios/_examples.radios.njk +96 -0
  156. package/src/templates/components/searchbar/_examples.searchbar.njk +48 -0
  157. package/src/templates/components/searchbar/_template.searchbar.njk +1 -1
  158. package/src/templates/components/select/_examples.select.njk +54 -0
  159. package/src/templates/components/select/_template.select.njk +1 -1
  160. package/src/templates/components/skip-link/_examples.skip-link.njk +12 -0
  161. package/src/templates/components/spinner/_examples.spinner.njk +49 -1
  162. package/src/templates/components/status/_examples.status.njk +31 -1
  163. package/src/templates/components/status-item/_examples.status-item.njk +73 -1
  164. package/src/templates/components/table/_examples.table.njk +37 -1
  165. package/src/templates/components/table-advanced/_examples.table-advanced.njk +54 -0
  166. package/src/templates/components/table-advanced/_styles.table-advanced.css +0 -2
  167. package/src/templates/components/tabs/_examples.tabs.njk +72 -0
  168. package/src/templates/components/textarea/_examples.textarea.njk +54 -0
  169. package/src/templates/components/textarea/_template.textarea.njk +1 -1
  170. package/src/templates/components/toggle/_examples.toggle.njk +60 -0
  171. package/src/templates/components/tooltip/_examples.tooltip.njk +48 -0
  172. package/src/templates/components/tree/_examples.tree.njk +150 -0
  173. package/src/templates/components/treegrid/_examples.treegrid.njk +30 -0
  174. package/src/templates/components/treegrid/_template.treegrid.njk +1 -1
  175. package/src/templates/pages/_page.head.njk +11 -3
  176. package/vite.config.js +215 -0
  177. package/attached_assets/Pasted--desy-html-starter-Node-Version-https-img-shields-io-ba_1765448923362.txt +0 -431
  178. /package/{public/images/general-lg.svg → branding/images/header-background-lg.svg} +0 -0
  179. /package/{public/images/general.svg → branding/images/header-background.svg} +0 -0
  180. /package/{public/images/logo-ue.svg → branding/logos/eu/logo-eu.svg} +0 -0
  181. /package/{public/images → branding/logos/eu}/logo-feader.svg +0 -0
  182. /package/{public/images → branding/logos/eu}/logo-feder.svg +0 -0
  183. /package/{public/images → branding/logos/eu}/logo-fse.svg +0 -0
  184. /package/{public/images → branding/logos/eu}/logo-plurifondo.svg +0 -0
@@ -153,6 +153,7 @@ export function listboxComponent(aria) {
153
153
  },
154
154
  onHidden: (instance) => {
155
155
  buttonListbox.classList.remove('open');
156
+ buttonListbox.setAttribute('aria-expanded', 'false');
156
157
  }
157
158
  });
158
159
 
@@ -161,6 +162,7 @@ export function listboxComponent(aria) {
161
162
  instance.show();
162
163
  list.focus();
163
164
  buttonListbox.classList.add('open');
165
+ buttonListbox.setAttribute('aria-expanded', 'true');
164
166
  } else {
165
167
  list.blur();
166
168
  instance.hide();
@@ -187,6 +189,9 @@ export function listboxComponent(aria) {
187
189
  buttonListbox.click();
188
190
  });
189
191
  }
192
+
193
+ // Initialize aria-expanded state
194
+ buttonListbox.setAttribute('aria-expanded', 'false');
190
195
  }
191
196
  }
192
197
  }
@@ -20,6 +20,12 @@
20
20
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
21
21
  }
22
22
  ]
23
+ },
24
+ "visualDescription": "Componente acordeón con tres ítems dentro de un contenedor con borde gris claro. Cada ítem muestra un texto de encabezado en gris oscuro alineado a la izquierda y un enlace en gris claro alineado a la derecha. El título del componente aparece en gris oscuro encima del contenedor.",
25
+ "_generated": {
26
+ "hash": "d7ede59b51fe850ce40df95a0a95a583",
27
+ "version": "15.0.3",
28
+ "timestamp": "2026-01-30T18:46:59.819Z"
23
29
  }
24
30
  },
25
31
  {
@@ -43,6 +49,12 @@
43
49
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
44
50
  }
45
51
  ]
52
+ },
53
+ "visualDescription": "Componente acordeón con tres ítems dentro de un contenedor con borde gris claro. Cada ítem muestra un texto de encabezado en gris oscuro alineado a la izquierda y un enlace en gris claro alineado a la derecha. El título del componente aparece en gris oscuro encima del contenedor.",
54
+ "_generated": {
55
+ "hash": "e6f2aa78c1838403ec4ee7df7b1e719c",
56
+ "version": "15.0.3",
57
+ "timestamp": "2026-01-30T18:46:59.819Z"
46
58
  }
47
59
  },
48
60
  {
@@ -66,6 +78,12 @@
66
78
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
67
79
  }
68
80
  ]
81
+ },
82
+ "visualDescription": "Componente acordeón con tres ítems dentro de un contenedor con borde gris claro. Cada ítem muestra un texto de encabezado en gris oscuro alineado a la izquierda y un enlace en gris claro alineado a la derecha. El título del componente aparece en gris oscuro encima del contenedor.",
83
+ "_generated": {
84
+ "hash": "edd56dd3213c489c5268159b482fe030",
85
+ "version": "15.0.3",
86
+ "timestamp": "2026-01-30T18:46:59.819Z"
69
87
  }
70
88
  },
71
89
  {
@@ -93,6 +111,12 @@
93
111
  "attributes": {
94
112
  "id": "accordion"
95
113
  }
114
+ },
115
+ "visualDescription": "Acordeón con borde gris claro, fondo blanco. Incluye tres ítems apilados verticalmente con títulos en texto negro regular y enlaces alineados a la derecha en azul. El segundo ítem muestra contenido expandido con área de texto visible en fondo blanco.",
116
+ "_generated": {
117
+ "hash": "67e5741571afca4fd745b203e8a26f28",
118
+ "version": "15.0.3",
119
+ "timestamp": "2026-01-30T18:47:08.520Z"
96
120
  }
97
121
  },
98
122
  {
@@ -121,6 +145,12 @@
121
145
  "attributes": {
122
146
  "id": "accordion-multiple"
123
147
  }
148
+ },
149
+ "visualDescription": "Acordeón con borde gris claro, fondo blanco. Contiene tres ítems apilados verticalmente con títulos en texto negro regular y enlaces alineados a la derecha en azul. Los ítems primero y tercero muestran áreas de contenido expandidas con fondo blanco visible.",
150
+ "_generated": {
151
+ "hash": "8cc15dbe93648b3015bd084cf4ae388c",
152
+ "version": "15.0.3",
153
+ "timestamp": "2026-01-30T18:47:08.520Z"
124
154
  }
125
155
  },
126
156
  {
@@ -148,6 +178,12 @@
148
178
  "open": true
149
179
  }
150
180
  ]
181
+ },
182
+ "visualDescription": "Acordeón con borde gris claro, fondo blanco. Presenta tres ítems apilados verticalmente con títulos en texto negro regular y enlace alineado a la derecha en azul. El tercer ítem muestra contenido expandido con área de texto en fondo blanco, mientras los dos primeros permanecen colapsados.",
183
+ "_generated": {
184
+ "hash": "64387f20fb95772be8367028cd58377d",
185
+ "version": "15.0.3",
186
+ "timestamp": "2026-01-30T18:47:08.520Z"
151
187
  }
152
188
  },
153
189
  {
@@ -173,6 +209,12 @@
173
209
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
174
210
  }
175
211
  ]
212
+ },
213
+ "visualDescription": "Acordeón con título en negrita oscuro tamaño grande, contenedor con borde gris claro de 1px y esquinas redondeadas. Tres ítems listados verticalmente con labels en negro peso normal y enlaces alineados a la derecha en color azul.",
214
+ "_generated": {
215
+ "hash": "3bfe8100b6328534aa789be728c993ad",
216
+ "version": "15.0.3",
217
+ "timestamp": "2026-01-30T18:47:18.465Z"
176
218
  }
177
219
  },
178
220
  {
@@ -198,6 +240,12 @@
198
240
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
199
241
  }
200
242
  ]
243
+ },
244
+ "visualDescription": "Acordeón con título principal en negrita tamaño medio-grande, subtítulo secundario en negrita negro debajo, contenedor con borde gris de 1px. Tres ítems con texto descriptivo incluyendo etiquetas HTML `<ol>` y `<li>` en negro, enlaces azules alineados a la derecha.",
245
+ "_generated": {
246
+ "hash": "7e43cadc000d9fe5764c2e4de1474a9e",
247
+ "version": "15.0.3",
248
+ "timestamp": "2026-01-30T18:47:18.465Z"
201
249
  }
202
250
  },
203
251
  {
@@ -226,6 +274,12 @@
226
274
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
227
275
  }
228
276
  ]
277
+ },
278
+ "visualDescription": "Acordeón con título en negrita negro, enlace azul alineado a la derecha en la cabecera, contenedor con borde gris de 1px. Tres ítems donde el primero tiene enlace azul, el segundo muestra contenedor expandido con borde punteado gris y enlace azul, el tercero tiene enlace azul.",
279
+ "_generated": {
280
+ "hash": "1568aee8b48ba13128694be9dbcaf55f",
281
+ "version": "15.0.3",
282
+ "timestamp": "2026-01-30T18:47:18.465Z"
229
283
  }
230
284
  },
231
285
  {
@@ -254,6 +308,12 @@
254
308
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
255
309
  }
256
310
  ]
311
+ },
312
+ "visualDescription": "Accordion con encabezado de sección que incluye un enlace alineado a la derecha. Cada ítem presenta un título en texto negro con enlace en gris a la derecha. Bordes grises claros separan los ítems, con fondo blanco en toda la sección.",
313
+ "_generated": {
314
+ "hash": "5e4ceff7669d666ea0d07515e6faf74a",
315
+ "version": "15.0.3",
316
+ "timestamp": "2026-01-30T18:47:28.590Z"
257
317
  }
258
318
  },
259
319
  {
@@ -308,6 +368,12 @@
308
368
  }
309
369
  }
310
370
  ]
371
+ },
372
+ "visualDescription": "Accordion con encabezado de sección en texto negro. Cada ítem muestra un título en texto negro con icono alineado a la derecha en color gris. Bordes grises finos delimitan cada fila, con fondo blanco uniforme en toda el área.",
373
+ "_generated": {
374
+ "hash": "ff9f223caeae185ddc34c20f82b39eb8",
375
+ "version": "15.0.3",
376
+ "timestamp": "2026-01-30T18:47:28.590Z"
311
377
  }
312
378
  },
313
379
  {
@@ -330,6 +396,12 @@
330
396
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
331
397
  }
332
398
  ]
399
+ },
400
+ "visualDescription": "Accordion con encabezado de sección en texto negro. Cada ítem contiene un título en negro seguido de subtexto en gris claro debajo, con enlace alineado a la derecha. Bordes grises claros separan los ítems, fondo blanco en toda la zona.",
401
+ "_generated": {
402
+ "hash": "db0b1075ced2518162926fe159f5902a",
403
+ "version": "15.0.3",
404
+ "timestamp": "2026-01-30T18:47:28.590Z"
333
405
  }
334
406
  },
335
407
  {
@@ -359,6 +431,12 @@
359
431
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
360
432
  }
361
433
  ]
434
+ },
435
+ "visualDescription": "Acordeón con borde gris claro, conteniendo tres ítems. Cada ítem muestra un label negro a la izquierda y un botón de acción alineado a la derecha. El segundo ítem está expandido, revelando un panel con fondo azul claro que contiene un rectángulo punteado en la esquina superior izquierda.",
436
+ "_generated": {
437
+ "hash": "0816e879a18c6c1f21bacddb67adbc20",
438
+ "version": "15.0.3",
439
+ "timestamp": "2026-01-30T18:47:37.150Z"
362
440
  }
363
441
  },
364
442
  {
@@ -393,6 +471,12 @@
393
471
  }
394
472
  }
395
473
  ]
474
+ },
475
+ "visualDescription": "Acordeón con borde gris claro, conteniendo tres ítems colapsados. Cada ítem muestra un label negro a la izquierda y un enlace gris alineado a la derecha. Los ítems están separados por líneas divisorias horizontales grises. Fondo blanco en toda la estructura del componente.",
476
+ "_generated": {
477
+ "hash": "81e85f8d412458511ccdc67958048875",
478
+ "version": "15.0.3",
479
+ "timestamp": "2026-01-30T18:47:37.150Z"
396
480
  }
397
481
  }
398
482
  ] %}
@@ -20,6 +20,12 @@
20
20
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
21
21
  }
22
22
  ]
23
+ },
24
+ "visualDescription": "Lista de tres ítems de acordeón con fondo blanco. Cada ítem muestra un indicador circular azul a la izquierda, texto de label en negro a tamaño estándar, y link en gris a la derecha. Separadores de línea gris claro entre ítems.",
25
+ "_generated": {
26
+ "hash": "db6342dbbfb54cc774dfc28139820c4a",
27
+ "version": "15.0.3",
28
+ "timestamp": "2026-01-30T18:46:10.876Z"
23
29
  }
24
30
  },
25
31
  {
@@ -55,6 +61,12 @@
55
61
  "status": "pending"
56
62
  }
57
63
  ]
64
+ },
65
+ "visualDescription": "Lista de cinco ítems de acordeón con fondo blanco mostrando diferentes estados visuales. Indicadores de estado variados: círculo gris relleno, círculo gris vacío, círculo azul relleno, círculo vacío con borde negro, círculo vacío con borde gris. Cada ítem tiene texto de label en negro y link alineado a la derecha, con separadores grises entre ítems.",
66
+ "_generated": {
67
+ "hash": "f35b1ec995f9bfdc48262f1ca032351f",
68
+ "version": "15.0.3",
69
+ "timestamp": "2026-01-30T18:46:10.876Z"
58
70
  }
59
71
  },
60
72
  {
@@ -78,6 +90,12 @@
78
90
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
79
91
  }
80
92
  ]
93
+ },
94
+ "visualDescription": "Lista de tres ítems de acordeón con fondo blanco. Indicadores circulares azules a la izquierda de cada ítem, texto de label en negro tamaño estándar, y link \"Mostrar\" en gris posicionado a la derecha. Líneas separadoras grises horizontales dividen cada ítem.",
95
+ "_generated": {
96
+ "hash": "760ccde69171508f302eeb06a47317c7",
97
+ "version": "15.0.3",
98
+ "timestamp": "2026-01-30T18:46:10.876Z"
81
99
  }
82
100
  },
83
101
  {
@@ -102,6 +120,12 @@
102
120
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
103
121
  }
104
122
  ]
123
+ },
124
+ "visualDescription": "Panel con borde gris claro de 1px y fondo blanco. Contiene 3 ítems verticales con labels en texto negro normal y enlaces en gris claro alineados a la derecha. Línea vertical azul conecta los ítems en el margen izquierdo con puntos azules circulares.",
125
+ "_generated": {
126
+ "hash": "eda9e7c9a08df92f2e7fb606b0569ab8",
127
+ "version": "15.0.3",
128
+ "timestamp": "2026-01-30T18:46:21.210Z"
105
129
  }
106
130
  },
107
131
  {
@@ -129,6 +153,12 @@
129
153
  "attributes": {
130
154
  "id": "accordion-history"
131
155
  }
156
+ },
157
+ "visualDescription": "Panel con borde gris claro de 1px y fondo blanco. Muestra 3 ítems verticales con labels en texto negro normal, el ítem del medio expandido con área de contenido vacía en fondo gris claro. Enlaces en gris claro alineados a la derecha, línea vertical azul con puntos circulares azules conecta los ítems.",
158
+ "_generated": {
159
+ "hash": "1f20079d50b868a367f77eebadf64778",
160
+ "version": "15.0.3",
161
+ "timestamp": "2026-01-30T18:46:21.210Z"
132
162
  }
133
163
  },
134
164
  {
@@ -157,6 +187,12 @@
157
187
  "attributes": {
158
188
  "id": "accordion-history-multiple"
159
189
  }
190
+ },
191
+ "visualDescription": "Panel con borde gris claro de 1px y fondo blanco. Presenta 3 ítems verticales con labels en texto negro normal, el primer y tercer ítem expandidos mostrando áreas de contenido vacías con fondo gris claro. Enlaces en gris claro alineados a la derecha, línea vertical azul con puntos circulares azules conecta los ítems en el margen izquierdo.",
192
+ "_generated": {
193
+ "hash": "9f448dd642a60453f93b7b10bead91f6",
194
+ "version": "15.0.3",
195
+ "timestamp": "2026-01-30T18:46:21.210Z"
160
196
  }
161
197
  },
162
198
  {
@@ -184,6 +220,12 @@
184
220
  "open": true
185
221
  }
186
222
  ]
223
+ },
224
+ "visualDescription": "Tres ítems de acordeón con indicadores circulares azul oscuro a la izquierda, texto de títulos en negro tamaño estándar, y enlace alineado a la derecha en gris. Fondo blanco con líneas divisorias sutiles entre ítems, sin áreas de contenido expandidas visibles.",
225
+ "_generated": {
226
+ "hash": "4cd0dc6bdb708cf63bfa506893368d1b",
227
+ "version": "15.0.3",
228
+ "timestamp": "2026-01-30T18:46:31.968Z"
187
229
  }
188
230
  },
189
231
  {
@@ -209,6 +251,12 @@
209
251
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
210
252
  }
211
253
  ]
254
+ },
255
+ "visualDescription": "Encabezado en texto negro negrita arriba del componente. Tres ítems de acordeón con indicadores circulares azul oscuro a la izquierda, títulos en texto negro tamaño estándar, y enlaces en gris alineados a la derecha. Fondo blanco contenido en borde gris claro con separadores horizontales entre ítems.",
256
+ "_generated": {
257
+ "hash": "c8c32d98632c8eb60efd5885dfd66259",
258
+ "version": "15.0.3",
259
+ "timestamp": "2026-01-30T18:46:31.968Z"
212
260
  }
213
261
  },
214
262
  {
@@ -234,6 +282,12 @@
234
282
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
235
283
  }
236
284
  ]
285
+ },
286
+ "visualDescription": "Título en texto negro negrita ubicado sobre el componente. Tres ítems de acordeón con indicadores circulares azul oscuro a la izquierda, títulos en texto negro que incluyen etiquetas HTML visibles como código, y enlaces en gris alineados a la derecha. Fondo blanco con borde gris claro perimetral y líneas divisorias horizontales grises entre elementos.",
287
+ "_generated": {
288
+ "hash": "641ad5c23596666b02c3c0806b3e9b83",
289
+ "version": "15.0.3",
290
+ "timestamp": "2026-01-30T18:46:31.968Z"
237
291
  }
238
292
  },
239
293
  {
@@ -262,6 +316,12 @@
262
316
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
263
317
  }
264
318
  ]
319
+ },
320
+ "visualDescription": "Acordeón con borde gris claro, encabezado en texto negro negrita, y enlace alineado a la derecha en azul subrayado. Tres ítems listados verticalmente con texto negro, cada uno con enlace en azul a la derecha. Línea vertical azul conecta los ítems del lado izquierdo con círculos azules como marcadores.",
321
+ "_generated": {
322
+ "hash": "8c10b877e0660adc8daf60e3707324b5",
323
+ "version": "15.0.3",
324
+ "timestamp": "2026-01-30T18:46:42.697Z"
265
325
  }
266
326
  },
267
327
  {
@@ -291,6 +351,12 @@
291
351
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
292
352
  }
293
353
  ]
354
+ },
355
+ "visualDescription": "Acordeón con borde gris claro, encabezado en texto negro negrita, y enlace alineado a la derecha en azul subrayado. Tres ítems con texto negro dispuestos verticalmente, cada uno con enlace en azul a la derecha. Línea vertical azul en el margen izquierdo conecta los ítems mediante círculos azules rellenos.",
356
+ "_generated": {
357
+ "hash": "ead3140878aa0bb7d02d491c2feb2eca",
358
+ "version": "15.0.3",
359
+ "timestamp": "2026-01-30T18:46:42.697Z"
294
360
  }
295
361
  },
296
362
  {
@@ -345,6 +411,12 @@
345
411
  }
346
412
  }
347
413
  ]
414
+ },
415
+ "visualDescription": "Acordeón con borde gris claro conteniendo cuatro ítems listados verticalmente con texto negro. Primer ítem muestra enlace en azul a la derecha, segundo y cuarto ítem tienen ícono gris, tercer ítem tiene ícono chevron hacia abajo. Línea vertical azul en el borde izquierdo conecta todos los ítems mediante círculos azules.",
416
+ "_generated": {
417
+ "hash": "ae7eca8b79b533cc4f80782eb506b077",
418
+ "version": "15.0.3",
419
+ "timestamp": "2026-01-30T18:46:42.697Z"
348
420
  }
349
421
  },
350
422
  {
@@ -367,6 +439,12 @@
367
439
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
368
440
  }
369
441
  ]
442
+ },
443
+ "visualDescription": "Lista vertical de tres ítems expandibles con borde izquierdo azul de 3px. Cada ítem tiene un título en texto negro mediano negrita, subtexto gris claro, y enlace gris alineado a la derecha. Fondo blanco con separadores horizontales grises tenues entre ítems.",
444
+ "_generated": {
445
+ "hash": "0651314836ada6d0e932cb09adf2feb5",
446
+ "version": "15.0.3",
447
+ "timestamp": "2026-01-30T18:46:52.821Z"
370
448
  }
371
449
  },
372
450
  {
@@ -392,6 +470,12 @@
392
470
  "html": "<div class='w-48 p-2'><div class='border-4 border-dashed border-neutral-light rounded-lg h-40'></div></div>"
393
471
  }
394
472
  ]
473
+ },
474
+ "visualDescription": "Lista vertical de tres ítems con borde izquierdo azul de 3px y fondo que alterna entre blanco y celeste claro. El segundo ítem contiene un área expandida celeste claro con un recuadro punteado blanco. Cada ítem muestra texto negro mediano con enlaces alineados a la derecha en gris.",
475
+ "_generated": {
476
+ "hash": "c99c5ceb99ef89bf71a439847eb85631",
477
+ "version": "15.0.3",
478
+ "timestamp": "2026-01-30T18:46:52.821Z"
395
479
  }
396
480
  },
397
481
  {
@@ -426,6 +510,12 @@
426
510
  }
427
511
  }
428
512
  ]
513
+ },
514
+ "visualDescription": "Lista vertical de tres ítems expandibles con borde izquierdo azul de 3px sobre fondo blanco. Cada ítem presenta texto negro mediano en una sola línea con enlace gris alineado a la derecha. Separadores horizontales grises tenues dividen los ítems con espaciado uniforme vertical.",
515
+ "_generated": {
516
+ "hash": "6162c72aafd439d67ea57c9d2951253a",
517
+ "version": "15.0.3",
518
+ "timestamp": "2026-01-30T18:46:52.821Z"
429
519
  }
430
520
  }
431
521
  ] %}
@@ -57,6 +57,12 @@
57
57
  "aria-live": "assertive"
58
58
  },
59
59
  "caller": defaultExample
60
+ },
61
+ "visualDescription": "Contenedor rectangular con fondo blanco, borde gris claro de 1px. Texto descriptivo negro arriba. Botón con texto azul oscuro, borde azul de 1px, fondo blanco, esquinas redondeadas.",
62
+ "_generated": {
63
+ "hash": "e9b09dbe7b16e7bac9e8296e52edcfea",
64
+ "version": "15.0.3",
65
+ "timestamp": "2026-01-30T18:47:42.215Z"
60
66
  }
61
67
  },
62
68
  {
@@ -75,6 +81,12 @@
75
81
  "aria-live": "assertive"
76
82
  },
77
83
  "caller": secondaryExample
84
+ },
85
+ "visualDescription": "Contenedor rectangular con fondo blanco, borde gris claro de 1px. Texto descriptivo negro arriba. Botón con texto azul oscuro, borde azul de 1px, fondo blanco, esquinas redondeadas.",
86
+ "_generated": {
87
+ "hash": "1cf721fb2ee44ed7cc947463a6f51cf6",
88
+ "version": "15.0.3",
89
+ "timestamp": "2026-01-30T18:47:42.215Z"
78
90
  }
79
91
  }
80
92
  ] %}
@@ -15,6 +15,12 @@
15
15
  "href": "/section/sub-section"
16
16
  }
17
17
  ]
18
+ },
19
+ "visualDescription": "Breadcrumb horizontal con dos elementos de texto enlazados separados por chevrones (>) grises. Fondo blanco con borde gris claro de 1px. Texto de los enlaces en negro, peso normal, tamaño mediano.",
20
+ "_generated": {
21
+ "hash": "263655ffb6c6b79a5a04025faedc11e5",
22
+ "version": "15.0.3",
23
+ "timestamp": "2026-01-30T18:47:48.885Z"
18
24
  }
19
25
  },
20
26
  {
@@ -28,6 +34,12 @@
28
34
  "href": "/section"
29
35
  }
30
36
  ]
37
+ },
38
+ "visualDescription": "Breadcrumb horizontal con un único elemento de texto enlazado. Fondo blanco con borde gris claro de 1px. Texto del enlace en negro, peso normal, tamaño mediano, sin separadores visibles.",
39
+ "_generated": {
40
+ "hash": "08d53ca0d879cb2357b5cbbbeaa13872",
41
+ "version": "15.0.3",
42
+ "timestamp": "2026-01-30T18:47:48.886Z"
31
43
  }
32
44
  },
33
45
  {
@@ -53,6 +65,12 @@
53
65
  "href": "/section/sub-section/sub-sub-section"
54
66
  }
55
67
  ]
68
+ },
69
+ "visualDescription": "Breadcrumb horizontal con cuatro elementos de texto enlazados separados por chevrones (>) grises. Fondo blanco con borde gris claro de 1px. Texto de todos los enlaces en negro, peso normal, tamaño mediano, distribuidos en línea horizontal.",
70
+ "_generated": {
71
+ "hash": "39b9d3e459f0de411b495877c8bfdef7",
72
+ "version": "15.0.3",
73
+ "timestamp": "2026-01-30T18:47:48.886Z"
56
74
  }
57
75
  },
58
76
  {
@@ -73,6 +91,12 @@
73
91
  "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi volutpat non augue id hendrerit. Cras at iaculis sem, eu posuere tortor"
74
92
  }
75
93
  ]
94
+ },
95
+ "visualDescription": "Breadcrumb horizontal con fondo blanco y borde gris claro. Contiene título negro en negrita a la izquierda, seguido de cuatro enlaces de texto negro separados por flechas grises (\">\"). Los enlaces ocupan toda la línea horizontal con espaciado uniforme entre elementos.",
96
+ "_generated": {
97
+ "hash": "45d9f543d50a54c5f621a4d82040e1d8",
98
+ "version": "15.0.3",
99
+ "timestamp": "2026-01-30T18:47:57.978Z"
76
100
  }
77
101
  },
78
102
  {
@@ -94,6 +118,12 @@
94
118
  "text": "Programa 1 Instalaciones de autoconsumo renovable en el sector servicios con o sin almacenamiento"
95
119
  }
96
120
  ]
121
+ },
122
+ "visualDescription": "Breadcrumb horizontal con fondo blanco y borde gris claro. Título negro en negrita ubicado arriba a la izquierda. Debajo se despliegan cinco enlaces de texto negro separados por flechas grises (\">\"), donde el último enlace aparece truncado con puntos suspensivos al final.",
123
+ "_generated": {
124
+ "hash": "61080da45a497dd45ef77ba525338446",
125
+ "version": "15.0.3",
126
+ "timestamp": "2026-01-30T18:47:57.978Z"
97
127
  }
98
128
  },
99
129
  {
@@ -118,6 +148,12 @@
118
148
  "href": "/section/sub-section/sub-sub-section"
119
149
  }
120
150
  ]
151
+ },
152
+ "visualDescription": "Breadcrumb horizontal con fondo blanco y borde gris claro. Título negro en negrita en la parte superior. Ruta de navegación compuesta por cinco elementos de texto negro separados por flechas grises (\">\"), todos con peso de fuente normal y alineación horizontal consistente.",
153
+ "_generated": {
154
+ "hash": "b7f7b6a73b7e10fccc7170630bab9a75",
155
+ "version": "15.0.3",
156
+ "timestamp": "2026-01-30T18:47:57.978Z"
121
157
  }
122
158
  },
123
159
  {
@@ -139,6 +175,12 @@
139
175
  "href": "/tramites/tema/vivienda"
140
176
  }
141
177
  ]
178
+ },
179
+ "visualDescription": "Breadcrumb horizontal con fondo blanco y borde gris claro de 1px. Contiene enlaces en texto negro estándar separados por flechas \">\" en gris, donde el último elemento aparece en texto negro en negrita subrayado indicando que es interactivo. Espaciado uniforme entre elementos con padding interno visible.",
180
+ "_generated": {
181
+ "hash": "6f1a73d15ad323f5a10596b2f63513aa",
182
+ "version": "15.0.3",
183
+ "timestamp": "2026-01-30T18:48:06.684Z"
142
184
  }
143
185
  },
144
186
  {
@@ -159,6 +201,12 @@
159
201
  "text": "Vivienda"
160
202
  }
161
203
  ]
204
+ },
205
+ "visualDescription": "Breadcrumb horizontal con fondo blanco y borde gris claro de 1px. Muestra enlaces en texto negro estándar separados por separadores de flecha \">\" en gris, donde el último elemento aparece en texto negro en negrita sin subrayado. Espaciado consistente entre todos los elementos con padding interno.",
206
+ "_generated": {
207
+ "hash": "e8ffc80c6b39f1ecc1f5ee2b3fefab0b",
208
+ "version": "15.0.3",
209
+ "timestamp": "2026-01-30T18:48:06.684Z"
162
210
  }
163
211
  },
164
212
  {
@@ -180,6 +228,12 @@
180
228
  "href": "/tramites/tema/vivienda"
181
229
  }
182
230
  ]
231
+ },
232
+ "visualDescription": "Breadcrumb horizontal con fondo blanco y borde gris claro de 1px. Presenta enlaces en texto negro estándar separados por flechas \">\" en gris, con el último elemento en texto negro en negrita. Diseño compacto optimizado para pantallas pequeñas con espaciado reducido entre elementos.",
233
+ "_generated": {
234
+ "hash": "f8acd4710a7a58c858701727a35657f6",
235
+ "version": "15.0.3",
236
+ "timestamp": "2026-01-30T18:48:06.684Z"
183
237
  }
184
238
  },
185
239
  {
@@ -221,6 +275,12 @@
221
275
  "href": "/"
222
276
  }
223
277
  ]
278
+ },
279
+ "visualDescription": "Breadcrumb horizontal con fondo blanco y borde gris claro de 1px. Los enlaces de navegación aparecen en color azul oscuro separados por chevrons (>) grises, con el último elemento en texto negro negrita. Padding interno visible alrededor del contenido.",
280
+ "_generated": {
281
+ "hash": "9ab9439cc027e45ed2054524908b0b9c",
282
+ "version": "15.0.3",
283
+ "timestamp": "2026-01-30T18:48:14.775Z"
224
284
  }
225
285
  },
226
286
  {
@@ -262,6 +322,12 @@
262
322
  "href": "/"
263
323
  }
264
324
  ]
325
+ },
326
+ "visualDescription": "Breadcrumb horizontal con fondo gris muy claro y borde gris medio de 1px. Los enlaces de navegación aparecen en color azul estándar separados por chevrons (>) grises, con el último elemento en texto negro regular. Incluye dos líneas de navegación, la segunda con texto negro regular de menor tamaño.",
327
+ "_generated": {
328
+ "hash": "5cd4a25fb457c0e88320829a87b21bb6",
329
+ "version": "15.0.3",
330
+ "timestamp": "2026-01-30T18:48:14.775Z"
265
331
  }
266
332
  },
267
333
  {
@@ -304,6 +370,12 @@
304
370
  "href": "/"
305
371
  }
306
372
  ]
373
+ },
374
+ "visualDescription": "Breadcrumb horizontal con fondo blanco y borde gris claro de 1px. Los enlaces de navegación aparecen en color azul oscuro separados por chevrons (>) grises, con el último elemento en texto negro negrita. Padding interno uniforme alrededor del contenido de navegación.",
375
+ "_generated": {
376
+ "hash": "f3ebeb0b91756157255946694a49dadb",
377
+ "version": "15.0.3",
378
+ "timestamp": "2026-01-30T18:48:14.775Z"
307
379
  }
308
380
  },
309
381
  {
@@ -323,6 +395,12 @@
323
395
  "text": "Vivienda"
324
396
  }
325
397
  ]
398
+ },
399
+ "visualDescription": "Breadcrumb horizontal con fondo blanco y borde gris claro de 1px. Contiene flecha izquierda gris al inicio, seguida de enlaces de texto gris separados por chevrones grises. El último elemento de texto aparece en color negro indicando estado activo.",
400
+ "_generated": {
401
+ "hash": "a31f21cb10775df3165111da3f63078b",
402
+ "version": "15.0.3",
403
+ "timestamp": "2026-01-30T18:48:22.926Z"
326
404
  }
327
405
  },
328
406
  {
@@ -349,6 +427,12 @@
349
427
  "href": "/tramites/tema/vivienda/urbanismo"
350
428
  }
351
429
  ]
430
+ },
431
+ "visualDescription": "Breadcrumb horizontal con fondo blanco y borde gris claro de 1px. Incluye flecha izquierda gris al inicio, seguida de cuatro segmentos de texto gris separados por chevrones grises. El último segmento aparece en negro indicando estado activo.",
432
+ "_generated": {
433
+ "hash": "95fc96d5cc846d702e2497dc6892e5d1",
434
+ "version": "15.0.3",
435
+ "timestamp": "2026-01-30T18:48:22.926Z"
352
436
  }
353
437
  },
354
438
  {
@@ -370,6 +454,12 @@
370
454
  "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi volutpat non augue id hendrerit. Cras at iaculis sem, eu posuere tortor"
371
455
  }
372
456
  ]
457
+ },
458
+ "visualDescription": "Breadcrumb horizontal con fondo blanco y borde gris claro de 1px. Presenta flecha izquierda gris seguida de tres segmentos de texto largo con puntos suspensivos, separados por chevrones grises. El último segmento aparece en negro con texto truncado terminando en \"M...\".",
459
+ "_generated": {
460
+ "hash": "69e31f343214d579f5e5a725025d87e5",
461
+ "version": "15.0.3",
462
+ "timestamp": "2026-01-30T18:48:22.926Z"
373
463
  }
374
464
  }
375
465
  ] %}
@@ -53,7 +53,7 @@ lg:grid-cols-(--grid-template-cols-max-content-8){% endif %}
53
53
  {% for item in params.items %}
54
54
  {% if item.href %}
55
55
  <li class="flex items-baseline max-w-full mb-sm py-xs text-neutral-dark hover:text-black {% if loop.last %} flex-1 font-semibold{% endif %}">
56
- <a class="underline focus:bg-warning-base focus:outline-hidden focus:shadow-outline-focus focus:text-black {%- if loop.last %} text-black font-semibold no-underline{% endif %} truncate" href="{{ item.href }}" {% if loop.last %} aria-current="page"{% endif %}{% for attribute, value in item.attributes %} {{attribute}}="{{value}}"{% endfor %}>
56
+ <a class="{% if loop.last %}no-underline{% else %}underline{% endif %} focus:bg-warning-base focus:outline-hidden focus:shadow-outline-focus focus:text-black {%- if loop.last %} text-black font-semibold{% endif %} truncate" href="{{ item.href }}" {% if loop.last %} aria-current="page"{% endif %}{% for attribute, value in item.attributes %} {{attribute}}="{{value}}"{% endfor %}>
57
57
  {% if loop.last %}
58
58
  <strong>{{ item.html | filterquotes | safe if item.html else item.text }}</strong>
59
59
  {% else %}