Las formas que un componente no puede ser, porque envuelven un cuerpo que solo conoce quien llama: la tarjeta de sección, la rejilla de datos, el menú desplegable y el armazón propio de los contenedores. tokens.css trae las clases y la aplicación escribe el marcado. Todo lo de abajo es el marcado que devuelve ui.Styleguide, con sus palabras en tu idioma, y las pruebas de ui contrastan ese marcado con tokens.css.
Cada ejemplo funciona de verdad, pero sus enlaces no llevan a ninguna parte.
box
La tarjeta de sección con relleno, y el título que va fuera de ella.
Qué tarjeta es cuál
rst-list y rst-card no tienen relleno a propósito: contienen una serie de filas, y cada fila se rellena a sí misma. Mete dentro un formulario, un párrafo, una tira de enlaces o cualquier cosa que no sea una fila y se dibujará pegado al borde: el texto tocando el borde es la señal. La tarjeta con relleno para contenido cualquiera es rst-box, con su título como rst-box-head hermano justo antes.
<divrst-box-head>
<h2>Liquidación</h2>
<arst-btnhref="/payout/edit">Editar</a>
</div>
<sectionrst-box>
<p>Todo lo que hay en una pantalla va dentro de cajas.</p>
<divrst-box-foot>Última actualización hace 2 horas</div>
</section>
button
Los botones tienen cuatro variantes y tres tamaños, y un enlace puede parecer uno. Para el indicador que muestra un formulario mientras se envía, mira form-foot.
El menú details/summary que hay detrás de los menús de desbordamiento de la cabecera y del filtro de una barra de lista, más un filtro aplicado como etiqueta que se puede quitar.
Los atributos que dan a un formulario su ritmo y su barra de guardar. Ningún parcial los emite: envuelven una serie de campos que compone quien los usa.
Un signo de interrogación con borde que enlaza a un artículo de ayuda. Su tooltip de CSS es decoración; el enlace lleva su propia etiqueta en una frase completa.
El vocabulario real de las tablas de datos: la tarjeta define sus columnas una vez y las filas solo eligen celdas.
Las pantallas se apilan en vertical
Una pantalla es una columna: page-header, luego section-header + tarjeta, luego el siguiente section-header + tarjeta, en orden de lectura. La disposición horizontal queda reservada a los idiomas que la traen: rst-box-head, rst-field-row, rst-lbar, celdas rst-lrow, rst-seg-tabs.
Un modal es una URL propia, no un estado del cliente: la página de debajo marcada como inert, el panel encima y un enlace normal para cerrar.
<divrst-backdropinert>
<divrst-page>
<h1>Ajustes</h1>
</div>
</div>
<divrst-modal-overlay>
<dialogrst-modal-panelopenaria-labelledby="modal-title">
<nav>
<ahref="/settings/profile"aria-current="page">Perfil</a>
<ahref="/settings/billing">Facturación</a>
<ahref="/settings/notifications">Notificaciones</a>
</nav>
<section>
<arst-modal-closehref="/settings"aria-label="Cerrar los ajustes">✕</a>
<h2id="modal-title">Perfil</h2>
<p>Actualiza el nombre y la foto que se muestran en toda la cuenta.</p>
</section>
</dialog>
</div>
Una fila de cifras a lo largo de la parte superior de un panel.
<divrst-stats>
<divrst-stat="lead">
<spanrst-stat-label>Ingresos de este mes</span>
<spanrst-stat-num>€48,210</span>
<spanrst-stat-deltarst-tone="positive">+12%</span>
<spanrst-stat-note>frente al mes pasado</span>
</div>
<divrst-stat>
<spanrst-stat-label>Pedidos de hoy</span>
<spanrst-stat-num>318</span>
</div>
<divrst-stat>
<spanrst-stat-label>Cesta media</span>
<spanrst-stat-num>€41.20</span>
<spanrst-stat-deltarst-tone="negative">−3%</span>
</div>
<divrst-stat>
<spanrst-stat-label>Reembolsos</span>
<spanrst-stat-num>7</span>
</div>
</div>
tblock
Una tarjeta con borde cuyo cuerpo solo se muestra mientras su interruptor está activado, mediante :has(). El interruptor manda; mostrarlo es una comodidad visual.
<divrst-tblock>
<labelrst-tblock-head>
<inputtype="checkbox"name="notify"checked>
<spanrst-switch-trackaria-hidden="true"></span>
<span>
<spanrst-tblock-title>Notificaciones por correo</span>
<spanrst-tblock-desc>Se envía por cada respuesta en un hilo en el que participas.</span>
</span>
</label>
<divrst-tblock-body>
<divrst-field>
<labelrst-field-labelfor="notify-freq">Frecuencia</label>
<inputrst-inputtype="text"id="notify-freq"name="notify_freq"value="Resumen diario">
</div>
</div>
</div>