Encabezados de página
Patrones de componente
Los patrones de encabezados suelen estar al principio de la página, tras la cabecera y suelen incluir el título de la página y algún elemento interactivo o de navegación adicional. Si encuentras en el código algún include, ve a buscarlo a los patrones de acciones.
Índice de apartados de esta página
- Title de la página
- Titulo con acciones de página
- Titulo con acciones de página y buscador
- Titulo con pasos y botón de volver atrás
Title de la página #
Es el texto que aparece en la pestaña del navegador. Debe ser distinta para cada una de las páginas de tu web.
En el include head de la plantilla se encuentra una variable que podemos definir con un {% set title = "title" %}
. Utiliza la estructura
para optimizar la encontrabilidad.[Sección/palabra clave]. [Nombre del sitio web]
Mostrar código del ejemplo: includes/_pattern.ejemplo-title.njk
Contenido
Nunjucks macro del ejemplo: includes/_pattern.ejemplo-title.njk
{% set title = "Patrones de encabezados de página. DESY. Sistema de diseño del Gobierno de Aragón." %}
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ title if title else "Project title" }}</title>
<link rel="icon" type="image/x-icon" href="https://aplicaciones.aragon.es/favicon.ico">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/styles.css">
</head>
<!-- /page.head -->
HTML del ejemplo: includes/_pattern.ejemplo-title.njk
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Patrones de encabezados de página. DESY. Sistema de diseño del Gobierno de Aragón.</title>
<link rel="icon" type="image/x-icon" href="https://aplicaciones.aragon.es/favicon.ico">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/styles.css">
</head>
<!-- /page.head -->
Titulo con acciones de página #
Compuesto por un título y acciones (primaria, secundaria y terciarias) asociadas a la página en la que estamos.
Titulo de página (h1)
Acciones de página
Mostrar código del ejemplo: includes/_pattern.titulo-acciones-de-pagina.njk
Contenido
Nunjucks macro del ejemplo: includes/_pattern.titulo-acciones-de-pagina.njk
{% from "components/button/_macro.button.njk" import componentButton %}
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% from "components/nav/_macro.nav.njk" import componentNav %}
<div class="pb-lg"></div>
<div class="lg:flex lg:flex-wrap w-full mb-base">
<h1 id="page-title-1" class="c-h1 flex-1">Titulo de página (h1)</h1>
<section class="mt-base mb-base lg:mt-0 lg:mb-0 lg:ml-auto lg:pl-base" aria-labelledby="acciones-de-pagina-1">
<h2 id="acciones-de-pagina-1" class="sr-only">Acciones de página</h2>
{#
Patrones > Acciones > Primaria, secundaria y terciarias
#}
<ul class="flex flex-column-reverse lg:flex-row-reverse flex-wrap gap-sm">
<li>
{{ componentButton({
"text": "Acción principal",
"classes": "c-button--primary"
}) }}
</li>
<li>
{{ componentButton({
"text": "Acción secundaria"
}) }}
</li>
<li>
{% call componentDropdown({
"text": "Más acciones"
}) %}
{{ componentNav({
"hasNav": false,
"idPrefix": "mas-acciones-de-pagina-1",
"items": [
{
"href": "#",
"text": "Acción terciaria 1"
},
{
"href": "#",
"text": "Acción terciaria 2"
},
{
"href": "#",
"text": "Acción terciaria 3",
"divider": true
},
{
"href": "#",
"text": "Otras acciones..."
}
],
"classes": "w-max max-w-64",
"attributes": {
"aria-label": "Más acciones"
}
}) }}
{% endcall %}
</li>
</ul>
{#
/Patrones > Acciones > Primaria, secundaria y terciarias
#}
</section>
</div>
HTML del ejemplo: includes/_pattern.titulo-acciones-de-pagina.njk
<div class="pb-lg"></div>
<div class="lg:flex lg:flex-wrap w-full mb-base">
<h1 id="page-title-1" class="c-h1 flex-1">Titulo de página (h1)</h1>
<section class="mt-base mb-base lg:mt-0 lg:mb-0 lg:ml-auto lg:pl-base" aria-labelledby="acciones-de-pagina-1">
<h2 id="acciones-de-pagina-1" class="sr-only">Acciones de página</h2>
<ul class="flex flex-column-reverse lg:flex-row-reverse flex-wrap gap-sm">
<li>
<!-- button -->
<button class="c-button c-button--primary">
Acción principal
</button>
<!-- /button -->
</li>
<li>
<!-- button -->
<button class="c-button">
Acción secundaria
</button>
<!-- /button -->
</li>
<li>
<!-- dropdown -->
<div data-module="c-dropdown" class=" relative">
<button class="c-dropdown" data-module="c-dropdown-button" aria-haspopup="true">
<span class="inline-flex self-center max-w-xs align-middle truncate">Más acciones</span>
<svg class="inline-block -mr-2 align-middle -my-px" viewBox="0 0 96 96" aria-hidden="true" fill="currentColor" focusable="false" width="1.5em" height="1.5em">
<g>
<path d="M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z" />
</g>
</svg></button>
<div class="-ml-sm mt-2 border border-neutral-base shadow-md bg-white" data-module="c-dropdown-tooltip">
<!-- nav -->
<ul data-module="c-nav" class="text-sm w-max max-w-64" aria-label="Más acciones">
<li>
<a href="#" class="flex items-center px-base py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black" id="mas-acciones-de-pagina-1-1">
Acción terciaria 1
</a>
</li>
<li>
<a href="#" class="flex items-center px-base py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black" id="mas-acciones-de-pagina-1-2">
Acción terciaria 2
</a>
</li>
<li>
<a href="#" class="flex items-center px-base py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black" id="mas-acciones-de-pagina-1-3">
Acción terciaria 3
</a>
</li>
<li class="my-sm border-b border-neutral-base" aria-hidden="true">
<div class="sr-only">Separador</div>
</li>
<li>
<a href="#" class="flex items-center px-base py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black" id="mas-acciones-de-pagina-1-4">
Otras acciones...
</a>
</li>
</ul>
<!-- /nav -->
</div>
</div>
<!-- /dropdown -->
</li>
</ul>
</section>
</div>
Titulo con acciones de página y buscador #
Compuesto por un título y acciones (primaria, secundaria y terciarias) asociadas a la página en la que estamos y un buscador general.
Titulo de página (h1)
Búsqueda
Mostrar código del ejemplo: includes/_pattern.titulo-acciones-buscador-de-pagina.njk
Contenido
Nunjucks macro del ejemplo: includes/_pattern.titulo-acciones-buscador-de-pagina.njk
{% from "components/button/_macro.button.njk" import componentButton %}
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% from "components/nav/_macro.nav.njk" import componentNav %}
{% from "components/searchbar/_macro.searchbar.njk" import componentSearchbar %}
<div class="pb-lg"></div>
<div class="lg:flex lg:flex-wrap w-full">
<h1 id="page-title-2" class="c-h1 flex-1">Titulo de página (h1)</h1>
<div class="lg:order-3 w-full mb-base lg:mb-lg">
{#
Patrones > Acciones > Buscar en el sitio
#}
<div class="lg:w-1/2">
<h2 class="sr-only">Búsqueda</h2>
<form action="#">
{{ componentSearchbar({
"id": "searchbar-home",
"label": {
"text": "Buscar"
},
"placeholder": "Introduce un término de búsqueda",
"button": {
"text": "Buscar",
"type": "submit",
"classes": "c-button"
},
"classes": "flex-1"
}) }}
</form>
</div>
{#
/Patrones > Acciones > Buscar en el sitio
#}
</div>
{#
Patrones > Acciones > Primaria, secundaria y terciarias
#}
<ul class="flex flex-column-reverse lg:flex-row-reverse flex-wrap gap-sm">
<li>
{{ componentButton({
"text": "Acción primaria",
"classes": "c-button--primary"
}) }}
</li>
<li>
{{ componentButton({
"text": "Acción secundaria"
}) }}
</li>
<li>
{% call componentDropdown({
"text": "Más acciones"
}) %}
{{ componentNav({
"hasNav": false,
"idPrefix": "mas-acciones-de-pagina-2",
"items": [
{
"href": "#",
"text": "Acción terciaria 1"
},
{
"href": "#",
"text": "Acción terciaria 2"
},
{
"href": "#",
"text": "Acción terciaria 3",
"divider": true
},
{
"href": "#",
"text": "Otras acciones..."
}
],
"classes": "w-max max-w-64",
"attributes": {
"aria-label": "Más acciones"
}
}) }}
{% endcall %}
</li>
</ul>
{#
/Patrones > Acciones > Primaria, secundaria y terciarias
#}
</div>
HTML del ejemplo: includes/_pattern.titulo-acciones-buscador-de-pagina.njk
<div class="pb-lg"></div>
<div class="lg:flex lg:flex-wrap w-full">
<h1 id="page-title-2" class="c-h1 flex-1">Titulo de página (h1)</h1>
<div class="lg:order-3 w-full mb-base lg:mb-lg">
<div class="lg:w-1/2">
<h2 class="sr-only">Búsqueda</h2>
<form action="#">
<!-- searchbar -->
<!-- label -->
<label class="block sr-only undefined" for="searchbar-home">Buscar</label>
<!-- /label -->
<div class="relative flex flex-wrap items-end gap-sm">
<input class="c-input block border-black rounded font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base flex-1" id="searchbar-home" name="searchbar-home" type="search" placeholder="Introduce un término de búsqueda">
<!-- button -->
<button type="submit" class="c-button c-button">
Buscar
</button>
<!-- /button -->
</div>
<!-- /searchbar -->
</form>
</div>
</div>
<ul class="flex flex-column-reverse lg:flex-row-reverse flex-wrap gap-sm">
<li>
<!-- button -->
<button class="c-button c-button--primary">
Acción primaria
</button>
<!-- /button -->
</li>
<li>
<!-- button -->
<button class="c-button">
Acción secundaria
</button>
<!-- /button -->
</li>
<li>
<!-- dropdown -->
<div data-module="c-dropdown" class=" relative">
<button class="c-dropdown" data-module="c-dropdown-button" aria-haspopup="true">
<span class="inline-flex self-center max-w-xs align-middle truncate">Más acciones</span>
<svg class="inline-block -mr-2 align-middle -my-px" viewBox="0 0 96 96" aria-hidden="true" fill="currentColor" focusable="false" width="1.5em" height="1.5em">
<g>
<path d="M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z" />
</g>
</svg></button>
<div class="-ml-sm mt-2 border border-neutral-base shadow-md bg-white" data-module="c-dropdown-tooltip">
<!-- nav -->
<ul data-module="c-nav" class="text-sm w-max max-w-64" aria-label="Más acciones">
<li>
<a href="#" class="flex items-center px-base py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black" id="mas-acciones-de-pagina-2-1">
Acción terciaria 1
</a>
</li>
<li>
<a href="#" class="flex items-center px-base py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black" id="mas-acciones-de-pagina-2-2">
Acción terciaria 2
</a>
</li>
<li>
<a href="#" class="flex items-center px-base py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black" id="mas-acciones-de-pagina-2-3">
Acción terciaria 3
</a>
</li>
<li class="my-sm border-b border-neutral-base" aria-hidden="true">
<div class="sr-only">Separador</div>
</li>
<li>
<a href="#" class="flex items-center px-base py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black" id="mas-acciones-de-pagina-2-4">
Otras acciones...
</a>
</li>
</ul>
<!-- /nav -->
</div>
</div>
<!-- /dropdown -->
</li>
</ul>
</div>
Titulo con pasos y botón de volver atrás #
Compuesto por un título con pasos y botón de volver atrás.
Titulo de página (h1)
Paso 1 de 3
Acciones de página
Mostrar código del ejemplo: includes/_pattern.titulo-con-pasos-y-boton-de-volver-atras.njk
Contenido
Nunjucks macro del ejemplo: includes/_pattern.titulo-con-pasos-y-boton-de-volver-atras.njk
{% from "components/button/_macro.button.njk" import componentButton %}
{% from "components/dropdown/_macro.dropdown.njk" import componentDropdown %}
{% from "components/nav/_macro.nav.njk" import componentNav %}
<div class="my-base">
{{ componentButton({
"html": '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 140" class="self-center mr-2" aria-hidden="true" focusable="false" width="1em" height="1em"><path d="M37.93 27.93l-35 35a10 10 0 000 14.14l35 35a10 10 0 1014.14-14.14L38.41 84.27A2.5 2.5 0 0140.18 80H130a10 10 0 000-20H40.18a2.5 2.5 0 01-1.77-4.27l13.66-13.66a10 10 0 00-14.14-14.14z" fill="currentColor"></path></svg>Volver',
"classes": "c-button--transparent",
"href": "/"
}) }}
</div>
<div class="lg:flex lg:flex-wrap w-full mb-base items-center">
<div class="flex flex-col-reverse">
<h1 id="page-title-3" class="c-h1 w-full mb-0">Titulo de página (h1)</h1>
<p class="c-paragraph-base mb-0 text-neutral-dark">Paso 1 de 3</p>
</div>
<section class="mt-base mb-base lg:mt-0 lg:mb-0 lg:ml-auto lg:pl-base" aria-labelledby="acciones-de-pagina-3">
<h2 id="acciones-de-pagina-3" class="sr-only">Acciones de página</h2>
{#
Patrones > Acciones > Siguiente paso y restaurar
#}
<ul class="flex flex-col-reverse lg:flex-row-reverse flex-wrap gap-sm">
<li>
{{ componentButton({
"text": "Siguiente paso",
"classes": "c-button--primary",
"type": "submit"
}) }}
</li>
<li>
{{ componentButton({
"text": "Restaurar"
}) }}
</li>
</ul>
</section>
{#
/Patrones > Acciones de página > Siguiente paso y restaurar
#}
</div>
HTML del ejemplo: includes/_pattern.titulo-con-pasos-y-boton-de-volver-atras.njk
<div class="my-base">
<!-- button -->
<a href="/" draggable="false" class="c-button c-button--transparent">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 140" class="self-center mr-2" aria-hidden="true" focusable="false" width="1em" height="1em">
<path d="M37.93 27.93l-35 35a10 10 0 000 14.14l35 35a10 10 0 1014.14-14.14L38.41 84.27A2.5 2.5 0 0140.18 80H130a10 10 0 000-20H40.18a2.5 2.5 0 01-1.77-4.27l13.66-13.66a10 10 0 00-14.14-14.14z" fill="currentColor"></path>
</svg>Volver
</a>
<!-- /button -->
</div>
<div class="lg:flex lg:flex-wrap w-full mb-base items-center">
<div class="flex flex-col-reverse">
<h1 id="page-title-3" class="c-h1 w-full mb-0">Titulo de página (h1)</h1>
<p class="c-paragraph-base mb-0 text-neutral-dark">Paso 1 de 3</p>
</div>
<section class="mt-base mb-base lg:mt-0 lg:mb-0 lg:ml-auto lg:pl-base" aria-labelledby="acciones-de-pagina-3">
<h2 id="acciones-de-pagina-3" class="sr-only">Acciones de página</h2>
<ul class="flex flex-col-reverse lg:flex-row-reverse flex-wrap gap-sm">
<li>
<!-- button -->
<button type="submit" class="c-button c-button--primary">
Siguiente paso
</button>
<!-- /button -->
</li>
<li>
<!-- button -->
<button class="c-button">
Restaurar
</button>
<!-- /button -->
</li>
</ul>
</section>
</div>