Ir al contenido

@archeblack/ui

Editorial

Los patrones de página de un producto editorial, armados solo con las piezas de Arche y el contenido real de Hermes: sus ensayos, temas, autor y manifiesto. Cada patrón es una página completa del sitio de muestra, con la marca de Hermes en la cabecera, la búsqueda con ⌘K, el menú del teléfono y el pie; se ve en el ancho de esta columna y en el de un teléfono, y se navega como Hermes. El cuerpo de cada post es el principio del ensayo.

Patrones
12
Posts
5
Temas
4

Post

La página de un ensayo: la cabecera con la portada, el tema como link y la fecha, el titular, la bajada y la firma con compartir; el cuerpo en la columna de lectura, con compartir otra vez al final; el colofón, el autor y los relacionados. La cabecera no es fija: se va con la página, y la barra de lectura queda sola arriba de la ventana, sobre su pista, midiendo solo el artículo.

Portada

La página de inicio: el post más reciente con la imagen arriba y el texto debajo, sin velo; «Recientes» con los tres siguientes en la grilla (una fila de tres en escritorio); los temas y los autores.

Listados

El patrón general de un listado: un encabezado de sección y la grilla de tarjetas. La talla de la tarjeta sale del lugar: md en un listado, sm en los relacionados y lg cuando hay pocas.

Un listado

SectionHeader con «Ver todo el archivo» y ArticleCardGrid con tarjetas md (columnas de 18rem o más). Esta muestra mide 894 px en una ventana de 1280: se ve en dos columnas; tres necesitan unos 912 px, como en la página de Hermes (1200 px), y debajo de 600 queda una.

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 { AUTHOR, POSTS, routes, topicOf } from '../content.ts';

	const [, ...recent] = POSTS;
</script>

<!-- Un listado: el encabezado de sección (con «Ver todo el archivo») y la grilla de tarjetas md,
     con bajada y firma. En una página real la sección es un h2 y las tarjetas h3; aquí van un nivel
     más abajo porque viven en la documentación. -->
<section aria-labelledby="listing-md" data-product="hermes" style="width: 100%">
	<SectionHeader
		level={4}
		title="Recientes"
		titleId="listing-md"
		href={routes.publications()}
		linkLabel="Ver todo el archivo"
	/>
	<ArticleCardGrid>
		{#each recent as post (post.slug)}
			{@const topic = topicOf(post)}
			<ArticleCard
				level={5}
				title={post.title}
				href={routes.post(post.slug)}
				image={post.image}
				mark="hermes"
				topic={topic.name}
				topicHref={routes.topic(topic.slug)}
				date={post.date}
				dek={post.dek}
				author={AUTHOR.name}
				readingTime={post.minutes}
			/>
		{/each}
	</ArticleCardGrid>
</section>

Relacionados

Al pie de un post, «Sigue leyendo»: tarjetas sm, sin bajada ni firma, y un encabezado sin link. En esta muestra de 894 px, dos columnas y una tarjeta sola; en la página de Hermes, tres.

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

	const related = relatedTo('el-alma-pide-locura');
</script>

<!-- Los relacionados al pie de un post: tarjetas sm, sin bajada ni firma. El encabezado va sin
     link: no hay un «ver todo» de los relacionados. -->
<section aria-labelledby="listing-sm" data-product="hermes" style="width: 100%">
	<SectionHeader level={4} title="Sigue leyendo" titleId="listing-sm" />
	<ArticleCardGrid>
		{#each related as post (post.slug)}
			{@const topic = topicOf(post)}
			<ArticleCard
				size="sm"
				level={5}
				title={post.title}
				href={routes.post(post.slug)}
				image={post.image}
				mark="hermes"
				topic={topic.name}
				topicHref={routes.topic(topic.slug)}
				date={post.date}
			/>
		{/each}
	</ArticleCardGrid>
</section>

Pocas tarjetas

ArticleCardGrid size="lg" con tarjetas lg (columnas de 28rem o más). Esta muestra mide 894 px en una ventana de 1280: se ve en una columna; dos necesitan unos 920 px, como en la página de Hermes (1200 px). En el archivo de su propio tema, el tema no es un link.

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.

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 { AUTHOR, postsByTopic, routes, topicBySlug } from '../content.ts';

	const topic = topicBySlug('videojuegos')!;
	const posts = postsByTopic(topic.slug);
</script>

<!-- Pocas tarjetas: la grilla lg (columnas de 28rem o más: dos desde unos 920 px) y la tarjeta lg, con el título a
     28 px. Aquí, los dos posts de Videojuegos. -->
<section aria-labelledby="listing-lg" data-product="hermes" style="width: 100%">
	<SectionHeader
		level={4}
		title={topic.name}
		titleId="listing-lg"
		href={routes.topic(topic.slug)}
		linkLabel="Ver el archivo del tema"
	/>
	<ArticleCardGrid size="lg">
		{#each posts as post (post.slug)}
			<ArticleCard
				size="lg"
				level={5}
				title={post.title}
				href={routes.post(post.slug)}
				image={post.image}
				mark="hermes"
				topic={topic.name}
				date={post.date}
				dek={post.dek}
				author={AUTHOR.name}
				readingTime={post.minutes}
			/>
		{/each}
	</ArticleCardGrid>
</section>

Publicaciones

El archivo completo: la búsqueda con el conteo en el sufijo vivo del campo, el orden y el filtro por tema con sus conteos (los dos rótulos en la voz de las etiquetas de los controles), la grilla y la paginación con links. La muestra pagina de a 4 para que se vea la paginación.

Archivo por tema

El archivo de un tema: la cabecera con sus cifras, el archivo por año con el año grande y cada post en una fila, y los otros temas. El índice de temas (Temas en la navegación) es una lista con la cantidad de cada uno.

Autor

La página de un autor: la cabecera de autor con el retrato al lado, el eyebrow con el año desde el que publica, el nombre y la bio; las cifras, como en el archivo por tema; y su archivo por año.

Índice de autores

El destino de «Autores» en la navegación, igual que el índice de temas: el titular y una fila por autor con su bio y la cantidad de artículos.

Manifiesto

La página /sobre: la cabecera del manifiesto, alineada al inicio; los tres pilares como secciones, cada uno con su encabezado y su texto; la etimología en la prosa y el colofón lado a lado. Sin griego ni numerales.

Error

Cualquier dirección que no existe muestra el error dentro del sitio, con la cabecera y el pie: la ruta pedida en el eyebrow, el titular, las acciones (volver al inicio y abrir el buscador) y los destinos del sitio. Sin cifra gigante. El marco pide un post que no existe.

Compartir

Compartir un post va al final de la firma y, otra vez, al final del artículo, antes del colofón: Mastodon, Bluesky y «Copiar link», en la voz de la firma. Al copiar, el botón dice «Copiado» durante 2 s y «Link copiado» se anuncia en una región viva. En el teléfono, en la firma, baja a su propia fila, al inicio.

En la firma

Byline con el snippet end: los dos links y el botón toman el aspecto de link de la firma. Pruébalo: «Copiar link» copia la dirección de esta página, cambia a «Copiado» durante 2 s y anuncia «Link copiado» en una región viva (role status). Si no entra en la línea, compartir baja a su propia fila, al inicio (decisión 25 de 4b).

Svelte
<script lang="ts">
	import '@archeblack/ui/products/hermes.css';
	import { Byline } from '@archeblack/ui';
	import { AUTHOR, POSTS, routes } from '../content.ts';
	import Share from '../frame/Share.svelte';

	const [post] = POSTS;
</script>

<!-- Compartir en la firma del post: el snippet end de Byline, con Mastodon, Bluesky y «Copiar
     link». Al copiar, el botón dice «Copiado» durante 2 s y «Link copiado» se anuncia en una región
     role="status". Si no entra en la línea, baja a su propia fila, al inicio. -->
<div data-product="hermes" style="width: 100%">
	<Byline
		name={AUTHOR.name}
		href={routes.author(AUTHOR.slug)}
		avatar
		avatarInitials={AUTHOR.initials}
		readingTime={post.minutes}
	>
		{#snippet end()}<Share title={post.title} />{/snippet}
	</Byline>
</div>

Copiado

El estado después de copiar, fijo para mirarlo. Solo cambia el texto del botón: sin ícono ni color nuevo.

Svelte
<script lang="ts">
	import '@archeblack/ui/products/hermes.css';
	import { Byline } from '@archeblack/ui';
	import { AUTHOR, POSTS, routes } from '../content.ts';
	import Share from '../frame/Share.svelte';

	const [post] = POSTS;
</script>

<!-- El estado copiado, fijo para mirarlo: copied viene de afuera y no se anuncia nada (el aviso
     role="status" solo aparece al copiar de verdad). En el producto no se pasa copied. -->
<div data-product="hermes" style="width: 100%">
	<Byline
		name={AUTHOR.name}
		href={routes.author(AUTHOR.slug)}
		avatar
		avatarInitials={AUTHOR.initials}
		readingTime={post.minutes}
	>
		{#snippet end()}<Share title={post.title} copied />{/snippet}
	</Byline>
</div>