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
@@ -9,6 +9,12 @@
9
9
  "label": {
10
10
  "text": "Esto es un label"
11
11
  }
12
+ },
13
+ "visualDescription": "Textarea con borde gris medio de 1px, fondo blanco, esquinas redondeadas. Label negro en peso regular ubicado arriba. Contador de caracteres \"Puedes escribir hasta 250 caracteres\" en gris medio debajo del campo.",
14
+ "_generated": {
15
+ "hash": "280011d31f1d8090c2254c89c07bebc4",
16
+ "version": "15.0.3",
17
+ "timestamp": "2026-01-30T18:52:22.581Z"
12
18
  }
13
19
  },
14
20
  {
@@ -21,6 +27,12 @@
21
27
  "label": {
22
28
  "text": "Esto es un label"
23
29
  }
30
+ },
31
+ "visualDescription": "Textarea con borde gris medio de 1px, fondo blanco, esquinas redondeadas. Label negro en peso regular ubicado arriba. Texto placeholder \"Esto es un placeholder\" en gris claro dentro del campo. Contador de caracteres \"Puedes escribir hasta 250 caracteres\" en gris medio debajo.",
32
+ "_generated": {
33
+ "hash": "53dfb0bc76601f445c5c54e7cb7790e6",
34
+ "version": "15.0.3",
35
+ "timestamp": "2026-01-30T18:52:22.581Z"
24
36
  }
25
37
  },
26
38
  {
@@ -33,6 +45,12 @@
33
45
  "label": {
34
46
  "text": "Esto es un label"
35
47
  }
48
+ },
49
+ "visualDescription": "Textarea con borde gris claro de 1px, fondo gris muy claro, esquinas redondeadas. Label negro en peso regular ubicado arriba. Contador de caracteres \"Puedes escribir hasta 250 caracteres\" en gris medio debajo del campo. Apariencia visual de estado inactivo sin interacción posible.",
50
+ "_generated": {
51
+ "hash": "2b6bb817d339fded0b69001a2b6e104c",
52
+ "version": "15.0.3",
53
+ "timestamp": "2026-01-30T18:52:22.581Z"
36
54
  }
37
55
  },
38
56
  {
@@ -47,6 +65,12 @@
47
65
  "hint": {
48
66
  "text": "Esto es una pista."
49
67
  }
68
+ },
69
+ "visualDescription": "Textarea con borde gris de 1px, fondo blanco, esquinas redondeadas. Incluye label negro en texto normal arriba, subtexto gris debajo del label, y contador gris pequeño bajo el campo indicando caracteres disponibles (hasta 250).",
70
+ "_generated": {
71
+ "hash": "9ec2a1f2083297c1e1e9fd46e393e9a4",
72
+ "version": "15.0.3",
73
+ "timestamp": "2026-01-30T18:52:31.289Z"
50
74
  }
51
75
  },
52
76
  {
@@ -59,6 +83,12 @@
59
83
  "text": "Dirección completa"
60
84
  },
61
85
  "value": "Paseo María Agustín, 36,\n 50004 Zaragoza\n"
86
+ },
87
+ "visualDescription": "Textarea con borde gris de 1px, fondo blanco, esquinas redondeadas, contiene texto negro de dirección postal predefinido. Label negro en negrita arriba del campo, y contador gris pequeño bajo el textarea mostrando uso de caracteres (hasta 100).",
88
+ "_generated": {
89
+ "hash": "1d6bbc6799bd310e292689b0ca46df93",
90
+ "version": "15.0.3",
91
+ "timestamp": "2026-01-30T18:52:31.289Z"
62
92
  }
63
93
  },
64
94
  {
@@ -75,6 +105,12 @@
75
105
  "errorMessage": {
76
106
  "text": "Por favor, no exceder el límite máximo. Error en el campo."
77
107
  }
108
+ },
109
+ "visualDescription": "Textarea con borde rojo de 2px, fondo blanco, esquinas redondeadas, contiene texto negro de dirección postal predefinido. Label negro en negrita arriba, mensaje de error rojo debajo del label, y contador rojo pequeño bajo el textarea mostrando exceso de caracteres (hasta 250).",
110
+ "_generated": {
111
+ "hash": "9636636f48a71f5ec6cb7c3e7b20408f",
112
+ "version": "15.0.3",
113
+ "timestamp": "2026-01-30T18:52:31.289Z"
78
114
  }
79
115
  },
80
116
  {
@@ -87,6 +123,12 @@
87
123
  "text": "Dirección completa"
88
124
  },
89
125
  "rows": 8
126
+ },
127
+ "visualDescription": "Textarea con borde gris de 2px, fondo blanco, altura de aproximadamente 100px. Label \"Dirección completa\" en negro encima del campo. Texto contador \"Puedes escribir hasta 200 caracteres\" en gris claro debajo del textarea, alineado a la izquierda.",
128
+ "_generated": {
129
+ "hash": "c93b07854b908087a05d3cc2dad4f6bf",
130
+ "version": "15.0.3",
131
+ "timestamp": "2026-01-30T18:52:39.383Z"
90
132
  }
91
133
  },
92
134
  {
@@ -98,6 +140,12 @@
98
140
  "label": {
99
141
  "text": "Dirección completa"
100
142
  }
143
+ },
144
+ "visualDescription": "Textarea con borde gris de 2px, fondo blanco, altura de aproximadamente 60px. Label \"Dirección completa\" en negro encima del campo de entrada. Texto contador \"Puedes escribir hasta 10 palabras\" en gris claro debajo del textarea, alineado a la izquierda.",
145
+ "_generated": {
146
+ "hash": "602e604c19b1091e73ab88d5934f2022",
147
+ "version": "15.0.3",
148
+ "timestamp": "2026-01-30T18:52:39.383Z"
101
149
  }
102
150
  },
103
151
  {
@@ -110,6 +158,12 @@
110
158
  "label": {
111
159
  "text": "Dirección completa"
112
160
  }
161
+ },
162
+ "visualDescription": "Textarea con borde gris de 2px, fondo blanco, altura de aproximadamente 100px. Label \"Dirección completa\" en negro encima del campo de entrada. Texto contador \"Puedes escribir hasta 250 caracteres\" en gris claro debajo del textarea, alineado a la izquierda.",
163
+ "_generated": {
164
+ "hash": "529c3a2126914b9e8347a8b25ad014ca",
165
+ "version": "15.0.3",
166
+ "timestamp": "2026-01-30T18:52:39.383Z"
113
167
  }
114
168
  },
115
169
  {
@@ -131,6 +185,12 @@
131
185
  "classes": "order-1 w-full pt-sm"
132
186
  },
133
187
  "classes": "lg:flex-1"
188
+ },
189
+ "visualDescription": "Componente con label \"Intro label:\" en negro arriba a la izquierda, campo de texto grande con borde rojo grueso de 2-3px y fondo blanco. Debajo aparece mensaje de error \"Esto es un mensaje de error\" en rojo negrita, seguido de texto secundario \"Puedes escribir hasta 200 caracteres\" en gris.",
190
+ "_generated": {
191
+ "hash": "55d5d92ddf94c97e6ce6d21a1f9f138a",
192
+ "version": "15.0.3",
193
+ "timestamp": "2026-01-30T18:52:46.955Z"
134
194
  }
135
195
  }
136
196
  ] %}
@@ -130,6 +130,12 @@
130
130
  "text": "Teléfono"
131
131
  }
132
132
  ]
133
+ },
134
+ "visualDescription": "Grupo de tres checkboxes sin marcar con labels en negro. Encabezado en negrita negro pregunta sobre preferencias de contacto, seguido de texto gris instructivo. Fondo blanco con borde gris claro delimitando el componente completo.",
135
+ "_generated": {
136
+ "hash": "b35e6609f05ea9ee328a42e0da095a61",
137
+ "version": "15.0.3",
138
+ "timestamp": "2026-01-30T18:52:53.918Z"
133
139
  }
134
140
  },
135
141
  {
@@ -159,6 +165,12 @@
159
165
  "text": "Correo postal"
160
166
  }
161
167
  ]
168
+ },
169
+ "visualDescription": "Grupo de dos checkboxes sin marcar con labels en negro. Encabezado en negrita negro pregunta sobre preferencias de contacto, seguido de texto gris instructivo. Fondo blanco con borde gris claro delimitando el componente completo.",
170
+ "_generated": {
171
+ "hash": "e0540ce6682a0c05028cf634d18893d4",
172
+ "version": "15.0.3",
173
+ "timestamp": "2026-01-30T18:52:53.918Z"
162
174
  }
163
175
  },
164
176
  {
@@ -191,6 +203,12 @@
191
203
  }
192
204
  }
193
205
  ]
206
+ },
207
+ "visualDescription": "Grupo de dos checkboxes sin marcar con labels en negro y texto de ayuda gris debajo de cada opción. Encabezado en negrita negro pregunta sobre preferencias de contacto. Fondo blanco con borde gris claro delimitando el componente completo, texto secundario en gris proporciona contexto adicional para cada checkbox.",
208
+ "_generated": {
209
+ "hash": "004cf6deb01dee8dd239e4dae0d0e4c2",
210
+ "version": "15.0.3",
211
+ "timestamp": "2026-01-30T18:52:53.918Z"
194
212
  }
195
213
  },
196
214
  {
@@ -242,6 +260,12 @@
242
260
  }
243
261
  }
244
262
  ]
263
+ },
264
+ "visualDescription": "Grupo de checkboxes con bordes grises claros separando cada opción. Encabezado en negro con texto de ayuda en rojo debajo. Checkboxes con cuadrados blancos de borde gris, labels en negro, texto de ayuda gris debajo de cada opción. Cuando se selecciona teléfono, aparece un campo de texto con label gris y borde gris.",
265
+ "_generated": {
266
+ "hash": "afe43a55114c0c623e38954b0e90dc63",
267
+ "version": "15.0.3",
268
+ "timestamp": "2026-01-30T18:53:03.466Z"
245
269
  }
246
270
  },
247
271
  {
@@ -276,6 +300,12 @@
276
300
  "classes": "bg-neutral-lighter"
277
301
  }
278
302
  ]
303
+ },
304
+ "visualDescription": "Grupo de checkboxes con fondo azul claro en la primera opción. Título en negro arriba del grupo. Dos checkboxes con cuadrados blancos de borde gris, labels en negro, y texto de ayuda gris debajo de cada label. Sin bordes divisorios entre opciones.",
305
+ "_generated": {
306
+ "hash": "b2fb4e8f402a12ecbca2df64fa9869b1",
307
+ "version": "15.0.3",
308
+ "timestamp": "2026-01-30T18:53:03.466Z"
279
309
  }
280
310
  },
281
311
  {
@@ -300,6 +330,12 @@
300
330
  "disabled": true
301
331
  }
302
332
  ]
333
+ },
334
+ "visualDescription": "Grupo de tres checkboxes sin bordes divisorios. Primer checkbox sin marcar con cuadrado blanco de borde gris y label negro. Segundo checkbox marcado con check verde y label negro. Tercer checkbox deshabilitado con cuadrado gris, label gris atenuado, sin posibilidad de interacción.",
335
+ "_generated": {
336
+ "hash": "d08d81692b28f58c743b0054b2605af8",
337
+ "version": "15.0.3",
338
+ "timestamp": "2026-01-30T18:53:03.466Z"
303
339
  }
304
340
  },
305
341
  {
@@ -333,6 +369,12 @@
333
369
  "text": "Teléfono"
334
370
  }
335
371
  ]
372
+ },
373
+ "visualDescription": "Fieldset con borde gris claro de 1px, encabezado grande en texto negro preguntando sobre preferencias de contacto. Tres checkboxes verticales sin marcar (Correo electrónico, Correo postal, Teléfono) con labels en texto negro. Mensaje de error en rojo arriba indicando que se debe seleccionar al menos una opción.",
374
+ "_generated": {
375
+ "hash": "b08d35753a0856f5116cc7d9db4b21a2",
376
+ "version": "15.0.3",
377
+ "timestamp": "2026-01-30T18:53:13.889Z"
336
378
  }
337
379
  },
338
380
  {
@@ -355,6 +397,12 @@
355
397
  "text": "Teléfono"
356
398
  }
357
399
  ]
400
+ },
401
+ "visualDescription": "Grupo de tres checkboxes verticales sin borde contenedor, con título pequeño \"sin fieldset\" en gris oscuro arriba. Checkboxes sin marcar (Correo electrónico, Correo postal, Teléfono) con labels en texto negro, presentados en lista vertical sobre fondo blanco sin bordes delimitadores.",
402
+ "_generated": {
403
+ "hash": "0032e381b49bc66d24b36aa0a9d82439",
404
+ "version": "15.0.3",
405
+ "timestamp": "2026-01-30T18:53:13.889Z"
358
406
  }
359
407
  },
360
408
  {
@@ -372,6 +420,12 @@
372
420
  "html": "Acepto los <a href='#' target='_blank' class='c-link' title='Se abre en ventana nueva del navegador'>términos y condiciones</a>"
373
421
  }
374
422
  ]
423
+ },
424
+ "visualDescription": "Fieldset con borde gris claro de 1px, título descriptivo en texto negro sobre el uso de aria-describedby. Checkbox individual sin marcar con label \"Acepto los\" seguido de enlace azul subrayado \"términos y condiciones\". Mensaje de error en rojo arriba solicitando aceptar los términos.",
425
+ "_generated": {
426
+ "hash": "e10048a2729a00674e0e1e8ea1cf6d70",
427
+ "version": "15.0.3",
428
+ "timestamp": "2026-01-30T18:53:13.889Z"
375
429
  }
376
430
  },
377
431
  {
@@ -391,6 +445,12 @@
391
445
  }
392
446
  }
393
447
  ]
448
+ },
449
+ "visualDescription": "Checkbox sin marcar con borde rojo de 2px, acompañado de label en negro con texto secundario gris debajo. Fondo blanco, contenedor con borde gris claro. Mensaje de error en rojo encima del checkbox indica validación pendiente.",
450
+ "_generated": {
451
+ "hash": "f0fab73c491454b5e79f07634d9bc6f2",
452
+ "version": "15.0.3",
453
+ "timestamp": "2026-01-30T18:53:22.839Z"
394
454
  }
395
455
  },
396
456
  {
@@ -420,6 +480,12 @@
420
480
  "text": "Teléfono"
421
481
  }
422
482
  ]
483
+ },
484
+ "visualDescription": "Grupo de tres checkboxes sin marcar con bordes rojos de 2px, labels en negro (\"Correo electrónico\", \"Correo postal\", \"Teléfono\"). Título de pregunta en negro arriba, mensaje de error en rojo debajo del título. Fondo blanco, contenedor con borde gris claro.",
485
+ "_generated": {
486
+ "hash": "90be10d247ee63f67a33ffea19d03878",
487
+ "version": "15.0.3",
488
+ "timestamp": "2026-01-30T18:53:22.839Z"
423
489
  }
424
490
  },
425
491
  {
@@ -450,6 +516,12 @@
450
516
  "text": "Teléfono"
451
517
  }
452
518
  ]
519
+ },
520
+ "visualDescription": "Grupo de tres checkboxes sin marcar con bordes rojos de 2px, labels en negro para cada opción de contacto. Pregunta en negro encima, mensaje de validación en rojo debajo de la pregunta. Fondo blanco, layout vertical con espaciado uniforme entre elementos.",
521
+ "_generated": {
522
+ "hash": "487a697392d34c23813bb0cd56d14c98",
523
+ "version": "15.0.3",
524
+ "timestamp": "2026-01-30T18:53:22.839Z"
453
525
  }
454
526
  },
455
527
  {
@@ -489,6 +561,12 @@
489
561
  }
490
562
  }
491
563
  ]
564
+ },
565
+ "visualDescription": "Grupo de checkboxes con borde rojo de 2px y fondo blanco. El título principal aparece en negro, seguido de texto de error en rojo con enlace subrayado en rojo. Cada checkbox sin marcar tiene borde gris, con label en negro y texto descriptivo secundario en gris debajo de cada opción.",
566
+ "_generated": {
567
+ "hash": "12763a8865daa39641e8fa91793786d2",
568
+ "version": "15.0.3",
569
+ "timestamp": "2026-01-30T18:53:32.934Z"
492
570
  }
493
571
  },
494
572
  {
@@ -522,6 +600,12 @@
522
600
  "text": "Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. Sed posuere consectetur est at lobortis."
523
601
  }
524
602
  ]
603
+ },
604
+ "visualDescription": "Grupo de checkboxes con borde gris de 1px y fondo blanco. El título principal en negro va seguido de subtítulo en gris y párrafo con texto negro y fragmentos en rojo subrayado. Dos checkboxes sin marcar con borde gris, cada uno con label en negro seguido de múltiples líneas de texto descriptivo en gris que ocupan varios renglones.",
605
+ "_generated": {
606
+ "hash": "2aafe56aa2d1c450b218c2ab11afdf0b",
607
+ "version": "15.0.3",
608
+ "timestamp": "2026-01-30T18:53:32.934Z"
525
609
  }
526
610
  },
527
611
  {
@@ -559,6 +643,12 @@
559
643
  }
560
644
  }
561
645
  ]
646
+ },
647
+ "visualDescription": "Grupo de checkboxes con borde gris de 1px y fondo blanco. Título pregunta en negro encima de tres opciones verticales. Cada checkbox sin marcar tiene borde gris con label en negro alineado a la derecha, sin texto descriptivo adicional.",
648
+ "_generated": {
649
+ "hash": "41879fc0c8d6643feb4ede218bf6374b",
650
+ "version": "15.0.3",
651
+ "timestamp": "2026-01-30T18:53:32.934Z"
562
652
  }
563
653
  },
564
654
  {
@@ -596,6 +686,12 @@
596
686
  }
597
687
  }
598
688
  ]
689
+ },
690
+ "visualDescription": "Grupo de checkboxes con título en texto negro. Checkbox \"Teléfono\" marcado con checkmark blanco en fondo azul, revelando label \"Número de teléfono fijo\" en negro y campo de texto rectangular con borde gris. Checkboxes \"Correo electrónico\" y \"Mensaje SMS\" desmarcados con borde gris oscuro y fondo blanco.",
691
+ "_generated": {
692
+ "hash": "1b3fc7a37bb15b87d05330e064bf6043",
693
+ "version": "15.0.3",
694
+ "timestamp": "2026-01-30T18:53:42.047Z"
599
695
  }
600
696
  },
601
697
  {
@@ -635,6 +731,12 @@
635
731
  }
636
732
  }
637
733
  ]
734
+ },
735
+ "visualDescription": "Grupo de checkboxes con título en texto negro. Checkbox \"Teléfono\" marcado con checkmark blanco en fondo azul, revelando label \"Número de teléfono móvil\" en negro, texto de error en rojo, y campo de texto con borde rojo grueso. Checkboxes \"Correo electrónico\" y \"Mensaje SMS\" desmarcados con borde rojo.",
736
+ "_generated": {
737
+ "hash": "2736892fbda93848e5d2988f108818f1",
738
+ "version": "15.0.3",
739
+ "timestamp": "2026-01-30T18:53:42.047Z"
638
740
  }
639
741
  },
640
742
  {
@@ -669,6 +771,12 @@
669
771
  }
670
772
  }
671
773
  ]
774
+ },
775
+ "visualDescription": "Lista vertical de tres checkboxes sin marcar: cada checkbox tiene borde gris oscuro y fondo blanco. Labels en texto negro regular alineados a la derecha de cada checkbox. Espaciado compacto entre elementos.",
776
+ "_generated": {
777
+ "hash": "17662ee9b3cb12d4d68cdca15572f6c6",
778
+ "version": "15.0.3",
779
+ "timestamp": "2026-01-30T18:53:42.047Z"
672
780
  }
673
781
  },
674
782
  {
@@ -689,6 +797,12 @@
689
797
  }
690
798
  }
691
799
  ]
800
+ },
801
+ "visualDescription": "Checkbox de tamaño pequeño con borde gris oscuro de 1px y fondo blanco, conteniendo un guion horizontal gris en el centro indicando estado indeterminado. Label de texto negro normal alineado a la derecha del checkbox, leyendo \"1 elemento seleccionado\".",
802
+ "_generated": {
803
+ "hash": "655e826fbb1a0317ca2018c37878a04d",
804
+ "version": "15.0.3",
805
+ "timestamp": "2026-01-30T18:53:48.604Z"
692
806
  }
693
807
  },
694
808
  {
@@ -711,6 +825,12 @@
711
825
  }
712
826
  }
713
827
  ]
828
+ },
829
+ "visualDescription": "Checkbox de tamaño pequeño con borde gris oscuro de 1px y fondo blanco, conteniendo un guion horizontal gris en el centro indicando estado indeterminado. Label de texto negro normal alineado a la derecha del checkbox, leyendo \"1 elemento seleccionado\".",
830
+ "_generated": {
831
+ "hash": "5828c23f8c6e24052da6398ec22f32f4",
832
+ "version": "15.0.3",
833
+ "timestamp": "2026-01-30T18:53:48.604Z"
714
834
  }
715
835
  }
716
836
  ] %}
@@ -11,6 +11,12 @@
11
11
  consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
12
12
  cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
13
13
  proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
14
+ },
15
+ "visualDescription": "Panel colapsable con fondo blanco, borde gris claro de 1px, y esquinas redondeadas. Cabecera \"Cabecera del colapsable\" en texto negro negrita alineado a la izquierda con enlace \"Ocultar\" gris en la derecha. Contenido expandido muestra párrafo de texto negro regular en múltiples líneas debajo de la cabecera.",
16
+ "_generated": {
17
+ "hash": "89a37d96f81dbd4bd089f807dc6783a5",
18
+ "version": "15.0.3",
19
+ "timestamp": "2026-01-30T18:53:57.032Z"
14
20
  }
15
21
  },
16
22
  {
@@ -26,6 +32,12 @@
26
32
  cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
27
33
  proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
28
34
  "open": true
35
+ },
36
+ "visualDescription": "Panel colapsable con fondo blanco, borde gris claro de 1px, y esquinas redondeadas. Cabecera \"Cabecera del colapsable\" en texto negro negrita alineado a la izquierda con enlace \"Mostrar\" gris en la derecha. Contenido del panel está oculto, solo visible la barra de cabecera sin texto adicional debajo.",
37
+ "_generated": {
38
+ "hash": "eca0f746008210cd0ebd898ce330cdd7",
39
+ "version": "15.0.3",
40
+ "timestamp": "2026-01-30T18:53:57.032Z"
29
41
  }
30
42
  },
31
43
  {
@@ -40,6 +52,12 @@
40
52
  consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
41
53
  cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
42
54
  proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
55
+ },
56
+ "visualDescription": "Panel colapsable con fondo blanco, borde gris claro de 1px, y esquinas redondeadas. Cabecera \"Cabecera del colapsable\" en texto negro negrita alineado a la izquierda con enlace \"Ocultar\" gris en la derecha. Contenido expandido muestra párrafo de texto negro regular en múltiples líneas debajo de la cabecera.",
57
+ "_generated": {
58
+ "hash": "52f0e096b1cec49be9c4695c0f3300af",
59
+ "version": "15.0.3",
60
+ "timestamp": "2026-01-30T18:53:57.032Z"
43
61
  }
44
62
  },
45
63
  {
@@ -53,6 +71,12 @@
53
71
  consequat. Duis aute irure dolor in <strong>reprehenderit</strong> in voluptate velit esse
54
72
  cillum dolore eu fugiat nulla <em>pariatur</em>. Excepteur sint occaecat cupidatat non
55
73
  proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>"
74
+ },
75
+ "visualDescription": "Panel collapsible con fondo blanco, borde gris de 1px. Título en negrita negro \"Cabecera del collapsible\" alineado a la izquierda, botón \"Ocultar\" azul pequeño alineado a la derecha. Contenido expandido muestra texto negro regular en párrafo con palabras en negrita intercaladas.",
76
+ "_generated": {
77
+ "hash": "5663d551eaa8d0337b3caee053db26be",
78
+ "version": "15.0.3",
79
+ "timestamp": "2026-01-30T18:54:04.708Z"
56
80
  }
57
81
  },
58
82
  {
@@ -72,6 +96,12 @@
72
96
  "showClasses": "hidden!",
73
97
  "hideClasses": "hidden!",
74
98
  "contentClasses": "flex-1 border border-neutral-base p-base bg-white rounded-sm"
99
+ },
100
+ "visualDescription": "Panel collapsible con fondo celeste claro, sin borde visible. Botón rectangular con fondo turquesa y texto blanco \"Cabecera del collapsible\" alineado a la izquierda. Contenido expandido muestra texto negro regular en párrafo sobre el fondo celeste claro.",
101
+ "_generated": {
102
+ "hash": "cc1ac121a8b979d3b9f3bc39c95c7350",
103
+ "version": "15.0.3",
104
+ "timestamp": "2026-01-30T18:54:04.708Z"
75
105
  }
76
106
  }
77
107
  ] %}
@@ -36,6 +36,12 @@
36
36
  }
37
37
  }
38
38
  ]
39
+ },
40
+ "visualDescription": "Componente de fecha con tres campos de entrada separados para día, mes y año. Cada campo tiene borde gris claro de 1px y fondo blanco. Encabezado en negro con texto descriptivo gris pequeño debajo mostrando formato de ejemplo.",
41
+ "_generated": {
42
+ "hash": "7654b0ccadfb86f502a9eba64139432f",
43
+ "version": "15.0.3",
44
+ "timestamp": "2026-01-30T18:54:11.775Z"
39
45
  }
40
46
  },
41
47
  {
@@ -76,6 +82,12 @@
76
82
  }
77
83
  }
78
84
  ]
85
+ },
86
+ "visualDescription": "Componente de fecha con tres campos de entrada separados para día, mes y año. Cada campo tiene borde rojo de 2px y fondo blanco. Encabezado en negro con mensaje de error en texto rojo pequeño debajo de los campos.",
87
+ "_generated": {
88
+ "hash": "ebf304dd3809905f8a5abf202866fee1",
89
+ "version": "15.0.3",
90
+ "timestamp": "2026-01-30T18:54:11.775Z"
79
91
  }
80
92
  },
81
93
  {
@@ -119,6 +131,12 @@
119
131
  }
120
132
  }
121
133
  ]
134
+ },
135
+ "visualDescription": "Componente de fecha con tres campos de entrada separados para día, mes y año. Cada campo tiene borde rojo de 2px y fondo blanco. Encabezado en negro, texto descriptivo gris pequeño arriba de los campos, y mensaje de error en texto rojo pequeño debajo de los campos.",
136
+ "_generated": {
137
+ "hash": "f6307deb728c9272ede4ad48a959cf34",
138
+ "version": "15.0.3",
139
+ "timestamp": "2026-01-30T18:54:11.775Z"
122
140
  }
123
141
  },
124
142
  {
@@ -161,6 +179,12 @@
161
179
  }
162
180
  }
163
181
  ]
182
+ },
183
+ "visualDescription": "Componente de fecha con tres campos de entrada alineados horizontalmente. El primer campo (día) tiene borde rojo de 2px, mientras los campos de mes y año tienen bordes grises estándar. Texto de error en rojo debajo de los campos, título negro en la parte superior, y subtexto gris claro que indica formato de ejemplo.",
184
+ "_generated": {
185
+ "hash": "7e56017e6c7907ee454cc3ad8ba51b0d",
186
+ "version": "15.0.3",
187
+ "timestamp": "2026-01-30T18:54:22.278Z"
164
188
  }
165
189
  },
166
190
  {
@@ -203,6 +227,12 @@
203
227
  }
204
228
  }
205
229
  ]
230
+ },
231
+ "visualDescription": "Componente de fecha con tres campos de entrada alineados horizontalmente. El campo central (mes) tiene borde rojo de 2px, mientras los campos de día y año mantienen bordes grises estándar. Texto de error en rojo debajo de los campos, título negro en la parte superior, y subtexto gris claro que muestra ejemplo de formato.",
232
+ "_generated": {
233
+ "hash": "8245312c5b2219b537c27eba0d75c5a0",
234
+ "version": "15.0.3",
235
+ "timestamp": "2026-01-30T18:54:22.278Z"
206
236
  }
207
237
  },
208
238
  {
@@ -245,6 +275,12 @@
245
275
  }
246
276
  }
247
277
  ]
278
+ },
279
+ "visualDescription": "Componente de fecha con tres campos de entrada alineados horizontalmente. El tercer campo (año) presenta borde rojo de 2px, mientras los campos de día y mes conservan bordes grises estándar. Texto de error en rojo ubicado debajo de los campos, título negro en la parte superior, y subtexto gris claro indicando formato esperado.",
280
+ "_generated": {
281
+ "hash": "ec5d62ef6aa779956bc25e82fb6b7835",
282
+ "version": "15.0.3",
283
+ "timestamp": "2026-01-30T18:54:22.278Z"
248
284
  }
249
285
  },
250
286
  {
@@ -260,6 +296,12 @@
260
296
  "hint": {
261
297
  "text": "Por ejemplo, día: 31 mes: 3 año: 1980"
262
298
  }
299
+ },
300
+ "visualDescription": "Grupo de tres campos de entrada numéricos alineados horizontalmente con bordes grises de 1px y fondo blanco. Encabezado en negrita negro, subtexto descriptivo gris con ejemplo de fecha, y tres labels grises pequeños (\"Día\", \"Mes\", \"Año\") sobre cada campo respectivo. Los campos tienen tamaño pequeño uniforme con esquinas redondeadas sutiles.",
301
+ "_generated": {
302
+ "hash": "28d86e05f5f6096f809f00d05b1453ef",
303
+ "version": "15.0.3",
304
+ "timestamp": "2026-01-30T18:54:32.941Z"
263
305
  }
264
306
  },
265
307
  {
@@ -297,6 +339,12 @@
297
339
  }
298
340
  }
299
341
  ]
342
+ },
343
+ "visualDescription": "Dos campos de entrada numéricos alineados horizontalmente con bordes grises de 1px y fondo blanco, separados por dos puntos negros. Encabezado principal en negrita negro, subtexto descriptivo gris con formato de ejemplo, y dos labels grises pequeños (\"Hora\", \"Minutos\") sobre cada campo. Los campos tienen ancho reducido con esquinas redondeadas sutiles.",
344
+ "_generated": {
345
+ "hash": "8f273b1ceadf88767e75c547fa49201f",
346
+ "version": "15.0.3",
347
+ "timestamp": "2026-01-30T18:54:32.941Z"
300
348
  }
301
349
  },
302
350
  {
@@ -315,6 +363,12 @@
315
363
  "formGroup": {
316
364
  "classes": "p-base bg-primary-light"
317
365
  }
366
+ },
367
+ "visualDescription": "Grupo de tres campos de entrada numéricos con bordes grises de 1px sobre fondo azul celeste claro. Encabezado en negrita azul oscuro, subtexto descriptivo azul oscuro con ejemplo de fecha, y tres labels azul oscuro pequeños (\"Día\", \"Mes\", \"Año\") sobre campos de fondo blanco. Los campos tienen tamaño pequeño uniforme con esquinas redondeadas, contenidos en contenedor con padding generoso.",
368
+ "_generated": {
369
+ "hash": "44afe613b59ef9620d88ec3550a1fe21",
370
+ "version": "15.0.3",
371
+ "timestamp": "2026-01-30T18:54:32.941Z"
318
372
  }
319
373
  },
320
374
  {
@@ -356,6 +410,12 @@
356
410
  }
357
411
  }
358
412
  ]
413
+ },
414
+ "visualDescription": "Tres campos de entrada rectangulares alineados horizontalmente con bordes grises de 1px y fondo blanco. Encabezado en negrita negro arriba, seguido de texto descriptivo gris en dos líneas. Labels \"Día\", \"Mes\", \"Año\" en negro arriba de cada campo respectivo.",
415
+ "_generated": {
416
+ "hash": "cbc06eed93ec064c5971ef9ed7618217",
417
+ "version": "15.0.3",
418
+ "timestamp": "2026-01-30T18:54:41.338Z"
359
419
  }
360
420
  },
361
421
  {
@@ -397,6 +457,12 @@
397
457
  }
398
458
  }
399
459
  ]
460
+ },
461
+ "visualDescription": "Tres campos de entrada rectangulares alineados horizontalmente con bordes grises de 1px y fondo blanco. Encabezado en negrita negro arriba, seguido de texto descriptivo gris en dos líneas. Labels \"Día\", \"Mes\", \"Año\" en negro arriba de cada campo respectivo.",
462
+ "_generated": {
463
+ "hash": "8418d3131ee57c0415dc6061865c568f",
464
+ "version": "15.0.3",
465
+ "timestamp": "2026-01-30T18:54:41.338Z"
400
466
  }
401
467
  },
402
468
  {
@@ -449,6 +515,12 @@
449
515
  }
450
516
  }
451
517
  ]
518
+ },
519
+ "visualDescription": "Tres campos de entrada rectangulares alineados horizontalmente con bordes grises de 1px y fondo blanco. Encabezado en negrita negro arriba, seguido de texto descriptivo gris en una línea. Labels \"Día\", \"Mes\", \"Año\" en negro arriba de cada campo respectivo.",
520
+ "_generated": {
521
+ "hash": "cdd0bae191cf102b7a121d97e995e150",
522
+ "version": "15.0.3",
523
+ "timestamp": "2026-01-30T18:54:41.338Z"
452
524
  }
453
525
  },
454
526
  {
@@ -496,6 +568,12 @@
496
568
  }
497
569
  }
498
570
  ]
571
+ },
572
+ "visualDescription": "Componente con encabezado \"Input de tiempo peque\" en fuente negra estándar. Contiene etiqueta \"Hora de aplicación\" en texto negro, ejemplo \"Por ejemplo: 14:30\" en gris, y dos campos de entrada pequeños con bordes grises de 1px y fondo blanco separados por dos puntos, etiquetados \"Hora\" y \"Minutos\" respectivamente en texto gris pequeño debajo de cada campo.",
573
+ "_generated": {
574
+ "hash": "5e718d3d90147ac0bf725bc694c6b65f",
575
+ "version": "15.0.3",
576
+ "timestamp": "2026-01-30T18:54:48.811Z"
499
577
  }
500
578
  }
501
579
  ] %}