@codenhub/styles 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +18 -16
- package/README.es.md +61 -0
- package/README.md +21 -16
- package/README.pt-BR.md +61 -0
- package/dist/aesthetics/chunky-tile.css +1 -1
- package/dist/aesthetics/cyber.css +1 -1
- package/dist/aesthetics/glass.css +1 -1
- package/dist/aesthetics/index.css +2 -2
- package/dist/aesthetics/neobrutalism.css +1 -1
- package/dist/aesthetics/pixel.css +1 -1
- package/dist/aesthetics/sketch.css +1 -1
- package/dist/components.css +2 -2
- package/dist/index.css +2 -2
- package/dist/native.css +2 -2
- package/dist/palette.css +1 -1
- package/dist/theme.css +2 -2
- package/dist/tw/aesthetics/chunky-tile.css +81 -23
- package/dist/tw/aesthetics/cyber.css +86 -29
- package/dist/tw/aesthetics/glass.css +177 -50
- package/dist/tw/aesthetics/neobrutalism.css +98 -22
- package/dist/tw/aesthetics/pixel.css +93 -8
- package/dist/tw/aesthetics/sketch.css +87 -22
- package/dist/tw/box.css +21 -2
- package/dist/tw/components/feedback.css +2 -2
- package/dist/tw/components/form.css +58 -19
- package/dist/tw/components/index.css +3 -4
- package/dist/tw/components/surface.css +15 -6
- package/dist/tw/index.css +1 -1
- package/dist/tw/intent.css +6 -5
- package/dist/tw/native.css +8 -8
- package/dist/tw/palette.css +6 -6
- package/dist/tw/reset.css +15 -15
- package/dist/tw/theme.css +29 -17
- package/dist/tw/utilities/content.css +43 -1
- package/dist/tw/utilities/layout.css +26 -12
- package/docs/accessibility.md +89 -60
- package/docs/changelog/0.1.1.md +1 -0
- package/docs/changelog/0.2.0.md +1 -0
- package/docs/changelog/0.3.0.md +1 -0
- package/docs/changelog/0.4.0.md +1 -0
- package/docs/changelog/0.5.0.md +8 -3
- package/docs/changelog/0.6.0.md +2 -1
- package/docs/changelog/0.7.0.md +50 -0
- package/docs/changelog/index.md +1 -0
- package/docs/concepts.md +188 -46
- package/docs/es/accessibility.md +150 -0
- package/docs/es/concepts.md +212 -0
- package/docs/es/index.md +104 -0
- package/docs/es/integrating/astro.md +35 -0
- package/docs/es/integrating/index.md +47 -0
- package/docs/es/integrating/nextjs.md +67 -0
- package/docs/es/integrating/svelte.md +45 -0
- package/docs/es/integrating/tailwind.md +78 -0
- package/docs/es/integrating/vue.md +31 -0
- package/docs/es/integrating/without-a-bundler.md +115 -0
- package/docs/es/setup.md +180 -0
- package/docs/es/usage/aesthetics.md +276 -0
- package/docs/es/usage/buttons.md +131 -0
- package/docs/es/usage/composing.md +164 -0
- package/docs/es/usage/content-and-layout.md +215 -0
- package/docs/es/usage/customizing.md +298 -0
- package/docs/es/usage/feedback.md +153 -0
- package/docs/es/usage/forms.md +231 -0
- package/docs/es/usage/index.md +29 -0
- package/docs/es/usage/solo.md +84 -0
- package/docs/es/usage/theming.md +296 -0
- package/docs/es/usage/tooltips.md +127 -0
- package/docs/index.md +85 -26
- package/docs/integrating/astro.md +3 -4
- package/docs/integrating/index.md +18 -13
- package/docs/integrating/nextjs.md +3 -4
- package/docs/integrating/svelte.md +5 -4
- package/docs/integrating/tailwind.md +16 -3
- package/docs/integrating/vue.md +3 -4
- package/docs/integrating/without-a-bundler.md +114 -0
- package/docs/pt-BR/accessibility.md +150 -0
- package/docs/pt-BR/concepts.md +212 -0
- package/docs/pt-BR/index.md +104 -0
- package/docs/pt-BR/integrating/astro.md +35 -0
- package/docs/pt-BR/integrating/index.md +47 -0
- package/docs/pt-BR/integrating/nextjs.md +67 -0
- package/docs/pt-BR/integrating/svelte.md +45 -0
- package/docs/pt-BR/integrating/tailwind.md +78 -0
- package/docs/pt-BR/integrating/vue.md +31 -0
- package/docs/pt-BR/integrating/without-a-bundler.md +115 -0
- package/docs/pt-BR/setup.md +180 -0
- package/docs/pt-BR/usage/aesthetics.md +276 -0
- package/docs/pt-BR/usage/buttons.md +131 -0
- package/docs/pt-BR/usage/composing.md +164 -0
- package/docs/pt-BR/usage/content-and-layout.md +215 -0
- package/docs/pt-BR/usage/customizing.md +298 -0
- package/docs/pt-BR/usage/feedback.md +153 -0
- package/docs/pt-BR/usage/forms.md +231 -0
- package/docs/pt-BR/usage/index.md +29 -0
- package/docs/pt-BR/usage/solo.md +84 -0
- package/docs/pt-BR/usage/theming.md +296 -0
- package/docs/pt-BR/usage/tooltips.md +127 -0
- package/docs/setup.md +134 -91
- package/docs/usage/aesthetics.md +76 -66
- package/docs/usage/buttons.md +108 -40
- package/docs/usage/composing.md +105 -92
- package/docs/usage/content-and-layout.md +157 -126
- package/docs/usage/customizing.md +107 -37
- package/docs/usage/feedback.md +134 -71
- package/docs/usage/forms.md +176 -107
- package/docs/usage/index.md +18 -14
- package/docs/usage/solo.md +83 -0
- package/docs/usage/theming.md +260 -118
- package/docs/usage/tooltips.md +90 -49
- package/llms-full.txt +2358 -1313
- package/llms.txt +24 -22
- package/package.json +25 -32
- package/dist/tw/components/loader.css +0 -116
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Botões
|
|
3
|
+
description: Ações destrutivas e secundárias, botões de ícone, tamanhos, links com cara de botão, estados desabilitados e como carregar ícones.
|
|
4
|
+
order: 1
|
|
5
|
+
source: 191dd268b7da59fd3b3bf82c23aa192207c89381
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Botões
|
|
9
|
+
|
|
10
|
+
A tela de configurações tem um botão de salvar e um de cancelar. Esta página acrescenta o resto das ações: uma zona de perigo com um botão destrutivo de excluir, um botão de ícone que copia uma chave de API e botões menores para uma linha mais densa. Ela também trata de botões desabilitados e de como carregar os ícones usados aqui e nas próximas páginas.
|
|
11
|
+
|
|
12
|
+
## Adicione uma zona de perigo
|
|
13
|
+
|
|
14
|
+
Uma ação destrutiva fica num card próprio, no fim da tela. O card é soft e destrutivo, para ser lido como um aviso; o botão é sólido, para ser o elemento que mais chama atenção naquele card:
|
|
15
|
+
|
|
16
|
+
```html
|
|
17
|
+
<section class="card soft destructive stack" aria-labelledby="danger-title">
|
|
18
|
+
<h2 class="text-title-sm" id="danger-title">Delete account</h2>
|
|
19
|
+
<p>This removes your projects, invoices, and API keys. It cannot be undone.</p>
|
|
20
|
+
<div class="cluster">
|
|
21
|
+
<button class="btn destructive" type="button">Delete account</button>
|
|
22
|
+
<button class="btn ghost" type="button">Export data first</button>
|
|
23
|
+
</div>
|
|
24
|
+
</section>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
O card e o botão declaram `.destructive` cada um, porque [a intenção não é herdada](../concepts.md#intenção-qual-cor). Pelo mesmo motivo, o botão de exportar mantém a cor neutra dentro do card vermelho.
|
|
28
|
+
|
|
29
|
+
## Escolha um preenchimento e uma borda
|
|
30
|
+
|
|
31
|
+
Um botão aceita uma intenção, uma classe de preenchimento e uma classe de borda, todas opcionais. Sem nenhuma, o botão é sólido e sem borda:
|
|
32
|
+
|
|
33
|
+
```html
|
|
34
|
+
<button class="btn primary">Save changes</button>
|
|
35
|
+
<button class="btn secondary">Preview</button>
|
|
36
|
+
<button class="btn primary soft">Invite member</button>
|
|
37
|
+
<button class="btn destructive ghost edged">Revoke key</button>
|
|
38
|
+
<button class="btn ghost">Cancel</button>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Um botão **neutro** nunca é preenchido por completo. A cor dele é a própria cor do texto da página, então um preenchimento total seria um bloco preto ou branco, o elemento que mais chama atenção na página justamente para a intenção que não significa nada em particular. Em vez disso, um botão neutro `.solid` para em 20% de preenchimento, um cinza discreto um tom mais escuro que o `.soft`. Toda intenção com nome preenche até 100%.
|
|
42
|
+
|
|
43
|
+
No hover, o preenchimento de um botão aumenta em `--hover-step` (14%), então um botão `.ghost` ganha um tom e um `.solid` muda para a cor de hover da sua intenção. Ao ser pressionado, ele encolhe um pouco (`scale(0.97)`); uma [estética](./aesthetics.md) pode trocar isso pelo seu próprio efeito de clique, e a preferência do usuário por movimento reduzido o desativa.
|
|
44
|
+
|
|
45
|
+
## Tamanhos e formatos
|
|
46
|
+
|
|
47
|
+
| Classe | Efeito |
|
|
48
|
+
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
49
|
+
| _nenhuma_ | Pelo menos 2.5rem de altura (`--control-height`), 1rem de padding lateral e o mesmo tamanho de fonte do texto ao redor. |
|
|
50
|
+
| `.sm` | Pelo menos 2rem de altura, 0.75rem de padding lateral, texto de 0.875rem. |
|
|
51
|
+
| `.lg` | Pelo menos 3rem de altura, 1.25rem de padding lateral, texto de 1.0625rem. |
|
|
52
|
+
| `.pill` | Extremidades totalmente arredondadas. |
|
|
53
|
+
| `.icon` | Quadrado. Pelo menos 2.5rem de cada lado, 2rem com `.sm`, 3rem com `.lg`. |
|
|
54
|
+
| `.p-xs` | O padding mais justo (0.5rem nas laterais, 0.125rem em cima e embaixo). Também remove a altura mínima, para que o botão caiba numa célula de tabela ou numa toolbar densa. |
|
|
55
|
+
| `.p-sm` | Padding compacto (0.625rem nas laterais, 0.25rem em cima e embaixo). |
|
|
56
|
+
| `.p-lg` | Padding espaçoso (1.5rem nas laterais, 0.75rem em cima e embaixo). |
|
|
57
|
+
|
|
58
|
+
Uma classe de tamanho e uma de padding podem ser combinadas. Só o `.p-xs` remove a altura mínima de um botão com rótulo; todas as outras combinações a mantêm. Num botão de ícone, qualquer classe `.p-*` remove o tamanho mínimo, e o botão passa a ter o tamanho do ícone mais esse padding: 0.125rem, 0.25rem ou 0.75rem ao redor.
|
|
59
|
+
|
|
60
|
+
O visual base desenha cantos que acompanham o tamanho: um botão `.sm` ou `.p-sm` tem cantos um pouco menores que o padrão, e um `.lg`, um pouco maiores.
|
|
61
|
+
|
|
62
|
+
## Botões de ícone
|
|
63
|
+
|
|
64
|
+
A lista de chaves de API da tela de configurações tem um botão de copiar ao lado de cada chave. Um botão só com ícone precisa de um nome acessível, porque o ícone não tem texto que um leitor de tela consiga ler:
|
|
65
|
+
|
|
66
|
+
```html
|
|
67
|
+
<button class="btn icon ghost" type="button" aria-label="Copy API key">
|
|
68
|
+
<i class="ic-lucide-copy" aria-hidden="true"></i>
|
|
69
|
+
</button>
|
|
70
|
+
<button class="btn ghost sm" type="button">
|
|
71
|
+
<i class="ic-lucide-download" aria-hidden="true"></i>
|
|
72
|
+
Download invoice
|
|
73
|
+
</button>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Um botão é uma linha flex com espaçamento de 0.5rem, então um ícone ao lado de um rótulo fica espaçado sem markup extra.
|
|
77
|
+
|
|
78
|
+
### Carregando ícones
|
|
79
|
+
|
|
80
|
+
Este pacote não entrega ícones. Os exemplos desta documentação usam o `@codenhub/icons` com a família Lucide, e os nomes de classe dele sempre incluem a família, como `ic-lucide-copy`. Instale e carregue uma vez, ao lado deste pacote:
|
|
81
|
+
|
|
82
|
+
```sh
|
|
83
|
+
pnpm add @codenhub/icons
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Com CSS compilado, importe as regras base e cada família que você usa:
|
|
87
|
+
|
|
88
|
+
```css
|
|
89
|
+
@import "@codenhub/styles";
|
|
90
|
+
@import "@codenhub/icons";
|
|
91
|
+
@import "@codenhub/icons/lucide";
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Com o código-fonte do Tailwind, importe o entrypoint de Tailwind dele depois do deste pacote:
|
|
95
|
+
|
|
96
|
+
```css
|
|
97
|
+
@import "@codenhub/styles/tw";
|
|
98
|
+
@import "@codenhub/icons/tw";
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Qualquer outro ícone também funciona: um `<svg>` inline com `stroke="currentColor"` ou `fill="currentColor"` pega a cor do texto do botão da mesma forma.
|
|
102
|
+
|
|
103
|
+
## Links com cara de botão
|
|
104
|
+
|
|
105
|
+
Um link que navega, como "View billing history", continua sendo um link. Escreva-o como `<a href>` com `.btn`, e ele ganha o mesmo visual:
|
|
106
|
+
|
|
107
|
+
```html
|
|
108
|
+
<a class="btn secondary ghost edged" href="/settings/billing">View billing history</a>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Não use `<div class="btn">` nem `<span class="btn">`: eles parecem botões, mas não podem receber foco nem ser acionados pelo teclado. Use `<button>` para ações e `<a href>` para navegação.
|
|
112
|
+
|
|
113
|
+
## Botões desabilitados
|
|
114
|
+
|
|
115
|
+
Qualquer um destes deixa um botão com aparência de desabilitado: o atributo `disabled`, `.disabled`, `aria-disabled="true"` ou `data-disabled`. Um botão desabilitado é desenhado com 58% de opacidade e cursor de não permitido, e não muda no hover nem ao ser pressionado.
|
|
116
|
+
|
|
117
|
+
```html
|
|
118
|
+
<button class="btn primary" type="submit" disabled>Save changes</button>
|
|
119
|
+
|
|
120
|
+
<a class="btn ghost" aria-disabled="true">Download invoice</a>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Só o atributo `disabled` impede o botão de funcionar. `.disabled`, `aria-disabled` e `data-disabled` mudam apenas a aparência: um clique ou a tecla Enter ainda o acionam, então o seu código precisa ignorá-lo. `aria-disabled` é a escolha certa quando o botão deve continuar focável, por exemplo para que um tooltip explique por que ele está desabilitado. Um link não tem atributo `disabled`, então remova também o `href` dele quando ele não deve navegar.
|
|
124
|
+
|
|
125
|
+
## Estado de carregamento
|
|
126
|
+
|
|
127
|
+
Não existe classe de carregamento. Um botão carregando é um botão desabilitado com um ícone de spinner que você fornece, e a página de [Feedback](./feedback.md#mostre-que-o-formulário-está-salvando) monta isso para o botão de salvar. Desabilite o botão para que um segundo clique não envie o formulário duas vezes.
|
|
128
|
+
|
|
129
|
+
## A seguir
|
|
130
|
+
|
|
131
|
+
Os botões estão prontos; o card que eles salvam ainda não tem nada para salvar. [Formulários](./forms.md) acrescenta os campos do perfil.
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Composição
|
|
3
|
+
description: Consulta sobre como intenção, apresentação, estética e elevação se combinam, o visual padrão de cada componente e quais classes cada componente lê.
|
|
4
|
+
order: 8
|
|
5
|
+
source: 8aa84776103ce27781f924220cc7c621231e5734
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Composição
|
|
9
|
+
|
|
10
|
+
Esta é uma página de consulta. [Montando uma tela](../concepts.md) apresenta intenção, apresentação e estética; esta página tem as regras completas para combiná-las, o visual padrão de cada componente, quais classes cada componente lê e a elevação.
|
|
11
|
+
|
|
12
|
+
## Combinando classes
|
|
13
|
+
|
|
14
|
+
```html
|
|
15
|
+
<div class="soft">
|
|
16
|
+
<button class="btn primary">Soft primary button</button>
|
|
17
|
+
<span class="badge success">Soft success badge</span>
|
|
18
|
+
<button class="btn primary ghost edged">Outlined: the class on the element wins</button>
|
|
19
|
+
</div>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
- **A apresentação é herdada.** `.solid`, `.soft`, `.ghost`, `.edged` e `.edgeless` funcionam no componente ou em qualquer contêiner, e uma classe no elemento vence uma herdada de um contêiner. Um contêiner define o visual de tudo dentro dele, e qualquer elemento pode escolher o seu.
|
|
23
|
+
- **Estéticas e [tokens de material](./customizing.md#tokens-de-material) são herdados** da mesma forma.
|
|
24
|
+
- **A intenção não é herdada.** `.primary` e as outras classes de intenção colorem só o elemento em que estão. Um contêiner que recolorisse silenciosamente tudo dentro dele deixaria vermelho o botão neutro de cancelar de um card vermelho de zona de perigo. `.neutral` dá nome ao padrão; use-o onde um elemento receberia uma intenção, como uma linha de tabela dentro de uma tabela `.success`. Veja [Temas → Tokens de intenção](./theming.md#tokens-de-intenção).
|
|
25
|
+
- **A elevação não é herdada.** `.raised` eleva só o elemento em que está; veja [Elevação](#elevação).
|
|
26
|
+
|
|
27
|
+
## Padrões dos componentes
|
|
28
|
+
|
|
29
|
+
Sem nenhuma classe de apresentação nele ou em volta dele, cada componente tem o seu próprio visual. "Elevação em repouso" é quanta profundidade ele recebe quando uma [estética](./aesthetics.md) desenha profundidade; sem estética, nada tem sombra.
|
|
30
|
+
|
|
31
|
+
| Componente | Preenchimento | Borda | Elevação em repouso |
|
|
32
|
+
| -------------------------------- | ------------- | --------- | ------------------- |
|
|
33
|
+
| `.btn` | `.solid` | sem borda | 1 |
|
|
34
|
+
| `.card` | `.ghost` | com borda | 1 |
|
|
35
|
+
| `.panel` | `.soft` | sem borda | 0 |
|
|
36
|
+
| `.alert` | `.soft` | com borda | 0 |
|
|
37
|
+
| `.badge` | `.soft` | sem borda | 0 |
|
|
38
|
+
| `.ipt`, `.textarea`, `.select` | `.ghost` | com borda | 0 |
|
|
39
|
+
| `.input-group` | `.ghost` | com borda | 0 |
|
|
40
|
+
| `.checkbox`, `.radio`, `.switch` | `.soft` | com borda | 0 |
|
|
41
|
+
| `.kbd` | `.soft` | com borda | 0 |
|
|
42
|
+
| `.code`, `.pre` | `.soft` | sem borda | 0 |
|
|
43
|
+
| `.data-table` | `.soft` | sem borda | 0 |
|
|
44
|
+
| `.progress` (o trilho) | `.soft` | sem borda | 0 |
|
|
45
|
+
| `.tooltip-bubble` | `.solid` | com borda | 0 |
|
|
46
|
+
| `.quote` | `.ghost` | com borda | 0 |
|
|
47
|
+
| `.skeleton`, `.divider` | Só a intenção | Nenhuma | 0 |
|
|
48
|
+
|
|
49
|
+
Um `.solid` neutro preenche só até 20%; veja [Temas → Tokens de intenção](./theming.md#tokens-de-intenção). As exceções neutras a esses preenchimentos estão em [Apresentação](#apresentação).
|
|
50
|
+
|
|
51
|
+
## Apresentação
|
|
52
|
+
|
|
53
|
+
A apresentação são duas escolhas separadas. `.solid`, `.soft` e `.ghost` definem quanto da cor da intenção preenche um componente. `.edged` e `.edgeless` definem se ele desenha uma borda. Elas definem [tokens de apresentação](./customizing.md#tokens-de-apresentação) e nada mais.
|
|
54
|
+
|
|
55
|
+
| Classe | Visual | `--ui-fill` | `--ui-fg-on-fill` | `--ui-border` |
|
|
56
|
+
| ----------- | ------------------------------------------------------------------ | ----------- | ----------------- | ------------- |
|
|
57
|
+
| `.solid` | Preenchido com a cor da intenção, com texto em contraste. | `100%` | `100%` | |
|
|
58
|
+
| `.soft` | Um tom claro, com texto na cor da intenção. | `12%` | `0%` | |
|
|
59
|
+
| `.ghost` | Sem preenchimento em repouso, com texto na cor da intenção. | `0%` | `0%` | |
|
|
60
|
+
| `.edged` | Uma borda na cor da intenção, tão grossa quanto a estética define. | | | `100%` |
|
|
61
|
+
| `.edgeless` | Sem borda. | | | `0%` |
|
|
62
|
+
|
|
63
|
+
```html
|
|
64
|
+
<button class="btn primary">Solid, the button default</button>
|
|
65
|
+
<button class="btn soft edged">Tinted, with a border</button>
|
|
66
|
+
<button class="btn primary ghost edged">Outline</button>
|
|
67
|
+
<button class="btn ghost">Ghost: picks up a tint on hover</button>
|
|
68
|
+
<input class="ipt soft edgeless" aria-label="Search" />
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Uma classe de preenchimento nunca define a borda, e uma classe de borda nunca define o preenchimento. `.solid.edged` tem o mesmo visual que `.solid.edgeless`, porque a borda some à medida que o preenchimento aumenta.
|
|
72
|
+
|
|
73
|
+
A borda é o contorno do componente e nada mais. Linhas dentro de um componente, como as linhas divisórias entre as linhas de uma tabela, são um controle separado; veja [Conteúdo e layout → Linhas divisórias de tabela](./content-and-layout.md#linhas-divisórias-de-tabela).
|
|
74
|
+
|
|
75
|
+
### Superfícies neutras ficam sem tom em repouso
|
|
76
|
+
|
|
77
|
+
Um `.card.soft`, um `.panel` e um `.alert` neutros não mostram tom em repouso. Em vez disso, eles usam o tom de fundo discreto um passo distante da página (`--color-foreground`), porque um tom cinza em toda caixa neutra parece sujo, e não discreto.
|
|
78
|
+
|
|
79
|
+
- Um `.card.soft` com `.interactive` ou `.hoverable` mostra o tom no hover. Um `.card.soft` simples e um `.panel` não têm estado de hover.
|
|
80
|
+
- Com uma das seis intenções embutidas, os três mantêm o tom comum de 12%, e um card o aprofunda no hover. Uma intenção definida por você é tratada como neutra aqui; veja [Temas → Sua própria intenção](./theming.md#sua-própria-intenção).
|
|
81
|
+
- Um `.badge` mantém o seu tom de 12% mesmo quando neutro. Ele não tem borda, então, sem o tom, sumiria no texto em volta.
|
|
82
|
+
|
|
83
|
+
`.kbd`, `.code` e `.pre` funcionam de outro jeito. Eles ficam sobre o tom suave da sua intenção, `--intent-subtle`, que é `--color-surface` no neutro, e uma intenção embutida adiciona 12% da sua cor por cima. Uma intenção definida por você mostra o seu próprio tom `--intent-subtle`, sem esses 12% a mais.
|
|
84
|
+
|
|
85
|
+
### Controles de texto e toggles
|
|
86
|
+
|
|
87
|
+
- **Controles de texto** limitam o seu preenchimento para que o texto digitado continue legível: no máximo 6% vindo de um contêiner, 12% com o seu próprio `.soft` e 20% com o seu próprio `.solid`. Eles ignoram um `.edgeless` vindo de um contêiner e respeitam o seu próprio. Veja [Formulários → Preenchimento e borda em controles de texto](./forms.md#preenchimento-e-borda-em-controles-de-texto).
|
|
88
|
+
- **Toggles** limitam o preenchimento desmarcado a 40% e preenchem até 100% quando marcados. `.checkbox` e `.radio` sempre desenham a sua borda, assim como `.switch.ghost`. Veja [Formulários → Cores de marcado e desmarcado](./forms.md#cores-de-marcado-e-desmarcado).
|
|
89
|
+
|
|
90
|
+
### Balões de tooltip
|
|
91
|
+
|
|
92
|
+
Um balão de tooltip é sempre preenchido e opaco, e desenha uma borda fina que só o seu próprio `.edgeless` remove. Sem intenção, ele usa `--color-tooltip`; uma intenção o preenche com a cor dela. [Tooltips → Como o balão aparece](./tooltips.md#como-o-balão-aparece) traz as cores.
|
|
93
|
+
|
|
94
|
+
### Trilhos de progresso
|
|
95
|
+
|
|
96
|
+
`.progress` lê as duas escolhas no seu trilho. A parte preenchida é sempre a cor da intenção com força total. `.solid` não é suportado no trilho, porque o trilho e a parte preenchida ficariam da mesma cor. `.ghost.edgeless` renderiza, mas deixa o trilho sem moldura visível; `.ghost.edged` desenha um contorno em volta dele.
|
|
97
|
+
|
|
98
|
+
### Combinações não suportadas
|
|
99
|
+
|
|
100
|
+
| Componente | Classe | O que acontece |
|
|
101
|
+
| ----------------------- | ----------- | ----------------------------------------------------------------------------------- |
|
|
102
|
+
| `.kbd`, `.code`, `.pre` | `.ghost` | O chip ainda desenha o seu fundo tingido, porque é esse fundo que faz dele um chip. |
|
|
103
|
+
| `.progress` | `.solid` | O trilho e a parte preenchida ficam da mesma cor, então não dá para ver o valor. |
|
|
104
|
+
| `.checkbox`, `.radio` | `.edgeless` | Ignorado: a borda é sempre desenhada. |
|
|
105
|
+
|
|
106
|
+
## Referência de eixos por componente
|
|
107
|
+
|
|
108
|
+
Quais classes mudam cada componente. "Material" é o que uma [estética](./aesthetics.md) pode mudar nele: "Formato" significa canto, espessura da borda, sombra, hover e contorno; as entradas mais restritas listam o que se aplica.
|
|
109
|
+
|
|
110
|
+
| Componentes | Intenção | Preenchimento | Borda | Material |
|
|
111
|
+
| ------------------------------------------------------------- | -------- | ------------- | ----- | ------------------ |
|
|
112
|
+
| `.btn`, `.alert`, `.badge`, `.card`, `.panel` | Sim | Sim | Sim | Formato |
|
|
113
|
+
| `.kbd`, `.data-table` | Sim | Sim | Sim | Canto e borda |
|
|
114
|
+
| `.quote` | Sim | Sim | Sim | Espessura da borda |
|
|
115
|
+
| `.divider`, `.skeleton` | Sim | Não | Não | Não |
|
|
116
|
+
| `.ipt`, `.textarea`, `.select`, `.text-control` | Sim | Sim | Sim | Formato |
|
|
117
|
+
| `.input-group` | Sim | Sim | Sim | Formato |
|
|
118
|
+
| `.surface` | Sim | Sim | Sim | Formato |
|
|
119
|
+
| `.checkbox`, `.radio` | Sim | Sim | Não | Canto e borda |
|
|
120
|
+
| `.switch` | Sim | Sim | Sim | Canto e borda |
|
|
121
|
+
| `.progress` | Sim | Sim | Sim | Canto e borda |
|
|
122
|
+
| `.code`, `.pre` | Sim | Sim | Sim | Canto e contorno |
|
|
123
|
+
| `.tooltip-bubble` | Sim | Sim | Sim | Formato e desfoque |
|
|
124
|
+
| `.table-wrap`, `.quote-inline`, utilitários de layout e texto | Não | Não | Não | Não |
|
|
125
|
+
|
|
126
|
+
"Sim" significa que a classe muda o componente, e "Não" que não muda; os testes do pacote conferem os dois. O que cada componente faz com uma classe:
|
|
127
|
+
|
|
128
|
+
| Componente | Lê |
|
|
129
|
+
| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
|
130
|
+
| `.btn`, `.alert`, `.badge`, `.card`, `.panel` | Preenchimento, cor do texto, borda e espessura da borda. |
|
|
131
|
+
| `.kbd` | Preenchimento, cor do texto, borda e espessura da borda. |
|
|
132
|
+
| `.data-table` | Preenchimento e cor do texto do cabeçalho, borda e espessura da borda. |
|
|
133
|
+
| `.ipt`, `.textarea`, `.select`, `.text-control` | Borda, espessura da borda e um preenchimento limitado. |
|
|
134
|
+
| `.input-group` | Borda, espessura da borda e um preenchimento limitado. |
|
|
135
|
+
| `.checkbox`, `.radio` | Um preenchimento limitado, marcado e desmarcado. |
|
|
136
|
+
| `.switch` | Borda, espessura da borda e um preenchimento limitado. |
|
|
137
|
+
| `.quote` | Preenchimento, cor do texto, borda e espessura da borda. |
|
|
138
|
+
| `.code`, `.pre`, `.tooltip-bubble` | Preenchimento, cor do texto, borda e material. |
|
|
139
|
+
| `.progress` | Preenchimento do trilho, borda e espessura da borda. A parte preenchida é sempre a cor cheia da intenção. |
|
|
140
|
+
| `.skeleton`, `.divider` | Só a intenção. |
|
|
141
|
+
|
|
142
|
+
Classes de estado e modificadoras, como `.interactive`, `.hoverable`, `.pressable`, `.p-sm` e `.vertical`, são documentadas junto com o seu componente. Um controle inválido é marcado com `aria-invalid="true"`, e não com uma classe; veja [Formulários](./forms.md#mostre-um-erro-de-validação).
|
|
143
|
+
|
|
144
|
+
## Elevação
|
|
145
|
+
|
|
146
|
+
Elevação é quanta profundidade um componente recebe. Nada tem sombra até que uma [estética](./aesthetics.md) desenhe profundidade ou uma destas classes a peça.
|
|
147
|
+
|
|
148
|
+
| Classe | Profundidade |
|
|
149
|
+
| ----------- | ------------------------------------------------------------------------------------------------ |
|
|
150
|
+
| `.flat` | Nenhuma. As superfícies de vidro mantêm a sua sombra, porque ela faz parte do material do glass. |
|
|
151
|
+
| `.raised` | Um passo da profundidade em vigor: cards e blocos que ficam perto da página. |
|
|
152
|
+
| `.floating` | Dois passos: menus e popovers. |
|
|
153
|
+
|
|
154
|
+
```html
|
|
155
|
+
<article class="card raised">Lifted</article>
|
|
156
|
+
<div class="floating panel">A menu</div>
|
|
157
|
+
<article class="card flat">Flat, whatever the aesthetic says</article>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Cada classe multiplica a sombra da estética em vigor. O mesmo `.raised` é um desfoque suave numa página simples e uma sombra dura deslocada sob `.neobrutalism`: a estética decide como a profundidade parece, e a classe decide quanto dela esse elemento recebe.
|
|
161
|
+
|
|
162
|
+
A classe não é herdada. Ela eleva ou achata só o elemento em que está, e um elemento dentro dele não recebe profundidade dela. Dê a cada elemento que precisa de profundidade a sua própria classe. O espalhamento (spread) de uma sombra não é multiplicado, porque uma estética que desenha a borda como sombra interna usa o espalhamento para essa borda.
|
|
163
|
+
|
|
164
|
+
Essas classes são separadas dos tokens de sombra `--elevation-*` em [Temas → Tokens fundamentais](./theming.md#tokens-fundamentais), que são sombras fixas para elementos que você mesmo estiliza.
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Conteúdo e layout
|
|
3
|
+
description: Consulta de todos os helpers de layout com os seus espaçamentos, a escala tipográfica com os seus tamanhos, cards e painéis com o seu padding, tabelas, citações, código e teclas.
|
|
4
|
+
order: 10
|
|
5
|
+
source: 6a638b6d6e735f1a7343bf9c6b2db131ca91fc30
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Conteúdo e layout
|
|
9
|
+
|
|
10
|
+
Esta é uma página de consulta para as classes que organizam uma página e definem o seu conteúdo: helpers de layout, a escala tipográfica, cards e painéis, tabelas e os pequenos chips de conteúdo. [Montando uma tela](../concepts.md#organize-o-layout-da-página) mostra essas classes em uso.
|
|
11
|
+
|
|
12
|
+
## Layout
|
|
13
|
+
|
|
14
|
+
O espaçamento de todo helper de layout é `--layout-gap`, `1rem` por padrão. Definir `--layout-gap` num elemento muda o espaçamento de todos os layouts dentro dele. `.tight` e `.loose` mudam só o layout em que estão; um layout aninhado dentro dele mantém o seu próprio espaçamento.
|
|
15
|
+
|
|
16
|
+
| Classe | Layout | Espaçamento |
|
|
17
|
+
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
|
|
18
|
+
| `.stack` | Uma coluna vertical. | `--layout-gap`, `.tight` 0.5rem, `.loose` 1.5rem |
|
|
19
|
+
| `.cluster` | Uma linha que quebra, com os itens centralizados na vertical. `.between` espalha os itens até as duas pontas. | Igual |
|
|
20
|
+
| `.view` | Um contêiner flex. `.vertical` o transforma numa coluna; `.horizontal`, numa linha que quebra, com itens centralizados. | Igual |
|
|
21
|
+
| `.auto-grid` | Um grid de colunas iguais, cada uma com pelo menos `--layout-grid-min` (16rem) de largura, quantas couberem. | Igual |
|
|
22
|
+
| `.section` | Padding em volta de uma seção da página: `--layout-gutter` nas laterais, `--layout-section-block` em cima e embaixo. | Nenhum |
|
|
23
|
+
| `.section-content` | Centraliza o seu conteúdo numa largura de `--container-max` (80rem). `.narrow` usa 48rem, `.wide` 90rem. | Nenhum |
|
|
24
|
+
| `.divider` | Uma linha horizontal, tão larga quanto o seu contêiner. `.vertical` a transforma numa linha vertical tão alta quanto a linha do layout. | Nenhum |
|
|
25
|
+
| `.visually-hidden` | Esconde o conteúdo na tela e o mantém para leitores de tela. | Nenhum |
|
|
26
|
+
|
|
27
|
+
`.auto-grid` acomoda duas colunas de 16rem quando o seu contêiner tem 32rem mais o espaçamento de largura, três com 48rem mais dois espaçamentos, e assim por diante. Abaixo da largura de uma coluna, a coluna encolhe para caber. Defina `--layout-grid-min` no grid para mudar a largura das colunas.
|
|
28
|
+
|
|
29
|
+
`--layout-gutter` é `clamp(1rem, 4vw, 2rem)` e `--layout-section-block` é `clamp(4rem, 9vw, 7rem)`: os dois crescem com a janela entre esses limites. A lista completa dos tokens fundamentais está em [Temas → Tokens fundamentais](./theming.md#tokens-fundamentais).
|
|
30
|
+
|
|
31
|
+
Um `.divider` aceita uma intenção, que o colore, e ignora as classes de apresentação, então um contêiner `.ghost.edgeless` não esconde os divisores dentro dele. A espessura dele é a espessura de borda da estética.
|
|
32
|
+
|
|
33
|
+
`.visually-hidden` não se chama `.sr-only` porque o Tailwind entrega um `.sr-only` próprio, e duas classes com o mesmo nome entrariam em conflito.
|
|
34
|
+
|
|
35
|
+
## Tipografia
|
|
36
|
+
|
|
37
|
+
| Classe | Tamanho | Peso | Espaçamento entre letras |
|
|
38
|
+
| ---------------- | ------------------------------------------ | ----------- | ------------------------ |
|
|
39
|
+
| `.text-display` | 3.75rem, 6rem a partir de 48rem de largura | Negrito | Justo |
|
|
40
|
+
| `.text-title-lg` | 3rem, 3.75rem a partir de 48rem de largura | Negrito | Justo |
|
|
41
|
+
| `.text-title` | 1.875rem | Negrito | Justo |
|
|
42
|
+
| `.text-title-sm` | 1.25rem | Seminegrito | Justo |
|
|
43
|
+
| `.text-label-lg` | 1.125rem | Médio | Largo |
|
|
44
|
+
| `.text-label` | 1rem | Médio | Largo |
|
|
45
|
+
| `.text-body` | 0.875rem | Normal | Mais largo |
|
|
46
|
+
|
|
47
|
+
Os dois maiores tamanhos crescem no breakpoint `md` do Tailwind, 48rem por padrão. Com os entrypoints de código-fonte do Tailwind, vale o seu próprio breakpoint `md`. O pacote não define tamanho para texto sem classe: o texto do corpo e os títulos sem classe recebem o tamanho do navegador, ou o tamanho do texto em volta sob o reset; veja [Configuração → HTML sem classes](../setup.md#html-sem-classes) para o mapeamento sem classes.
|
|
48
|
+
|
|
49
|
+
`.text-body` tem 0.875rem, menor que o texto de 1rem da página; use-o para texto secundário ou denso, não para o texto principal da página.
|
|
50
|
+
|
|
51
|
+
`.selection-contrast` num elemento troca as cores do texto selecionado dentro dele para `--color-primary` sobre `--color-primary-contrast`. Use-o numa área `.solid.primary`, onde a cor de seleção padrão seria igual ao fundo.
|
|
52
|
+
|
|
53
|
+
## Superfícies
|
|
54
|
+
|
|
55
|
+
`.card` e `.panel` são os dois contêineres. Os dois aceitam intenção, [apresentação](./composing.md#apresentação) e [tokens de material](./customizing.md#tokens-de-material).
|
|
56
|
+
|
|
57
|
+
| Classe | Visual padrão | Padding padrão |
|
|
58
|
+
| -------- | ----------------------------------------------------------------------------------- | -------------- |
|
|
59
|
+
| `.card` | Sem preenchimento, com borda, o canto de superfície e uma elevação em repouso de 1. | 1.25rem |
|
|
60
|
+
| `.panel` | O tom de fundo discreto, sem borda, o canto de superfície e sem elevação. | 1rem |
|
|
61
|
+
|
|
62
|
+
Uma elevação em repouso de 1 não mostra sombra sozinha. Um card só tem sombra sob uma [estética](./aesthetics.md) que desenha profundidade, ou com `.raised` ou `.floating`; veja [Composição → Elevação](./composing.md#elevação).
|
|
63
|
+
|
|
64
|
+
Classes de padding:
|
|
65
|
+
|
|
66
|
+
| Classe | Num `.card` | Num `.panel` |
|
|
67
|
+
| --------- | ----------- | ------------ |
|
|
68
|
+
| `.p-xs` | 0.5rem | 0.25rem |
|
|
69
|
+
| `.p-sm` | 0.75rem | 0.5rem |
|
|
70
|
+
| _nenhuma_ | 1.25rem | 1rem |
|
|
71
|
+
| `.p-lg` | 2rem | 1.5rem |
|
|
72
|
+
| `.flush` | 0 | 0 |
|
|
73
|
+
|
|
74
|
+
`.flush` é para conteúdo que vai de ponta a ponta, como uma imagem ou uma tabela dentro de um card.
|
|
75
|
+
|
|
76
|
+
Uma classe de padding só se aplica ao card ou painel em que está. Um card ou painel aninhado dentro dele mantém o seu próprio padding, então um `.card.flush` que contém um `.panel` ainda aplica 1rem de padding ao painel.
|
|
77
|
+
|
|
78
|
+
Um painel é para barras laterais, barras de ferramentas e áreas rebaixadas: áreas que fazem parte da página, e não objetos sobre ela. Um card é um objeto autocontido, como o card de perfil ou o card do plano na tela de configurações.
|
|
79
|
+
|
|
80
|
+
### Cards e painéis neutros
|
|
81
|
+
|
|
82
|
+
Um `.card.soft` neutro e um `.panel` neutro não mostram tom: eles ficam sobre o tom de fundo discreto um passo distante da página, então aparecem como uma área separada sem chamar atenção. Com uma intenção embutida, eles recebem o tom comum. [Composição → Superfícies neutras ficam sem tom em repouso](./composing.md#superfícies-neutras-ficam-sem-tom-em-repouso) traz os detalhes, incluindo o hover.
|
|
83
|
+
|
|
84
|
+
### Cards clicáveis
|
|
85
|
+
|
|
86
|
+
| Classe | Efeito |
|
|
87
|
+
| -------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
88
|
+
| `.interactive` | Cursor de ponteiro, cor de hover, clique e um anel de foco. O mesmo que `.hoverable` e `.pressable` juntos. |
|
|
89
|
+
| `.hoverable` | Só a cor de hover, sem cursor de ponteiro. |
|
|
90
|
+
| `.pressable` | Só o clique e o cursor de ponteiro. |
|
|
91
|
+
|
|
92
|
+
No visual padrão, um clique reduz levemente o card (`scale(0.97)`); uma estética pode substituir isso pelo seu próprio clique, e a preferência por movimento reduzido o desativa.
|
|
93
|
+
|
|
94
|
+
Use uma das metades num card que responde a um só gesto. Um card que contém o seu próprio botão recebe `.hoverable`, para que clicar no botão não clique o card inteiro.
|
|
95
|
+
|
|
96
|
+
```html
|
|
97
|
+
<article class="card">Neutral card</article>
|
|
98
|
+
<article class="card success solid">Filled success card</article>
|
|
99
|
+
<article class="card primary ghost edged">Intent border, no fill</article>
|
|
100
|
+
<a class="card success soft interactive" href="/settings/billing">Billing: tinted at rest, deeper on hover</a>
|
|
101
|
+
<article class="card hoverable">Tinted on hover; the action is a nested button</article>
|
|
102
|
+
<aside class="panel">A sidebar</aside>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Essas classes só estilizam. Coloque-as num link ou botão de verdade e dê a ele um nome acessível; um `<div class="card interactive">` não pode receber foco nem ser usado pelo teclado.
|
|
106
|
+
|
|
107
|
+
## Tabelas
|
|
108
|
+
|
|
109
|
+
A tela de configurações lista as chaves de API numa tabela:
|
|
110
|
+
|
|
111
|
+
```html
|
|
112
|
+
<div class="table-wrap">
|
|
113
|
+
<table class="data-table">
|
|
114
|
+
<caption class="visually-hidden">
|
|
115
|
+
API keys
|
|
116
|
+
</caption>
|
|
117
|
+
<thead>
|
|
118
|
+
<tr>
|
|
119
|
+
<th scope="col">Name</th>
|
|
120
|
+
<th scope="col">Created</th>
|
|
121
|
+
<th scope="col">Status</th>
|
|
122
|
+
</tr>
|
|
123
|
+
</thead>
|
|
124
|
+
<tbody>
|
|
125
|
+
<tr>
|
|
126
|
+
<td>Deploy bot</td>
|
|
127
|
+
<td>3 March 2026</td>
|
|
128
|
+
<td>Active</td>
|
|
129
|
+
</tr>
|
|
130
|
+
<tr class="destructive">
|
|
131
|
+
<td>Old laptop</td>
|
|
132
|
+
<td>12 June 2024</td>
|
|
133
|
+
<td>Revoked</td>
|
|
134
|
+
</tr>
|
|
135
|
+
</tbody>
|
|
136
|
+
</table>
|
|
137
|
+
</div>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
| Classe | Efeito |
|
|
141
|
+
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
142
|
+
| `.data-table` | Estiliza uma `<table>`: largura total, texto `.text-body`, um fundo no cabeçalho, o canto de superfície, padding nas células e uma cor de hover nas linhas do corpo. |
|
|
143
|
+
| `.table-wrap` | Rola a tabela para os lados quando ela é mais larga que o seu contêiner. |
|
|
144
|
+
| `.ruled` | Num `.data-table`. Desenha uma linha entre as linhas do corpo. |
|
|
145
|
+
| `.ruleless` | Num `.data-table`. Não desenha nenhuma linha dentro da tabela. |
|
|
146
|
+
|
|
147
|
+
### Intenção das linhas
|
|
148
|
+
|
|
149
|
+
As linhas de uma tabela recebem a intenção da tabela, então `.data-table.success` deixa o cabeçalho e as linhas divisórias verdes. Uma linha com a sua própria classe de intenção usa essa, como faz o `<tr class="destructive">` da chave revogada. `<tr class="neutral">` volta uma linha para neutro dentro de uma tabela colorida. Numa tabela `.solid`, uma linha com a sua própria intenção mantém a cor de texto da tabela, para continuar legível sobre o preenchimento da tabela, e mostra a sua intenção pela linha divisória e pelo hover. Este é o único lugar em que uma intenção é herdada, porque as linhas são partes da tabela, e não componentes separados.
|
|
150
|
+
|
|
151
|
+
### Linhas divisórias de tabela
|
|
152
|
+
|
|
153
|
+
Uma tabela desenha linhas embaixo do cabeçalho e em cima do rodapé. `.ruled` e `.ruleless` as mudam junto com as linhas entre as linhas do corpo:
|
|
154
|
+
|
|
155
|
+
| Classe | Embaixo do cabeçalho e em cima do rodapé | Entre as linhas do corpo |
|
|
156
|
+
| ----------- | ---------------------------------------- | ------------------------ |
|
|
157
|
+
| `.ruleless` | Não | Não |
|
|
158
|
+
| _nenhuma_ | Sim | Não |
|
|
159
|
+
| `.ruled` | Sim | Sim |
|
|
160
|
+
|
|
161
|
+
`--ui-rule` é o token por trás das duas classes, então um contêiner pode adicionar linhas divisórias a todas as tabelas dentro dele: `style="--ui-rule: 100%"` funciona como `.ruled`, e `0%` como `.ruleless`.
|
|
162
|
+
|
|
163
|
+
A moldura em volta da tabela é separada: uma tabela não tem borda por padrão, e `.edged` adiciona uma. As três escolhas não afetam umas às outras, então `.data-table.ruleless.edged` é uma tabela com moldura e sem linhas dentro, e `.data-table.ruled` tem todas as linhas separadas e nenhuma moldura.
|
|
164
|
+
|
|
165
|
+
### Apresentação em tabelas
|
|
166
|
+
|
|
167
|
+
Uma tabela lê a [apresentação](./composing.md#apresentação) no seu cabeçalho, nas suas linhas divisórias e na sua borda:
|
|
168
|
+
|
|
169
|
+
```html
|
|
170
|
+
<table class="data-table success soft edged">
|
|
171
|
+
…
|
|
172
|
+
</table>
|
|
173
|
+
<table class="data-table ghost">
|
|
174
|
+
<!-- No header background: only lines and text -->
|
|
175
|
+
</table>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
- `.soft`, o padrão, dá ao cabeçalho o tom de fundo discreto, `--color-foreground`, em todas as intenções. Uma tabela não tem estado de hover para um tom, então um `.data-table.success.soft` não fica verde; as linhas divisórias e a borda dele ficam.
|
|
179
|
+
- `.ghost` remove o fundo do cabeçalho, deixando as linhas divisórias e o texto.
|
|
180
|
+
- `.solid` preenche o cabeçalho com a cor da intenção.
|
|
181
|
+
|
|
182
|
+
### Cantos e rolagem
|
|
183
|
+
|
|
184
|
+
Uma tabela recebe o canto de superfície, como um card ao lado dela. As células dos cantos carregam os cantos, então uma `<caption>` acima da tabela não é cortada em nenhum navegador. Uma célula que ocupa várias linhas até um canto inferior deixa esse canto reto.
|
|
185
|
+
|
|
186
|
+
`.table-wrap` rola, e um elemento com rolagem corta o que é desenhado fora dele, incluindo um tooltip numa célula; veja [Tooltips → Onde um tooltip é cortado](./tooltips.md#onde-um-tooltip-é-cortado).
|
|
187
|
+
|
|
188
|
+
- Sob uma estética que desenha um brilho em volta dos componentes, como `.cyber`, o wrapper abre espaço para o brilho, para que ele não seja cortado. O wrapper então se estende até essa distância além do seu pai, o que só aparece quando o pai encosta na borda da janela.
|
|
189
|
+
- O wrapper só consegue abrir espaço para o brilho de uma estética em volta dele. Coloque a classe de estética no `.table-wrap` ou num elemento acima dele, e não só na tabela.
|
|
190
|
+
- Sombras, como a de uma tabela `.raised`, não ganham espaço e são cortadas.
|
|
191
|
+
|
|
192
|
+
Mantenha o wrapper em qualquer tabela que possa ficar mais larga que o seu contêiner; sem ele, uma tabela larga alarga a página inteira.
|
|
193
|
+
|
|
194
|
+
## Citações, código e teclas
|
|
195
|
+
|
|
196
|
+
| Classe | Uso | Visual padrão | Cores da intenção |
|
|
197
|
+
| --------------- | -------------------------------------------------------------------------------------- | -------------------------------------- | ------------------- |
|
|
198
|
+
| `.quote` | Um `<blockquote>`. Um `<cite>` dentro dele fica sem itálico e recebe a cor da citação. | Uma barra no início, sem preenchimento | Barra, fundo, texto |
|
|
199
|
+
| `.quote-inline` | Uma citação `<q>` inline. | Só o estilo de citação | Nada |
|
|
200
|
+
| `.kbd` | Uma tecla que o usuário pressiona, como <kbd>Ctrl</kbd>. | Um chip tingido com borda | Fundo, borda, texto |
|
|
201
|
+
| `.code` | Código inline. | Um chip tingido sem borda | Fundo, texto |
|
|
202
|
+
| `.pre` | Um bloco de código. Ele rola para os lados quando uma linha é longa demais. | Um bloco tingido sem borda | Fundo, texto |
|
|
203
|
+
|
|
204
|
+
```html
|
|
205
|
+
<p>Press <kbd class="kbd">Ctrl</kbd> + <kbd class="kbd">K</kbd> to search members.</p>
|
|
206
|
+
<p>Use the <code class="code">Authorization</code> header with your API key.</p>
|
|
207
|
+
<kbd class="kbd primary solid">Ctrl</kbd>
|
|
208
|
+
<kbd class="kbd primary soft edged">Shift</kbd>
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Um `.kbd`, `.code` ou `.pre` fica sobre o tom suave da sua intenção, `--color-surface` no neutro, e uma classe de intenção embutida adiciona 12% da sua cor por cima. `.ghost` não é suportado nesses três: o fundo tingido é o que faz deles chips, então eles o mantêm e `.ghost` não muda nada. A fonte deles é `--font-mono`; veja [Temas → Fontes](./theming.md#fontes).
|
|
212
|
+
|
|
213
|
+
## A seguir
|
|
214
|
+
|
|
215
|
+
[Acessibilidade](../accessibility.md) lista o que o CSS faz pelos seus usuários e o que a sua aplicação ainda deve a eles.
|