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
@@ -4,6 +4,12 @@
4
4
  "name": "por defecto",
5
5
  "data": {
6
6
  "text": "Por defecto"
7
+ },
8
+ "visualDescription": "Botón rectangular con borde azul de 1-2px, fondo blanco, y texto azul en peso normal. El botón tiene padding moderado alrededor del texto. Esquinas ligeramente redondeadas.",
9
+ "_generated": {
10
+ "hash": "9c8905b1b80586acb882d3e1c9bb50e0",
11
+ "version": "15.0.3",
12
+ "timestamp": "2026-01-30T18:49:58.711Z"
7
13
  }
8
14
  },
9
15
  {
@@ -13,6 +19,12 @@
13
19
  "name": "active",
14
20
  "text": "Activo",
15
21
  "classes": "ds-active"
22
+ },
23
+ "visualDescription": "Botón rectangular con borde azul de 1-2px, fondo azul sólido, y texto blanco en peso normal. El botón tiene padding moderado alrededor del texto. Esquinas ligeramente redondeadas.",
24
+ "_generated": {
25
+ "hash": "87faca7a0214cfbcea6b282cef93d774",
26
+ "version": "15.0.3",
27
+ "timestamp": "2026-01-30T18:49:58.711Z"
16
28
  }
17
29
  },
18
30
  {
@@ -22,6 +34,12 @@
22
34
  "name": "hover",
23
35
  "text": "Hover",
24
36
  "classes": "ds-hover"
37
+ },
38
+ "visualDescription": "Botón rectangular con borde azul oscuro de 1-2px, fondo azul claro translúcido, y texto azul oscuro en peso normal. El botón tiene padding moderado alrededor del texto. Esquinas ligeramente redondeadas.",
39
+ "_generated": {
40
+ "hash": "5d335eb27a127b6d73e914f202f4d864",
41
+ "version": "15.0.3",
42
+ "timestamp": "2026-01-30T18:49:58.711Z"
25
43
  }
26
44
  },
27
45
  {
@@ -31,6 +49,12 @@
31
49
  "name": "focus",
32
50
  "text": "Focus",
33
51
  "classes": "ds-focus"
52
+ },
53
+ "visualDescription": "Botón rectangular con fondo amarillo brillante, borde negro de 2px, y texto en negrita negro centrado. Dimensiones compactas de altura aproximada 30-35px y ancho ajustado al contenido con padding lateral moderado.",
54
+ "_generated": {
55
+ "hash": "d0dd8934f4b1e971bff30a2b36904cfb",
56
+ "version": "15.0.3",
57
+ "timestamp": "2026-01-30T18:50:06.186Z"
34
58
  }
35
59
  },
36
60
  {
@@ -38,6 +62,12 @@
38
62
  "data": {
39
63
  "text": "Deshabilitado",
40
64
  "disabled": true
65
+ },
66
+ "visualDescription": "Botón rectangular con fondo blanco, borde gris claro de 1px, y texto en color gris claro centrado. Dimensiones compactas de altura aproximada 30-35px y ancho ajustado al contenido con padding lateral moderado.",
67
+ "_generated": {
68
+ "hash": "a369de481f71bb21bc4679d44d965da8",
69
+ "version": "15.0.3",
70
+ "timestamp": "2026-01-30T18:50:06.186Z"
41
71
  }
42
72
  },
43
73
  {
@@ -45,6 +75,12 @@
45
75
  "data": {
46
76
  "text": "Primario",
47
77
  "classes": "c-button--primary"
78
+ },
79
+ "visualDescription": "Botón rectangular con fondo azul petróleo oscuro, sin borde visible, y texto en blanco centrado. Dimensiones compactas de altura aproximada 30-35px y ancho ajustado al contenido con padding lateral moderado.",
80
+ "_generated": {
81
+ "hash": "e553b82e738719f98ddb49d77e6a77a2",
82
+ "version": "15.0.3",
83
+ "timestamp": "2026-01-30T18:50:06.186Z"
48
84
  }
49
85
  },
50
86
  {
@@ -54,6 +90,12 @@
54
90
  "name": "active",
55
91
  "text": "Activo",
56
92
  "classes": "c-button--primary ds-active"
93
+ },
94
+ "visualDescription": "Botón rectangular con fondo azul oscuro (teal/petróleo), texto blanco en negrita, padding horizontal amplio. Bordes con esquinas ligeramente redondeadas, aspecto sólido y clickeable.",
95
+ "_generated": {
96
+ "hash": "7e43e4748fb6c61b46af7f6213480185",
97
+ "version": "15.0.3",
98
+ "timestamp": "2026-01-30T18:50:13.863Z"
57
99
  }
58
100
  },
59
101
  {
@@ -63,6 +105,12 @@
63
105
  "name": "hover",
64
106
  "text": "Hover",
65
107
  "classes": "c-button--primary ds-hover"
108
+ },
109
+ "visualDescription": "Botón rectangular con fondo azul marino oscuro, texto blanco en negrita, padding horizontal amplio. Bordes con esquinas ligeramente redondeadas, superficie sólida sin transparencias.",
110
+ "_generated": {
111
+ "hash": "abd8d3b0bacd7c3a136c986e96beece9",
112
+ "version": "15.0.3",
113
+ "timestamp": "2026-01-30T18:50:13.863Z"
66
114
  }
67
115
  },
68
116
  {
@@ -72,6 +120,12 @@
72
120
  "name": "focus",
73
121
  "text": "Focus",
74
122
  "classes": "c-button--primary ds-focus"
123
+ },
124
+ "visualDescription": "Botón rectangular con fondo amarillo brillante, texto negro en negrita, padding horizontal amplio. Bordes con esquinas ligeramente redondeadas, alto contraste entre fondo y texto, borde negro de 2px visible.",
125
+ "_generated": {
126
+ "hash": "e0112cf7b0a54ec67ec4583d4a93d214",
127
+ "version": "15.0.3",
128
+ "timestamp": "2026-01-30T18:50:13.863Z"
75
129
  }
76
130
  },
77
131
  {
@@ -80,6 +134,12 @@
80
134
  "text": "Deshabilitado",
81
135
  "disabled": true,
82
136
  "classes": "c-button--primary"
137
+ },
138
+ "visualDescription": "Botón rectangular con fondo gris azulado claro, texto blanco en peso regular centrado. Bordes redondeados sutiles, apariencia atenuada sin sombras ni efectos hover visibles.",
139
+ "_generated": {
140
+ "hash": "daa793dceaf4ff9f199645ff15d34202",
141
+ "version": "15.0.3",
142
+ "timestamp": "2026-01-30T18:50:21.174Z"
83
143
  }
84
144
  },
85
145
  {
@@ -87,6 +147,12 @@
87
147
  "data": {
88
148
  "text": "Alerta",
89
149
  "classes": "c-button--alert"
150
+ },
151
+ "visualDescription": "Botón rectangular con fondo rojo brillante, texto blanco en peso regular centrado. Bordes redondeados sutiles, apariencia sólida con contraste alto entre fondo y texto.",
152
+ "_generated": {
153
+ "hash": "e0e1fe511c0799c3b71c98505c5daed6",
154
+ "version": "15.0.3",
155
+ "timestamp": "2026-01-30T18:50:21.174Z"
90
156
  }
91
157
  },
92
158
  {
@@ -96,6 +162,12 @@
96
162
  "name": "active",
97
163
  "text": "Activo",
98
164
  "classes": "c-button--alert ds-active"
165
+ },
166
+ "visualDescription": "Botón rectangular con fondo rojo oscuro intenso, texto blanco en peso regular centrado. Bordes redondeados sutiles, apariencia de estado presionado con tono más profundo que denota interacción activa.",
167
+ "_generated": {
168
+ "hash": "1d1ffc08adcde9326a974f80d944c07e",
169
+ "version": "15.0.3",
170
+ "timestamp": "2026-01-30T18:50:21.174Z"
99
171
  }
100
172
  },
101
173
  {
@@ -105,6 +177,12 @@
105
177
  "name": "hover",
106
178
  "text": "Hover",
107
179
  "classes": "c-button--alert ds-hover"
180
+ },
181
+ "visualDescription": "Botón rectangular con fondo rojo oscuro, texto blanco en peso normal, y esquinas ligeramente redondeadas. Padding generoso alrededor del texto, tamaño compacto de botón estándar con borde rojo sólido visible.",
182
+ "_generated": {
183
+ "hash": "e8307f5b3a7b3fe04e56cd874fd9c5f8",
184
+ "version": "15.0.3",
185
+ "timestamp": "2026-01-30T18:50:30.044Z"
108
186
  }
109
187
  },
110
188
  {
@@ -114,6 +192,12 @@
114
192
  "name": "focus",
115
193
  "text": "Focus",
116
194
  "classes": "c-button--alert ds-focus"
195
+ },
196
+ "visualDescription": "Botón rectangular con fondo amarillo brillante, texto negro en peso normal, y esquinas ligeramente redondeadas. Borde negro de 2-3px rodea el botón creando un contorno de enfoque visible, padding interno generoso.",
197
+ "_generated": {
198
+ "hash": "820394b187829a9a3e9050ccb6e111e3",
199
+ "version": "15.0.3",
200
+ "timestamp": "2026-01-30T18:50:30.044Z"
117
201
  }
118
202
  },
119
203
  {
@@ -122,6 +206,12 @@
122
206
  "text": "Deshabilitado",
123
207
  "disabled": true,
124
208
  "classes": "c-button--alert"
209
+ },
210
+ "visualDescription": "Botón rectangular con fondo rosa pálido translúcido, texto blanco en peso normal, y esquinas ligeramente redondeadas. Apariencia atenuada sin borde visible, padding interno estándar, opacidad reducida indicando estado inactivo.",
211
+ "_generated": {
212
+ "hash": "01a4fcb806863739d7c2bc132bee8734",
213
+ "version": "15.0.3",
214
+ "timestamp": "2026-01-30T18:50:30.044Z"
125
215
  }
126
216
  },
127
217
  {
@@ -129,6 +219,12 @@
129
219
  "data": {
130
220
  "text": "Transparente",
131
221
  "classes": "c-button--transparent"
222
+ },
223
+ "visualDescription": "Botón con texto azul en fuente regular, sin borde visible, fondo completamente transparente. Elemento clickeable de tamaño compacto con padding mínimo alrededor del texto.",
224
+ "_generated": {
225
+ "hash": "0a79bfd8d2b195eab9bae8c90bd33531",
226
+ "version": "15.0.3",
227
+ "timestamp": "2026-01-30T18:50:37.930Z"
132
228
  }
133
229
  },
134
230
  {
@@ -138,6 +234,12 @@
138
234
  "name": "active",
139
235
  "text": "Activo",
140
236
  "classes": "c-button--transparent ds-active"
237
+ },
238
+ "visualDescription": "Botón con texto azul en fuente bold (negrita), sin borde visible, fondo completamente transparente. Elemento clickeable de tamaño compacto que muestra énfasis tipográfico mediante el peso de fuente aumentado.",
239
+ "_generated": {
240
+ "hash": "0adfb7af89cfc304d4c8985cc731cc0e",
241
+ "version": "15.0.3",
242
+ "timestamp": "2026-01-30T18:50:37.930Z"
141
243
  }
142
244
  },
143
245
  {
@@ -147,6 +249,12 @@
147
249
  "name": "hover",
148
250
  "text": "Hover",
149
251
  "classes": "c-button--transparent ds-hover"
252
+ },
253
+ "visualDescription": "Botón con texto azul subrayado en fuente regular, sin borde visible, fondo gris muy claro (casi blanco). Elemento clickeable de tamaño compacto con padding ligero y decoración de subrayado en el texto.",
254
+ "_generated": {
255
+ "hash": "893c2f8477b1de95e632d5bc1fae98d8",
256
+ "version": "15.0.3",
257
+ "timestamp": "2026-01-30T18:50:37.930Z"
150
258
  }
151
259
  },
152
260
  {
@@ -156,6 +264,12 @@
156
264
  "name": "focus",
157
265
  "text": "Focus",
158
266
  "classes": "c-button--transparent ds-focus"
267
+ },
268
+ "visualDescription": "Botón con fondo amarillo vibrante, texto negro en negrita, y borde negro de 2px. El botón tiene padding moderado, esquinas ligeramente redondeadas, y muestra un estado de enfoque activo con outline visible.",
269
+ "_generated": {
270
+ "hash": "04256ad5d064c31de2a1aca26a34bdf2",
271
+ "version": "15.0.3",
272
+ "timestamp": "2026-01-30T18:50:46.737Z"
159
273
  }
160
274
  },
161
275
  {
@@ -164,6 +278,12 @@
164
278
  "text": "Deshabilitado",
165
279
  "disabled": true,
166
280
  "classes": "c-button--transparent"
281
+ },
282
+ "visualDescription": "Botón con fondo blanco transparente, texto gris claro en peso normal, y sin borde visible. El botón mantiene padding moderado, esquinas ligeramente redondeadas, y transmite un estado inactivo mediante su paleta de colores desaturada.",
283
+ "_generated": {
284
+ "hash": "b06cec5cbaf9107faa52fceddc1d024f",
285
+ "version": "15.0.3",
286
+ "timestamp": "2026-01-30T18:50:46.737Z"
167
287
  }
168
288
  },
169
289
  {
@@ -171,6 +291,12 @@
171
291
  "data": {
172
292
  "text": "Anchura completa",
173
293
  "classes": "w-full justify-center"
294
+ },
295
+ "visualDescription": "Botón rectangular que ocupa el 100% del ancho del contenedor, con fondo blanco, borde azul de 1px, y texto azul centrado. El botón tiene altura estándar, esquinas ligeramente redondeadas, y padding vertical uniforme que distribuye el espacio alrededor del texto.",
296
+ "_generated": {
297
+ "hash": "6fcbc3775c5d723da6f7e6e3bca26010",
298
+ "version": "15.0.3",
299
+ "timestamp": "2026-01-30T18:50:46.737Z"
174
300
  }
175
301
  },
176
302
  {
@@ -178,6 +304,12 @@
178
304
  "data": {
179
305
  "text": "Grande y primario",
180
306
  "classes": "c-button--lg c-button--primary"
307
+ },
308
+ "visualDescription": "Botón rectangular con fondo azul petróleo oscuro, texto blanco en negrita. Esquinas ligeramente redondeadas, padding generoso vertical y horizontal, apariencia prominente de llamada a acción principal.",
309
+ "_generated": {
310
+ "hash": "01c201e4ad9f9e9a2b642d1c05a2b40e",
311
+ "version": "15.0.3",
312
+ "timestamp": "2026-01-30T18:50:54.527Z"
181
313
  }
182
314
  },
183
315
  {
@@ -185,6 +317,12 @@
185
317
  "data": {
186
318
  "text": "Peque",
187
319
  "classes": "c-button--sm"
320
+ },
321
+ "visualDescription": "Botón rectangular compacto con borde azul petróleo de 1-2px, fondo blanco, texto azul petróleo. Esquinas ligeramente redondeadas, padding reducido vertical y horizontal, estilo de botón secundario outline.",
322
+ "_generated": {
323
+ "hash": "aa506181d6605353b183292f704e6cb3",
324
+ "version": "15.0.3",
325
+ "timestamp": "2026-01-30T18:50:54.527Z"
188
326
  }
189
327
  },
190
328
  {
@@ -192,6 +330,12 @@
192
330
  "data": {
193
331
  "text": "Peque tiene selección",
194
332
  "classes": "c-button--sm c-button--has-selection"
333
+ },
334
+ "visualDescription": "Botón rectangular compacto con borde azul petróleo de 1-2px, fondo blanco, texto azul petróleo. Esquinas ligeramente redondeadas, padding reducido vertical y horizontal, estilo de botón secundario outline.",
335
+ "_generated": {
336
+ "hash": "a803464d1a993f4d5069c6b62cf40f8b",
337
+ "version": "15.0.3",
338
+ "timestamp": "2026-01-30T18:50:54.527Z"
195
339
  }
196
340
  },
197
341
  {
@@ -200,6 +344,12 @@
200
344
  "data": {
201
345
  "text": "Botón enlace",
202
346
  "href": "/"
347
+ },
348
+ "visualDescription": "Botón de enlace con texto azul en tamaño estándar, sin fondo visible. El borde azul de 1px rodea el elemento con esquinas redondeadas. El texto aparece centrado dentro del área del botón.",
349
+ "_generated": {
350
+ "hash": "fae9f5d5a13f0566fd1475b7e42f3cdb",
351
+ "version": "15.0.3",
352
+ "timestamp": "2026-01-30T18:51:02.816Z"
203
353
  }
204
354
  },
205
355
  {
@@ -212,6 +362,12 @@
212
362
  "attributes": {
213
363
  "title": "Se abre en ventana nueva"
214
364
  }
365
+ },
366
+ "visualDescription": "Botón de enlace con texto azul en tamaño estándar, borde azul de 1px con esquinas redondeadas. Incluye un ícono de flecha diagonal pequeño en color azul posicionado a la derecha del texto. El fondo es transparente.",
367
+ "_generated": {
368
+ "hash": "1c7890a1a8a6d37debf9417fbe23555a",
369
+ "version": "15.0.3",
370
+ "timestamp": "2026-01-30T18:51:02.816Z"
215
371
  }
216
372
 
217
373
  },
@@ -222,18 +378,36 @@
222
378
  "text": "Botón enlace deshabilitado",
223
379
  "href": "/",
224
380
  "disabled": true
381
+ },
382
+ "visualDescription": "Botón de enlace con texto gris claro en tamaño estándar, borde gris claro de 1px con esquinas redondeadas. El fondo es transparente y el elemento presenta una apariencia visualmente atenuada. El texto aparece centrado dentro del área del botón.",
383
+ "_generated": {
384
+ "hash": "e3d5b631fb8edd34cbcd2410f74862d9",
385
+ "version": "15.0.3",
386
+ "timestamp": "2026-01-30T18:51:02.816Z"
225
387
  }
226
388
  },
227
389
  {
228
390
  "name": "botón con icono a la derecha",
229
391
  "data": {
230
392
  "html": "Botón con icono<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' height='1em' width='1em' class='self-center ml-2' aria-hidden='true' focusable='false' role='presentation'><g><path fill='currentcolor' fill-rule='evenodd' d='M6.585782857142856 2.3000685714285716C6.960857142857142 1.9249942857142854 7.469565714285714 1.7142857142857142 8 1.7142857142857142c0.5304342857142856 0 1.0391428571428571 0.2107085714285714 1.4142171428571428 0.5857828571428572 0.2369828571428571 0.2369942857142857 0.4083542857142857 0.5273257142857143 0.5024114285714285 0.8427885714285713h-3.8332571428571427c0.09405714285714285 -0.3154628571428571 0.2654285714285714 -0.6057942857142857 0.5024114285714285 -0.8427885714285713ZM4.3299199999999995 3.142857142857143c0.12042285714285714 -0.7734742857142857 0.48325714285714283 -1.4945485714285713 1.04368 -2.054968C6.070171428571428 0.3913257142857143 7.014914285714285 0 8 0c0.9850857142857142 0 1.9298285714285714 0.3913257142857143 2.6264 1.0878891428571429 0.5604228571428571 0.5604194285714286 0.9233142857142856 1.2814937142857143 1.0436571428571428 2.054968H14.571428571428571c0.47337142857142855 0 0.8571428571428571 0.38375999999999993 0.8571428571428571 0.8571428571428571s-0.38377142857142854 0.8571428571428571 -0.8571428571428571 0.8571428571428571H13.714285714285714v9.428571428571429c0 0.4546285714285714 -0.18057142857142855 0.8907428571428571 -0.5020571428571429 1.2122285714285714S12.454628571428572 16 12 16h-8c-0.45466285714285715 0 -0.8906971428571429 -0.18057142857142855 -1.212182857142857 -0.5020571428571429C2.466331428571429 15.176457142857142 2.2857142857142856 14.740342857142856 2.2857142857142856 14.285714285714285V4.857142857142857h-0.8571428571428571C0.955184 4.857142857142857 0.5714285714285714 4.473382857142857 0.5714285714285714 4s0.3837554285714285 -0.8571428571428571 0.8571428571428571 -0.8571428571428571h2.901348571428571ZM6 6.715954285714285c0.39449142857142855 0 0.7142857142857142 0.3198057142857143 0.7142857142857142 0.7142857142857142V12.003428571428572c0 0.3944 -0.3197942857142857 0.7142857142857142 -0.7142857142857142 0.7142857142857142s-0.7142857142857142 -0.3198857142857143 -0.7142857142857142 -0.7142857142857142V7.4302399999999995c0 -0.39447999999999994 0.3197942857142857 -0.7142857142857142 0.7142857142857142 -0.7142857142857142Zm4.714285714285714 0.7142857142857142c0 -0.39447999999999994 -0.3197942857142857 -0.7142857142857142 -0.7142857142857142 -0.7142857142857142s-0.7142857142857142 0.3198057142857143 -0.7142857142857142 0.7142857142857142V12.003428571428572c0 0.3944 0.3197942857142857 0.7142857142857142 0.7142857142857142 0.7142857142857142s0.7142857142857142 -0.3198857142857143 0.7142857142857142 -0.7142857142857142V7.4302399999999995Z' clip-rule='evenodd' stroke-width='1'></path></g></svg>"
393
+ },
394
+ "visualDescription": "Botón rectangular con borde azul de 1px, fondo blanco, y texto azul en peso normal alineado a la izquierda. Icono azul de un cuadrado con flecha posicionado a la derecha del texto. Padding interno generoso con espaciado horizontal entre texto e icono.",
395
+ "_generated": {
396
+ "hash": "179e00dc4724c15f3457408883b541f3",
397
+ "version": "15.0.3",
398
+ "timestamp": "2026-01-30T18:51:11.621Z"
231
399
  }
232
400
  },
233
401
  {
234
402
  "name": "botón con icono a la izquierda",
235
403
  "data": {
236
404
  "html": "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' height='1em' width='1em' class='self-center mr-2' aria-hidden='true' focusable='false' role='presentation'><g><path fill='currentcolor' fill-rule='evenodd' d='M6.585782857142856 2.3000685714285716C6.960857142857142 1.9249942857142854 7.469565714285714 1.7142857142857142 8 1.7142857142857142c0.5304342857142856 0 1.0391428571428571 0.2107085714285714 1.4142171428571428 0.5857828571428572 0.2369828571428571 0.2369942857142857 0.4083542857142857 0.5273257142857143 0.5024114285714285 0.8427885714285713h-3.8332571428571427c0.09405714285714285 -0.3154628571428571 0.2654285714285714 -0.6057942857142857 0.5024114285714285 -0.8427885714285713ZM4.3299199999999995 3.142857142857143c0.12042285714285714 -0.7734742857142857 0.48325714285714283 -1.4945485714285713 1.04368 -2.054968C6.070171428571428 0.3913257142857143 7.014914285714285 0 8 0c0.9850857142857142 0 1.9298285714285714 0.3913257142857143 2.6264 1.0878891428571429 0.5604228571428571 0.5604194285714286 0.9233142857142856 1.2814937142857143 1.0436571428571428 2.054968H14.571428571428571c0.47337142857142855 0 0.8571428571428571 0.38375999999999993 0.8571428571428571 0.8571428571428571s-0.38377142857142854 0.8571428571428571 -0.8571428571428571 0.8571428571428571H13.714285714285714v9.428571428571429c0 0.4546285714285714 -0.18057142857142855 0.8907428571428571 -0.5020571428571429 1.2122285714285714S12.454628571428572 16 12 16h-8c-0.45466285714285715 0 -0.8906971428571429 -0.18057142857142855 -1.212182857142857 -0.5020571428571429C2.466331428571429 15.176457142857142 2.2857142857142856 14.740342857142856 2.2857142857142856 14.285714285714285V4.857142857142857h-0.8571428571428571C0.955184 4.857142857142857 0.5714285714285714 4.473382857142857 0.5714285714285714 4s0.3837554285714285 -0.8571428571428571 0.8571428571428571 -0.8571428571428571h2.901348571428571ZM6 6.715954285714285c0.39449142857142855 0 0.7142857142857142 0.3198057142857143 0.7142857142857142 0.7142857142857142V12.003428571428572c0 0.3944 -0.3197942857142857 0.7142857142857142 -0.7142857142857142 0.7142857142857142s-0.7142857142857142 -0.3198857142857143 -0.7142857142857142 -0.7142857142857142V7.4302399999999995c0 -0.39447999999999994 0.3197942857142857 -0.7142857142857142 0.7142857142857142 -0.7142857142857142Zm4.714285714285714 0.7142857142857142c0 -0.39447999999999994 -0.3197942857142857 -0.7142857142857142 -0.7142857142857142 -0.7142857142857142s-0.7142857142857142 0.3198057142857143 -0.7142857142857142 0.7142857142857142V12.003428571428572c0 0.3944 0.3197942857142857 0.7142857142857142 0.7142857142857142 0.7142857142857142s0.7142857142857142 -0.3198857142857143 0.7142857142857142 -0.7142857142857142V7.4302399999999995Z' clip-rule='evenodd' stroke-width='1'></path></g></svg>Botón con icono"
405
+ },
406
+ "visualDescription": "Botón rectangular con borde azul de 1px, fondo blanco, y texto azul en peso normal alineado a la derecha. Icono azul de información circular posicionado a la izquierda del texto. Padding interno generoso con espaciado horizontal entre icono y texto.",
407
+ "_generated": {
408
+ "hash": "2ed8dcf6496e1e19f7193e51402155e4",
409
+ "version": "15.0.3",
410
+ "timestamp": "2026-01-30T18:51:11.621Z"
237
411
  }
238
412
  },
239
413
  {
@@ -243,6 +417,12 @@
243
417
  "html": "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140' class='self-center mr-2' aria-hidden='true' focusable='false' width='1em' height='1em'><path d='M37.93 27.93l-35 35a10 10 0 000 14.14l35 35a10 10 0 1014.14-14.14L38.41 84.27A2.5 2.5 0 0140.18 80H130a10 10 0 000-20H40.18a2.5 2.5 0 01-1.77-4.27l13.66-13.66a10 10 0 00-14.14-14.14z' fill='currentColor'></path></svg>Volver",
244
418
  "href": "/",
245
419
  "classes": "c-button--transparent"
420
+ },
421
+ "visualDescription": "Botón de texto sin borde ni fondo visible, compuesto por flecha azul apuntando a la izquierda seguida de texto azul en peso normal. Layout horizontal compacto con espaciado mínimo entre flecha y texto. Apariencia de enlace interactivo sin contenedor visible.",
422
+ "_generated": {
423
+ "hash": "93dbb95d339fb5ed50a6e3cdad7f6f57",
424
+ "version": "15.0.3",
425
+ "timestamp": "2026-01-30T18:51:11.621Z"
246
426
  }
247
427
  },
248
428
  {
@@ -252,6 +432,12 @@
252
432
  "html": "Ver más<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140' class='self-center ml-2' aria-hidden='true' focusable='false' width='1em' height='1em'><path d='M102.07 27.93l35 35a10 10 0 010 14.14l-35 35a10 10 0 01-14.14-14.14l13.66-13.66A2.5 2.5 0 0099.82 80H10a10 10 0 010-20h89.82a2.5 2.5 0 001.77-4.27L87.93 42.07a10 10 0 0114.14-14.14z' fill='currentColor'></path></svg>",
253
433
  "href": "/",
254
434
  "classes": "c-button--transparent"
435
+ },
436
+ "visualDescription": "Botón de texto con label azul oscuro seguido de un ícono de flecha hacia la derecha. Fondo transparente sin borde visible. Dimensiones compactas con padding mínimo alrededor del texto.",
437
+ "_generated": {
438
+ "hash": "72ccb16d544c8bf466d885d852e248f1",
439
+ "version": "15.0.3",
440
+ "timestamp": "2026-01-30T18:51:19.812Z"
255
441
  }
256
442
  },
257
443
  {
@@ -259,6 +445,12 @@
259
445
  "data": {
260
446
  "html": "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' height='1em' width='1em' class='self-center my-1' aria-hidden='true' focusable='false' role='presentation' aria-label='Borrar'><g><path fill='currentcolor' fill-rule='evenodd' d='M6.585782857142856 2.3000685714285716C6.960857142857142 1.9249942857142854 7.469565714285714 1.7142857142857142 8 1.7142857142857142c0.5304342857142856 0 1.0391428571428571 0.2107085714285714 1.4142171428571428 0.5857828571428572 0.2369828571428571 0.2369942857142857 0.4083542857142857 0.5273257142857143 0.5024114285714285 0.8427885714285713h-3.8332571428571427c0.09405714285714285 -0.3154628571428571 0.2654285714285714 -0.6057942857142857 0.5024114285714285 -0.8427885714285713ZM4.3299199999999995 3.142857142857143c0.12042285714285714 -0.7734742857142857 0.48325714285714283 -1.4945485714285713 1.04368 -2.054968C6.070171428571428 0.3913257142857143 7.014914285714285 0 8 0c0.9850857142857142 0 1.9298285714285714 0.3913257142857143 2.6264 1.0878891428571429 0.5604228571428571 0.5604194285714286 0.9233142857142856 1.2814937142857143 1.0436571428571428 2.054968H14.571428571428571c0.47337142857142855 0 0.8571428571428571 0.38375999999999993 0.8571428571428571 0.8571428571428571s-0.38377142857142854 0.8571428571428571 -0.8571428571428571 0.8571428571428571H13.714285714285714v9.428571428571429c0 0.4546285714285714 -0.18057142857142855 0.8907428571428571 -0.5020571428571429 1.2122285714285714S12.454628571428572 16 12 16h-8c-0.45466285714285715 0 -0.8906971428571429 -0.18057142857142855 -1.212182857142857 -0.5020571428571429C2.466331428571429 15.176457142857142 2.2857142857142856 14.740342857142856 2.2857142857142856 14.285714285714285V4.857142857142857h-0.8571428571428571C0.955184 4.857142857142857 0.5714285714285714 4.473382857142857 0.5714285714285714 4s0.3837554285714285 -0.8571428571428571 0.8571428571428571 -0.8571428571428571h2.901348571428571ZM6 6.715954285714285c0.39449142857142855 0 0.7142857142857142 0.3198057142857143 0.7142857142857142 0.7142857142857142V12.003428571428572c0 0.3944 -0.3197942857142857 0.7142857142857142 -0.7142857142857142 0.7142857142857142s-0.7142857142857142 -0.3198857142857143 -0.7142857142857142 -0.7142857142857142V7.4302399999999995c0 -0.39447999999999994 0.3197942857142857 -0.7142857142857142 0.7142857142857142 -0.7142857142857142Zm4.714285714285714 0.7142857142857142c0 -0.39447999999999994 -0.3197942857142857 -0.7142857142857142 -0.7142857142857142 -0.7142857142857142s-0.7142857142857142 0.3198057142857143 -0.7142857142857142 0.7142857142857142V12.003428571428572c0 0.3944 0.3197942857142857 0.7142857142857142 0.7142857142857142 0.7142857142857142s0.7142857142857142 -0.3198857142857143 0.7142857142857142 -0.7142857142857142V7.4302399999999995Z' clip-rule='evenodd' stroke-width='1'></path></g></svg>",
261
447
  "classes": "c-button--primary align-bottom"
448
+ },
449
+ "visualDescription": "Botón cuadrado con fondo azul petróleo sólido conteniendo un ícono de flecha blanca apuntando hacia la derecha. Bordes rectos sin esquinas redondeadas. Tamaño mediano aproximadamente 40x40px con el ícono centrado.",
450
+ "_generated": {
451
+ "hash": "d6e62d1043509142e6e9f16cf698f506",
452
+ "version": "15.0.3",
453
+ "timestamp": "2026-01-30T18:51:19.812Z"
262
454
  }
263
455
 
264
456
  },
@@ -267,6 +459,12 @@
267
459
  "data": {
268
460
  "html": "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' height='1em' width='1em' class='self-center my-1' aria-hidden='true' focusable='false' role='presentation' aria-label='Borrar'><g><path fill='currentcolor' fill-rule='evenodd' d='M6.585782857142856 2.3000685714285716C6.960857142857142 1.9249942857142854 7.469565714285714 1.7142857142857142 8 1.7142857142857142c0.5304342857142856 0 1.0391428571428571 0.2107085714285714 1.4142171428571428 0.5857828571428572 0.2369828571428571 0.2369942857142857 0.4083542857142857 0.5273257142857143 0.5024114285714285 0.8427885714285713h-3.8332571428571427c0.09405714285714285 -0.3154628571428571 0.2654285714285714 -0.6057942857142857 0.5024114285714285 -0.8427885714285713ZM4.3299199999999995 3.142857142857143c0.12042285714285714 -0.7734742857142857 0.48325714285714283 -1.4945485714285713 1.04368 -2.054968C6.070171428571428 0.3913257142857143 7.014914285714285 0 8 0c0.9850857142857142 0 1.9298285714285714 0.3913257142857143 2.6264 1.0878891428571429 0.5604228571428571 0.5604194285714286 0.9233142857142856 1.2814937142857143 1.0436571428571428 2.054968H14.571428571428571c0.47337142857142855 0 0.8571428571428571 0.38375999999999993 0.8571428571428571 0.8571428571428571s-0.38377142857142854 0.8571428571428571 -0.8571428571428571 0.8571428571428571H13.714285714285714v9.428571428571429c0 0.4546285714285714 -0.18057142857142855 0.8907428571428571 -0.5020571428571429 1.2122285714285714S12.454628571428572 16 12 16h-8c-0.45466285714285715 0 -0.8906971428571429 -0.18057142857142855 -1.212182857142857 -0.5020571428571429C2.466331428571429 15.176457142857142 2.2857142857142856 14.740342857142856 2.2857142857142856 14.285714285714285V4.857142857142857h-0.8571428571428571C0.955184 4.857142857142857 0.5714285714285714 4.473382857142857 0.5714285714285714 4s0.3837554285714285 -0.8571428571428571 0.8571428571428571 -0.8571428571428571h2.901348571428571ZM6 6.715954285714285c0.39449142857142855 0 0.7142857142857142 0.3198057142857143 0.7142857142857142 0.7142857142857142V12.003428571428572c0 0.3944 -0.3197942857142857 0.7142857142857142 -0.7142857142857142 0.7142857142857142s-0.7142857142857142 -0.3198857142857143 -0.7142857142857142 -0.7142857142857142V7.4302399999999995c0 -0.39447999999999994 0.3197942857142857 -0.7142857142857142 0.7142857142857142 -0.7142857142857142Zm4.714285714285714 0.7142857142857142c0 -0.39447999999999994 -0.3197942857142857 -0.7142857142857142 -0.7142857142857142 -0.7142857142857142s-0.7142857142857142 0.3198057142857143 -0.7142857142857142 0.7142857142857142V12.003428571428572c0 0.3944 0.3197942857142857 0.7142857142857142 0.7142857142857142 0.7142857142857142s0.7142857142857142 -0.3198857142857143 0.7142857142857142 -0.7142857142857142V7.4302399999999995Z' clip-rule='evenodd' stroke-width='1'></path></g></svg>",
269
461
  "classes": "c-button--primary c-button--sm align-bottom"
462
+ },
463
+ "visualDescription": "Botón cuadrado con fondo azul petróleo sólido conteniendo un ícono de flecha blanca apuntando hacia la derecha. Bordes rectos sin esquinas redondeadas. Tamaño pequeño aproximadamente 30x30px con el ícono centrado ocupando proporcionalmente el espacio interior.",
464
+ "_generated": {
465
+ "hash": "0bfb5a790104023b5ed3d2398d99841e",
466
+ "version": "15.0.3",
467
+ "timestamp": "2026-01-30T18:51:19.812Z"
270
468
  }
271
469
 
272
470
  },
@@ -276,6 +474,12 @@
276
474
  "element": "input",
277
475
  "name": "send-form",
278
476
  "text": "Enviar"
477
+ },
478
+ "visualDescription": "Botón rectangular con texto en color azul (aproximadamente #0066CC). Fondo blanco con borde azul de 1px. Tamaño compacto con padding interno moderado, esquinas ligeramente redondeadas.",
479
+ "_generated": {
480
+ "hash": "8d30b903c335ed1cb5c63f6b42831a21",
481
+ "version": "15.0.3",
482
+ "timestamp": "2026-01-30T18:51:27.490Z"
279
483
  }
280
484
  },
281
485
  {
@@ -284,6 +488,12 @@
284
488
  "element": "input",
285
489
  "text": "Enviar",
286
490
  "disabled": true
491
+ },
492
+ "visualDescription": "Botón rectangular con texto en color gris medio. Fondo blanco con borde gris claro de 1px. Tamaño compacto con padding interno moderado, esquinas ligeramente redondeadas, apariencia visual que indica estado inactivo.",
493
+ "_generated": {
494
+ "hash": "d3119ee9d2aace49a1c9916fb9fdbace",
495
+ "version": "15.0.3",
496
+ "timestamp": "2026-01-30T18:51:27.490Z"
287
497
  }
288
498
  },
289
499
  {
@@ -291,6 +501,12 @@
291
501
  "data": {
292
502
  "text": "Enviar",
293
503
  "preventDoubleClick": true
504
+ },
505
+ "visualDescription": "Botón rectangular con texto en color azul (aproximadamente #0066CC). Fondo blanco con borde azul de 1px. Tamaño compacto con padding interno moderado, esquinas ligeramente redondeadas, implementación que bloquea múltiples clics.",
506
+ "_generated": {
507
+ "hash": "156ca0e885a5fe584b7d5143e2c873bc",
508
+ "version": "15.0.3",
509
+ "timestamp": "2026-01-30T18:51:27.490Z"
294
510
  }
295
511
  }
296
512
  ] %}