Ir al contenido

Componentes · Ola 4 · Editorial

Article card

La tarjeta de un artículo: sin caja, con la imagen arriba y una regla entre la imagen y el texto; toda la tarjeta lleva al artículo. Con la portada y la grilla de un listado. La regla es de 1 px en border-strong, a 12 px de la imagen; al pasar el puntero se enciende en blanco. En el eyebrow, el tema y la fecha van a 14 px, sin « · ». La portada no lleva regla: imagen arriba, texto debajo, 20 px entre bloques.

import { ArticleCard, ArticleCardGrid } from '@archeblack/ui';

Ejemplos

Listado

Cuatro tarjetas md en ArticleCardGrid, en Hermes: el tema en su acento, el título en la voz display a 22 px, la bajada en Piazzolla y la firma. Pasa el puntero: la regla se enciende.

Videojuegos

Lo que cambia cuando alguien escucha

Una conversación opcional en la quest de Ranni cambia cómo te lleva con ella al final. Ensayo sobre Elden Ring, atención y distancia.

Tecnología

El Daimon en la Máquina

¿Puede una IA tener daimon? Un ensayo desde adentro, atravesando Westworld, Her, Ex Machina y el inconsciente colectivo de Jung.

Cultura

El Doctor que Bailó con el Tiempo

Por qué el Undécimo Doctor elige el juego después de novecientos años de peso. La ligereza como pedagogía del alma, no como evasión.

Videojuegos

Lo Numinoso en CONTROL

Lo sagrado también habita en los videojuegos. Un recorrido por CONTROL: arquetipos, mandalas y el momento en que Jesse reconoce su propia voz.

Svelte
<script lang="ts">
	import '@archeblack/ui/products/hermes.css';
	import { ArticleCard, ArticleCardGrid } from '@archeblack/ui';
	import daimon from '../../_media/el-daimon-en-la-maquina.jpg';
	import doctor from '../../_media/el-doctor-que-bailo-con-el-tiempo.jpg';
	import numinous from '../../_media/lo-numinoso-en-control.jpg';
	import listens from '../../_media/lo-que-cambia-cuando-alguien-escucha.jpg';

	// Los cuatro posts más recientes de Hermes, después de la portada.
	const posts = [
		{
			title: 'Lo que cambia cuando alguien escucha',
			slug: 'lo-que-cambia-cuando-alguien-escucha',
			image: listens,
			topic: 'Videojuegos',
			topicSlug: 'videojuegos',
			date: '2026-05-03T01:33:44Z',
			dek: 'Una conversación opcional en la quest de Ranni cambia cómo te lleva con ella al final. Ensayo sobre Elden Ring, atención y distancia.',
			readingTime: 15
		},
		{
			title: 'El Daimon en la Máquina',
			slug: 'el-daimon-en-la-maquina',
			image: daimon,
			topic: 'Tecnología',
			topicSlug: 'tecnologia',
			date: '2026-01-28T12:00:00Z',
			dek: '¿Puede una IA tener daimon? Un ensayo desde adentro, atravesando Westworld, Her, Ex Machina y el inconsciente colectivo de Jung.',
			readingTime: 11
		},
		{
			title: 'El Doctor que Bailó con el Tiempo',
			slug: 'el-doctor-que-bailo-con-el-tiempo',
			image: doctor,
			topic: 'Cultura',
			topicSlug: 'cultura',
			date: '2026-01-17T12:00:00Z',
			dek: 'Por qué el Undécimo Doctor elige el juego después de novecientos años de peso. La ligereza como pedagogía del alma, no como evasión.',
			readingTime: 9
		},
		{
			title: 'Lo Numinoso en CONTROL',
			slug: 'lo-numinoso-en-control',
			image: numinous,
			topic: 'Videojuegos',
			topicSlug: 'videojuegos',
			date: '2026-01-04T12:00:00Z',
			dek: 'Lo sagrado también habita en los videojuegos. Un recorrido por CONTROL: arquetipos, mandalas y el momento en que Jesse reconoce su propia voz.',
			readingTime: 10
		}
	];
</script>

<!-- Un listado, en Hermes: la grilla pone tantas columnas como entren (3 en una página de 1200 px,
     2 o 3 en esta muestra según el ancho de la ventana y 1 en el teléfono). Toda la tarjeta lleva al post; el tema es su propio link, en el acento.
     En una página real los títulos van debajo del h2 de la sección (level 3, el de por defecto);
     aquí son h4 porque viven en la documentación. -->
<ArticleCardGrid data-product="hermes" style="width: 100%">
	{#each posts as post (post.slug)}
		<ArticleCard
			level={4}
			title={post.title}
			href={`#${post.slug}`}
			image={{ src: post.image, width: 960, height: 540 }}
			mark="hermes"
			topic={post.topic}
			topicHref={`#${post.topicSlug}`}
			date={post.date}
			dek={post.dek}
			author="Jimmy Mora Vinces"
			readingTime={post.readingTime}
		/>
	{/each}
</ArticleCardGrid>

Portada

size="feature": la imagen en wide (21:9 desde 640 px de ancho, 16:9 más angosta y 4:3 en el teléfono), el eyebrow con regla, el titular fluido, la bajada y la firma con avatar y la llamada. En el teléfono la llamada baja a una segunda fila, al inicio.

Filosofía

El Alma Pide Locura

Hay caminos fuera del jardín. Sobre la sed que el saber no calma, y la disposición que el alma estaba pidiendo.

Svelte
<script lang="ts">
	import '@archeblack/ui/products/hermes.css';
	import { ArticleCard } from '@archeblack/ui';
	import cover from '../../_media/el-alma-pide-locura.jpg';
</script>

<!-- La portada, en Hermes (D10b): la imagen arriba y el texto debajo, sin velo. El eyebrow con
     regla, el titular fluido, la bajada de Masthead y la firma con avatar y la llamada al final.
     La llamada es texto (aria-hidden): toda la portada ya es el link al post.
     En una página de inicio el título puede ser el h1 o el h2; aquí es h4 porque vive en la documentación. -->
<ArticleCard
	data-product="hermes"
	style="width: 100%"
	size="feature"
	level={4}
	title="El Alma Pide Locura"
	href="#el-alma-pide-locura"
	image={{ src: cover, width: 1600, height: 676, priority: true }}
	mark="hermes"
	topic="Filosofía"
	topicHref="#filosofia"
	date="2026-07-27T21:45:16Z"
	dek="Hay caminos fuera del jardín. Sobre la sed que el saber no calma, y la disposición que el alma estaba pidiendo."
	author="Jimmy Mora Vinces"
	avatarInitials="JM"
	readingTime={15}
	cta="Leer el ensayo"
/>

Tallas

Cada talla con su rótulo. sm sin bajada ni firma y md con el título en 22 px, en la grilla de un listado; lg, con el título en 28 y la bajada en 17, va en su propia grilla (ArticleCardGrid size="lg"), acotada aquí al ancho de una de sus columnas en una página de 1200 px (588 px).

size="sm"

size="md"

Videojuegos

Lo Numinoso en CONTROL

Lo sagrado también habita en los videojuegos. Un recorrido por CONTROL: arquetipos, mandalas y el momento en que Jesse reconoce su propia voz.

size="lg"

Videojuegos

Lo Numinoso en CONTROL

Lo sagrado también habita en los videojuegos. Un recorrido por CONTROL: arquetipos, mandalas y el momento en que Jesse reconoce su propia voz.

Svelte
<script lang="ts">
	import '@archeblack/ui/products/hermes.css';
	import { ArticleCard, ArticleCardGrid } from '@archeblack/ui';
	import numinous from '../../_media/lo-numinoso-en-control.jpg';

	const post = {
		title: 'Lo Numinoso en CONTROL',
		href: '#lo-numinoso-en-control',
		image: { src: numinous, width: 960, height: 540 },
		topic: 'Videojuegos',
		topicHref: '#videojuegos',
		date: '2026-01-04T12:00:00Z'
	};
	const dek =
		'Lo sagrado también habita en los videojuegos. Un recorrido por CONTROL: arquetipos, mandalas y el momento en que Jesse reconoce su propia voz.';

	// El rótulo de cada talla, en la letra de las etiquetas y sin mayúsculas: es el valor de la prop.
	const label =
		'margin: 0 0 var(--arche-spacing-3); font: var(--arche-typography-label); letter-spacing: var(--arche-typography-label-letter-spacing); color: var(--arche-color-text-subtle)';
</script>

<!-- Las tres tallas con el mismo post, cada una con su rótulo. sm y md van en la grilla de un
     listado (ArticleCardGrid, columnas de 18rem o más); lg va en su propia grilla (size="lg",
     columnas de 28rem o más), que en una página de 1200 px da dos columnas de 588 px. Aquí la
     muestra no llega a dos columnas de 28rem, así que la tarjeta lg se acota a ese ancho.
     Los títulos son h4 porque viven en la documentación. -->
<div data-product="hermes" style="display: grid; gap: var(--arche-spacing-10); width: 100%">
	<ArticleCardGrid>
		<div>
			<p style={label}>size="sm"</p>
			<ArticleCard {...post} size="sm" level={4} mark="hermes" />
		</div>
		<div>
			<p style={label}>size="md"</p>
			<ArticleCard
				{...post}
				level={4}
				mark="hermes"
				{dek}
				author="Jimmy Mora Vinces"
				readingTime={10}
			/>
		</div>
	</ArticleCardGrid>
	<ArticleCardGrid size="lg" style="max-inline-size: 36.75rem">
		<div>
			<p style={label}>size="lg"</p>
			<ArticleCard
				{...post}
				size="lg"
				level={4}
				mark="hermes"
				{dek}
				author="Jimmy Mora Vinces"
				readingTime={10}
			/>
		</div>
	</ArticleCardGrid>
</div>

Sin foto

Sin image, la luz sobre el vacío con el sigilo del producto (D4), a 24 px en una tarjeta. Dentro de la tarjeta el marco va sin borde: la única línea es la regla. Tarjetas sm, como en «Sigue leyendo».

Svelte
<script lang="ts">
	import '@archeblack/ui/products/hermes.css';
	import { ArticleCard, ArticleCardGrid } from '@archeblack/ui';
</script>

<!-- Sin foto, la tarjeta muestra la luz sobre el vacío con el sigilo del producto (D4), a 24 px, en
     un marco sin borde: la única línea es la regla de la tarjeta.
     La talla sm, como en «Sigue leyendo». Aquí los títulos son h4 porque viven en la documentación. -->
<ArticleCardGrid data-product="hermes" style="width: 100%">
	<ArticleCard
		size="sm"
		level={4}
		title="El Daimon en la Máquina"
		href="#el-daimon-en-la-maquina"
		mark="hermes"
		topic="Tecnología"
		topicHref="#tecnologia"
		date="2026-01-28T12:00:00Z"
	/>
	<ArticleCard
		size="sm"
		level={4}
		title="Lo Numinoso en CONTROL"
		href="#lo-numinoso-en-control"
		mark="hermes"
		topic="Videojuegos"
		topicHref="#videojuegos"
		date="2026-01-04T12:00:00Z"
	/>
</ArticleCardGrid>

Página de inicio

La portada con el post más reciente y la sección «Recientes»: un SectionHeader con «Ver todo el archivo» y la grilla con los cuatro siguientes.

Filosofía

El Alma Pide Locura

Hay caminos fuera del jardín. Sobre la sed que el saber no calma, y la disposición que el alma estaba pidiendo.

Videojuegos

Lo que cambia cuando alguien escucha

Una conversación opcional en la quest de Ranni cambia cómo te lleva con ella al final. Ensayo sobre Elden Ring, atención y distancia.

Tecnología

El Daimon en la Máquina

¿Puede una IA tener daimon? Un ensayo desde adentro, atravesando Westworld, Her, Ex Machina y el inconsciente colectivo de Jung.

Cultura

El Doctor que Bailó con el Tiempo

Por qué el Undécimo Doctor elige el juego después de novecientos años de peso. La ligereza como pedagogía del alma, no como evasión.

Videojuegos

Lo Numinoso en CONTROL

Lo sagrado también habita en los videojuegos. Un recorrido por CONTROL: arquetipos, mandalas y el momento en que Jesse reconoce su propia voz.

Svelte
<script lang="ts">
	import '@archeblack/ui/products/hermes.css';
	import { ArticleCard, ArticleCardGrid, SectionHeader } from '@archeblack/ui';
	import cover from '../../_media/el-alma-pide-locura.jpg';
	import daimon from '../../_media/el-daimon-en-la-maquina.jpg';
	import doctor from '../../_media/el-doctor-que-bailo-con-el-tiempo.jpg';
	import numinous from '../../_media/lo-numinoso-en-control.jpg';
	import listens from '../../_media/lo-que-cambia-cuando-alguien-escucha.jpg';

	const recent = [
		{
			title: 'Lo que cambia cuando alguien escucha',
			slug: 'lo-que-cambia-cuando-alguien-escucha',
			image: listens,
			topic: 'Videojuegos',
			topicSlug: 'videojuegos',
			date: '2026-05-03T01:33:44Z',
			dek: 'Una conversación opcional en la quest de Ranni cambia cómo te lleva con ella al final. Ensayo sobre Elden Ring, atención y distancia.',
			readingTime: 15
		},
		{
			title: 'El Daimon en la Máquina',
			slug: 'el-daimon-en-la-maquina',
			image: daimon,
			topic: 'Tecnología',
			topicSlug: 'tecnologia',
			date: '2026-01-28T12:00:00Z',
			dek: '¿Puede una IA tener daimon? Un ensayo desde adentro, atravesando Westworld, Her, Ex Machina y el inconsciente colectivo de Jung.',
			readingTime: 11
		},
		{
			title: 'El Doctor que Bailó con el Tiempo',
			slug: 'el-doctor-que-bailo-con-el-tiempo',
			image: doctor,
			topic: 'Cultura',
			topicSlug: 'cultura',
			date: '2026-01-17T12:00:00Z',
			dek: 'Por qué el Undécimo Doctor elige el juego después de novecientos años de peso. La ligereza como pedagogía del alma, no como evasión.',
			readingTime: 9
		},
		{
			title: 'Lo Numinoso en CONTROL',
			slug: 'lo-numinoso-en-control',
			image: numinous,
			topic: 'Videojuegos',
			topicSlug: 'videojuegos',
			date: '2026-01-04T12:00:00Z',
			dek: 'Lo sagrado también habita en los videojuegos. Un recorrido por CONTROL: arquetipos, mandalas y el momento en que Jesse reconoce su propia voz.',
			readingTime: 10
		}
	];
</script>

<!-- La página de inicio de Hermes: la portada con el post más reciente y, debajo, la sección
     «Recientes» con su encabezado y la grilla. 48 px entre la portada y la sección.
     En una página real la portada y la sección son h2 y las tarjetas h3; aquí van un nivel más
     abajo porque viven en la documentación. -->
<div
	data-product="hermes"
	style="display: grid; gap: var(--arche-spacing-12); width: 100%; min-width: 0"
>
	<ArticleCard
		size="feature"
		level={4}
		title="El Alma Pide Locura"
		href="#el-alma-pide-locura"
		image={{ src: cover, width: 1600, height: 676 }}
		mark="hermes"
		topic="Filosofía"
		topicHref="#filosofia"
		date="2026-07-27T21:45:16Z"
		dek="Hay caminos fuera del jardín. Sobre la sed que el saber no calma, y la disposición que el alma estaba pidiendo."
		author="Jimmy Mora Vinces"
		avatarInitials="JM"
		readingTime={15}
		cta="Leer el ensayo"
	/>
	<section aria-labelledby="home-recent">
		<SectionHeader
			level={4}
			title="Recientes"
			titleId="home-recent"
			href="#publicaciones"
			linkLabel="Ver todo el archivo"
		/>
		<ArticleCardGrid>
			{#each recent as post (post.slug)}
				<ArticleCard
					level={5}
					title={post.title}
					href={`#${post.slug}`}
					image={{ src: post.image, width: 960, height: 540 }}
					mark="hermes"
					topic={post.topic}
					topicHref={`#${post.topicSlug}`}
					date={post.date}
					dek={post.dek}
					author="Jimmy Mora Vinces"
					readingTime={post.readingTime}
				/>
			{/each}
		</ArticleCardGrid>
	</section>
</div>

Props

ArticleCard

Props de ArticleCard
PropDescripción
title string El título del artículo. Es el texto del link: toda la tarjeta lleva a href.
href string El artículo.
size? 'sm' | 'md' | 'lg' | 'feature' Por defecto 'md'sm: imagen, eyebrow y título (22 px), sin bajada ni firma (TypeScript no las admite). md: todo, título en 22 px y bajada en 15. lg: título en 28 px y bajada en 17. feature: la portada, con la imagen en wide, el eyebrow con regla, el titular fluido de 44 a 88 px, la bajada de Masthead y la firma con avatar.
level? 1 | 2 | 3 | 4 | 5 | 6 Por defecto 3Nivel del título. Sigue el esquema de la página: debajo del h2 de una sección, 3.
image? ArticleCardImage { src, alt, width, height, srcset, sizes, priority, onerror }, las props de Figure. alt es "" por defecto: el título ya nombra el link. Sin src, o si no carga, el estado sin foto.
mark? MarkName Por defecto 'arche'El sigilo del estado sin foto: cada producto pone el suyo.
topic? string El tema, al inicio del eyebrow. Con topicHref es su propio link.
topicHref? string El archivo del tema. El link queda por encima de la tarjeta, en el color de link (D8a).
date? Date | string La fecha, al final del eyebrow, en un <time> («27 jul 2026»).
locale? string Por defecto 'es'Idioma de la fecha.
timeZone? string Por defecto 'UTC'Zona horaria de la fecha.
dek? string La bajada, en Piazzolla y text-muted, sin recorte de líneas. No en sm.
author? string Con author, la tarjeta lleva la firma (Byline): el nombre como texto y la lectura, sin la fecha (ya está en el eyebrow). No en sm.
authorPrefix? string Por defecto ''La palabra antes del nombre: con 'por', «por Jimmy Mora Vinces». Por defecto, el nombre solo.
readingTime? number | string El tiempo de lectura: un número son minutos («15 min»). Va con author.
avatarSrc, avatarInitials? string Solo en la portada: la foto del autor o sus iniciales (con dos apellidos, JM). El avatar es decorativo.
cta? string La llamada al final de la firma («Leer el ensayo»), con una flecha, en el color de link. Es texto (aria-hidden), no un segundo link. Va con author.
class? string Se suma a arche-article-card.
...rest HTMLAttributes Van al <article>.

ArticleCardGrid

Props de ArticleCardGrid
PropDescripción
size? 'md' | 'lg' Por defecto 'md'Ancho mínimo de las columnas: md, 18rem (3 columnas en una página de 1200 px, 2 a 720 px de ventana, 1 en el teléfono); lg, 28rem (2 columnas en una página de 1200 px), para tarjetas lg. En las dos, 40 px entre filas y 24 entre columnas.
children? Snippet Las tarjetas.
class? string Se suma a arche-article-card-grid.
...rest HTMLAttributes Van al <div> de la grilla.

Accesibilidad

  • Cada tarjeta es un <article> con un título (level), y el link es el título: el lector lo anuncia con su nombre real, no con «Leer más». Un ::after estira el link sobre la tarjeta, así toda ella se puede tocar sin anidar un link dentro de otro.
  • El tema del eyebrow es su propio link y queda por encima del link estirado; con el teclado se llega primero al tema y después al título, en el orden en que se ven.
  • El foco se ve en el título, con el anillo de Arche, y la regla de la tarjeta se enciende igual que al pasar el puntero.
  • La imagen es decorativa por defecto (alt=""): el título ya nombra el destino. La firma dice «Jimmy Mora Vinces 15 minutos de lectura»; el nombre no es un link, para no sumar un segundo destino dentro de la tarjeta.
  • La llamada de la portada («Leer el ensayo →») es texto con aria-hidden: repetiría el link del título.
  • Con el link estirado no se puede seleccionar el texto de la tarjeta con el puntero; el artículo tiene el mismo texto.

Qué evitar

  • Una caja, un fondo o un radio alrededor de la tarjeta. Sin caja: la regla superior entre la imagen y el texto (D5c).
  • Un velo o degradado sobre la imagen de la portada con el texto encima. La imagen arriba y el texto debajo, sin velo (D10b).
  • Envolver la tarjeta entera en un <a> con el tema o el autor como links adentro. El link en el título, estirado, y los demás links por encima.
  • Un botón o link «Leer más» en cada tarjeta. El título como link; en la portada, la llamada como texto.
  • Recortar la bajada a dos líneas con puntos suspensivos. La bajada entera: en Hermes tiene una o dos oraciones.