As formas que um componente não pode ser, porque envolvem um corpo que só quem chama conhece: o cartão de secção, a grelha de dados, o menu de revelação e a moldura própria dos invólucros. O tokens.css traz as classes e a aplicação escreve a marcação. Tudo o que está abaixo é a marcação que ui.Styleguide devolve, com as palavras na sua língua, e os testes de ui confrontam essa marcação com tokens.css.
Cada exemplo funciona de verdade, mas as suas ligações não levam a lado nenhum.
box
O cartão de secção com espaçamento, e o título que fica fora dele.
Qual cartão é qual
O rst-list e o rst-card não têm espaçamento de propósito: seguram uma série de linhas, e cada linha espaça-se a si mesma. Meta lá dentro um formulário, um parágrafo, uma tira de ligações ou qualquer coisa que não seja uma linha e aparece encostado ao contorno; o texto a tocar na borda é o sinal. O cartão com espaçamento para conteúdo qualquer é o rst-box, com o seu título como rst-box-head irmão logo antes.
<divrst-box-head>
<h2>Pagamento</h2>
<arst-btnhref="/payout/edit">Editar</a>
</div>
<sectionrst-box>
<p>Tudo o que está num ecrã fica dentro de caixas.</p>
<divrst-box-foot>Atualizado há 2 horas</div>
</section>
button
Os botões têm quatro variantes e três tamanhos, e uma ligação pode parecer um. Para o indicador que um formulário mostra enquanto é enviado, veja form-foot.
O menu details/summary por trás dos menus de excedente do cabeçalho e do filtro de uma barra de lista, mais um filtro aplicado como etiqueta removível.
Os atributos que dão a um formulário o seu ritmo e a sua barra de guardar. Nenhum parcial os emite; envolvem uma série de campos composta por quem os usa.
Um ponto de interrogação com contorno que liga a um artigo de ajuda. A sua dica de CSS é decoração; a ligação leva a sua própria etiqueta, em frase completa.
O vocabulário a sério das tabelas de dados: o cartão define as suas colunas uma vez e as linhas só escolhem células.
Os ecrãs empilham-se na vertical
Um ecrã é uma coluna: page-header, depois section-header + cartão, depois o section-header + cartão seguinte, por ordem de leitura. A disposição horizontal fica reservada às expressões que a trazem: rst-box-head, rst-field-row, rst-lbar, células rst-lrow, rst-seg-tabs.
Um modal é um URL próprio, não um estado do cliente: a página por baixo marcada como inert, o painel por cima e uma ligação simples para fechar.
<divrst-backdropinert>
<divrst-page>
<h1>Definições</h1>
</div>
</div>
<divrst-modal-overlay>
<dialogrst-modal-panelopenaria-labelledby="modal-title">
<nav>
<ahref="/settings/profile"aria-current="page">Perfil</a>
<ahref="/settings/billing">Faturação</a>
<ahref="/settings/notifications">Notificações</a>
</nav>
<section>
<arst-modal-closehref="/settings"aria-label="Fechar as definições">✕</a>
<h2id="modal-title">Perfil</h2>
<p>Atualize o nome e a fotografia que aparecem em toda a conta.</p>
</section>
</dialog>
</div>
Uma linha de números ao longo do topo de um painel.
<divrst-stats>
<divrst-stat="lead">
<spanrst-stat-label>Receita deste mês</span>
<spanrst-stat-num>€48,210</span>
<spanrst-stat-deltarst-tone="positive">+12%</span>
<spanrst-stat-note>face ao mês passado</span>
</div>
<divrst-stat>
<spanrst-stat-label>Encomendas de hoje</span>
<spanrst-stat-num>318</span>
</div>
<divrst-stat>
<spanrst-stat-label>Cesto médio</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
Um cartão com contorno cujo corpo só aparece enquanto o seu interruptor está ligado, através de :has(). O interruptor é que manda; mostrar é apenas uma conveniência.
<divrst-tblock>
<labelrst-tblock-head>
<inputtype="checkbox"name="notify"checked>
<spanrst-switch-trackaria-hidden="true"></span>
<span>
<spanrst-tblock-title>Notificações por e-mail</span>
<spanrst-tblock-desc>Enviado por cada resposta numa conversa em que participa.</span>
</span>
</label>
<divrst-tblock-body>
<divrst-field>
<labelrst-field-labelfor="notify-freq">Frequência</label>
<inputrst-inputtype="text"id="notify-freq"name="notify_freq"value="Resumo diário">
</div>
</div>
</div>