Componentes · Ola 4 · Editorial
Figure
Una imagen con su proporción, su pie y su crédito; sin foto, la luz de Arche con el sigilo del producto. Sin radio, sin borde y sin velo; mientras carga, el marco es la capa elevada. Dentro
de un Container en grilla puede sangrar hasta el ancho de página
o de la ventana.
import { Figure } from '@archeblack/ui';
Ejemplos
Imagen con pie y crédito
wide es 4:3 en una figura de menos de 30rem (el teléfono), 16:9 de 30rem a 40rem (una tableta vertical) y 21:9 desde 40rem. Con width y height el lugar queda reservado mientras carga.

<script lang="ts">
import { Figure } from '@archeblack/ui';
import cover from '../../_media/el-alma-pide-locura.jpg';
</script>
<!-- wide: 4:3 por debajo de 30rem, 16:9 de 30rem a 40rem y 21:9 desde 40rem (el ancho de la figura).
Con crédito, el pie va sin punto final: los separa « · ». -->
<div style="width: 100%">
<Figure
src={cover}
alt="La carta XII del Tarot, El Colgado, sostenida en alto frente a un bosque desenfocado"
width={1600}
height={676}
caption="El Colgado: la carta que mira el mundo al revés"
credit="Foto: archivo de Hermes"
/>
</div> Sin foto
La luz de Arche sobre el vacío con el sigilo del producto (mark), en el rol brand: dentro de data-product="hermes" sale en el acento de Hermes, con su halo; en Arche, blanco. Con alt es una imagen con nombre; con alt="", decorativa.
<script lang="ts">
import '@archeblack/ui/products/hermes.css';
import { Figure } from '@archeblack/ui';
</script>
<!-- Sin foto: la luz sobre el vacío con el sigilo del producto, que mide de 24 a 40 px.
El sigilo pinta con el rol brand: dentro de data-product="hermes" sale en el acento de Hermes. -->
<div
style="display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: var(--arche-spacing-6); width: 100%"
>
<Figure data-product="hermes" alt="Portada de «El Daimon en la Máquina»" mark="hermes" />
<Figure alt="" mark="arche" />
</div> Sin foto en una tarjeta
En una figura de unos 280 px, el sigilo queda en su mínimo de 24 px: por debajo, su detalle se pierde.
<script lang="ts">
import '@archeblack/ui/products/hermes.css';
import { Figure } from '@archeblack/ui';
</script>
<!-- En una tarjeta de unos 280 px, el sigilo queda en su mínimo de 24 px. -->
<div style="display: flex; flex-wrap: wrap; gap: var(--arche-spacing-6); width: 100%">
<div style="inline-size: min(100%, 17.5rem)">
<Figure data-product="hermes" alt="" mark="hermes" ratio="4:3" caption="4:3 a 280 px" />
</div>
<div style="inline-size: min(100%, 17.5rem)">
<Figure data-product="hermes" alt="" mark="hermes" ratio="1:1" caption="1:1 a 280 px" />
</div>
</div> Si la imagen no carga
Pasa al estado sin foto y llama a onerror.

Errores de carga: 0
<script lang="ts">
import '@archeblack/ui/products/hermes.css';
import { Figure } from '@archeblack/ui';
let failures = $state(0);
</script>
<!-- Si la imagen no carga, pasa al estado sin foto y avisa con onerror. -->
<div style="display: grid; gap: var(--arche-spacing-3); width: 100%; max-width: 30rem">
<Figure
data-product="hermes"
src="/media/no-existe.jpg"
alt="Lo Numinoso en CONTROL"
mark="hermes"
ratio="16:9"
caption="La imagen no está: queda la luz con el sigilo."
onerror={() => failures++}
/>
<p style="margin: 0; font-size: var(--arche-font-size-xs); color: var(--arche-color-text-muted)">
Errores de carga: {failures}
</p>
</div> Proporciones
16:9, 4:3 y 1:1. La imagen se recorta al centro.



<script lang="ts">
import { Figure } from '@archeblack/ui';
import cover from '../../_media/el-alma-pide-locura.jpg';
const alt = 'La carta XII del Tarot frente a un bosque';
</script>
<!-- Proporciones fijas: la imagen se recorta al centro (object-fit: cover). -->
<div
style="display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: var(--arche-spacing-6); width: 100%"
>
<Figure src={cover} {alt} ratio="16:9" caption="16:9" />
<Figure src={cover} {alt} ratio="4:3" caption="4:3" />
<Figure src={cover} {alt} ratio="1:1" caption="1:1" />
</div> Props
| Prop | Descripción |
|---|---|
src? string | La imagen. Sin src, o si no carga, se ve el estado sin foto. |
alt string | Texto alternativo; "" si es decorativa. Sin foto, el marco lleva el mismo nombre. |
width, height? number | Tamaño intrínseco de la imagen: reserva su lugar antes de que cargue. |
srcset, sizes? string | Las del <img>. |
ratio? 'wide' | '4:3' | '16:9' | '1:1' | 'auto' Por defecto 'wide' | Proporción del marco. wide cambia con el ancho de la figura (con una consulta de contenedor: también dentro de una tarjeta): 4:3 por debajo de 30rem (480 px), 16:9 hasta 40rem (640 px) y 21:9 desde ahí. auto usa la de la imagen. |
bleed? 'none' | 'page' | 'full' Por defecto 'none' | Sangrado dentro de un Container con layout="grid": hasta el ancho de página o de borde a borde. El pie no sangra. |
caption? string | Snippet | Pie de foto. Con credit, sin punto final: los separa « · ». |
credit? string | Snippet | Crédito, después del pie y en text-subtle («Foto: Nombre»). |
mark? MarkName Por defecto 'arche' | Sigilo del estado sin foto: el del producto. |
priority? boolean Por defecto false | La imagen principal de la página: carga de inmediato (loading="eager", fetchpriority="high"). Sin priority, loading="lazy". |
onerror? (event: Event) => void | Se llama si la imagen no carga, después de pasar al estado sin foto. Otra src vuelve a intentarlo. |
class? ClassValue | Se suma a arche-figure. |
...rest HTMLAttributes | Van al <figure>. |
Accesibilidad
- Es un
<figure>con su<figcaption>: el pie queda asociado a la imagen. -
altes obligatorio. Describe lo que muestra la imagen; si ya lo dice el pie o es decorativa,alt="". - Sin foto, el marco es una imagen con nombre (
role="img"yaria-labelcon elalt), como una imagen que no carga; conalt="", queda oculto. El sigilo es decorativo. - Nada se anima: la luz del estado sin foto es fija.
- En colores forzados la luz desaparece y quedan el borde y el sigilo en el color del texto.
Qué evitar
- Esquinas, corchetes, rayados o la inicial del tema sobre la imagen. La imagen sola; sin foto, la luz con el sigilo (D4).
- Radio o un velo oscuro sobre la imagen de portada. La imagen a sangre, sin radio, y el texto debajo (D10).
- Un sigilo grande como logo en el estado sin foto. El tamaño de Figure: de 24 a 40 px. El sigilo es un detalle.
-
bleedfuera de unContaineren grilla.<Container layout="grid">: sus líneaspageyfullson las que usa el sangrado.