Componentes · Ola 4 · Editorial
Section header
El encabezado de una sección de listado: una regla arriba, el título y «Ver todo» hacia el archivo completo. Con la talla del año grande para un archivo. La regla es de 1 px en border, con 16 px hasta el título y 24
hasta el contenido. El título va en la voz display de 28 px y «Ver todo →», en 15 px sin
subrayado. Sin número delante del título.
import { SectionHeader } from '@archeblack/ui';
Ejemplos
Sección de un listado
«Recientes» con «Ver todo el archivo» al final, en Hermes. Si no entra en la línea, el link baja a la siguiente.
Recientes
Ver todo el archivoAquí va la grilla de tarjetas, 24 px debajo del encabezado.
<script lang="ts">
import '@archeblack/ui/products/hermes.css';
import { SectionHeader } from '@archeblack/ui';
</script>
<!-- El encabezado de «Recientes» en la página de inicio de Hermes: el título y «Ver todo el
archivo» al final, en el acento. La sección toma su nombre del título (aria-labelledby).
En una página real el título es un h2 (level por defecto); aquí es h4 porque vive en la documentación. -->
<section data-product="hermes" aria-labelledby="section-recent" style="width: 100%">
<SectionHeader
level={4}
title="Recientes"
titleId="section-recent"
href="#publicaciones"
linkLabel="Ver todo el archivo"
/>
<p style="margin: 0; color: var(--arche-color-text-muted)">
Aquí va la grilla de tarjetas, 24 px debajo del encabezado.
</p>
</section> Sin link
Sin href: la regla y el título.
Sigue leyendo
<script lang="ts">
import { SectionHeader } from '@archeblack/ui';
</script>
<!-- Sin href no hay link: solo la regla y el título, como «Sigue leyendo» al pie de un post.
Aquí es h4 porque vive en la documentación. -->
<div style="width: 100%">
<SectionHeader level={4} title="Sigue leyendo" />
</div> Archivo por año
size="lg": el año en la voz display fluida del titular (de 44 px en el teléfono a 88 px desde 1280 de ventana), la regla en border-strong, 12 px arriba y 16 hasta la primera fila. Las filas son un IndexList.
<script lang="ts">
import { IndexList, IndexListItem, SectionHeader } from '@archeblack/ui';
// El archivo de Hermes, por año.
const years = [
{
year: '2026',
posts: [
{ title: 'El Alma Pide Locura', slug: 'el-alma-pide-locura', date: '2026-07-27T21:45:16Z' },
{
title: 'Lo que cambia cuando alguien escucha',
slug: 'lo-que-cambia-cuando-alguien-escucha',
date: '2026-05-03T01:33:44Z'
},
{
title: 'El Daimon en la Máquina',
slug: 'el-daimon-en-la-maquina',
date: '2026-01-28T12:00:00Z'
},
{
title: 'El Doctor que Bailó con el Tiempo',
slug: 'el-doctor-que-bailo-con-el-tiempo',
date: '2026-01-17T12:00:00Z'
},
{
title: 'Lo Numinoso en CONTROL',
slug: 'lo-numinoso-en-control',
date: '2026-01-04T12:00:00Z'
}
]
}
];
</script>
<!-- El archivo por año (D11c): size="lg" pone el año en la voz display fluida del titular (de 44
a 88 px), con la regla en border-strong y sin conteo. Debajo, las filas de IndexList, con la fecha sin el año.
En una página real el año es un h2; aquí es h4 porque vive en la documentación. -->
<div style="display: grid; gap: var(--arche-spacing-10); width: 100%">
{#each years as group (group.year)}
<section aria-labelledby={`year-${group.year}`}>
<SectionHeader level={4} size="lg" title={group.year} titleId={`year-${group.year}`} />
<IndexList>
{#each group.posts as post (post.slug)}
<IndexListItem title={post.title} href={`#${post.slug}`} date={post.date} />
{/each}
</IndexList>
</section>
{/each}
</div> Props
| Prop | Descripción |
|---|---|
title string | El título, o el año. |
level? 1 | 2 | 3 | 4 | 5 | 6 Por defecto 2 | Nivel del título. Sigue el esquema de la página. |
size? 'md' | 'lg' Por defecto 'md' | md: la voz display de 28 px con brillo (Heading xl, la de los títulos de tarjeta) con la regla en border. lg: el año de un archivo, en la voz display fluida de 44 a 88 px (Heading 4xl, la del titular), con la regla en border-strong. |
href? string | Destino de «Ver todo» (el archivo completo). Sin href, no hay link. |
linkLabel? string Por defecto 'Ver todo' | Texto del link. La flecha es decorativa. El link se describe con el título (aria-describedby). |
titleId? string | id del título, para que la sección lo use de nombre (aria-labelledby). Por defecto se genera uno. |
class? ClassValue | Se suma a arche-section-header. |
...rest HTMLAttributes | Van al <div> del encabezado. |
Accesibilidad
- El título es un encabezado real (
level,h2por defecto): la sección aparece en la lista de encabezados del lector de pantalla. - «Ver todo» se describe con el título (
aria-describedby): el lector oye «Ver todo el archivo, Recientes», y varios «Ver todo» en la misma página se distinguen. - Con
titleId, la<section>toma el título como nombre (aria-labelledby) y pasa a ser una región con nombre. - La flecha es decorativa (
aria-hidden). El link no lleva subrayado en reposo: no está dentro de un texto y se reconoce por su lugar al final del encabezado, la flecha y el color de link. En hover aparece el subrayado; con el teclado, el anillo de foco de Arche. En colores forzados el subrayado se ve siempre. Su área táctil mide unos 30 px de alto (WCAG 2.5.8) sin mover la línea. - El encabezado es un
<div>, no un<header>: fuera de una<section>, un<header>sería la cabecera de toda la página.
Qué evitar
- Un número delante del título («01 / 02 Recientes»). El título solo (D11b).
- Un conteo junto al año del archivo («2026 · 5 artículos»). El año grande solo (D11c).
- Un link que diga solo «Ver todo» sin describir, varias veces en la página. El link descrito por el título, o un texto que diga adónde lleva («Ver todo el archivo»).
- El título de la sección en la voz de sección (
Headinglg, sin brillo). La voz display de 28 px con brillo, la misma de los títulos de las tarjetas.