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
@@ -24,6 +24,12 @@
24
24
  "disabled": true
25
25
  }
26
26
  ]
27
+ },
28
+ "visualDescription": "Dropdown select con label \"por defecto\" en texto negro pequeño arriba. Campo rectangular con fondo blanco, borde gris de 1px, padding medio, texto \"Opción 2\" negro alineado a la izquierda, icono de flecha gris apuntando hacia abajo a la derecha. Label descriptivo \"Esta es un label\" en gris claro debajo del título.",
29
+ "_generated": {
30
+ "hash": "50e984dcaa02d1931cc408cc58083d7f",
31
+ "version": "15.0.3",
32
+ "timestamp": "2026-01-30T19:13:17.504Z"
27
33
  }
28
34
  },
29
35
  {
@@ -51,6 +57,12 @@
51
57
  "disabled": true
52
58
  }
53
59
  ]
60
+ },
61
+ "visualDescription": "Dropdown select con label \"deshabilitado\" en texto negro pequeño arriba. Campo rectangular con fondo gris muy claro (#f5f5f5), borde gris tenue de 1px, padding medio, texto \"Opción 2\" gris atenuado alineado a la izquierda, icono de flecha gris claro apuntando hacia abajo a la derecha. Label descriptivo \"Esta es un label\" en gris claro debajo del título, apariencia visualmente inactiva.",
62
+ "_generated": {
63
+ "hash": "aa1969045e310a4272e2e7ee800fbd6e",
64
+ "version": "15.0.3",
65
+ "timestamp": "2026-01-30T19:13:17.504Z"
54
66
  }
55
67
  },
56
68
  {
@@ -83,6 +95,12 @@
83
95
  "text": "Opción 3"
84
96
  }
85
97
  ]
98
+ },
99
+ "visualDescription": "Dropdown select con label \"placeholder\" en texto negro pequeño arriba. Campo rectangular con fondo blanco, borde gris de 1px, padding medio, texto \"Choose an option\" gris claro alineado a la izquierda, icono de flecha gris apuntando hacia abajo a la derecha. Label descriptivo \"Esta es un label\" en gris claro debajo del título.",
100
+ "_generated": {
101
+ "hash": "ea5f57e900141f23399190acdfea0cbc",
102
+ "version": "15.0.3",
103
+ "timestamp": "2026-01-30T19:13:17.504Z"
86
104
  }
87
105
  },
88
106
  {
@@ -158,6 +176,12 @@
158
176
  "text": "Opción 6"
159
177
  }
160
178
  ]
179
+ },
180
+ "visualDescription": "Dropdown select con borde gris de 1px, fondo blanco, esquinas redondeadas. Label negro en peso normal arriba del campo. Icono chevron gris apuntando hacia abajo en el extremo derecho del campo. Texto seleccionado en negro sobre fondo blanco.",
181
+ "_generated": {
182
+ "hash": "f5e3d8bfb775cbb8d86afaf0c56fa97d",
183
+ "version": "15.0.3",
184
+ "timestamp": "2026-01-30T19:13:26.720Z"
161
185
  }
162
186
  },
163
187
  {
@@ -189,6 +213,12 @@
189
213
  "text": "Opción 3"
190
214
  }
191
215
  ]
216
+ },
217
+ "visualDescription": "Dropdown select con borde rojo de 2px, fondo blanco, esquinas redondeadas. Label negro en peso normal arriba, texto gris debajo del label, texto rojo debajo del campo. Botón seleccionado con borde negro, fondo blanco, texto negro, icono X rojo a la derecha.",
218
+ "_generated": {
219
+ "hash": "c26a244e36a845de69498697ed7fe8c4",
220
+ "version": "15.0.3",
221
+ "timestamp": "2026-01-30T19:13:26.720Z"
192
222
  }
193
223
  },
194
224
  {
@@ -216,6 +246,12 @@
216
246
  "disabled": true
217
247
  }
218
248
  ]
249
+ },
250
+ "visualDescription": "Dropdown select ocupando el 100% del ancho del contenedor, borde gris de 1px, fondo blanco, esquinas redondeadas. Label negro en peso normal arriba del campo. Icono chevron gris apuntando hacia abajo alineado al extremo derecho. Texto seleccionado en negro sobre fondo blanco.",
251
+ "_generated": {
252
+ "hash": "fe5c3562a0204afdeebbb59c8448ea58",
253
+ "version": "15.0.3",
254
+ "timestamp": "2026-01-30T19:13:26.720Z"
219
255
  }
220
256
  },
221
257
  {
@@ -252,6 +288,12 @@
252
288
  "disabled": true
253
289
  }
254
290
  ]
291
+ },
292
+ "visualDescription": "Select desplegable con label en negro, contenedor con borde rojo de 2px, fondo blanco, y texto \"Opción 2\" seleccionado. Mensaje de error en rojo debajo del campo indicando validación fallida. Altura estándar del select con flecha dropdown negra a la derecha.",
293
+ "_generated": {
294
+ "hash": "4371662f21e81c42c3f914b60f164af9",
295
+ "version": "15.0.3",
296
+ "timestamp": "2026-01-30T19:13:35.628Z"
255
297
  }
256
298
  },
257
299
  {
@@ -279,6 +321,12 @@
279
321
  "disabled": true
280
322
  }
281
323
  ]
324
+ },
325
+ "visualDescription": "Select desplegable con label en negro, texto \"Opción 2\" visible, sin borde visible o con borde muy sutil, fondo transparente o blanco. Altura estándar del componente con flecha dropdown negra. Texto \"Esto es un label\" aparece entre el encabezado y el select.",
326
+ "_generated": {
327
+ "hash": "4c2e2a1e277432f3142570c3180b1afb",
328
+ "version": "15.0.3",
329
+ "timestamp": "2026-01-30T19:13:35.628Z"
282
330
  }
283
331
  },
284
332
  {
@@ -306,6 +354,12 @@
306
354
  "disabled": true
307
355
  }
308
356
  ]
357
+ },
358
+ "visualDescription": "Select desplegable compacto con label en negro arriba, texto \"Opción 2\" seleccionado, borde gris de 1px, fondo blanco. Altura reducida del campo select con padding mínimo. Texto \"Esto es un label\" entre el encabezado y el componente, flecha dropdown negra a la derecha.",
359
+ "_generated": {
360
+ "hash": "89b16841c1f253dd851c8d6c7bf7866f",
361
+ "version": "15.0.3",
362
+ "timestamp": "2026-01-30T19:13:35.628Z"
309
363
  }
310
364
  }
311
365
  ] %}
@@ -37,7 +37,7 @@
37
37
  visuallyHiddenText: params.errorMessage.visuallyHiddenText
38
38
  }) | indent(2) | trim }}
39
39
  {% endif %}
40
- <select class="c-select block mt-sm transition duration-150 ease-in-out border-black rounded-sm font-semibold focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base {%- if params.classes %} {{ params.classes }}{% endif %} {%- if params.errorMessage %} c-select--error border-alert-base ring-2 ring-alert-base {% endif %}" id="{{ params.id }}" name="{{ params.name }}" {%- if describedBy %} aria-describedby="{{ describedBy }}"{% endif %} {%- if params.errorMessage %} aria-errorMessage="{{ errorId }}" aria-invalid="true"{% endif %} {{-" disabled" if params.disabled }} {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
40
+ <select class="c-select block mt-sm transition duration-150 ease-in-out {% if params.errorMessage %}c-select--error border-alert-base ring-2 ring-alert-base{% else %}border-black{% endif %} rounded-sm font-semibold focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base {%- if params.classes %} {{ params.classes }}{% endif %}" id="{{ params.id }}" name="{{ params.name }}" {%- if describedBy %} aria-describedby="{{ describedBy }}"{% endif %} {%- if params.errorMessage %} aria-errorMessage="{{ errorId }}" aria-invalid="true"{% endif %} {{-" disabled" if params.disabled }} {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
41
41
  {% for item in params.items %}
42
42
  {% if item %}
43
43
  {% if item.optgroup %}
@@ -6,6 +6,12 @@
6
6
  "data": {
7
7
  "text": "Saltar al contenido principal",
8
8
  "href": "#content"
9
+ },
10
+ "visualDescription": "Componente skip-link con un rectángulo delgado de borde gris claro sobre fondo blanco. Contiene texto negro pequeño alineado a la izquierda. El elemento ocupa todo el ancho disponible con padding mínimo.",
11
+ "_generated": {
12
+ "hash": "43ab4ecc6459d5d946643b08a94efd25",
13
+ "version": "15.0.3",
14
+ "timestamp": "2026-01-30T19:13:41.980Z"
9
15
  }
10
16
  },
11
17
  {
@@ -15,6 +21,12 @@
15
21
  "classes": "ds-focus",
16
22
  "text": "Saltar al contenido principal",
17
23
  "href": "#content"
24
+ },
25
+ "visualDescription": "Componente skip-link con una barra amarilla brillante que ocupa todo el ancho. Contiene texto negro subrayado centrado horizontalmente. El fondo amarillo sólido cubre completamente el área del componente con padding vertical visible.",
26
+ "_generated": {
27
+ "hash": "3fe73c4cd84250602d475a36ba56e9f2",
28
+ "version": "15.0.3",
29
+ "timestamp": "2026-01-30T19:13:41.980Z"
18
30
  }
19
31
  }
20
32
  ] %}
@@ -9,6 +9,18 @@
9
9
  "data": {
10
10
  "text": "Espere por favor",
11
11
  "classes": "text-neutral-base"
12
+ },
13
+ "visualDescription": "Spinner circular animado con anillo de borde grueso, combinando color gris claro en la mayor parte y segmento azul en rotación. Dimensiones medianas (aproximadamente 40-50px de diámetro), centrado horizontalmente en contenedor rectangular blanco con borde gris claro de 1px. Incluye texto descriptivo negro pequeño posicionado a la izquierda superior del contenedor.",
14
+ "_generated": {
15
+ "hash": "8511efaf4def7cfce2399dffb0b90975",
16
+ "version": "15.0.3",
17
+ "timestamp": "2026-01-30T19:13:51.449Z"
18
+ },
19
+ "visualDescription": "Spinner circular animado compuesto por un anillo con borde grueso, color gris claro en la mayor parte del círculo y azul en un segmento, creando efecto de rotación. El spinner tiene tamaño mediano (aproximadamente 40-50px de diámetro) y está centrado horizontalmente dentro de un contenedor rectangular con fondo blanco y borde gris claro de 1px.",
20
+ "_generated": {
21
+ "hash": "6780338ece7add80c4ca7b880d2da372",
22
+ "version": "15.0.3",
23
+ "timestamp": "2026-01-30T19:13:51.449Z"
12
24
  }
13
25
  },
14
26
  {
@@ -16,18 +28,36 @@
16
28
  "description": "Usa las clases de tamaño de texto para dar tamaño al Spinner.",
17
29
  "data": {
18
30
  "classes": "text-xs"
31
+ },
32
+ "visualDescription": "Spinner circular animado de dimensiones reducidas (aproximadamente 16-20px de diámetro) con anillo de borde delgado, mostrando color gris claro en la mayoría del círculo y segmento azul en rotación. Está centrado horizontalmente dentro de contenedor rectangular con fondo blanco y borde gris claro de 1px. Texto descriptivo negro pequeño aparece en la esquina superior izquierda del contenedor.",
33
+ "_generated": {
34
+ "hash": "a61e977d2f10f747f279648b7a88d393",
35
+ "version": "15.0.3",
36
+ "timestamp": "2026-01-30T19:13:51.449Z"
19
37
  }
20
38
  },
21
39
  {
22
40
  "name": "Tamaño lg",
23
41
  "data": {
24
42
  "classes": "text-lg"
43
+ },
44
+ "visualDescription": "Spinner circular animado de tamaño mediano-grande centrado horizontalmente. Ícono de carga de color gris oscuro con animación de rotación. Fondo blanco sin bordes visibles en el contenedor.",
45
+ "_generated": {
46
+ "hash": "8d32fc49a76315889fc61c2e944cefe0",
47
+ "version": "15.0.3",
48
+ "timestamp": "2026-01-30T19:13:59.283Z"
25
49
  }
26
50
  },
27
51
  {
28
52
  "name": "Tamaño 6xl",
29
53
  "data": {
30
54
  "classes": "text-6xl"
55
+ },
56
+ "visualDescription": "Spinner circular animado de tamaño extra grande centrado horizontalmente. Ícono de carga de color gris oscuro con animación de rotación continua. Fondo blanco sin bordes, ocupando mayor espacio vertical que proporcional al tamaño del spinner.",
57
+ "_generated": {
58
+ "hash": "fd91c6a9f4ef3cfadf3f09960c34254a",
59
+ "version": "15.0.3",
60
+ "timestamp": "2026-01-30T19:13:59.283Z"
31
61
  }
32
62
  },
33
63
  {
@@ -35,12 +65,24 @@
35
65
  "description": "Usa las clases de color de texto para dar color al Spinner.",
36
66
  "data": {
37
67
  "classes": "text-neutral-base"
68
+ },
69
+ "visualDescription": "Spinner circular animado de tamaño mediano centrado horizontalmente. Ícono de carga de color gris medio con animación de rotación. Fondo blanco sin bordes visibles, con espaciado vertical equilibrado alrededor del elemento.",
70
+ "_generated": {
71
+ "hash": "8dbff641c7cfd55b74792bb69982882b",
72
+ "version": "15.0.3",
73
+ "timestamp": "2026-01-30T19:13:59.283Z"
38
74
  }
39
75
  },
40
76
  {
41
77
  "name": "color primario",
42
78
  "data": {
43
79
  "classes": "text-primary-base"
80
+ },
81
+ "visualDescription": "Spinner circular animado con borde azul primario de grosor medio. El spinner tiene un tamaño compacto (aproximadamente 20-30px de diámetro) y presenta animación de rotación continua. Fondo transparente con el indicador de carga centrado horizontalmente en el contenedor.",
82
+ "_generated": {
83
+ "hash": "aa215a43392aa849148d145595d26725",
84
+ "version": "15.0.3",
85
+ "timestamp": "2026-01-30T19:14:07.948Z"
44
86
  }
45
87
  },
46
88
  {
@@ -48,6 +90,12 @@
48
90
  "description": "Usa las clases de tamaño para cambiar las dimensiones del contenedor.",
49
91
  "data": {
50
92
  "classes": "border border-neutral-light w-60 h-60"
93
+ },
94
+ "visualDescription": "Spinner circular animado con borde azul primario de grosor medio. El contenedor presenta borde gris claro de 1px, padding interno visible, y título descriptivo en negro arriba del spinner. El spinner mantiene animación de rotación continua dentro de un área rectangular delimitada.",
95
+ "_generated": {
96
+ "hash": "416dacab404dafef1a6c659c714f1b3f",
97
+ "version": "15.0.3",
98
+ "timestamp": "2026-01-30T19:14:07.948Z"
51
99
  }
52
100
  }
53
- ] %}
101
+ ] %}
@@ -7,6 +7,12 @@
7
7
  "icon": {
8
8
  "type": "success"
9
9
  }
10
+ },
11
+ "visualDescription": "Componente rectangular con borde gris delgado y fondo blanco. Contiene texto pequeño gris en la parte superior indicando tipo, seguido de texto negro en negrita con un checkmark verde al lado derecho.",
12
+ "_generated": {
13
+ "hash": "210a3c994639ff72ccf3aa8da8c78331",
14
+ "version": "15.0.3",
15
+ "timestamp": "2026-01-30T19:14:54.477Z"
10
16
  }
11
17
  },
12
18
  {
@@ -17,6 +23,12 @@
17
23
  "type": "alert"
18
24
  },
19
25
  "classes": "text-alert-base"
26
+ },
27
+ "visualDescription": "Componente rectangular con borde gris delgado y fondo blanco. Contiene texto pequeño gris en la parte superior indicando tipo, seguido de texto rojo en negrita con un ícono triangular de advertencia rojo al lado derecho.",
28
+ "_generated": {
29
+ "hash": "af93f448329f211c857158a43fcc9ad1",
30
+ "version": "15.0.3",
31
+ "timestamp": "2026-01-30T19:14:54.478Z"
20
32
  }
21
33
  },
22
34
  {
@@ -26,6 +38,12 @@
26
38
  "icon": {
27
39
  "type": "loading"
28
40
  }
41
+ },
42
+ "visualDescription": "Componente rectangular con borde gris delgado y fondo blanco. Contiene texto pequeño gris en la parte superior indicando tipo, seguido de texto negro con un ícono circular de progreso animado al lado derecho.",
43
+ "_generated": {
44
+ "hash": "0cdafd3c8ecb35991c0a071f05734b14",
45
+ "version": "15.0.3",
46
+ "timestamp": "2026-01-30T19:14:54.478Z"
29
47
  }
30
48
  },
31
49
  {
@@ -36,6 +54,12 @@
36
54
  "type": "error"
37
55
  },
38
56
  "classes": "text-alert-base"
57
+ },
58
+ "visualDescription": "Caja rectangular con borde gris claro de 1px y fondo blanco. Contiene encabezado en texto negro pequeño regular indicando tipo, seguido de texto en rojo negrita con ícono circular de información rojo adyacente.",
59
+ "_generated": {
60
+ "hash": "cb4f2b0375a7d930e44de5dbcb9f50d0",
61
+ "version": "15.0.3",
62
+ "timestamp": "2026-01-30T19:15:01.600Z"
39
63
  }
40
64
  },
41
65
  {
@@ -45,6 +69,12 @@
45
69
  "icon": {
46
70
  "html": "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140' width='1em' height='1em' class='w-4 h-4 text-primary-base' aria-hidden='true' focusable='false'><path d='M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm0 117.51a10 10 0 1110-10 10 10 0 01-10 10zm9.17-39.08a2.5 2.5 0 00-1.67 2.36v1.71a7.5 7.5 0 01-15 0v-10A7.5 7.5 0 0170 65a12.5 12.5 0 10-12.5-12.5 7.5 7.5 0 01-15 0 27.5 27.5 0 1136.67 25.93z' fill='currentColor'/></svg>"
47
71
  }
72
+ },
73
+ "visualDescription": "Caja rectangular con borde gris claro de 1px y fondo blanco. Contiene encabezado en texto negro pequeño regular, seguido de texto en negro negrita con ícono circular de información negro adyacente.",
74
+ "_generated": {
75
+ "hash": "7787f447d3996d45fb2da6a72218112d",
76
+ "version": "15.0.3",
77
+ "timestamp": "2026-01-30T19:15:01.601Z"
48
78
  }
49
79
  }
50
- ] %}
80
+ ] %}
@@ -9,6 +9,12 @@
9
9
  "text": "Título"
10
10
  },
11
11
  "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> item del Título</span></button>"
12
+ },
13
+ "visualDescription": "Contenedor rectangular con borde gris claro, fondo blanco. En la esquina superior izquierda aparece texto indicando el tipo en color gris oscuro. Dentro del contenedor hay un label en negro alineado a la izquierda, y un enlace en azul alineado a la derecha.",
14
+ "_generated": {
15
+ "hash": "e75120ac83d6febec43b8a24f2debbdc",
16
+ "version": "15.0.3",
17
+ "timestamp": "2026-01-30T19:14:17.308Z"
12
18
  }
13
19
  },
14
20
  {
@@ -48,6 +54,12 @@
48
54
  }
49
55
  },
50
56
  "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> los datos de término y definición y el resto</span></button>"
57
+ },
58
+ "visualDescription": "Contenedor rectangular con borde gris claro, fondo blanco. En la esquina superior izquierda aparece texto indicando el tipo en gris oscuro. Dentro hay una tabla con tres columnas: la primera muestra texto de términos en negro, la segunda muestra definiciones en negro, y la tercera contiene un enlace azul y una marca de verificación verde con indicador de estado. Las tres filas repiten esta estructura con fondos alternados gris muy claro y blanco.",
59
+ "_generated": {
60
+ "hash": "68014e553fa91c3e998340385bd96c77",
61
+ "version": "15.0.3",
62
+ "timestamp": "2026-01-30T19:14:17.308Z"
51
63
  }
52
64
  },
53
65
  {
@@ -58,6 +70,12 @@
58
70
  "html": "Autorización para la consulta de datos de las personas de la unidad familiar. <span class='text-neutral-dark'>(Documento condicionado)</span>"
59
71
  },
60
72
  "caller": "<button class='c-button c-button--transparent'>Aportar<span class='sr-only'> Autorización para la consulta de datos de las personas de la unidad familiar</span></button>"
73
+ },
74
+ "visualDescription": "Contenedor rectangular con borde gris claro, fondo blanco. En la esquina superior izquierda aparece texto indicando el tipo en gris oscuro. Dentro hay texto negro que describe autorización para consulta de datos, seguido de texto gris entre paréntesis. En la esquina superior derecha del contenedor hay un enlace en azul.",
75
+ "_generated": {
76
+ "hash": "f9403633bd941ec3497ef1da6a464445",
77
+ "version": "15.0.3",
78
+ "timestamp": "2026-01-30T19:14:17.308Z"
61
79
  }
62
80
  },
63
81
  {
@@ -77,6 +95,12 @@
77
95
  }
78
96
  },
79
97
  "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> personas de la unidad familiar</span></button>"
98
+ },
99
+ "visualDescription": "Contenedor con borde gris claro de 1px, fondo blanco, y padding interno. Incluye un título negro en la parte superior, un subtexto gris claro debajo, y dos enlaces en la esquina superior derecha: uno azul y otro negro con icono de check.",
100
+ "_generated": {
101
+ "hash": "0fb06d9c6fb0f6cff9edcdd966a1b38a",
102
+ "version": "15.0.3",
103
+ "timestamp": "2026-01-30T19:14:26.932Z"
80
104
  }
81
105
  },
82
106
  {
@@ -90,6 +114,12 @@
90
114
  "html": "<a href='#' class='c-link'><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140' width='1em' height='1em' class='inline-block self-center w-4 h-4 mr-sm no-underline' role='img' aria-hidden='true'><path d='M100.3 52.2a7.49 7.49 0 00-10.6 0L77.5 64.39V7.5a7.5 7.5 0 00-15 0v56.89L50.3 52.2a7.5 7.5 0 10-10.6 10.6l25 25a7.49 7.49 0 0010.6 0l25-25a7.49 7.49 0 000-10.6zM130 95a10 10 0 00-10 10v12.5a2.5 2.5 0 01-2.5 2.5h-95a2.5 2.5 0 01-2.5-2.5V105a10 10 0 00-20 0v15a20 20 0 0020 20h100a20 20 0 0020-20v-15a10 10 0 00-10-10z' fill='currentColor'/></svg>Descargar modelo</a>"
91
115
  },
92
116
  "caller": "<button class='c-button c-button--transparent'>Aportar<span class='sr-only'> Autorización para la consulta de datos de las personas de la unidad familiar</span></button>"
117
+ },
118
+ "visualDescription": "Contenedor con borde gris claro de 1px, fondo blanco, y padding interno. Contiene un texto descriptivo gris oscuro alineado a la izquierda, un enlace azul en la esquina superior derecha, y un enlace de descarga con icono en la parte inferior izquierda en color azul.",
119
+ "_generated": {
120
+ "hash": "17dbc44a0f77a35da8adf93090b4f833",
121
+ "version": "15.0.3",
122
+ "timestamp": "2026-01-30T19:14:26.932Z"
93
123
  }
94
124
  },
95
125
  {
@@ -103,6 +133,12 @@
103
133
  "text": "Iniciado"
104
134
  },
105
135
  "caller": "<button class='c-button c-button--transparent'>Rellenar<span class='sr-only'> datos adicionales del solicitante</span></button>"
136
+ },
137
+ "visualDescription": "Contenedor con borde gris claro de 1px, fondo blanco, y padding interno. Presenta un texto descriptivo gris oscuro alineado a la izquierda y dos elementos en la esquina superior derecha: un enlace azul seguido de una etiqueta negra en mayúsculas.",
138
+ "_generated": {
139
+ "hash": "1f36aff4510da5a8e3888d00c2602517",
140
+ "version": "15.0.3",
141
+ "timestamp": "2026-01-30T19:14:26.932Z"
106
142
  }
107
143
  },
108
144
  {
@@ -119,6 +155,12 @@
119
155
  }
120
156
  },
121
157
  "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> datos adicionales del solicitante</span></button>"
158
+ },
159
+ "visualDescription": "Contenedor rectangular con fondo blanco y borde gris claro. Encabezado de texto gris oscuro peso normal alineado a la izquierda. Lado derecho contiene enlace azul y badge negro con ícono de checkmark verde.",
160
+ "_generated": {
161
+ "hash": "f35487c1634fee9714f63c2436027155",
162
+ "version": "15.0.3",
163
+ "timestamp": "2026-01-30T19:14:36.250Z"
122
164
  }
123
165
  },
124
166
  {
@@ -141,6 +183,12 @@
141
183
  },
142
184
  "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> datos adicionales del solicitante</span></button>",
143
185
  "classes": "border-l-4 border-alert-base"
186
+ },
187
+ "visualDescription": "Contenedor rectangular con fondo rosa muy claro y borde rojo fino. Encabezado de texto gris oscuro peso normal arriba, mensaje de error en rojo debajo. Lado derecho contiene enlace azul y badge rojo con ícono de advertencia triangular.",
188
+ "_generated": {
189
+ "hash": "3f3cb8f24e62daa2416667b71b2d51ba",
190
+ "version": "15.0.3",
191
+ "timestamp": "2026-01-30T19:14:36.250Z"
144
192
  }
145
193
  },
146
194
  {
@@ -157,6 +205,12 @@
157
205
  }
158
206
  },
159
207
  "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> datos adicionales del solicitante</span></button>"
208
+ },
209
+ "visualDescription": "Contenedor rectangular con fondo blanco y borde gris claro. Encabezado de texto gris oscuro peso normal alineado a la izquierda. Lado derecho contiene enlace azul y texto negro con spinner circular animado.",
210
+ "_generated": {
211
+ "hash": "234716fffbdcc293e8455c94686a5ec0",
212
+ "version": "15.0.3",
213
+ "timestamp": "2026-01-30T19:14:36.250Z"
160
214
  }
161
215
  },
162
216
  {
@@ -179,6 +233,12 @@
179
233
  },
180
234
  "caller": "<button class='c-button c-button--transparent'>Ver<span class='sr-only'> datos adicionales del solicitante</span></button>",
181
235
  "classes": "border-l-4 border-alert-base"
236
+ },
237
+ "visualDescription": "Bloque con borde rojo en el lateral izquierdo y fondo rosado claro. Contiene un encabezado en texto negro, texto descriptivo gris, y un enlace azul subrayado. En la esquina superior derecha aparecen dos elementos: un enlace azul y una etiqueta roja con texto blanco.",
238
+ "_generated": {
239
+ "hash": "d1bdc62cec77ee077854e1334914f694",
240
+ "version": "15.0.3",
241
+ "timestamp": "2026-01-30T19:14:46.799Z"
182
242
  }
183
243
  },
184
244
  {
@@ -202,6 +262,12 @@
202
262
  }
203
263
  },
204
264
  "caller": "<button class='c-button c-button--transparent'>Modificar<span class='sr-only'> acreditación</span></button>"
265
+ },
266
+ "visualDescription": "Bloque rectangular con fondo blanco y borde gris claro. Fila horizontal dividida en tres secciones: etiqueta gris a la izquierda, texto negro con enlace azul en el centro, y dos elementos a la derecha (enlace azul y etiqueta verde con checkmark blanco). Layout en disposición horizontal con alineación vertical centrada.",
267
+ "_generated": {
268
+ "hash": "be7510c93bda846675b2c0883e5719ba",
269
+ "version": "15.0.3",
270
+ "timestamp": "2026-01-30T19:14:46.799Z"
205
271
  }
206
272
  },
207
273
  {
@@ -242,6 +308,12 @@
242
308
  },
243
309
  "caller": "<button class='c-button c-button--transparent'>Rellenar<span class='sr-only'> datos adicionales del solicitante</span></button>",
244
310
  "classes": "border-l-4 border-alert-base"
311
+ },
312
+ "visualDescription": "Bloque con borde rosa claro en el lateral izquierdo y fondo blanco. Contiene tres filas de información en formato clave-valor: etiquetas grises a la izquierda y valores negros a la derecha. En la esquina superior derecha aparecen un enlace azul y una etiqueta roja con triángulo de alerta blanco.",
313
+ "_generated": {
314
+ "hash": "7e69dd0caea1b30c605e06255fc99720",
315
+ "version": "15.0.3",
316
+ "timestamp": "2026-01-30T19:14:46.799Z"
245
317
  }
246
318
  }
247
- ] %}
319
+ ] %}
@@ -59,6 +59,12 @@
59
59
  }
60
60
  ]
61
61
  ]
62
+ },
63
+ "visualDescription": "Tabla con encabezados de columna en texto gris oscuro, filas de datos con texto negro sobre fondo blanco. Bordes sutiles grises separan las celdas. Tres columnas de ancho variable contienen texto alineado a la izquierda.",
64
+ "_generated": {
65
+ "hash": "cf036a0003c6e657e630c6564978a471",
66
+ "version": "15.0.3",
67
+ "timestamp": "2026-01-30T19:15:42.810Z"
62
68
  }
63
69
  },
64
70
  {
@@ -134,6 +140,12 @@
134
140
  "classes": "lg:text-right"
135
141
  }
136
142
  ]
143
+ },
144
+ "visualDescription": "Tabla con encabezados de columna en texto gris oscuro, filas de datos con texto negro, y fila final de totales en negrita. Fondo blanco uniforme con bordes grises sutiles entre celdas. Cuatro filas de contenido donde la última muestra valores sumados.",
145
+ "_generated": {
146
+ "hash": "59ab0eb7aea7d2c36aa967d1379fe50a",
147
+ "version": "15.0.3",
148
+ "timestamp": "2026-01-30T19:15:42.810Z"
137
149
  }
138
150
  },
139
151
  {
@@ -197,6 +209,12 @@
197
209
  }
198
210
  ]
199
211
  ]
212
+ },
213
+ "visualDescription": "Tabla precedida por título de encabezado en negrita negro. Encabezados de columna en gris oscuro, tres filas de datos con texto negro sobre fondo blanco. Bordes grises sutiles delimitan celdas con contenido alineado a la izquierda.",
214
+ "_generated": {
215
+ "hash": "98ac535474137642f2636a581a0506e3",
216
+ "version": "15.0.3",
217
+ "timestamp": "2026-01-30T19:15:42.810Z"
200
218
  }
201
219
  },
202
220
  {
@@ -397,6 +415,12 @@
397
415
  "aria-label": "Tabla con scroll del ejemplo Tabla con wrapper"
398
416
  }
399
417
  }
418
+ },
419
+ "visualDescription": "Tabla con fondo blanco, bordes grises claros de 1px separando celdas. Encabezados en texto negro normal, primera columna con etiquetas en negrita. Valores monetarios en cada celda con texto negro normal. Diseño de 11 columnas y 3 filas de datos.",
420
+ "_generated": {
421
+ "hash": "e4de44465c71632cadc9a7d573daa8c6",
422
+ "version": "15.0.3",
423
+ "timestamp": "2026-01-30T19:15:54.179Z"
400
424
  }
401
425
  },
402
426
  {
@@ -460,6 +484,12 @@
460
484
  "aria-label": "Tabla con scroll del ejemplo Tabla no responsive"
461
485
  }
462
486
  }
487
+ },
488
+ "visualDescription": "Tabla con fondo blanco, sin bordes visibles entre celdas. Tres columnas con encabezados en texto gris. Tres filas de datos con etiquetas en la primera columna y valores monetarios alineados en las columnas centrales. Espaciado amplio entre columnas, texto negro normal para datos.",
489
+ "_generated": {
490
+ "hash": "ac1edb5e6a66f0788de919dd3c4cc939",
491
+ "version": "15.0.3",
492
+ "timestamp": "2026-01-30T19:15:54.179Z"
463
493
  }
464
494
  },
465
495
  {
@@ -664,6 +694,12 @@
664
694
  }
665
695
  },
666
696
  "classes": "relative lg:whitespace-nowrap"
697
+ },
698
+ "visualDescription": "Tabla con fondo blanco, bordes grises de 1px delimitando celdas. Diez columnas con encabezados en texto negro. Tres filas de contenido mostrando valores monetarios distribuidos en celdas. Primera columna con etiquetas en texto negro normal.",
699
+ "_generated": {
700
+ "hash": "fc90630af4a95c6c93a40a8e9c2f5346",
701
+ "version": "15.0.3",
702
+ "timestamp": "2026-01-30T19:15:54.179Z"
667
703
  }
668
704
  }
669
- ] %}
705
+ ] %}
@@ -61,6 +61,12 @@
61
61
  ]
62
62
  ],
63
63
  "classes": "min-w-full"
64
+ },
65
+ "visualDescription": "Tabla con encabezados en texto gris oscuro sobre fondo blanco, organizados en tres columnas. Filas de datos alternadas con fondo blanco, bordes horizontales grises claros de 1px separando cada fila. Datos numéricos con símbolo de euro alineados a la derecha, texto de meses alineado a la izquierda.",
66
+ "_generated": {
67
+ "hash": "64fea3cbdabfa03f1752565b7b8c3ce3",
68
+ "version": "15.0.3",
69
+ "timestamp": "2026-01-30T19:15:10.765Z"
64
70
  }
65
71
  },
66
72
  {
@@ -140,6 +146,12 @@
140
146
  ]
141
147
  ],
142
148
  "classes": "min-w-full"
149
+ },
150
+ "visualDescription": "Tabla con encabezados en texto gris oscuro sobre fondo blanco, estructura de tres columnas con bordes horizontales grises claros de 1px. Filas de datos con fondo blanco mostrando valores monetarios en euros alineados a la derecha. Fila final de totales con fondo blanco, texto en peso regular mostrando suma total de las columnas numéricas.",
151
+ "_generated": {
152
+ "hash": "816140ac55bf188f6f7a22ec006b29e1",
153
+ "version": "15.0.3",
154
+ "timestamp": "2026-01-30T19:15:10.765Z"
143
155
  }
144
156
  },
145
157
  {
@@ -205,6 +217,12 @@
205
217
  ]
206
218
  ],
207
219
  "classes": "min-w-full"
220
+ },
221
+ "visualDescription": "Tabla precedida por título en texto negro en peso negrita sobre fondo blanco. Encabezados de columna en texto gris oscuro, estructura de tres columnas con bordes horizontales grises claros de 1px. Filas de datos con fondo blanco, valores monetarios en euros alineados a la derecha, texto de meses alineado a la izquierda.",
222
+ "_generated": {
223
+ "hash": "63ae217f0c53c62c689f31cadaba9bdc",
224
+ "version": "15.0.3",
225
+ "timestamp": "2026-01-30T19:15:10.765Z"
208
226
  }
209
227
  },
210
228
  {
@@ -286,6 +304,12 @@
286
304
  ]
287
305
  ],
288
306
  "classes": "min-w-full"
307
+ },
308
+ "visualDescription": "Tabla con tres columnas de datos numéricos en euros, encabezados de columna alineados a derecha. Filas de datos con fondo blanco alternado, valores monetarios en negro, fila de totales en negrita al final. Bordes grises claros separando celdas, diseño compacto y estructurado.",
309
+ "_generated": {
310
+ "hash": "c7b2e88b7adac474ee93be6fbf4d9644",
311
+ "version": "15.0.3",
312
+ "timestamp": "2026-01-30T19:15:20.510Z"
289
313
  }
290
314
  },
291
315
  {
@@ -351,6 +375,12 @@
351
375
  ]
352
376
  ],
353
377
  "classes": "min-w-full"
378
+ },
379
+ "visualDescription": "Tabla con tres columnas que incluyen campos de búsqueda en la fila superior con icono de lupa. Encabezados de columna en texto negro, inputs de filtro con borde gris y placeholder de texto claro. Datos monetarios en euros alineados a derecha en filas con fondo blanco, bordes grises definiendo estructura celular.",
380
+ "_generated": {
381
+ "hash": "d529644007fd1de475776306806f27e1",
382
+ "version": "15.0.3",
383
+ "timestamp": "2026-01-30T19:15:20.510Z"
354
384
  }
355
385
  },
356
386
  {
@@ -441,6 +471,12 @@
441
471
  ]
442
472
  ],
443
473
  "classes": "min-w-full"
474
+ },
475
+ "visualDescription": "Tabla con tres columnas donde la primera contiene dropdown con flecha desplegable, las dos restantes tienen campos de búsqueda con icono de lupa. Encabezados en negro, inputs con borde gris de 1px y placeholder visible. Filas de datos con valores monetarios en euros alineados a derecha, fondo blanco y bordes grises separando contenido.",
476
+ "_generated": {
477
+ "hash": "88e86903d4c0efc7519bf20933b6b985",
478
+ "version": "15.0.3",
479
+ "timestamp": "2026-01-30T19:15:20.510Z"
444
480
  }
445
481
  },
446
482
  {
@@ -572,6 +608,12 @@
572
608
  ]
573
609
  ],
574
610
  "classes": "min-w-full"
611
+ },
612
+ "visualDescription": "Tabla con encabezados de columna en texto negro regular, filas con datos numéricos en gris oscuro (con símbolo €), y controles de filtrado mediante selectores dropdown con fondo blanco y borde gris. Tres columnas de datos alineadas: primera con labels de meses, segunda y tercera con valores monetarios. Bordes horizontales gris claro separando las filas, selectores dropdown posicionados en la fila superior para filtrado.",
613
+ "_generated": {
614
+ "hash": "120606675cbdc8fd92ee7815fa7a9d05",
615
+ "version": "15.0.3",
616
+ "timestamp": "2026-01-30T19:15:34.211Z"
575
617
  }
576
618
  },
577
619
  {
@@ -634,6 +676,12 @@
634
676
  ]
635
677
  ],
636
678
  "classes": "min-w-full"
679
+ },
680
+ "visualDescription": "Tabla con checkboxes cuadrados sin marcar en la columna izquierda, encabezado de columnas en texto gris oscuro, y datos organizados en tres columnas. Filas con fondo blanco alternado, bordes horizontales gris tenue, y valores monetarios con símbolo € alineados a la derecha. Checkboxes de selección con borde gris oscuro, datos de meses en texto negro regular en la segunda columna.",
681
+ "_generated": {
682
+ "hash": "79d5c1483f9980abc0db8406016f4105",
683
+ "version": "15.0.3",
684
+ "timestamp": "2026-01-30T19:15:34.211Z"
637
685
  }
638
686
  },
639
687
  {
@@ -780,6 +828,12 @@
780
828
  ]
781
829
  ],
782
830
  "classes": "min-w-full"
831
+ },
832
+ "visualDescription": "Tabla con columna inicial de checkboxes sin marcar, seguida de columna de identificadores alfabéticos, columna con campo de búsqueda con ícono de lupa, y dos columnas de datos con selectores dropdown. Encabezados de columna con íconos de ordenamiento (flechas), bordes gris claro, fila inferior con label de totales en negrita y valores totales. Campos de filtro con fondo blanco, bordes gris, y controles dropdown en columnas de valores monetarios.",
833
+ "_generated": {
834
+ "hash": "d8b5bae702b344629d637caf498d99d0",
835
+ "version": "15.0.3",
836
+ "timestamp": "2026-01-30T19:15:34.211Z"
783
837
  }
784
838
  }
785
839
  ] %}