desy-html 16.0.4 → 17.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.
- package/.node-version +1 -1
- package/.nvmrc +1 -1
- package/AGENTS.md +207 -207
- package/README.md +203 -203
- package/TESTING_PLAN.md +379 -379
- package/branding/BRANDING.md +398 -398
- package/branding/branding.config.js +76 -76
- package/branding/branding.config.yourorganization.js +72 -72
- package/branding/logos/aragon-compact.svg +1 -1
- package/branding/logos/aragon-expanded.svg +1 -1
- package/branding/logos/aragon-mini.svg +1 -1
- package/branding/logos/favicon.svg +1 -1
- package/branding/logos/yourlogo-compact.svg +13 -13
- package/branding/logos/yourlogo-expanded.svg +17 -17
- package/branding/logos/yourlogo-mini.svg +17 -17
- package/branding/logos/yourorganization-favicon.svg +13 -13
- package/branding/vite-branding-plugin.js +221 -221
- package/docs/_global.content-placeholder.njk +7 -7
- package/docs/_global.foot.njk +11 -11
- package/docs/_global.head.njk +42 -42
- package/docs/_include.template-header.njk +391 -386
- package/docs/_macro.component-example.njk +6 -6
- package/docs/_macro.example-render.njk +350 -346
- package/docs/_macro.load-component-params.njk +2 -2
- package/docs/_macro.load-component-template.njk +3 -3
- package/docs/_macro.render-caller.njk +3 -3
- package/docs/_macro.show-code-from-file.njk +57 -57
- package/docs/_macro.show-html-from-file.njk +42 -42
- package/docs/_template.default.njk +8 -8
- package/docs/_template.examples.njk +13 -13
- package/docs/catalogo.html +27 -27
- package/docs/componentes.html +187 -184
- package/docs/ds/_ds.example.accordion.njk +109 -109
- package/docs/ds/_ds.example.border.njk +39 -39
- package/docs/ds/_ds.example.botones-alert-sm.njk +264 -264
- package/docs/ds/_ds.example.botones-alert.njk +264 -264
- package/docs/ds/_ds.example.botones-default-sm.njk +264 -264
- package/docs/ds/_ds.example.botones-default.njk +258 -258
- package/docs/ds/_ds.example.botones-primary-lg.njk +264 -264
- package/docs/ds/_ds.example.botones-primary-sm.njk +264 -264
- package/docs/ds/_ds.example.botones-primary.njk +264 -264
- package/docs/ds/_ds.example.botones-transparent-sm.njk +264 -264
- package/docs/ds/_ds.example.botones-transparent.njk +264 -264
- package/docs/ds/_ds.example.breadcrumbs.njk +65 -65
- package/docs/ds/_ds.example.card.njk +198 -198
- package/docs/ds/_ds.example.checkboxes.njk +377 -377
- package/docs/ds/_ds.example.collapsible.njk +18 -18
- package/docs/ds/_ds.example.color-de-interaccion.njk +16 -16
- package/docs/ds/_ds.example.colores-cabecera.njk +15 -15
- package/docs/ds/_ds.example.colores-de-soporte.njk +82 -82
- package/docs/ds/_ds.example.colores-neutros.njk +26 -26
- package/docs/ds/_ds.example.combobox.njk +91 -0
- package/docs/ds/_ds.example.date-input.njk +363 -363
- package/docs/ds/_ds.example.description-list.njk +289 -289
- package/docs/ds/_ds.example.details.njk +23 -23
- package/docs/ds/_ds.example.dropdowns-default.njk +186 -186
- package/docs/ds/_ds.example.dropdowns-en-uso.njk +105 -105
- package/docs/ds/_ds.example.dropdowns-variaciones.njk +224 -224
- package/docs/ds/_ds.example.error-summary.njk +34 -34
- package/docs/ds/_ds.example.file-upload.njk +54 -54
- package/docs/ds/_ds.example.footer.njk +28 -28
- package/docs/ds/_ds.example.header-advanced.njk +70 -70
- package/docs/ds/_ds.example.header.njk +211 -211
- package/docs/ds/_ds.example.input-group.njk +242 -242
- package/docs/ds/_ds.example.input.njk +164 -164
- package/docs/ds/_ds.example.item.njk +176 -176
- package/docs/ds/_ds.example.layout-escritorio.njk +38 -38
- package/docs/ds/_ds.example.layout-movil.njk +14 -14
- package/docs/ds/_ds.example.layout-sidebar.njk +11 -11
- package/docs/ds/_ds.example.links-list.njk +170 -170
- package/docs/ds/_ds.example.listbox-default.njk +677 -677
- package/docs/ds/_ds.example.listbox-variaciones.njk +824 -824
- package/docs/ds/_ds.example.menu-horizontal.njk +66 -66
- package/docs/ds/_ds.example.menu-navigation.njk +493 -493
- package/docs/ds/_ds.example.menu-vertical.njk +129 -129
- package/docs/ds/_ds.example.menubar-en-uso.njk +244 -244
- package/docs/ds/_ds.example.menubar-variaciones.njk +785 -785
- package/docs/ds/_ds.example.modal.njk +210 -210
- package/docs/ds/_ds.example.nav.njk +158 -158
- package/docs/ds/_ds.example.notification.njk +122 -122
- package/docs/ds/_ds.example.pagination.njk +190 -190
- package/docs/ds/_ds.example.pills.njk +215 -215
- package/docs/ds/_ds.example.radios.njk +419 -419
- package/docs/ds/_ds.example.searchbar.njk +87 -87
- package/docs/ds/_ds.example.select.njk +390 -390
- package/docs/ds/_ds.example.status-item.njk +239 -239
- package/docs/ds/_ds.example.status.njk +47 -47
- package/docs/ds/_ds.example.table.njk +740 -740
- package/docs/ds/_ds.example.tabs.njk +136 -136
- package/docs/ds/_ds.example.textarea.njk +237 -237
- package/docs/ds/_ds.example.textos.njk +32 -32
- package/docs/ds/_ds.example.toggle.njk +75 -75
- package/docs/ds/_ds.example.tree.njk +456 -456
- package/docs/ds/_ds.example.treegrid.njk +810 -810
- package/docs/ds/_ds.example.typography.njk +225 -225
- package/docs/ds/_ds.macro.code-snippet.njk +32 -32
- package/docs/ds/_ds.macro.section-title.njk +2 -2
- package/docs/ds/_ds.macro.subsection-title.njk +2 -2
- package/docs/ds/_ds.section.avisos.njk +22 -22
- package/docs/ds/_ds.section.botones.njk +53 -53
- package/docs/ds/_ds.section.campo-y-area-de-texto.njk +19 -19
- package/docs/ds/_ds.section.color.njk +147 -147
- package/docs/ds/_ds.section.datos.njk +42 -42
- package/docs/ds/_ds.section.dropdowns.njk +23 -23
- package/docs/ds/_ds.section.espaciado.njk +296 -296
- package/docs/ds/_ds.section.forms.njk +73 -68
- package/docs/ds/_ds.section.informacion.njk +12 -12
- package/docs/ds/_ds.section.layout.njk +63 -63
- package/docs/ds/_ds.section.menubar.njk +18 -18
- package/docs/ds/_ds.section.mostrar-ocultar.njk +33 -33
- package/docs/ds/_ds.section.navigation.njk +57 -57
- package/docs/ds/_ds.section.textos.njk +287 -287
- package/docs/ds/_ds.section.typography.njk +28 -28
- package/docs/estilos.html +37 -37
- package/docs/examples-accordion-history.html +8 -8
- package/docs/examples-accordion.html +8 -8
- package/docs/examples-alert.html +8 -8
- package/docs/examples-breadcrumbs.html +8 -8
- package/docs/examples-button-loader.html +8 -8
- package/docs/examples-button.html +8 -8
- package/docs/examples-card.html +8 -8
- package/docs/examples-character-count.html +8 -8
- package/docs/examples-checkboxes.html +8 -8
- package/docs/examples-collapsible.html +8 -8
- package/docs/examples-combobox.html +8 -0
- package/docs/examples-date-input.html +8 -8
- package/docs/examples-datepicker.html +8 -8
- package/docs/examples-description-list.html +8 -8
- package/docs/examples-details.html +8 -8
- package/docs/examples-dialog.html +8 -8
- package/docs/examples-dropdown.html +8 -8
- package/docs/examples-error-message.html +8 -8
- package/docs/examples-error-summary.html +8 -8
- package/docs/examples-fieldset.html +8 -8
- package/docs/examples-file-upload.html +8 -8
- package/docs/examples-footer.html +8 -8
- package/docs/examples-header-advanced.html +8 -8
- package/docs/examples-header-mini.html +8 -8
- package/docs/examples-header.html +8 -8
- package/docs/examples-hint.html +8 -8
- package/docs/examples-input-group.html +8 -8
- package/docs/examples-input.html +8 -8
- package/docs/examples-item.html +8 -8
- package/docs/examples-label.html +8 -8
- package/docs/examples-links-list.html +8 -8
- package/docs/examples-listbox.html +8 -8
- package/docs/examples-media-object.html +8 -8
- package/docs/examples-menu-horizontal.html +8 -8
- package/docs/examples-menu-navigation.html +8 -8
- package/docs/examples-menu-vertical.html +8 -8
- package/docs/examples-menubar.html +8 -8
- package/docs/examples-modal.html +8 -8
- package/docs/examples-nav.html +8 -8
- package/docs/examples-notification.html +8 -8
- package/docs/examples-pagination.html +8 -8
- package/docs/examples-pill.html +8 -8
- package/docs/examples-radios.html +8 -8
- package/docs/examples-searchbar.html +8 -8
- package/docs/examples-select.html +8 -8
- package/docs/examples-skip-link.html +8 -8
- package/docs/examples-spinner.html +8 -8
- package/docs/examples-status-item.html +8 -8
- package/docs/examples-status.html +8 -8
- package/docs/examples-table-advanced.html +8 -8
- package/docs/examples-table.html +8 -8
- package/docs/examples-tabs.html +8 -8
- package/docs/examples-textarea.html +8 -8
- package/docs/examples-toggle.html +8 -8
- package/docs/examples-tooltip.html +8 -8
- package/docs/examples-tree.html +8 -8
- package/docs/examples-treegrid.html +8 -8
- package/docs/index.html +914 -908
- package/docs/pagina-accesibilidad.html +110 -110
- package/docs/pagina-mapa-web.html +137 -137
- package/docs/pagina-prueba.html +95 -95
- package/docs/plantilla-con-header-advanced.html +14 -14
- package/docs/plantilla-editar-con-cabecera-fija-y-sidebar-sticky.html +154 -154
- package/docs/plantilla-editar-con-cabecera-fija.html +17 -17
- package/docs/plantilla-logueado-con-cabecera-fija-headroom.html +15 -15
- package/docs/plantilla-logueado-con-cabecera-fija.html +15 -15
- package/docs/plantilla-logueado-con-selector-de-app-y-sidebar.html +164 -164
- package/docs/plantilla-logueado-con-selector-de-app-y-subheader.html +16 -16
- package/docs/plantilla-logueado-con-selector-de-app.html +14 -14
- package/docs/plantilla-logueado-con-titulo-de-app.html +14 -14
- package/docs/plantilla-sin-loguear.html +14 -14
- package/docs/plantillas.html +89 -89
- package/docs/spinner-plantilla-con-header-advanced.html +2 -2
- package/docs/spinner-plantilla-editar-con-cabecera-fija.html +4 -4
- package/docs/spinner-plantilla-logueado-con-cabecera-fija.html +2 -2
- package/docs/spinner-plantilla-logueado-con-selector-de-app-y-subheader.html +2 -2
- package/docs/spinner-plantilla-logueado-con-titulo-de-app.html +2 -2
- package/docs/spinner-plantilla-sin-loguear.html +18 -18
- package/docs/sprints/01-combobox-template.md +433 -0
- package/docs/sprints/02-combobox-styles.md +291 -0
- package/docs/sprints/03-combobox-javascript.md +589 -0
- package/docs/sprints/04-combobox-integration.md +386 -0
- package/docs/sprints/05-combobox-refinamiento-w3c.md +55 -0
- package/package.json +61 -61
- package/public/images/demo-icon.svg +9 -9
- package/replit.md +74 -74
- package/src/EUPL-1.2.txt +287 -287
- package/src/css/base.css +44 -44
- package/src/css/component.form-group.css +24 -24
- package/src/css/component.headroom.css +32 -32
- package/src/css/component.text.css +169 -169
- package/src/css/styles.css +247 -246
- package/src/js/aria/MenuHorizontal.js +65 -65
- package/src/js/aria/MenuNavigation.js +34 -2
- package/src/js/aria/MenuVertical.js +60 -60
- package/src/js/aria/Nav.js +60 -60
- package/src/js/aria/PopupMenuAction.js +30 -12
- package/src/js/aria/accordion.js +264 -264
- package/src/js/aria/checkBoxes.js +52 -52
- package/src/js/aria/collapsible.js +44 -44
- package/src/js/aria/combobox.js +584 -0
- package/src/js/aria/dataGrid.js +950 -950
- package/src/js/aria/linksList.js +42 -42
- package/src/js/aria/notification.js +56 -56
- package/src/js/aria/radioButton.js +50 -50
- package/src/js/aria/toggle.js +61 -61
- package/src/js/aria/treegrid.js +507 -507
- package/src/js/aria/utils.js +219 -219
- package/src/js/desy-html.js +860 -813
- package/src/js/headroom.min.js +6 -6
- package/src/js/index.js +74 -72
- package/src/main.js +2 -2
- package/src/templates/components/accordion/_examples.accordion.njk +482 -482
- package/src/templates/components/accordion/_macro.accordion.njk +3 -3
- package/src/templates/components/accordion/_template.accordion.njk +131 -131
- package/src/templates/components/accordion/params.accordion.yaml +125 -125
- package/src/templates/components/accordion-history/_examples.accordion-history.njk +521 -521
- package/src/templates/components/accordion-history/_macro.accordion-history.njk +3 -3
- package/src/templates/components/accordion-history/_template.accordion-history.njk +193 -193
- package/src/templates/components/accordion-history/params.accordion-history.yaml +129 -129
- package/src/templates/components/alert/_examples.alert.njk +91 -91
- package/src/templates/components/alert/_macro.alert.njk +3 -3
- package/src/templates/components/alert/_styles.alert.css +9 -9
- package/src/templates/components/alert/_template.alert.njk +16 -16
- package/src/templates/components/alert/params.alert.yaml +25 -25
- package/src/templates/components/breadcrumbs/_examples.breadcrumbs.njk +464 -464
- package/src/templates/components/breadcrumbs/_macro.breadcrumbs.njk +3 -3
- package/src/templates/components/breadcrumbs/_styles.breadcrumbs.css +81 -81
- package/src/templates/components/breadcrumbs/_template.breadcrumbs.njk +77 -77
- package/src/templates/components/breadcrumbs/params.breadcrumbs.yaml +44 -44
- package/src/templates/components/button/_examples.button.njk +518 -511
- package/src/templates/components/button/_macro.button.njk +3 -3
- package/src/templates/components/button/_styles.button.css +180 -180
- package/src/templates/components/button/_template.button.njk +49 -49
- package/src/templates/components/button/params.button.yaml +48 -48
- package/src/templates/components/button-loader/_examples.button-loader.njk +499 -492
- package/src/templates/components/button-loader/_macro.button-loader.njk +3 -3
- package/src/templates/components/button-loader/_styles.button-loader.css +194 -194
- package/src/templates/components/button-loader/_template.button-loader.njk +84 -84
- package/src/templates/components/button-loader/params.button-loader.yaml +74 -74
- package/src/templates/components/card/_examples.card.njk +381 -381
- package/src/templates/components/card/_macro.card.njk +3 -3
- package/src/templates/components/card/_template.card.njk +34 -34
- package/src/templates/components/card/params.card.yaml +112 -112
- package/src/templates/components/character-count/_examples.character-count.njk +195 -195
- package/src/templates/components/character-count/_macro.character-count.njk +5 -5
- package/src/templates/components/character-count/_template.character-count.njk +38 -38
- package/src/templates/components/character-count/params.character-count.yaml +77 -77
- package/src/templates/components/checkboxes/_examples.checkboxes.njk +835 -835
- package/src/templates/components/checkboxes/_macro.checkboxes.njk +3 -3
- package/src/templates/components/checkboxes/_styles.checkboxes.css +30 -30
- package/src/templates/components/checkboxes/_template.checkboxes.njk +137 -137
- package/src/templates/components/checkboxes/params.checkboxes.yaml +116 -116
- package/src/templates/components/collapsible/_examples.collapsible.njk +107 -107
- package/src/templates/components/collapsible/_macro.collapsible.njk +3 -3
- package/src/templates/components/collapsible/_styles.collapsible.css +35 -35
- package/src/templates/components/collapsible/_template.collapsible.njk +17 -17
- package/src/templates/components/collapsible/params.collapsible.yaml +48 -48
- package/src/templates/components/combobox/_examples.combobox.njk +440 -0
- package/src/templates/components/combobox/_macro.combobox.njk +3 -0
- package/src/templates/components/combobox/_styles.combobox.css +92 -0
- package/src/templates/components/combobox/_template.combobox.njk +97 -0
- package/src/templates/components/combobox/params.combobox.yaml +102 -0
- package/src/templates/components/date-input/_examples.date-input.njk +578 -578
- package/src/templates/components/date-input/_macro.date-input.njk +3 -3
- package/src/templates/components/date-input/_template.date-input.njk +125 -125
- package/src/templates/components/date-input/params.date-input.yaml +97 -97
- package/src/templates/components/datepicker/_examples.datepicker.njk +415 -415
- package/src/templates/components/datepicker/_macro.datepicker.njk +3 -3
- package/src/templates/components/datepicker/_styles.datepicker.css +87 -87
- package/src/templates/components/datepicker/_template.datepicker.njk +129 -129
- package/src/templates/components/datepicker/params.datepicker.yaml +104 -104
- package/src/templates/components/description-list/_examples.description-list.njk +502 -502
- package/src/templates/components/description-list/_macro.description-list.njk +3 -3
- package/src/templates/components/description-list/_template.description-list.njk +17 -17
- package/src/templates/components/description-list/params.description-list.yaml +61 -61
- package/src/templates/components/details/_examples.details.njk +68 -68
- package/src/templates/components/details/_macro.details.njk +3 -3
- package/src/templates/components/details/_template.details.njk +17 -17
- package/src/templates/components/details/params.details.yaml +40 -40
- package/src/templates/components/dialog/_examples.dialog.njk +156 -156
- package/src/templates/components/dialog/_macro.dialog.njk +3 -3
- package/src/templates/components/dialog/_styles.dialog.css +27 -27
- package/src/templates/components/dialog/_template.dialog.njk +12 -12
- package/src/templates/components/dialog/params.dialog.yaml +25 -25
- package/src/templates/components/dropdown/_examples.dropdown.njk +226 -226
- package/src/templates/components/dropdown/_macro.dropdown.njk +3 -3
- package/src/templates/components/dropdown/_styles.dropdown.css +191 -191
- package/src/templates/components/dropdown/_template.dropdown.njk +34 -34
- package/src/templates/components/dropdown/params.dropdown.yaml +32 -32
- package/src/templates/components/error-message/_examples.error-message.njk +28 -28
- package/src/templates/components/error-message/_macro.error-message.njk +5 -5
- package/src/templates/components/error-message/_template.error-message.njk +8 -8
- package/src/templates/components/error-message/params.error-message.yaml +23 -23
- package/src/templates/components/error-summary/_examples.error-summary.njk +111 -111
- package/src/templates/components/error-summary/_macro.error-summary.njk +5 -5
- package/src/templates/components/error-summary/_template.error-summary.njk +48 -48
- package/src/templates/components/error-summary/params.error-summary.yaml +50 -50
- package/src/templates/components/fieldset/_examples.fieldset.njk +79 -79
- package/src/templates/components/fieldset/_macro.fieldset.njk +2 -2
- package/src/templates/components/fieldset/_template.fieldset.njk +46 -46
- package/src/templates/components/fieldset/params.fieldset.yaml +49 -49
- package/src/templates/components/file-upload/_examples.file-upload.njk +103 -103
- package/src/templates/components/file-upload/_macro.file-upload.njk +2 -2
- package/src/templates/components/file-upload/_template.file-upload.njk +45 -45
- package/src/templates/components/file-upload/params.file-upload.yaml +48 -48
- package/src/templates/components/footer/_examples.footer.njk +558 -558
- package/src/templates/components/footer/_macro.footer.njk +3 -3
- package/src/templates/components/footer/_styles.footer.css +43 -43
- package/src/templates/components/footer/_template.footer.njk +130 -130
- package/src/templates/components/footer/params.footer.yaml +140 -140
- package/src/templates/components/header/_examples.header.njk +627 -627
- package/src/templates/components/header/_macro.header.header__dropdown.njk +3 -3
- package/src/templates/components/header/_macro.header.header__navigation.njk +3 -3
- package/src/templates/components/header/_macro.header.header__offcanvas.njk +3 -3
- package/src/templates/components/header/_macro.header.header__offcanvasButton.njk +3 -3
- package/src/templates/components/header/_macro.header.header__subnav.njk +3 -3
- package/src/templates/components/header/_macro.header.njk +3 -3
- package/src/templates/components/header/_styles.header.css +12 -12
- package/src/templates/components/header/_template.header.header__dropdown.njk +27 -27
- package/src/templates/components/header/_template.header.header__navigation.njk +25 -25
- package/src/templates/components/header/_template.header.header__offcanvas.njk +20 -20
- package/src/templates/components/header/_template.header.header__offcanvasButton.njk +10 -10
- package/src/templates/components/header/_template.header.header__subnav.njk +33 -33
- package/src/templates/components/header/_template.header.njk +155 -155
- package/src/templates/components/header/params.header.yaml +295 -295
- package/src/templates/components/header-advanced/_examples.header-advanced.njk +1110 -1110
- package/src/templates/components/header-advanced/_macro.header-advanced.njk +3 -3
- package/src/templates/components/header-advanced/_template.header-advanced.njk +171 -171
- package/src/templates/components/header-advanced/params.header-advanced.yaml +352 -352
- package/src/templates/components/header-mini/_examples.header-mini.njk +319 -316
- package/src/templates/components/header-mini/_macro.header-mini.njk +3 -3
- package/src/templates/components/header-mini/_template.header-mini.njk +51 -51
- package/src/templates/components/header-mini/params.header-mini.yaml +90 -90
- package/src/templates/components/hint/_examples.hint.njk +26 -26
- package/src/templates/components/hint/_macro.hint.njk +3 -3
- package/src/templates/components/hint/_template.hint.njk +3 -3
- package/src/templates/components/hint/params.hint.yaml +21 -21
- package/src/templates/components/input/_examples.input.njk +393 -393
- package/src/templates/components/input/_macro.input.njk +3 -3
- package/src/templates/components/input/_styles.input.css +17 -17
- package/src/templates/components/input/_template.input.njk +53 -53
- package/src/templates/components/input/params.input.yaml +80 -80
- package/src/templates/components/input-group/_examples.input-group.njk +558 -558
- package/src/templates/components/input-group/_macro.input-group.njk +3 -3
- package/src/templates/components/input-group/_template.input-group.njk +107 -107
- package/src/templates/components/input-group/params.input-group.yaml +123 -123
- package/src/templates/components/item/_examples.item.njk +370 -370
- package/src/templates/components/item/_macro.item.njk +3 -3
- package/src/templates/components/item/_template.item.njk +73 -73
- package/src/templates/components/item/params.item.yaml +101 -101
- package/src/templates/components/label/_examples.label.njk +58 -58
- package/src/templates/components/label/_macro.label.njk +5 -5
- package/src/templates/components/label/_template.label.njk +37 -37
- package/src/templates/components/label/params.label.yaml +28 -28
- package/src/templates/components/links-list/_examples.links-list.njk +761 -761
- package/src/templates/components/links-list/_macro.links-list.njk +3 -3
- package/src/templates/components/links-list/_template.links-list.njk +119 -119
- package/src/templates/components/links-list/params.links-list.yaml +101 -101
- package/src/templates/components/listbox/_examples.listbox.njk +813 -812
- package/src/templates/components/listbox/_macro.listbox.njk +3 -3
- package/src/templates/components/listbox/_styles.listbox.css +218 -218
- package/src/templates/components/listbox/_template.listbox.njk +90 -90
- package/src/templates/components/listbox/params.listbox.yaml +85 -85
- package/src/templates/components/media-object/_examples.media-object.njk +79 -79
- package/src/templates/components/media-object/_macro.media-object.njk +3 -3
- package/src/templates/components/media-object/_template.media-object.njk +21 -21
- package/src/templates/components/media-object/params.media-object.yaml +16 -16
- package/src/templates/components/menu-horizontal/_examples.menu-horizontal.njk +613 -613
- package/src/templates/components/menu-horizontal/_macro.menu-horizontal.njk +3 -3
- package/src/templates/components/menu-horizontal/_styles.menu-horizontal.css +167 -167
- package/src/templates/components/menu-horizontal/_template.menu-horizontal.njk +36 -36
- package/src/templates/components/menu-horizontal/params.menu-horizontal.yaml +53 -53
- package/src/templates/components/menu-navigation/_examples.menu-navigation.njk +1292 -1292
- package/src/templates/components/menu-navigation/_macro.menu-navigation.njk +3 -3
- package/src/templates/components/menu-navigation/_styles.menu-navigation.css +238 -238
- package/src/templates/components/menu-navigation/_template.menu-navigation.njk +87 -87
- package/src/templates/components/menu-navigation/params.menu-navigation.yaml +86 -86
- package/src/templates/components/menu-vertical/_examples.menu-vertical.njk +835 -835
- package/src/templates/components/menu-vertical/_macro.menu-vertical.njk +3 -3
- package/src/templates/components/menu-vertical/_template.menu-vertical.njk +92 -92
- package/src/templates/components/menu-vertical/params.menu-vertical.yaml +77 -77
- package/src/templates/components/menubar/_examples.menubar.njk +1843 -1843
- package/src/templates/components/menubar/_macro.menubar.njk +3 -3
- package/src/templates/components/menubar/_styles.menubar.css +259 -259
- package/src/templates/components/menubar/_template.menubar.njk +106 -106
- package/src/templates/components/menubar/params.menubar.yaml +130 -130
- package/src/templates/components/modal/_examples.modal.njk +432 -432
- package/src/templates/components/modal/_macro.modal.njk +3 -3
- package/src/templates/components/modal/_template.modal.njk +129 -129
- package/src/templates/components/modal/params.modal.yaml +77 -77
- package/src/templates/components/nav/_examples.nav.njk +468 -468
- package/src/templates/components/nav/_macro.nav.njk +3 -3
- package/src/templates/components/nav/_template.nav.njk +53 -53
- package/src/templates/components/nav/params.nav.yaml +61 -61
- package/src/templates/components/notification/_examples.notification.njk +277 -277
- package/src/templates/components/notification/_macro.notification.njk +3 -3
- package/src/templates/components/notification/_styles.notification.css +30 -30
- package/src/templates/components/notification/_template.notification.njk +86 -86
- package/src/templates/components/notification/params.notification.yaml +101 -101
- package/src/templates/components/pagination/_examples.pagination.njk +444 -444
- package/src/templates/components/pagination/_macro.pagination.njk +3 -3
- package/src/templates/components/pagination/_template.pagination.njk +162 -162
- package/src/templates/components/pagination/params.pagination.yaml +150 -150
- package/src/templates/components/pill/_examples.pill.njk +180 -180
- package/src/templates/components/pill/_macro.pill.njk +3 -3
- package/src/templates/components/pill/_styles.pill.css +59 -59
- package/src/templates/components/pill/_template.pill.njk +38 -38
- package/src/templates/components/pill/params.pill.yaml +28 -28
- package/src/templates/components/radios/_examples.radios.njk +698 -698
- package/src/templates/components/radios/_macro.radios.njk +5 -5
- package/src/templates/components/radios/_styles.radios.css +30 -30
- package/src/templates/components/radios/_template.radios.njk +133 -133
- package/src/templates/components/radios/params.radios.yaml +104 -104
- package/src/templates/components/searchbar/_examples.searchbar.njk +147 -147
- package/src/templates/components/searchbar/_macro.searchbar.njk +3 -3
- package/src/templates/components/searchbar/_template.searchbar.njk +45 -45
- package/src/templates/components/searchbar/params.searchbar.yaml +46 -46
- package/src/templates/components/select/_examples.select.njk +364 -364
- package/src/templates/components/select/_macro.select.njk +5 -5
- package/src/templates/components/select/_styles.select.css +45 -45
- package/src/templates/components/select/_template.select.njk +67 -67
- package/src/templates/components/select/params.select.yaml +93 -93
- package/src/templates/components/skip-link/_examples.skip-link.njk +31 -31
- package/src/templates/components/skip-link/_macro.skip-link.njk +3 -3
- package/src/templates/components/skip-link/_styles.skip-link.css +12 -12
- package/src/templates/components/skip-link/_template.skip-link.njk +4 -4
- package/src/templates/components/skip-link/params.skip-link.yaml +20 -20
- package/src/templates/components/spinner/_examples.spinner.njk +91 -101
- package/src/templates/components/spinner/_macro.spinner.njk +3 -3
- package/src/templates/components/spinner/_styles.spinner.css +33 -33
- package/src/templates/components/spinner/_template.spinner.njk +12 -12
- package/src/templates/components/spinner/params.spinner.yaml +12 -12
- package/src/templates/components/status/_examples.status.njk +80 -80
- package/src/templates/components/status/_macro.status.njk +3 -3
- package/src/templates/components/status/_template.status.njk +23 -23
- package/src/templates/components/status/params.status.yaml +24 -24
- package/src/templates/components/status-item/_examples.status-item.njk +319 -319
- package/src/templates/components/status-item/_macro.status-item.njk +3 -3
- package/src/templates/components/status-item/_template.status-item.njk +99 -99
- package/src/templates/components/status-item/params.status-item.yaml +106 -106
- package/src/templates/components/table/_examples.table.njk +705 -705
- package/src/templates/components/table/_macro.table.njk +3 -3
- package/src/templates/components/table/_styles.table.css +19 -19
- package/src/templates/components/table/_template.table.njk +68 -68
- package/src/templates/components/table/params.table.yaml +130 -130
- package/src/templates/components/table-advanced/_examples.table-advanced.njk +839 -839
- package/src/templates/components/table-advanced/_macro.table-advanced.njk +3 -3
- package/src/templates/components/table-advanced/_styles.table-advanced.css +63 -63
- package/src/templates/components/table-advanced/_template.table-advanced.njk +210 -210
- package/src/templates/components/table-advanced/params.table-advanced.yaml +160 -160
- package/src/templates/components/tabs/_examples.tabs.njk +588 -588
- package/src/templates/components/tabs/_macro.tabs.njk +3 -3
- package/src/templates/components/tabs/_styles.tabs.css +132 -132
- package/src/templates/components/tabs/_template.tabs.njk +70 -70
- package/src/templates/components/tabs/params.tabs.yaml +83 -83
- package/src/templates/components/textarea/_examples.textarea.njk +174 -174
- package/src/templates/components/textarea/_macro.textarea.njk +5 -5
- package/src/templates/components/textarea/_template.textarea.njk +47 -47
- package/src/templates/components/textarea/params.textarea.yaml +64 -64
- package/src/templates/components/toggle/_examples.toggle.njk +248 -248
- package/src/templates/components/toggle/_macro.toggle.njk +3 -3
- package/src/templates/components/toggle/_styles.toggle.css +31 -31
- package/src/templates/components/toggle/_template.toggle.njk +27 -27
- package/src/templates/components/toggle/params.toggle.yaml +69 -69
- package/src/templates/components/tooltip/_examples.tooltip.njk +134 -134
- package/src/templates/components/tooltip/_macro.tooltip.njk +3 -3
- package/src/templates/components/tooltip/_styles.tooltip.css +9 -9
- package/src/templates/components/tooltip/_template.tooltip.njk +40 -40
- package/src/templates/components/tooltip/params.tooltip.yaml +40 -40
- package/src/templates/components/tree/_examples.tree.njk +2671 -2671
- package/src/templates/components/tree/_macro.tree.njk +3 -3
- package/src/templates/components/tree/_styles.tree.css +54 -54
- package/src/templates/components/tree/_template.tree.njk +232 -232
- package/src/templates/components/tree/params.tree.yaml +173 -173
- package/src/templates/components/treegrid/_examples.treegrid.njk +1269 -1269
- package/src/templates/components/treegrid/_macro.treegrid.njk +3 -3
- package/src/templates/components/treegrid/_styles.treegrid.css +31 -31
- package/src/templates/components/treegrid/_template.treegrid.njk +90 -90
- package/src/templates/components/treegrid/params.treegrid.yaml +131 -131
- package/src/templates/includes/_abrir-notificaciones-extra.njk +2 -2
- package/src/templates/includes/_abrir-notificaciones.njk +2 -2
- package/src/templates/includes/_acciones-de-cabecera.njk +28 -28
- package/src/templates/includes/_ejemplo-titulo-h2-parrafo.njk +4 -4
- package/src/templates/includes/_ejemplo-titulo-parrafo.njk +4 -4
- package/src/templates/includes/_test-include.njk +13 -13
- package/src/templates/pages/_page.foot-headroom.njk +30 -30
- package/src/templates/pages/_page.foot.njk +5 -5
- package/src/templates/pages/_page.footer.njk +19 -19
- package/src/templates/pages/_page.head.njk +27 -27
- package/src/templates/pages/_page.notification-edit-inner-content.njk +31 -31
- package/src/templates/pages/_page.notification-edit.njk +30 -30
- package/src/templates/pages/_page.notification-footer.njk +32 -32
- package/src/templates/pages/_page.notification-header-fixed.njk +30 -30
- package/src/templates/pages/_page.notification-header.njk +31 -31
- package/src/templates/pages/_page.sidebar-content.njk +20 -20
- package/src/templates/pages/_page.spinner-block.njk +14 -14
- package/src/templates/pages/_page.spinner-show.njk +15 -15
- package/src/templates/pages/_page.spinner.njk +15 -15
- package/src/templates/pages/_template.edit-fixed-with-sticky-sidebar.njk +36 -36
- package/src/templates/pages/_template.edit-fixed.njk +74 -74
- package/src/templates/pages/_template.home.njk +111 -111
- package/src/templates/pages/_template.logged-out.njk +56 -56
- package/src/templates/pages/_template.logged-selector-fixed-headroom.njk +198 -198
- package/src/templates/pages/_template.logged-selector-fixed.njk +195 -195
- package/src/templates/pages/_template.logged-selector-subheader.njk +80 -80
- package/src/templates/pages/_template.logged-selector-with-sidebar.njk +28 -28
- package/src/templates/pages/_template.logged-selector.njk +195 -195
- package/src/templates/pages/_template.logged.njk +141 -141
- package/src/templates/pages/_template.mfe-iframe-content.njk +31 -31
- package/src/templates/pages/_template.mfe.njk +83 -83
- package/src/templates/pages/_template.test.njk +48 -48
- package/src/templates/pages/_template.with-header-advanced.njk +311 -311
- package/vite.config.js +982 -982
package/branding/BRANDING.md
CHANGED
|
@@ -1,398 +1,398 @@
|
|
|
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
|
-
favicon: {
|
|
33
|
-
svg: '/branding/logos/favicon.svg',
|
|
34
|
-
ico: '/branding/logos/favicon.ico',
|
|
35
|
-
appleTouch: '/branding/logos/apple-touch-icon.png'
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### Step 2: Replace Logos
|
|
41
|
-
|
|
42
|
-
Place your organization's logos in `/branding/logos/`:
|
|
43
|
-
|
|
44
|
-
- `my-logo-compact.svg` - Compact logo (icon only) for mobile header
|
|
45
|
-
- `my-logo-expanded.svg` - Expanded logo (icon + text) for desktop header
|
|
46
|
-
- `my-logo-mini.svg` - Mini logo (icon + text) for header-mini component
|
|
47
|
-
|
|
48
|
-
### Step 3: Rebuild
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
npm run build
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## Build-time vs Runtime
|
|
55
|
-
|
|
56
|
-
The branding system supports two customization modes:
|
|
57
|
-
|
|
58
|
-
### Build-time (Recommended)
|
|
59
|
-
|
|
60
|
-
Changes to `branding/branding.config.js` are applied during the build process. This is the most efficient option for permanent customizations.
|
|
61
|
-
|
|
62
|
-
**Advantages:**
|
|
63
|
-
- Better performance (no additional processing on the client)
|
|
64
|
-
- Values are injected directly into templates
|
|
65
|
-
- No flickering during page load
|
|
66
|
-
|
|
67
|
-
**Usage:** Simply edit `branding/branding.config.js` and run `npm run build`.
|
|
68
|
-
|
|
69
|
-
## Configuration Reference
|
|
70
|
-
|
|
71
|
-
### organization
|
|
72
|
-
|
|
73
|
-
Organization information.
|
|
74
|
-
|
|
75
|
-
| Field | Type | Required | Description |
|
|
76
|
-
|-------|------|----------|-------------|
|
|
77
|
-
| `name` | string | Yes | Full organization name |
|
|
78
|
-
| `nameShort` | string | No | Short name for limited spaces |
|
|
79
|
-
| `website` | string | Yes | Main website URL |
|
|
80
|
-
| `contact.address` | string | No | Postal address |
|
|
81
|
-
| `contact.city` | string | No | City and postal code |
|
|
82
|
-
| `contact.phone` | string | No | Phone number to display |
|
|
83
|
-
| `contact.phoneLink` | string | No | Phone in international format (+34...) |
|
|
84
|
-
|
|
85
|
-
### logos
|
|
86
|
-
|
|
87
|
-
Logo configuration.
|
|
88
|
-
|
|
89
|
-
| Field | Type | Required | Description |
|
|
90
|
-
|-------|------|----------|-------------|
|
|
91
|
-
| `logos.organization.compact` | string | Yes | Compact logo (icon only) for mobile/responsive header |
|
|
92
|
-
| `logos.organization.expanded` | string | Yes | Expanded logo (icon + text) for desktop header |
|
|
93
|
-
| `logos.organization.mini` | string | Yes | Mini logo (icon + text) for header-mini component |
|
|
94
|
-
| `logos.organization.alt` | string | Yes | Alternative text |
|
|
95
|
-
| `logos.eu.eu` | string | No | European Union logo |
|
|
96
|
-
| `logos.eu.feder` | string | No | FEDER logo |
|
|
97
|
-
| `logos.eu.fse` | string | No | FSE+ logo |
|
|
98
|
-
| `logos.eu.feader` | string | No | FEADER logo |
|
|
99
|
-
| `logos.eu.plurifondo` | string | No | Plurifondo logo |
|
|
100
|
-
|
|
101
|
-
### footer
|
|
102
|
-
|
|
103
|
-
Footer configuration.
|
|
104
|
-
|
|
105
|
-
| Field | Type | Required | Description |
|
|
106
|
-
|-------|------|----------|-------------|
|
|
107
|
-
| `license.name` | string | No | License name (e.g., "CC BY 4.0") |
|
|
108
|
-
| `license.url` | string | No | URL to full license text |
|
|
109
|
-
| `license.text` | string | No | Text preceding the link |
|
|
110
|
-
| `euFundsUrl` | string | No | URL to European funds page |
|
|
111
|
-
|
|
112
|
-
### colors
|
|
113
|
-
|
|
114
|
-
Brand colors.
|
|
115
|
-
|
|
116
|
-
| Field | Type | Required | Description |
|
|
117
|
-
|-------|------|----------|-------------|
|
|
118
|
-
| `primary.base` | string | No | Main primary color |
|
|
119
|
-
| `primary.light` | string | No | Light variant (backgrounds) |
|
|
120
|
-
| `primary.dark` | string | No | Dark variant (hover) |
|
|
121
|
-
|
|
122
|
-
### typography
|
|
123
|
-
|
|
124
|
-
Font configuration.
|
|
125
|
-
|
|
126
|
-
| Field | Type | Required | Description |
|
|
127
|
-
|-------|------|----------|-------------|
|
|
128
|
-
| `fontFamily.sans` | string | No | Sans-serif font family |
|
|
129
|
-
| `fontFamily.heading` | string | No | Heading font family |
|
|
130
|
-
| `fontUrl` | string | No | URL to load fonts (e.g., Google Fonts) |
|
|
131
|
-
|
|
132
|
-
### images
|
|
133
|
-
|
|
134
|
-
Additional images.
|
|
135
|
-
|
|
136
|
-
| Field | Type | Required | Description |
|
|
137
|
-
|-------|------|----------|-------------|
|
|
138
|
-
| `headerBackground` | string | No | Header background image |
|
|
139
|
-
| `headerBackgroundLg` | string | No | Large header background image |
|
|
140
|
-
|
|
141
|
-
### favicon
|
|
142
|
-
|
|
143
|
-
Favicon configuration for browser tabs and mobile devices.
|
|
144
|
-
|
|
145
|
-
| Field | Type | Required | Size | Description |
|
|
146
|
-
| ------------------ | ------ | -------- | --------- | ---------------------------------------------------------- |
|
|
147
|
-
| `favicon.svg` | string | Yes | 32×32 | Main favicon in SVG format (modern browsers) |
|
|
148
|
-
| `favicon.ico` | string | Yes | 32×32 | Legacy favicon in ICO format (fallback for older browsers) |
|
|
149
|
-
| `favicon.appleTouch` | string | Yes | 180×180 | Apple Touch Icon for iOS home screen |
|
|
150
|
-
|
|
151
|
-
> **Note:** For optimal compatibility, use the following sizes: 32×32 for browser tabs (both SVG and ICO), and 180×180 for Apple Touch Icon. The vite-branding-plugin automatically copies favicon files to `/dist/images/` during build and rewrites the HTML paths:
|
|
152
|
-
> - `favicon.svg` → `/dist/images/favicon.svg`
|
|
153
|
-
> - `favicon.ico` → `/dist/images/favicon.ico`
|
|
154
|
-
> - `apple-touch-icon.png` → `/dist/images/apple-touch-icon.png`
|
|
155
|
-
|
|
156
|
-
## CSS Variables
|
|
157
|
-
|
|
158
|
-
The following CSS variables are available for runtime customization:
|
|
159
|
-
|
|
160
|
-
```css
|
|
161
|
-
:root {
|
|
162
|
-
/* Primary colors */
|
|
163
|
-
--branding-primary-base: #00607a;
|
|
164
|
-
--branding-primary-light: #d6eaf0;
|
|
165
|
-
--branding-primary-dark: #00475c;
|
|
166
|
-
|
|
167
|
-
/* Logo URLs */
|
|
168
|
-
--branding-logo-expanded: url('/branding/logos/...');
|
|
169
|
-
--branding-logo-mini: url('/branding/logos/...');
|
|
170
|
-
--branding-logo-compact: url('/branding/logos/...');
|
|
171
|
-
}
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
## Configuration Examples
|
|
175
|
-
|
|
176
|
-
### YourOrganization
|
|
177
|
-
|
|
178
|
-
```javascript
|
|
179
|
-
export default {
|
|
180
|
-
organization: {
|
|
181
|
-
name: 'YourOrganization',
|
|
182
|
-
website: 'https://www.example.com/',
|
|
183
|
-
},
|
|
184
|
-
logos: {
|
|
185
|
-
organization: {
|
|
186
|
-
compact: '/branding/logos/yourlogo-compact.svg',
|
|
187
|
-
expanded: '/branding/logos/yourlogo-expanded.svg',
|
|
188
|
-
mini: '/branding/logos/yourlogo-mini.svg',
|
|
189
|
-
alt: 'YourOrganization',
|
|
190
|
-
},
|
|
191
|
-
eu: {
|
|
192
|
-
eu: '/branding/logos/eu/logo-eu.svg',
|
|
193
|
-
feder: '/branding/logos/eu/logo-feder.svg',
|
|
194
|
-
fse: '/branding/logos/eu/logo-fse.svg',
|
|
195
|
-
feader: '/branding/logos/eu/logo-feader.svg',
|
|
196
|
-
plurifondo: '/branding/logos/eu/logo-plurifondo.svg',
|
|
197
|
-
},
|
|
198
|
-
},
|
|
199
|
-
typography: {
|
|
200
|
-
fontFamily: {
|
|
201
|
-
sans: '"Nunito", ui-sans-serif, system-ui, sans-serif',
|
|
202
|
-
heading: '"Inter", ui-sans-serif, system-ui, sans-serif',
|
|
203
|
-
},
|
|
204
|
-
fontUrl: 'https://fonts.googleapis.com/css2?family=Inter:wght@700&family=Nunito:wght@400;500;600;700&display=swap',
|
|
205
|
-
},
|
|
206
|
-
};
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
## FAQ
|
|
210
|
-
|
|
211
|
-
### What fields are required?
|
|
212
|
-
|
|
213
|
-
You only need:
|
|
214
|
-
- `organization.name`
|
|
215
|
-
- `organization.website`
|
|
216
|
-
- `logos.organization.compact`
|
|
217
|
-
- `logos.organization.expanded`
|
|
218
|
-
- `logos.organization.mini`
|
|
219
|
-
- `logos.organization.alt`
|
|
220
|
-
- `favicon.svg`
|
|
221
|
-
- `favicon.ico`
|
|
222
|
-
- `favicon.appleTouch`
|
|
223
|
-
|
|
224
|
-
See `branding/branding.config.yourorganization.js` for a minimal example.
|
|
225
|
-
|
|
226
|
-
### What format should the logos be in?
|
|
227
|
-
|
|
228
|
-
SVG is the recommended format for its scalability and performance. PNG and JPG are also supported. See the dimensions table above for recommended sizes.
|
|
229
|
-
|
|
230
|
-
### Can I use different logos for desktop and mobile?
|
|
231
|
-
|
|
232
|
-
Yes. Use:
|
|
233
|
-
- `logos.organization.expanded` for desktop (icon + text)
|
|
234
|
-
- `logos.organization.compact` for mobile (icon only)
|
|
235
|
-
- `logos.organization.mini` for header-mini component (icon + text)
|
|
236
|
-
|
|
237
|
-
### Are European funds mandatory?
|
|
238
|
-
|
|
239
|
-
No. The `logos.eu` section is optional and only needed if your project receives European funding. Place your EU logos in `branding/logos/eu/`.
|
|
240
|
-
|
|
241
|
-
### Where can I find complete examples?
|
|
242
|
-
|
|
243
|
-
- `branding/branding.config.yourorganization.js` - Minimal configuration
|
|
244
|
-
- `branding/branding.config.js` - Current project configuration (Gobierno de Aragón)
|
|
245
|
-
|
|
246
|
-
## Uso en Proyectos Externos
|
|
247
|
-
|
|
248
|
-
Puedes importar y utilizar el sistema de branding de desy-html en tus propios proyectos que dependan de `desy-html`.
|
|
249
|
-
|
|
250
|
-
### Requisitos
|
|
251
|
-
|
|
252
|
-
Asegúrate de tener `desy-html` instalado:
|
|
253
|
-
|
|
254
|
-
```bash
|
|
255
|
-
npm install desy-html
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
### Importar el plugin
|
|
259
|
-
|
|
260
|
-
```javascript
|
|
261
|
-
// vite.config.js
|
|
262
|
-
import { brandingPlugin, loadBrandingConfig } from 'desy-html/branding/plugin';
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
### Configuración básica
|
|
266
|
-
|
|
267
|
-
```javascript
|
|
268
|
-
// vite.config.js
|
|
269
|
-
import { brandingPlugin, loadBrandingConfig } from 'desy-html/branding/plugin';
|
|
270
|
-
import { defineConfig } from 'vite';
|
|
271
|
-
|
|
272
|
-
export default defineConfig({
|
|
273
|
-
plugins: [
|
|
274
|
-
brandingPlugin(miConfiguracionBranding),
|
|
275
|
-
// ... otros plugins
|
|
276
|
-
]
|
|
277
|
-
});
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
### Cargar configuración desde archivo
|
|
281
|
-
|
|
282
|
-
Puedes cargar la configuración desde un archivo `branding/branding.config.js` en tu proyecto:
|
|
283
|
-
|
|
284
|
-
```javascript
|
|
285
|
-
// vite.config.js
|
|
286
|
-
import { brandingPlugin, loadBrandingConfig } from 'desy-html/branding/plugin';
|
|
287
|
-
import { defineConfig } from 'vite';
|
|
288
|
-
|
|
289
|
-
export default defineConfig({
|
|
290
|
-
plugins: [
|
|
291
|
-
brandingPlugin(await loadBrandingConfig('default', process.cwd())),
|
|
292
|
-
// ... otros plugins
|
|
293
|
-
]
|
|
294
|
-
});
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
### Con variable de entorno
|
|
298
|
-
|
|
299
|
-
```javascript
|
|
300
|
-
// vite.config.js
|
|
301
|
-
import { brandingPlugin, loadBrandingConfig } from 'desy-html/branding/plugin';
|
|
302
|
-
import { defineConfig } from 'vite';
|
|
303
|
-
|
|
304
|
-
const brandingConfig = await loadBrandingConfig(
|
|
305
|
-
process.env.BRANDING_CONFIG || 'default',
|
|
306
|
-
process.cwd()
|
|
307
|
-
);
|
|
308
|
-
|
|
309
|
-
export default defineConfig({
|
|
310
|
-
plugins: [
|
|
311
|
-
brandingPlugin(brandingConfig),
|
|
312
|
-
// ... otros plugins
|
|
313
|
-
]
|
|
314
|
-
});
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
### Estructura de configuración
|
|
318
|
-
|
|
319
|
-
La configuración sigue la misma estructura que en desy-html:
|
|
320
|
-
|
|
321
|
-
```javascript
|
|
322
|
-
// branding/branding.config.js
|
|
323
|
-
export default {
|
|
324
|
-
organization: {
|
|
325
|
-
name: 'Mi Organización',
|
|
326
|
-
website: 'https://mi-web.gob.es',
|
|
327
|
-
contact: {
|
|
328
|
-
address: 'Calle Principal, 1',
|
|
329
|
-
city: '01000 - Ciudad',
|
|
330
|
-
phone: '900 123 456',
|
|
331
|
-
phoneLink: '+34900123456',
|
|
332
|
-
},
|
|
333
|
-
},
|
|
334
|
-
|
|
335
|
-
logos: {
|
|
336
|
-
organization: {
|
|
337
|
-
compact: '/branding/logos/mi-logo-compact.svg',
|
|
338
|
-
mini: '/branding/logos/mi-logo-mini.svg',
|
|
339
|
-
expanded: '/branding/logos/mi-logo-expanded.svg',
|
|
340
|
-
alt: 'Mi Organización',
|
|
341
|
-
},
|
|
342
|
-
},
|
|
343
|
-
|
|
344
|
-
footer: {
|
|
345
|
-
license: {
|
|
346
|
-
name: 'CC BY 4.0',
|
|
347
|
-
url: 'https://creativecommons.org/licenses/by/4.0/',
|
|
348
|
-
text: 'Todo el contenido bajo licencia',
|
|
349
|
-
},
|
|
350
|
-
euFundsUrl: 'https://mi-web.gob.es/fondos-europeos',
|
|
351
|
-
},
|
|
352
|
-
|
|
353
|
-
typography: {
|
|
354
|
-
fontFamily: {
|
|
355
|
-
sans: '"Inter", ui-sans-serif, system-ui, sans-serif',
|
|
356
|
-
heading: '"Inter", ui-sans-serif, system-ui, sans-serif',
|
|
357
|
-
},
|
|
358
|
-
fontUrl: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap',
|
|
359
|
-
},
|
|
360
|
-
|
|
361
|
-
images: {
|
|
362
|
-
headerBackground: '/branding/images/header-background.svg',
|
|
363
|
-
headerBackgroundLg: '/branding/images/header-background-lg.svg',
|
|
364
|
-
},
|
|
365
|
-
|
|
366
|
-
favicon: {
|
|
367
|
-
svg: '/branding/logos/favicon.svg',
|
|
368
|
-
ico: '/branding/logos/favicon.ico',
|
|
369
|
-
appleTouch: '/branding/logos/apple-touch-icon.png',
|
|
370
|
-
},
|
|
371
|
-
};
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
### Logos
|
|
375
|
-
|
|
376
|
-
Los logos deben colocarse en la carpeta `branding/logos/` de tu proyecto:
|
|
377
|
-
|
|
378
|
-
```
|
|
379
|
-
mi-proyecto/
|
|
380
|
-
├── branding/
|
|
381
|
-
│ ├── logos/
|
|
382
|
-
│ │ ├── mi-logo-compact.svg
|
|
383
|
-
│ │ ├── mi-logo-mini.svg
|
|
384
|
-
│ │ ├── mi-logo-expanded.svg
|
|
385
|
-
│ │ ├── eu/
|
|
386
|
-
│ │ │ ├── logo-eu.svg
|
|
387
|
-
│ │ │ ├── logo-feder.svg
|
|
388
|
-
│ │ │ ├── logo-fse.svg
|
|
389
|
-
│ │ │ ├── logo-feader.svg
|
|
390
|
-
│ │ │ └── logo-plurifondo.svg
|
|
391
|
-
│ ├── images/
|
|
392
|
-
│ │ ├── header-background.svg
|
|
393
|
-
│ │ └── header-background-lg.svg
|
|
394
|
-
│ └── branding.config.js
|
|
395
|
-
└── vite.config.js
|
|
396
|
-
```
|
|
397
|
-
|
|
398
|
-
Los componentes de desy-html usarán automáticamente estos logos cuando estén configurados en `branding/branding.config.js`.
|
|
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
|
+
favicon: {
|
|
33
|
+
svg: '/branding/logos/favicon.svg',
|
|
34
|
+
ico: '/branding/logos/favicon.ico',
|
|
35
|
+
appleTouch: '/branding/logos/apple-touch-icon.png'
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Step 2: Replace Logos
|
|
41
|
+
|
|
42
|
+
Place your organization's logos in `/branding/logos/`:
|
|
43
|
+
|
|
44
|
+
- `my-logo-compact.svg` - Compact logo (icon only) for mobile header
|
|
45
|
+
- `my-logo-expanded.svg` - Expanded logo (icon + text) for desktop header
|
|
46
|
+
- `my-logo-mini.svg` - Mini logo (icon + text) for header-mini component
|
|
47
|
+
|
|
48
|
+
### Step 3: Rebuild
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npm run build
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Build-time vs Runtime
|
|
55
|
+
|
|
56
|
+
The branding system supports two customization modes:
|
|
57
|
+
|
|
58
|
+
### Build-time (Recommended)
|
|
59
|
+
|
|
60
|
+
Changes to `branding/branding.config.js` are applied during the build process. This is the most efficient option for permanent customizations.
|
|
61
|
+
|
|
62
|
+
**Advantages:**
|
|
63
|
+
- Better performance (no additional processing on the client)
|
|
64
|
+
- Values are injected directly into templates
|
|
65
|
+
- No flickering during page load
|
|
66
|
+
|
|
67
|
+
**Usage:** Simply edit `branding/branding.config.js` and run `npm run build`.
|
|
68
|
+
|
|
69
|
+
## Configuration Reference
|
|
70
|
+
|
|
71
|
+
### organization
|
|
72
|
+
|
|
73
|
+
Organization information.
|
|
74
|
+
|
|
75
|
+
| Field | Type | Required | Description |
|
|
76
|
+
|-------|------|----------|-------------|
|
|
77
|
+
| `name` | string | Yes | Full organization name |
|
|
78
|
+
| `nameShort` | string | No | Short name for limited spaces |
|
|
79
|
+
| `website` | string | Yes | Main website URL |
|
|
80
|
+
| `contact.address` | string | No | Postal address |
|
|
81
|
+
| `contact.city` | string | No | City and postal code |
|
|
82
|
+
| `contact.phone` | string | No | Phone number to display |
|
|
83
|
+
| `contact.phoneLink` | string | No | Phone in international format (+34...) |
|
|
84
|
+
|
|
85
|
+
### logos
|
|
86
|
+
|
|
87
|
+
Logo configuration.
|
|
88
|
+
|
|
89
|
+
| Field | Type | Required | Description |
|
|
90
|
+
|-------|------|----------|-------------|
|
|
91
|
+
| `logos.organization.compact` | string | Yes | Compact logo (icon only) for mobile/responsive header |
|
|
92
|
+
| `logos.organization.expanded` | string | Yes | Expanded logo (icon + text) for desktop header |
|
|
93
|
+
| `logos.organization.mini` | string | Yes | Mini logo (icon + text) for header-mini component |
|
|
94
|
+
| `logos.organization.alt` | string | Yes | Alternative text |
|
|
95
|
+
| `logos.eu.eu` | string | No | European Union logo |
|
|
96
|
+
| `logos.eu.feder` | string | No | FEDER logo |
|
|
97
|
+
| `logos.eu.fse` | string | No | FSE+ logo |
|
|
98
|
+
| `logos.eu.feader` | string | No | FEADER logo |
|
|
99
|
+
| `logos.eu.plurifondo` | string | No | Plurifondo logo |
|
|
100
|
+
|
|
101
|
+
### footer
|
|
102
|
+
|
|
103
|
+
Footer configuration.
|
|
104
|
+
|
|
105
|
+
| Field | Type | Required | Description |
|
|
106
|
+
|-------|------|----------|-------------|
|
|
107
|
+
| `license.name` | string | No | License name (e.g., "CC BY 4.0") |
|
|
108
|
+
| `license.url` | string | No | URL to full license text |
|
|
109
|
+
| `license.text` | string | No | Text preceding the link |
|
|
110
|
+
| `euFundsUrl` | string | No | URL to European funds page |
|
|
111
|
+
|
|
112
|
+
### colors
|
|
113
|
+
|
|
114
|
+
Brand colors.
|
|
115
|
+
|
|
116
|
+
| Field | Type | Required | Description |
|
|
117
|
+
|-------|------|----------|-------------|
|
|
118
|
+
| `primary.base` | string | No | Main primary color |
|
|
119
|
+
| `primary.light` | string | No | Light variant (backgrounds) |
|
|
120
|
+
| `primary.dark` | string | No | Dark variant (hover) |
|
|
121
|
+
|
|
122
|
+
### typography
|
|
123
|
+
|
|
124
|
+
Font configuration.
|
|
125
|
+
|
|
126
|
+
| Field | Type | Required | Description |
|
|
127
|
+
|-------|------|----------|-------------|
|
|
128
|
+
| `fontFamily.sans` | string | No | Sans-serif font family |
|
|
129
|
+
| `fontFamily.heading` | string | No | Heading font family |
|
|
130
|
+
| `fontUrl` | string | No | URL to load fonts (e.g., Google Fonts) |
|
|
131
|
+
|
|
132
|
+
### images
|
|
133
|
+
|
|
134
|
+
Additional images.
|
|
135
|
+
|
|
136
|
+
| Field | Type | Required | Description |
|
|
137
|
+
|-------|------|----------|-------------|
|
|
138
|
+
| `headerBackground` | string | No | Header background image |
|
|
139
|
+
| `headerBackgroundLg` | string | No | Large header background image |
|
|
140
|
+
|
|
141
|
+
### favicon
|
|
142
|
+
|
|
143
|
+
Favicon configuration for browser tabs and mobile devices.
|
|
144
|
+
|
|
145
|
+
| Field | Type | Required | Size | Description |
|
|
146
|
+
| ------------------ | ------ | -------- | --------- | ---------------------------------------------------------- |
|
|
147
|
+
| `favicon.svg` | string | Yes | 32×32 | Main favicon in SVG format (modern browsers) |
|
|
148
|
+
| `favicon.ico` | string | Yes | 32×32 | Legacy favicon in ICO format (fallback for older browsers) |
|
|
149
|
+
| `favicon.appleTouch` | string | Yes | 180×180 | Apple Touch Icon for iOS home screen |
|
|
150
|
+
|
|
151
|
+
> **Note:** For optimal compatibility, use the following sizes: 32×32 for browser tabs (both SVG and ICO), and 180×180 for Apple Touch Icon. The vite-branding-plugin automatically copies favicon files to `/dist/images/` during build and rewrites the HTML paths:
|
|
152
|
+
> - `favicon.svg` → `/dist/images/favicon.svg`
|
|
153
|
+
> - `favicon.ico` → `/dist/images/favicon.ico`
|
|
154
|
+
> - `apple-touch-icon.png` → `/dist/images/apple-touch-icon.png`
|
|
155
|
+
|
|
156
|
+
## CSS Variables
|
|
157
|
+
|
|
158
|
+
The following CSS variables are available for runtime customization:
|
|
159
|
+
|
|
160
|
+
```css
|
|
161
|
+
:root {
|
|
162
|
+
/* Primary colors */
|
|
163
|
+
--branding-primary-base: #00607a;
|
|
164
|
+
--branding-primary-light: #d6eaf0;
|
|
165
|
+
--branding-primary-dark: #00475c;
|
|
166
|
+
|
|
167
|
+
/* Logo URLs */
|
|
168
|
+
--branding-logo-expanded: url('/branding/logos/...');
|
|
169
|
+
--branding-logo-mini: url('/branding/logos/...');
|
|
170
|
+
--branding-logo-compact: url('/branding/logos/...');
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Configuration Examples
|
|
175
|
+
|
|
176
|
+
### YourOrganization
|
|
177
|
+
|
|
178
|
+
```javascript
|
|
179
|
+
export default {
|
|
180
|
+
organization: {
|
|
181
|
+
name: 'YourOrganization',
|
|
182
|
+
website: 'https://www.example.com/',
|
|
183
|
+
},
|
|
184
|
+
logos: {
|
|
185
|
+
organization: {
|
|
186
|
+
compact: '/branding/logos/yourlogo-compact.svg',
|
|
187
|
+
expanded: '/branding/logos/yourlogo-expanded.svg',
|
|
188
|
+
mini: '/branding/logos/yourlogo-mini.svg',
|
|
189
|
+
alt: 'YourOrganization',
|
|
190
|
+
},
|
|
191
|
+
eu: {
|
|
192
|
+
eu: '/branding/logos/eu/logo-eu.svg',
|
|
193
|
+
feder: '/branding/logos/eu/logo-feder.svg',
|
|
194
|
+
fse: '/branding/logos/eu/logo-fse.svg',
|
|
195
|
+
feader: '/branding/logos/eu/logo-feader.svg',
|
|
196
|
+
plurifondo: '/branding/logos/eu/logo-plurifondo.svg',
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
typography: {
|
|
200
|
+
fontFamily: {
|
|
201
|
+
sans: '"Nunito", ui-sans-serif, system-ui, sans-serif',
|
|
202
|
+
heading: '"Inter", ui-sans-serif, system-ui, sans-serif',
|
|
203
|
+
},
|
|
204
|
+
fontUrl: 'https://fonts.googleapis.com/css2?family=Inter:wght@700&family=Nunito:wght@400;500;600;700&display=swap',
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## FAQ
|
|
210
|
+
|
|
211
|
+
### What fields are required?
|
|
212
|
+
|
|
213
|
+
You only need:
|
|
214
|
+
- `organization.name`
|
|
215
|
+
- `organization.website`
|
|
216
|
+
- `logos.organization.compact`
|
|
217
|
+
- `logos.organization.expanded`
|
|
218
|
+
- `logos.organization.mini`
|
|
219
|
+
- `logos.organization.alt`
|
|
220
|
+
- `favicon.svg`
|
|
221
|
+
- `favicon.ico`
|
|
222
|
+
- `favicon.appleTouch`
|
|
223
|
+
|
|
224
|
+
See `branding/branding.config.yourorganization.js` for a minimal example.
|
|
225
|
+
|
|
226
|
+
### What format should the logos be in?
|
|
227
|
+
|
|
228
|
+
SVG is the recommended format for its scalability and performance. PNG and JPG are also supported. See the dimensions table above for recommended sizes.
|
|
229
|
+
|
|
230
|
+
### Can I use different logos for desktop and mobile?
|
|
231
|
+
|
|
232
|
+
Yes. Use:
|
|
233
|
+
- `logos.organization.expanded` for desktop (icon + text)
|
|
234
|
+
- `logos.organization.compact` for mobile (icon only)
|
|
235
|
+
- `logos.organization.mini` for header-mini component (icon + text)
|
|
236
|
+
|
|
237
|
+
### Are European funds mandatory?
|
|
238
|
+
|
|
239
|
+
No. The `logos.eu` section is optional and only needed if your project receives European funding. Place your EU logos in `branding/logos/eu/`.
|
|
240
|
+
|
|
241
|
+
### Where can I find complete examples?
|
|
242
|
+
|
|
243
|
+
- `branding/branding.config.yourorganization.js` - Minimal configuration
|
|
244
|
+
- `branding/branding.config.js` - Current project configuration (Gobierno de Aragón)
|
|
245
|
+
|
|
246
|
+
## Uso en Proyectos Externos
|
|
247
|
+
|
|
248
|
+
Puedes importar y utilizar el sistema de branding de desy-html en tus propios proyectos que dependan de `desy-html`.
|
|
249
|
+
|
|
250
|
+
### Requisitos
|
|
251
|
+
|
|
252
|
+
Asegúrate de tener `desy-html` instalado:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
npm install desy-html
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Importar el plugin
|
|
259
|
+
|
|
260
|
+
```javascript
|
|
261
|
+
// vite.config.js
|
|
262
|
+
import { brandingPlugin, loadBrandingConfig } from 'desy-html/branding/plugin';
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Configuración básica
|
|
266
|
+
|
|
267
|
+
```javascript
|
|
268
|
+
// vite.config.js
|
|
269
|
+
import { brandingPlugin, loadBrandingConfig } from 'desy-html/branding/plugin';
|
|
270
|
+
import { defineConfig } from 'vite';
|
|
271
|
+
|
|
272
|
+
export default defineConfig({
|
|
273
|
+
plugins: [
|
|
274
|
+
brandingPlugin(miConfiguracionBranding),
|
|
275
|
+
// ... otros plugins
|
|
276
|
+
]
|
|
277
|
+
});
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Cargar configuración desde archivo
|
|
281
|
+
|
|
282
|
+
Puedes cargar la configuración desde un archivo `branding/branding.config.js` en tu proyecto:
|
|
283
|
+
|
|
284
|
+
```javascript
|
|
285
|
+
// vite.config.js
|
|
286
|
+
import { brandingPlugin, loadBrandingConfig } from 'desy-html/branding/plugin';
|
|
287
|
+
import { defineConfig } from 'vite';
|
|
288
|
+
|
|
289
|
+
export default defineConfig({
|
|
290
|
+
plugins: [
|
|
291
|
+
brandingPlugin(await loadBrandingConfig('default', process.cwd())),
|
|
292
|
+
// ... otros plugins
|
|
293
|
+
]
|
|
294
|
+
});
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### Con variable de entorno
|
|
298
|
+
|
|
299
|
+
```javascript
|
|
300
|
+
// vite.config.js
|
|
301
|
+
import { brandingPlugin, loadBrandingConfig } from 'desy-html/branding/plugin';
|
|
302
|
+
import { defineConfig } from 'vite';
|
|
303
|
+
|
|
304
|
+
const brandingConfig = await loadBrandingConfig(
|
|
305
|
+
process.env.BRANDING_CONFIG || 'default',
|
|
306
|
+
process.cwd()
|
|
307
|
+
);
|
|
308
|
+
|
|
309
|
+
export default defineConfig({
|
|
310
|
+
plugins: [
|
|
311
|
+
brandingPlugin(brandingConfig),
|
|
312
|
+
// ... otros plugins
|
|
313
|
+
]
|
|
314
|
+
});
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### Estructura de configuración
|
|
318
|
+
|
|
319
|
+
La configuración sigue la misma estructura que en desy-html:
|
|
320
|
+
|
|
321
|
+
```javascript
|
|
322
|
+
// branding/branding.config.js
|
|
323
|
+
export default {
|
|
324
|
+
organization: {
|
|
325
|
+
name: 'Mi Organización',
|
|
326
|
+
website: 'https://mi-web.gob.es',
|
|
327
|
+
contact: {
|
|
328
|
+
address: 'Calle Principal, 1',
|
|
329
|
+
city: '01000 - Ciudad',
|
|
330
|
+
phone: '900 123 456',
|
|
331
|
+
phoneLink: '+34900123456',
|
|
332
|
+
},
|
|
333
|
+
},
|
|
334
|
+
|
|
335
|
+
logos: {
|
|
336
|
+
organization: {
|
|
337
|
+
compact: '/branding/logos/mi-logo-compact.svg',
|
|
338
|
+
mini: '/branding/logos/mi-logo-mini.svg',
|
|
339
|
+
expanded: '/branding/logos/mi-logo-expanded.svg',
|
|
340
|
+
alt: 'Mi Organización',
|
|
341
|
+
},
|
|
342
|
+
},
|
|
343
|
+
|
|
344
|
+
footer: {
|
|
345
|
+
license: {
|
|
346
|
+
name: 'CC BY 4.0',
|
|
347
|
+
url: 'https://creativecommons.org/licenses/by/4.0/',
|
|
348
|
+
text: 'Todo el contenido bajo licencia',
|
|
349
|
+
},
|
|
350
|
+
euFundsUrl: 'https://mi-web.gob.es/fondos-europeos',
|
|
351
|
+
},
|
|
352
|
+
|
|
353
|
+
typography: {
|
|
354
|
+
fontFamily: {
|
|
355
|
+
sans: '"Inter", ui-sans-serif, system-ui, sans-serif',
|
|
356
|
+
heading: '"Inter", ui-sans-serif, system-ui, sans-serif',
|
|
357
|
+
},
|
|
358
|
+
fontUrl: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap',
|
|
359
|
+
},
|
|
360
|
+
|
|
361
|
+
images: {
|
|
362
|
+
headerBackground: '/branding/images/header-background.svg',
|
|
363
|
+
headerBackgroundLg: '/branding/images/header-background-lg.svg',
|
|
364
|
+
},
|
|
365
|
+
|
|
366
|
+
favicon: {
|
|
367
|
+
svg: '/branding/logos/favicon.svg',
|
|
368
|
+
ico: '/branding/logos/favicon.ico',
|
|
369
|
+
appleTouch: '/branding/logos/apple-touch-icon.png',
|
|
370
|
+
},
|
|
371
|
+
};
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### Logos
|
|
375
|
+
|
|
376
|
+
Los logos deben colocarse en la carpeta `branding/logos/` de tu proyecto:
|
|
377
|
+
|
|
378
|
+
```
|
|
379
|
+
mi-proyecto/
|
|
380
|
+
├── branding/
|
|
381
|
+
│ ├── logos/
|
|
382
|
+
│ │ ├── mi-logo-compact.svg
|
|
383
|
+
│ │ ├── mi-logo-mini.svg
|
|
384
|
+
│ │ ├── mi-logo-expanded.svg
|
|
385
|
+
│ │ ├── eu/
|
|
386
|
+
│ │ │ ├── logo-eu.svg
|
|
387
|
+
│ │ │ ├── logo-feder.svg
|
|
388
|
+
│ │ │ ├── logo-fse.svg
|
|
389
|
+
│ │ │ ├── logo-feader.svg
|
|
390
|
+
│ │ │ └── logo-plurifondo.svg
|
|
391
|
+
│ ├── images/
|
|
392
|
+
│ │ ├── header-background.svg
|
|
393
|
+
│ │ └── header-background-lg.svg
|
|
394
|
+
│ └── branding.config.js
|
|
395
|
+
└── vite.config.js
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
Los componentes de desy-html usarán automáticamente estos logos cuando estén configurados en `branding/branding.config.js`.
|