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
@@ -0,0 +1,369 @@
1
+ # desy-html Branding System
2
+
3
+ desy-html includes a brand customization system that allows adapting the design system for different government organizations.
4
+
5
+ ## Quick Setup
6
+
7
+ ### Step 1: Edit Configuration
8
+
9
+ Edit `branding/branding.config.js` with your organization's information:
10
+
11
+ ```javascript
12
+ export default {
13
+ organization: {
14
+ name: 'My Organization',
15
+ website: 'https://my-site.gov',
16
+ },
17
+ logos: {
18
+ organization: {
19
+ compact: '/branding/logos/my-logo-compact.svg',
20
+ expanded: '/branding/logos/my-logo-expanded.svg',
21
+ mini: '/branding/logos/my-logo-mini.svg',
22
+ alt: 'My Organization',
23
+ },
24
+ eu: {
25
+ eu: '/branding/logos/eu/logo-eu.svg',
26
+ feder: '/branding/logos/eu/logo-feder.svg',
27
+ fse: '/branding/logos/eu/logo-fse.svg',
28
+ feader: '/branding/logos/eu/logo-feader.svg',
29
+ plurifondo: '/branding/logos/eu/logo-plurifondo.svg',
30
+ },
31
+ },
32
+ };
33
+ ```
34
+
35
+ ### Step 2: Replace Logos
36
+
37
+ Place your organization's logos in `/branding/logos/`:
38
+
39
+ - `my-logo-compact.svg` - Compact logo (icon only) for mobile header
40
+ - `my-logo-expanded.svg` - Expanded logo (icon + text) for desktop header
41
+ - `my-logo-mini.svg` - Mini logo (icon + text) for header-mini component
42
+
43
+ ### Step 3: Rebuild
44
+
45
+ ```bash
46
+ npm run build
47
+ ```
48
+
49
+ ## Build-time vs Runtime
50
+
51
+ The branding system supports two customization modes:
52
+
53
+ ### Build-time (Recommended)
54
+
55
+ Changes to `branding/branding.config.js` are applied during the build process. This is the most efficient option for permanent customizations.
56
+
57
+ **Advantages:**
58
+ - Better performance (no additional processing on the client)
59
+ - Values are injected directly into templates
60
+ - No flickering during page load
61
+
62
+ **Usage:** Simply edit `branding/branding.config.js` and run `npm run build`.
63
+
64
+ ## Configuration Reference
65
+
66
+ ### organization
67
+
68
+ Organization information.
69
+
70
+ | Field | Type | Required | Description |
71
+ |-------|------|----------|-------------|
72
+ | `name` | string | Yes | Full organization name |
73
+ | `nameShort` | string | No | Short name for limited spaces |
74
+ | `website` | string | Yes | Main website URL |
75
+ | `contact.address` | string | No | Postal address |
76
+ | `contact.city` | string | No | City and postal code |
77
+ | `contact.phone` | string | No | Phone number to display |
78
+ | `contact.phoneLink` | string | No | Phone in international format (+34...) |
79
+
80
+ ### logos
81
+
82
+ Logo configuration.
83
+
84
+ | Field | Type | Required | Description |
85
+ |-------|------|----------|-------------|
86
+ | `logos.organization.compact` | string | Yes | Compact logo (icon only) for mobile/responsive header |
87
+ | `logos.organization.expanded` | string | Yes | Expanded logo (icon + text) for desktop header |
88
+ | `logos.organization.mini` | string | Yes | Mini logo (icon + text) for header-mini component |
89
+ | `logos.organization.alt` | string | Yes | Alternative text |
90
+ | `logos.eu.eu` | string | No | European Union logo |
91
+ | `logos.eu.feder` | string | No | FEDER logo |
92
+ | `logos.eu.fse` | string | No | FSE+ logo |
93
+ | `logos.eu.feader` | string | No | FEADER logo |
94
+ | `logos.eu.plurifondo` | string | No | Plurifondo logo |
95
+
96
+ ### footer
97
+
98
+ Footer configuration.
99
+
100
+ | Field | Type | Required | Description |
101
+ |-------|------|----------|-------------|
102
+ | `license.name` | string | No | License name (e.g., "CC BY 4.0") |
103
+ | `license.url` | string | No | URL to full license text |
104
+ | `license.text` | string | No | Text preceding the link |
105
+ | `euFundsUrl` | string | No | URL to European funds page |
106
+
107
+ ### colors
108
+
109
+ Brand colors.
110
+
111
+ | Field | Type | Required | Description |
112
+ |-------|------|----------|-------------|
113
+ | `primary.base` | string | No | Main primary color |
114
+ | `primary.light` | string | No | Light variant (backgrounds) |
115
+ | `primary.dark` | string | No | Dark variant (hover) |
116
+
117
+ ### typography
118
+
119
+ Font configuration.
120
+
121
+ | Field | Type | Required | Description |
122
+ |-------|------|----------|-------------|
123
+ | `fontFamily.sans` | string | No | Sans-serif font family |
124
+ | `fontFamily.heading` | string | No | Heading font family |
125
+ | `fontUrl` | string | No | URL to load fonts (e.g., Google Fonts) |
126
+
127
+ ### images
128
+
129
+ Additional images.
130
+
131
+ | Field | Type | Required | Description |
132
+ |-------|------|----------|-------------|
133
+ | `headerBackground` | string | No | Header background image |
134
+ | `headerBackgroundLg` | string | No | Large header background image |
135
+
136
+ ## CSS Variables
137
+
138
+ The following CSS variables are available for runtime customization:
139
+
140
+ ```css
141
+ :root {
142
+ /* Primary colors */
143
+ --branding-primary-base: #00607a;
144
+ --branding-primary-light: #d6eaf0;
145
+ --branding-primary-dark: #00475c;
146
+
147
+ /* Logo URLs */
148
+ --branding-logo-expanded: url('/branding/logos/...');
149
+ --branding-logo-mini: url('/branding/logos/...');
150
+ --branding-logo-compact: url('/branding/logos/...');
151
+ }
152
+ ```
153
+
154
+ ## Configuration Examples
155
+
156
+ ### YourOrganization
157
+
158
+ ```javascript
159
+ export default {
160
+ organization: {
161
+ name: 'YourOrganization',
162
+ website: 'https://www.example.com/',
163
+ },
164
+ logos: {
165
+ organization: {
166
+ compact: '/branding/logos/yourlogo-compact.svg',
167
+ expanded: '/branding/logos/yourlogo-expanded.svg',
168
+ mini: '/branding/logos/yourlogo-mini.svg',
169
+ alt: 'YourOrganization',
170
+ },
171
+ eu: {
172
+ eu: '/branding/logos/eu/logo-eu.svg',
173
+ feder: '/branding/logos/eu/logo-feder.svg',
174
+ fse: '/branding/logos/eu/logo-fse.svg',
175
+ feader: '/branding/logos/eu/logo-feader.svg',
176
+ plurifondo: '/branding/logos/eu/logo-plurifondo.svg',
177
+ },
178
+ },
179
+ typography: {
180
+ fontFamily: {
181
+ sans: '"Nunito", ui-sans-serif, system-ui, sans-serif',
182
+ heading: '"Inter", ui-sans-serif, system-ui, sans-serif',
183
+ },
184
+ fontUrl: 'https://fonts.googleapis.com/css2?family=Inter:wght@700&family=Nunito:wght@400;500;600;700&display=swap',
185
+ },
186
+ };
187
+ ```
188
+
189
+ ## FAQ
190
+
191
+ ### What fields are required?
192
+
193
+ You only need:
194
+ - `organization.name`
195
+ - `organization.website`
196
+ - `logos.organization.compact`
197
+ - `logos.organization.expanded`
198
+ - `logos.organization.mini`
199
+ - `logos.organization.alt`
200
+
201
+ See `branding/branding.config.yourorganization.js` for a minimal example.
202
+
203
+ ### What format should the logos be in?
204
+
205
+ SVG is the recommended format for its scalability and performance. PNG and JPG are also supported. See the dimensions table above for recommended sizes.
206
+
207
+ ### Can I use different logos for desktop and mobile?
208
+
209
+ Yes. Use:
210
+ - `logos.organization.expanded` for desktop (icon + text)
211
+ - `logos.organization.compact` for mobile (icon only)
212
+ - `logos.organization.mini` for header-mini component (icon + text)
213
+
214
+ ### Are European funds mandatory?
215
+
216
+ No. The `logos.eu` section is optional and only needed if your project receives European funding. Place your EU logos in `branding/logos/eu/`.
217
+
218
+ ### Where can I find complete examples?
219
+
220
+ - `branding/branding.config.yourorganization.js` - Minimal configuration
221
+ - `branding/branding.config.js` - Current project configuration (Gobierno de Aragón)
222
+
223
+ ## Uso en Proyectos Externos
224
+
225
+ Puedes importar y utilizar el sistema de branding de desy-html en tus propios proyectos que dependan de `desy-html`.
226
+
227
+ ### Requisitos
228
+
229
+ Asegúrate de tener `desy-html` instalado:
230
+
231
+ ```bash
232
+ npm install desy-html
233
+ ```
234
+
235
+ ### Importar el plugin
236
+
237
+ ```javascript
238
+ // vite.config.js
239
+ import { brandingPlugin, loadBrandingConfig } from 'desy-html/branding/plugin';
240
+ ```
241
+
242
+ ### Configuración básica
243
+
244
+ ```javascript
245
+ // vite.config.js
246
+ import { brandingPlugin, loadBrandingConfig } from 'desy-html/branding/plugin';
247
+ import { defineConfig } from 'vite';
248
+
249
+ export default defineConfig({
250
+ plugins: [
251
+ brandingPlugin(miConfiguracionBranding),
252
+ // ... otros plugins
253
+ ]
254
+ });
255
+ ```
256
+
257
+ ### Cargar configuración desde archivo
258
+
259
+ Puedes cargar la configuración desde un archivo `branding/branding.config.js` en tu proyecto:
260
+
261
+ ```javascript
262
+ // vite.config.js
263
+ import { brandingPlugin, loadBrandingConfig } from 'desy-html/branding/plugin';
264
+ import { defineConfig } from 'vite';
265
+
266
+ export default defineConfig({
267
+ plugins: [
268
+ brandingPlugin(await loadBrandingConfig('default', process.cwd())),
269
+ // ... otros plugins
270
+ ]
271
+ });
272
+ ```
273
+
274
+ ### Con variable de entorno
275
+
276
+ ```javascript
277
+ // vite.config.js
278
+ import { brandingPlugin, loadBrandingConfig } from 'desy-html/branding/plugin';
279
+ import { defineConfig } from 'vite';
280
+
281
+ const brandingConfig = await loadBrandingConfig(
282
+ process.env.BRANDING_CONFIG || 'default',
283
+ process.cwd()
284
+ );
285
+
286
+ export default defineConfig({
287
+ plugins: [
288
+ brandingPlugin(brandingConfig),
289
+ // ... otros plugins
290
+ ]
291
+ });
292
+ ```
293
+
294
+ ### Estructura de configuración
295
+
296
+ La configuración sigue la misma estructura que en desy-html:
297
+
298
+ ```javascript
299
+ // branding/branding.config.js
300
+ export default {
301
+ organization: {
302
+ name: 'Mi Organización',
303
+ website: 'https://mi-web.gob.es',
304
+ contact: {
305
+ address: 'Calle Principal, 1',
306
+ city: '01000 - Ciudad',
307
+ phone: '900 123 456',
308
+ phoneLink: '+34900123456',
309
+ },
310
+ },
311
+
312
+ logos: {
313
+ organization: {
314
+ compact: '/branding/logos/mi-logo-compact.svg',
315
+ mini: '/branding/logos/mi-logo-mini.svg',
316
+ expanded: '/branding/logos/mi-logo-expanded.svg',
317
+ alt: 'Mi Organización',
318
+ },
319
+ },
320
+
321
+ footer: {
322
+ license: {
323
+ name: 'CC BY 4.0',
324
+ url: 'https://creativecommons.org/licenses/by/4.0/',
325
+ text: 'Todo el contenido bajo licencia',
326
+ },
327
+ euFundsUrl: 'https://mi-web.gob.es/fondos-europeos',
328
+ },
329
+
330
+ typography: {
331
+ fontFamily: {
332
+ sans: '"Inter", ui-sans-serif, system-ui, sans-serif',
333
+ heading: '"Inter", ui-sans-serif, system-ui, sans-serif',
334
+ },
335
+ fontUrl: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap',
336
+ },
337
+
338
+ images: {
339
+ headerBackground: '/branding/images/header-background.svg',
340
+ headerBackgroundLg: '/branding/images/header-background-lg.svg',
341
+ },
342
+ };
343
+ ```
344
+
345
+ ### Logos
346
+
347
+ Los logos deben colocarse en la carpeta `branding/logos/` de tu proyecto:
348
+
349
+ ```
350
+ mi-proyecto/
351
+ ├── branding/
352
+ │ ├── logos/
353
+ │ │ ├── mi-logo-compact.svg
354
+ │ │ ├── mi-logo-mini.svg
355
+ │ │ ├── mi-logo-expanded.svg
356
+ │ │ ├── eu/
357
+ │ │ │ ├── logo-eu.svg
358
+ │ │ │ ├── logo-feder.svg
359
+ │ │ │ ├── logo-fse.svg
360
+ │ │ │ ├── logo-feader.svg
361
+ │ │ │ └── logo-plurifondo.svg
362
+ │ ├── images/
363
+ │ │ ├── header-background.svg
364
+ │ │ └── header-background-lg.svg
365
+ │ └── branding.config.js
366
+ └── vite.config.js
367
+ ```
368
+
369
+ Los componentes de desy-html usarán automáticamente estos logos cuando estén configurados en `branding/branding.config.js`.
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Branding Configuration
3
+ *
4
+ * This file contains all organization-specific branding and content.
5
+ * Customize these values to adapt the design system for your government organization.
6
+ *
7
+ * The default values are from Gobierno de Aragón (Spain) as a reference implementation.
8
+ */
9
+
10
+ export default {
11
+ // Organization Information
12
+ organization: {
13
+ name: 'Gobierno de Aragón',
14
+ website: 'https://www.aragon.es/',
15
+ contact: {
16
+ address: 'Edificio Pignatelli. Paseo María Agustín, 36',
17
+ city: '50004 - Zaragoza',
18
+ phone: '976 714 000',
19
+ phoneLink: '+34976714000',
20
+ },
21
+ },
22
+
23
+ // Logo Configuration
24
+ logos: {
25
+ organization: {
26
+ compact: '/branding/logos/aragon-compact.svg',
27
+ mini: '/branding/logos/aragon-mini.svg',
28
+ expanded: '/branding/logos/aragon-expanded.svg',
29
+ alt: 'Gobierno de Aragón',
30
+ },
31
+ eu: {
32
+ eu: '/branding/logos/eu/logo-eu.svg',
33
+ feder: '/branding/logos/eu/logo-feder.svg',
34
+ fse: '/branding/logos/eu/logo-fse.svg',
35
+ feader: '/branding/logos/eu/logo-feader.svg',
36
+ plurifondo: '/branding/logos/eu/logo-plurifondo.svg',
37
+ },
38
+ },
39
+
40
+ // Footer Configuration
41
+ footer: {
42
+ license: {
43
+ name: 'CC BY 4.0',
44
+ url: 'https://creativecommons.org/licenses/by/4.0/legalcode.es',
45
+ text: 'Todo el contenido bajo licencia',
46
+ },
47
+ euFundsUrl: 'https://www.aragon.es/-/fondos-europeos-aragon',
48
+ },
49
+
50
+ // Typography
51
+ typography: {
52
+ fontFamily: {
53
+ sans: '"Open Sans", ui-sans-serif, system-ui, sans-serif',
54
+ heading: '"Open Sans", ui-sans-serif, system-ui, sans-serif',
55
+ },
56
+ // URL to CSS that loads the font (Google Fonts, self-hosted, etc.)
57
+ // Remove to use system fonts without external loading
58
+ fontUrl: 'https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap',
59
+ },
60
+
61
+ // Colors are configured in src/css/styles.css
62
+ // Edit the variables: --color-primary-base, --color-primary-light, --color-primary-dark
63
+
64
+ // Additional Images
65
+ images: {
66
+ headerBackground: '/branding/images/header-background.svg',
67
+ headerBackgroundLg: '/branding/images/header-background-lg.svg',
68
+ },
69
+ };
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Branding Configuration - YourOrganization
3
+ *
4
+ * This file contains all organization-specific branding and content.
5
+ * Use BRANDING_CONFIG=yourorganization npm run dev to activate this configuration.
6
+ */
7
+
8
+ export default {
9
+ // Organization Information
10
+ organization: {
11
+ name: 'YourOrganization',
12
+ website: 'https://www.example.com/',
13
+ contact: {
14
+ address: 'Your Address, 123',
15
+ city: '12345 - Your City',
16
+ phone: '123 456 789',
17
+ phoneLink: '+34123456789',
18
+ },
19
+ },
20
+
21
+ // Logo Configuration
22
+ logos: {
23
+ organization: {
24
+ compact: '/branding/logos/yourlogo-compact.svg',
25
+ mini: '/branding/logos/yourlogo-mini.svg',
26
+ expanded: '/branding/logos/yourlogo-expanded.svg',
27
+ alt: 'YourOrganization',
28
+ },
29
+ eu: {
30
+ eu: '/branding/logos/eu/logo-eu.svg',
31
+ feder: '/branding/logos/eu/logo-feder.svg',
32
+ fse: '/branding/logos/eu/logo-fse.svg',
33
+ feader: '/branding/logos/eu/logo-feader.svg',
34
+ plurifondo: '/branding/logos/eu/logo-plurifondo.svg',
35
+ },
36
+ },
37
+
38
+ // Footer Configuration
39
+ footer: {
40
+ license: {
41
+ name: 'CC BY 4.0',
42
+ url: 'https://creativecommons.org/licenses/by/4.0/legalcode.es',
43
+ text: 'Todo el contenido bajo licencia',
44
+ },
45
+ euFundsUrl: 'https://www.example.com/eu-funds',
46
+ },
47
+
48
+ // Typography
49
+ typography: {
50
+ fontFamily: {
51
+ sans: '"Nunito", ui-sans-serif, system-ui, sans-serif',
52
+ heading: '"Inter", ui-sans-serif, system-ui, sans-serif',
53
+ },
54
+ fontUrl: 'https://fonts.googleapis.com/css2?family=Inter:wght@700&family=Nunito:wght@400;500;600;700&display=swap',
55
+ },
56
+
57
+ // Colors are configured in src/css/styles.css
58
+ // Edit the variables: --color-primary-base, --color-primary-light, --color-primary-dark
59
+
60
+ // Additional Images
61
+ images: {
62
+ headerBackground: '/branding/images/header-background.svg',
63
+ headerBackgroundLg: '/branding/images/header-background-lg.svg',
64
+ },
65
+ };
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" aria-label="Ir a la página de inicio de la aplicación" role="img"><defs><clipPath id="b-logo-mini"><path fill="rgb(252, 228, 0)" d="M0 0h32v32.001H0z"/></clipPath><clipPath id="a-logo-mini"><path d="M0 0h32v32H0z"/></clipPath></defs><g clip-path="url(#a-logo-mini)"><path fill="rgb(252, 228, 0)" d="M0 .305h32v32.001H0z"/><g clip-path="url(#b-logo-mini)" transform="translate(0 .305)"><g fill="#dd171b" fill-rule="evenodd"><path d="m31.997 6.145-7.686 1.539a14.764 14.764 0 0 1-8.028-1.042 15.267 15.267 0 0 0-5.073-1.846 12.725 12.725 0 0 0-3.59-.011l-5.13.918a94.41 94.41 0 0 1-2.491.442V.324a7.213 7.213 0 0 1 3.952-.09 10.087 10.087 0 0 1 2.118.951 17.859 17.859 0 0 0 4.36 1.993 14.13 14.13 0 0 0 6.7-.034l4.8-.872 5.016-.906 5.048-1.04ZM6.705 24.619a14.812 14.812 0 0 1 9.7 1.03 12.363 12.363 0 0 0 8.437 1.529l7.154-1.291v5.8a8.37 8.37 0 0 1-3.055.26 6.509 6.509 0 0 1-1.619-.464l-3.714-1.948a12.4 12.4 0 0 0-7.2-.838l-15.366 2.82L0 31.686v-5.8l1.28-.26 3.363-.623c.679-.125 1.393-.249 2.061-.385ZM-.003 15.32v-4.462l13.23-2.417a15.734 15.734 0 0 1 9.252 1.665 12.723 12.723 0 0 0 8.606.94l.914-.192v4.462L29.08 13.65a12.472 12.472 0 0 0-6.941-1.031l-8.131 1.483c-.974.182-2.921.532-2.921.532l-7.406 1.371a5.23 5.23 0 0 1-3.684-.685ZM31.997 16.851v4.393l-13.11 2.413a15.735 15.735 0 0 1-9.252-1.665 12.721 12.721 0 0 0-8.606-.94l-1.03.193v-4.394l3.035 1.6a12.476 12.476 0 0 0 6.941 1.03l8.13-1.483c.974-.182 2.922-.532 2.922-.532l7.406-1.371a5.219 5.219 0 0 1 3.564.756Z"/></g></g></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 144 32" width="144" height="32" class="fill-current hidden sm:block" aria-label="Ir a la página de inicio de la aplicación" role="img"><defs><clipPath id="b-logo-expanded"><path fill="rgb(252, 228, 0)" d="M0 0h31.509v31.495H0z"></path></clipPath><clipPath id="a-logo-expanded"><path d="M0 0h144v32H0z"></path></clipPath></defs><g clip-path="url(#a-logo-expanded)"><path fill="rgb(252, 228, 0)" d="M0 .205h31.509V31.7H0z"></path><g clip-path="url(#b-logo-expanded)" transform="translate(0 .205)"><g fill="#dd171b" fill-rule="evenodd"><path d="m31.509 6.048-7.568 1.515a14.545 14.545 0 0 1-7.905-1.025 15.04 15.04 0 0 0-5-1.817 12.536 12.536 0 0 0-3.535-.011l-5.051.9c-.8.156-1.639.3-2.453.434V.315A7.1 7.1 0 0 1 3.888.226a9.926 9.926 0 0 1 2.085.936 17.6 17.6 0 0 0 4.293 1.962 13.92 13.92 0 0 0 6.6-.034l4.728-.858 4.939-.892 4.97-1.024ZM6.602 24.229a14.592 14.592 0 0 1 9.555 1.014 12.178 12.178 0 0 0 8.307 1.5l7.044-1.271v5.706a8.247 8.247 0 0 1-3.008.256 6.4 6.4 0 0 1-1.594-.457l-3.657-1.917a12.217 12.217 0 0 0-7.092-.825L1.026 31.011 0 31.177v-5.706l1.26-.256 3.312-.613c.669-.123 1.371-.245 2.029-.379ZM-.003 15.077v-4.391l13.027-2.377a15.5 15.5 0 0 1 9.11 1.638 12.535 12.535 0 0 0 8.474.925l.9-.189v4.391l-2.874-1.639a12.286 12.286 0 0 0-6.835-1.014l-8.006 1.46c-.959.179-2.877.524-2.877.524l-7.292 1.349a5.152 5.152 0 0 1-3.627-.677ZM31.509 16.583v4.324L18.6 23.282a15.5 15.5 0 0 1-9.11-1.638 12.532 12.532 0 0 0-8.474-.925l-1.015.19v-4.324l2.988 1.572a12.291 12.291 0 0 0 6.835 1.014l8.006-1.46c.959-.178 2.877-.524 2.877-.524l7.292-1.349a5.142 5.142 0 0 1 3.51.745Z"></path></g></g><path d="M38.2 28.807v-8.551h1.393c2.893 0 4.478 1.522 4.478 4.286 0 2.829-1.521 4.265-4.5 4.265Zm10.4-11.4v14.294h9.47v-2.893h-6.277v-3.257h6.214v-2.893h-6.214v-2.379h6.277v-2.871Zm21.751 0-5.206 14.294h3.385l1.542-4.35h4.371l1.521 4.35h3.45L74.1 17.407Zm1.885 2.956-1.328 4.223h2.679Zm42.341 4.03h-3.192v4.5a4.206 4.206 0 0 1-1.371.193 4.251 4.251 0 0 1-4.242-4.5 4.443 4.443 0 0 1 4.735-4.65 7.481 7.481 0 0 1 4.071 1.243v-3.257a11.674 11.674 0 0 0-4.349-.857c-4.628 0-7.841 3.107-7.841 7.564 0 4.393 3.149 7.372 7.841 7.372a12.977 12.977 0 0 0 4.349-.75Zm16.132.129a7.424 7.424 0 1 0-7.391 7.436 7.122 7.122 0 0 0 7.393-7.436Zm-7.456-4.458c-2.4 0-4.006 1.822-4.006 4.5s1.65 4.5 4.071 4.5c2.4 0 3.985-1.8 3.985-4.5s-1.627-4.501-4.048-4.501Zm8.689-2.657v14.294h3.257v-9.108l5.762 9.108h3.021V17.407h-3.256v8.889l-5.532-8.889ZM46.922 7.33h-3.193v4.5a4.335 4.335 0 0 1-5.613-4.307 4.443 4.443 0 0 1 4.735-4.65 7.487 7.487 0 0 1 4.071 1.243V.859a11.674 11.674 0 0 0-4.35-.858c-4.628 0-7.841 3.107-7.841 7.565 0 4.393 3.15 7.371 7.841 7.371a12.99 12.99 0 0 0 4.35-.75Zm16.116.128a7.424 7.424 0 1 0-7.392 7.436 7.122 7.122 0 0 0 7.396-7.436Zm-7.456-4.457c-2.4 0-4.006 1.821-4.006 4.5s1.65 4.5 4.071 4.5c2.4 0 3.985-1.8 3.985-4.5s-1.626-4.5-4.047-4.5ZM64.107.344v14.293h5.914c3.15 0 4.992-1.565 4.992-4.243a3.717 3.717 0 0 0-2.978-3.728 3.133 3.133 0 0 0 1.95-2.936c.021-2.272-1.521-3.386-4.606-3.386Zm4.757 5.336c1.393 0 1.95-.386 1.95-1.35 0-.921-.536-1.264-2.057-1.264h-1.393V5.68Zm.429 6.043c1.585 0 2.271-.493 2.271-1.651 0-1.2-.707-1.671-2.4-1.671h-1.8v3.322ZM78.879.344h-3.192v14.293h3.192Zm1.39 0v14.293h9.47v-2.893h-6.278V8.487h6.214V5.594h-6.214V3.216h6.278V.345Zm50.463 7.114a7.424 7.424 0 1 0-7.392 7.436 7.122 7.122 0 0 0 7.395-7.436Zm-7.456-4.457c-2.4 0-4.006 1.821-4.006 4.5s1.65 4.5 4.071 4.5c2.4 0 3.985-1.8 3.985-4.5s-1.626-4.5-4.047-4.5ZM97.917 24.585l-1.35-4.223-1.328 4.223ZM83.249 31.7v-5.872h.407c2.057 0 2.271.214 3.642 3.75a7.159 7.159 0 0 0 .3.729l.278.664a6.4 6.4 0 0 0 .343.729h4.641l1.543-4.35h4.371l1.521 4.35h3.45l-5.314-14.294h-3.749L90.46 28.997c-.3-.622-.642-1.371-1.04-2.291a3.042 3.042 0 0 0-1.907-2.014 3.416 3.416 0 0 0 2.614-3.429c0-2.571-1.693-3.857-5.1-3.857H79.97V31.7Zm0-8.572h1.414c1.371 0 2.057-.493 2.057-1.521s-.622-1.478-2.014-1.478h-1.457Zm11.156-8.492V8.764h.407c2.057 0 2.271.214 3.642 3.75a6.982 6.982 0 0 0 .3.729l.278.665a6.37 6.37 0 0 0 .342.729h6.432l.018-9.169 5.745 9.169h3.021V.344h-3.256l.014 8.769-5.542-8.769h-3.257v13.3a29.76 29.76 0 0 1-1.975-4 3.043 3.043 0 0 0-1.907-2.014 3.415 3.415 0 0 0 2.614-3.428c0-2.572-1.693-3.857-5.1-3.857h-5.054v14.293Zm0-8.572h1.412c1.371 0 2.056-.493 2.056-1.521s-.621-1.478-2.013-1.478h-1.457Zm-59.44 11.342V31.7h4.778c4.842 0 7.692-2.657 7.692-7.158 0-4.479-2.914-7.136-7.863-7.136Z" fill="#161615" fill-rule="evenodd"></path></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 144 32" width="144" height="32" class="fill-current hidden sm:block" aria-label="Ir a la página de inicio de la aplicación" role="img"><defs><clipPath id="b-logo-expanded"><path fill="rgb(252, 228, 0)" d="M0 0h31.509v31.495H0z"></path></clipPath><clipPath id="a-logo-expanded"><path d="M0 0h144v32H0z"></path></clipPath></defs><g clip-path="url(#a-logo-expanded)"><path fill="rgb(252, 228, 0)" d="M0 .205h31.509V31.7H0z"></path><g clip-path="url(#b-logo-expanded)" transform="translate(0 .205)"><g fill="#dd171b" fill-rule="evenodd"><path d="m31.509 6.048-7.568 1.515a14.545 14.545 0 0 1-7.905-1.025 15.04 15.04 0 0 0-5-1.817 12.536 12.536 0 0 0-3.535-.011l-5.051.9c-.8.156-1.639.3-2.453.434V.315A7.1 7.1 0 0 1 3.888.226a9.926 9.926 0 0 1 2.085.936 17.6 17.6 0 0 0 4.293 1.962 13.92 13.92 0 0 0 6.6-.034l4.728-.858 4.939-.892 4.97-1.024ZM6.602 24.229a14.592 14.592 0 0 1 9.555 1.014 12.178 12.178 0 0 0 8.307 1.5l7.044-1.271v5.706a8.247 8.247 0 0 1-3.008.256 6.4 6.4 0 0 1-1.594-.457l-3.657-1.917a12.217 12.217 0 0 0-7.092-.825L1.026 31.011 0 31.177v-5.706l1.26-.256 3.312-.613c.669-.123 1.371-.245 2.029-.379ZM-.003 15.077v-4.391l13.027-2.377a15.5 15.5 0 0 1 9.11 1.638 12.535 12.535 0 0 0 8.474.925l.9-.189v4.391l-2.874-1.639a12.286 12.286 0 0 0-6.835-1.014l-8.006 1.46c-.959.179-2.877.524-2.877.524l-7.292 1.349a5.152 5.152 0 0 1-3.627-.677ZM31.509 16.583v4.324L18.6 23.282a15.5 15.5 0 0 1-9.11-1.638 12.532 12.532 0 0 0-8.474-.925l-1.015.19v-4.324l2.988 1.572a12.291 12.291 0 0 0 6.835 1.014l8.006-1.46c.959-.178 2.877-.524 2.877-.524l7.292-1.349a5.142 5.142 0 0 1 3.51.745Z"></path></g></g><path d="M38.2 28.807v-8.551h1.393c2.893 0 4.478 1.522 4.478 4.286 0 2.829-1.521 4.265-4.5 4.265Zm10.4-11.4v14.294h9.47v-2.893h-6.277v-3.257h6.214v-2.893h-6.214v-2.379h6.277v-2.871Zm21.751 0-5.206 14.294h3.385l1.542-4.35h4.371l1.521 4.35h3.45L74.1 17.407Zm1.885 2.956-1.328 4.223h2.679Zm42.341 4.03h-3.192v4.5a4.206 4.206 0 0 1-1.371.193 4.251 4.251 0 0 1-4.242-4.5 4.443 4.443 0 0 1 4.735-4.65 7.481 7.481 0 0 1 4.071 1.243v-3.257a11.674 11.674 0 0 0-4.349-.857c-4.628 0-7.841 3.107-7.841 7.564 0 4.393 3.149 7.372 7.841 7.372a12.977 12.977 0 0 0 4.349-.75Zm16.132.129a7.424 7.424 0 1 0-7.391 7.436 7.122 7.122 0 0 0 7.393-7.436Zm-7.456-4.458c-2.4 0-4.006 1.822-4.006 4.5s1.65 4.5 4.071 4.5c2.4 0 3.985-1.8 3.985-4.5s-1.627-4.501-4.048-4.501Zm8.689-2.657v14.294h3.257v-9.108l5.762 9.108h3.021V17.407h-3.256v8.889l-5.532-8.889ZM46.922 7.33h-3.193v4.5a4.335 4.335 0 0 1-5.613-4.307 4.443 4.443 0 0 1 4.735-4.65 7.487 7.487 0 0 1 4.071 1.243V.859a11.674 11.674 0 0 0-4.35-.858c-4.628 0-7.841 3.107-7.841 7.565 0 4.393 3.15 7.371 7.841 7.371a12.99 12.99 0 0 0 4.35-.75Zm16.116.128a7.424 7.424 0 1 0-7.392 7.436 7.122 7.122 0 0 0 7.396-7.436Zm-7.456-4.457c-2.4 0-4.006 1.821-4.006 4.5s1.65 4.5 4.071 4.5c2.4 0 3.985-1.8 3.985-4.5s-1.626-4.5-4.047-4.5ZM64.107.344v14.293h5.914c3.15 0 4.992-1.565 4.992-4.243a3.717 3.717 0 0 0-2.978-3.728 3.133 3.133 0 0 0 1.95-2.936c.021-2.272-1.521-3.386-4.606-3.386Zm4.757 5.336c1.393 0 1.95-.386 1.95-1.35 0-.921-.536-1.264-2.057-1.264h-1.393V5.68Zm.429 6.043c1.585 0 2.271-.493 2.271-1.651 0-1.2-.707-1.671-2.4-1.671h-1.8v3.322ZM78.879.344h-3.192v14.293h3.192Zm1.39 0v14.293h9.47v-2.893h-6.278V8.487h6.214V5.594h-6.214V3.216h6.278V.345Zm50.463 7.114a7.424 7.424 0 1 0-7.392 7.436 7.122 7.122 0 0 0 7.395-7.436Zm-7.456-4.457c-2.4 0-4.006 1.821-4.006 4.5s1.65 4.5 4.071 4.5c2.4 0 3.985-1.8 3.985-4.5s-1.626-4.5-4.047-4.5ZM97.917 24.585l-1.35-4.223-1.328 4.223ZM83.249 31.7v-5.872h.407c2.057 0 2.271.214 3.642 3.75a7.159 7.159 0 0 0 .3.729l.278.664a6.4 6.4 0 0 0 .343.729h4.641l1.543-4.35h4.371l1.521 4.35h3.45l-5.314-14.294h-3.749L90.46 28.997c-.3-.622-.642-1.371-1.04-2.291a3.042 3.042 0 0 0-1.907-2.014 3.416 3.416 0 0 0 2.614-3.429c0-2.571-1.693-3.857-5.1-3.857H79.97V31.7Zm0-8.572h1.414c1.371 0 2.057-.493 2.057-1.521s-.622-1.478-2.014-1.478h-1.457Zm11.156-8.492V8.764h.407c2.057 0 2.271.214 3.642 3.75a6.982 6.982 0 0 0 .3.729l.278.665a6.37 6.37 0 0 0 .342.729h6.432l.018-9.169 5.745 9.169h3.021V.344h-3.256l.014 8.769-5.542-8.769h-3.257v13.3a29.76 29.76 0 0 1-1.975-4 3.043 3.043 0 0 0-1.907-2.014 3.415 3.415 0 0 0 2.614-3.428c0-2.572-1.693-3.857-5.1-3.857h-5.054v14.293Zm0-8.572h1.412c1.371 0 2.056-.493 2.056-1.521s-.621-1.478-2.013-1.478h-1.457Zm-59.44 11.342V31.7h4.778c4.842 0 7.692-2.657 7.692-7.158 0-4.479-2.914-7.136-7.863-7.136Z" fill="#161615" fill-rule="evenodd"></path></g></svg>
@@ -0,0 +1,13 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" aria-label="YourLogo" role="img">
2
+ <defs>
3
+ <clipPath id="clip-hex">
4
+ <path d="M16 1.5L29 9V23L16 30.5L3 23V9L16 1.5Z"/>
5
+ </clipPath>
6
+ </defs>
7
+ <!-- Hexagono exterior -->
8
+ <path d="M16 1.5L29 9V23L16 30.5L3 23V9L16 1.5Z" fill="#00607a" stroke="#00475c" stroke-width="1"/>
9
+ <!-- Cuadrado interior -->
10
+ <rect x="10" y="10" width="12" height="12" rx="1" fill="#ffffff"/>
11
+ <!-- Círculo centro -->
12
+ <circle cx="16" cy="16" r="3" fill="#00607a"/>
13
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 144 32" width="144" height="32" aria-label="YourLogo" role="img">
2
+ <defs>
3
+ <clipPath id="clip-hex-exp">
4
+ <path d="M16 1.5L29 9V23L16 30.5L3 23V9L16 1.5Z"/>
5
+ </clipPath>
6
+ </defs>
7
+ <!-- Icono (32x32 en el espacio izquierdo) -->
8
+ <!-- Hexagono exterior -->
9
+ <path d="M16 1.5L29 9V23L16 30.5L3 23V9L16 1.5Z" fill="#00607a" stroke="#00475c" stroke-width="1"/>
10
+ <!-- Cuadrado interior -->
11
+ <rect x="10" y="10" width="12" height="12" rx="1" fill="#ffffff"/>
12
+ <!-- Círculo centro -->
13
+ <circle cx="16" cy="16" r="3" fill="#00607a"/>
14
+
15
+ <!-- Texto YourLogo -->
16
+ <text x="42" y="21" font-family="Arial, Helvetica, sans-serif" font-size="14" font-weight="600" fill="#3c4c5c">YourLogo</text>
17
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 144 32" width="144" height="32" aria-label="YourLogo" role="img">
2
+ <defs>
3
+ <clipPath id="clip-hex-exp">
4
+ <path d="M16 1.5L29 9V23L16 30.5L3 23V9L16 1.5Z"/>
5
+ </clipPath>
6
+ </defs>
7
+ <!-- Icono (32x32 en el espacio izquierdo) -->
8
+ <!-- Hexagono exterior -->
9
+ <path d="M16 1.5L29 9V23L16 30.5L3 23V9L16 1.5Z" fill="#00607a" stroke="#00475c" stroke-width="1"/>
10
+ <!-- Cuadrado interior -->
11
+ <rect x="10" y="10" width="12" height="12" rx="1" fill="#ffffff"/>
12
+ <!-- Círculo centro -->
13
+ <circle cx="16" cy="16" r="3" fill="#00607a"/>
14
+
15
+ <!-- Texto YourLogo -->
16
+ <text x="42" y="21" font-family="Arial, Helvetica, sans-serif" font-size="14" font-weight="600" fill="#3c4c5c">YourLogo</text>
17
+ </svg>