# Documentação SCSS

# Introdução

Conceitos básicos de como são aplicadas as variáveis, constantes, classes auxiliares, funções de classes, mixins entre outras funcionalidades da biblioteca.

# Boas Práticas com as classes utilitárias do WPF

Com seu projeto HTML definido e o WPF3 importado corretamente, começar a recortar a sua página web é de longe a etapa mais fácil de todo o processo.

Apesar de não existir uma lógica definida ou uma forma obrigatória de organizar as suas classes dentro do atributo *class=””* na sua tag HTML, existe uma ordem que pessoalmente recomendamos para que você siga e se acostume, para garantir que seu código permaneça legível e organizado, mantendo um único padrão constante entre as páginas.

É importante lembrar que o WPF3 foi desenvolvido tendo em mente um escopo de projeto que é baseado em **componentes** e, por mais que ele seja ótimo para o recorte e desenvolvimento web tradicional, é através de projetos que utilizam a estruturação MVC que o WPF realmente brilha.

Sugerimos sempre você separe suas classes na seguinte ordem:

#### &lt;div class=”*<span style="color: rgb(45, 194, 107);">custom </span>*<span style="color: rgb(236, 202, 250);">func() </span>*<span style="color: rgb(241, 196, 15);">pos </span><span style="color: rgb(224, 62, 45);">display </span><span style="color: rgb(185, 106, 217);">conf. display</span> <span style="color: rgb(53, 152, 219);">tam </span><span style="color: rgb(230, 126, 35);">orient </span><span style="color: rgb(134, 246, 7);">extra</span>*”&gt;&lt;/div&gt;

Vamos entrar em mais detalhes sobre como essa organização funciona:

- **<span style="color: rgb(45, 194, 107);">Custom</span>:** Aqui vão todas as propriedades e classes criadas por você que não fazem parte do escopo do WPF. A ideia é que seja fácil visualizar o que é feito especificamente por você para incrementar os estilos que devem ser aplicados somente à uma ocasião específica;
- **<span style="color: rgb(236, 202, 250);">Funções</span>:** Quaisquer **funções de classe** são atribuídas logo depois. Essas classes especiais costumam configurar cores de todos os tipos (plano de fundo, borda, texto, entre outras) ou até mesmo definem estruturações visuais básicas (como a família ou peso de uma fonte que uma porção de texto terá);
- **<span style="color: rgb(241, 196, 15);">Posicionamentos</span>:** Nessa parte é onde inserimos as primeiras classes específicas do WPF. Aqui vamos tratar de posicionamentos ou tratamentos de posição, como todas as classes que envolvem as propriedades *position, box-sizing* entre outros similares;
- **<span style="color: rgb(224, 62, 45);">Display</span>:** Agora vamos especificar o tipo de exibição que seu elemento terá: *grid, table, block, inline-block, contents, flex* entre outros;
- **<span style="color: rgb(185, 106, 217);">Conf. do Display</span>:** E depois damos os detalhes e configurações disponíveis dessa exibição específica, como é o caso de *align-items, justify-block, vertical-align* entre outros;
- **<span style="color: rgb(53, 152, 219);">Tamanho e Espaçamento</span>:** Definimos então o tamanho do nosso elemento com *width* e *height*, além dos espaçamentos disponíveis, como *margin* e *padding*;
- **<span style="color: rgb(230, 126, 35);">Orientações</span>:** Por último, caso sua tag HTML necessite, aqui entra todos os tipos de orientações, como orientação de texto em *text-align* ou denominar um espaço específico do elemento para não renderizar mais linhas de texto do que o instruído, como *clamp* etc;
- **<span style="color: rgb(134, 246, 7);">Extra</span>:** Se sua tag HTML necessita de outras classes que fazem parte da estrutura do WPF, mas não entram em nenhuma dessas categorias, como *transition, transform, filter,* entre outras, você pode livremente alocá-las em qualquer ordem após ter organizado tudo seguindo este roteiro. As classes extras também abordam todas as classes que você precisa inserir para substituir um valor padrão que você atribuiu anteriormente. Nesse caso, uma classe de qualquer uma das outras categorias usando a instrução "!" (como por exemplo, uma &lt;div&gt; que possuí valor padrão w-50 mas que precisa receber um valor novo de w-100 ou w-25 receberia o valor como !w-100 ou !w-25)

Lembrando que não é obrigatório utilizar essa organização específica. Ela se trata apenas de uma sugestão. Sinta-se encorajado a encontrar a melhor forma que funciona para você e sua equipe.

# Atribuições de Responsividade, Importância e Pseudo Elementos

Todas as classes do WPF são compatíveis com o que chamamos de **atribuições**. As **atribuições** são nada mais do que comandos extras que podem ser inclusos em uma classe utilitária do WPF que impõe sobre ela comportamentos extras ou específicos. Esses comportamentos podem ser de inúmeros tipos: *responsivos, importantes ou pseudos.*

Nesta lição, veremos um pouco mais sobre cada um deles e como podemos atribuir cada uma dessas **atribuições** nas nossas classes auxiliares:

### **Responsividade**

As **atribuições de responsividade** podem ser todas encontradas no arquivo de instruções do WPF, no arquivo *`wpf.config.yaml`* dentro do seu projeto. Na folha de estilos do `wpf.config.yaml` você pode encontrar uma seção chamada "**breakpoints**"**:**

[![image.png](https://manuais.webeponto.com.br/uploads/images/gallery/2025-07/scaled-1680-/image.png)](https://manuais.webeponto.com.br/uploads/images/gallery/2025-07/image.png)

Cada um dos itens listados sobre essa lista refere-se à uma regra de estilo que define uma nova resolução em largura (utilizando pixels) para definir um ponto de quebra na renderização da sua página. Pegue *'mob: 1024'* por exemplo: Se você atribuir o prefixo **"mob:"** sob sua classe utilitária, antes do nome da classe, você estará definindo um estilo que será aplicado automaticamente em dispositivos que tenham uma **largura menor do que 1024px**. O mesmo vale para todas as outras variações definidas sob essa lista.

Por exemplo, ao utilizar a combinação de classes **`flex`** e **`mob:grid`** em um elemento **`<div>`**, você pode alcançar resultados interessantes:

```html
<div class="dp-flex mob:dp-grid">
    <!-- Conteúdo aqui -->
</div>
```

Neste exemplo, o elemento **`<div>`** terá o estilo **`display: flex`** em contextos padrão do projeto, mas quando a largura da tela for menor que 1024px, o estilo será alterado para **`display: grid`**, permitindo uma transição suave e eficiente entre layouts responsivos.

Aqui o resultado final, em um CSS padrão, ficaria assim:

```css
.dp-flex{
  display: flex;
}

@media (max-width: 1024px){
  .mob\:dp-grid{
    display: grid;
  }
}
```

Se for necessário atribuir novos tipos de breakpoints para o seu projeto, você pode editar essa lista de breakpoints presentes no *`wpf.config.yaml`* para criar seus próprios pontos de quebra customizados para designs responsivos.

### **Importância**

As **atribuições de importância** servem para definir, em um código CSS onde um elemento possuí duas vezes o mesmo atributo sob situações conflitantes, um ponto de partida para que o CSS descubra qual regra deve sempre se sobressair como o estilo dominante.

Leve por exemplo um elemento que precisa mudar o seu tamanho sem necessariamente estar sob um breakpoint. Ele tem um tamanho original de 50% (informado pela classe utilitária `w-50%`). Esse mesmo elemento receberá do JavaScript uma nova classe que mudará o seu tamanho para 25% (informado pela classe utilitária `w-25%`) quando o usuário clicar em algum botão dentro do site. Como são elementos conflitantes (a largura, no caso), dificilmente o navegador saberá entender que o valor de 25% é o correto a ser aplicado agora. Informando o código que o novo estilo **é mais importante** (atribuindo a classe utilitária com o modificador de importância `!w-25%`) agora o navegador saberá o momento em que o elemento precisa ter 25% de largura e o momento em que ele precisa ter 50%.

```html
<div x-data="{ isNarrow: false }">
  <div class="w-50%" x-bind:class="{ '!w-25%': isNarrow }">
      <!-- Conteúdo aqui -->
  </div>
</div>
```

O resultado final disso, em um arquivo CSS comum, seria bem simples:

```css
.w-50\%{
  width: 50%;
}

.\!w-25\%{
  width: 25%!important;
}
```

É possível adicionar esse tipo de comportamento à elementos que estão com **atribuições de responsividade**. Veja um exemplo:

```html
<div x-data="{ isNarrow: false }">
  <div class="mob:w-50%" x-bind:class="{ 'mob:!w-25%': isNarrow }">
      <!-- Conteúdo aqui -->
  </div>
</div>
```

### **Pseudo Elementos**

Por último, existem as atribuições que chamamos normalmente no CSS como **pseudo elementos**. Isso implica a todos os elementos virtuais que podem ser gerados pelo *DOM* via CSS, como **:active, ::placeholder, ::after, ::before** etc. No WPF, alguns desses pseudo elementos possuem um suporte nativo pela ferramenta, e podem receber estilos e classes diretamente informando o pseudo-elemento que você deseja ativar/inserir para aquele elemento HTML.

Para definir um pseudo elemento à um elemento HTML é muito simples: basta você escrevê-lo antes da classe e de qualquer outra atribuição adicional que esteja inserindo à uma classe utilitária WPF. Daremos um exemplo:

```html
<div class="bg(c-bg-1) hover:bg(c-bg-2)">
    <!-- Conteúdo aqui -->
</div>
```

No exemplo acima, o elemento possuí a cor de background `var(--c-bg-1)` que é automaticamente alterada para `var(--c-bg-2)` no momento em que o usuário passar o cursor do mouse por cima do elemento, ou seja, através da ativação do pseudo elemento **:hover**. Esses tipos de atribuições não geram um resultado diretamente no CSS, mas são lidos de maneira dinâmica diretamente no navegador.

É importante lembrar que as **atribuições de pseudo elementos funcionam em conjunto com os outros tipos de atribuições, como as de responsividade ou importância**. Veja um exemplo:

```html
<div class="bg(c-bg-1) mob:bg(c-bg-2) hover:mob:bg(c-bg-3)">
    <!-- Conteúdo aqui -->
</div>
```

No exemplo acima, a versão natural do componente não possuí um comportamento com o pseudo elemento **:hover**. Esse comportamento foi instruído para acontecer somente em um contexto responsivo, com duas outras cores completamente diferentes.

# Declarando e Usando Variáveis CSS

As variáveis customizadas de cada projeto são inseridas dentro de uma pasta chamada **"vars"**. Todos os arquivos nessa pasta são automaticamente incluídos como variáveis no framework. No entanto, existe um arquivo específico dentro dessa pasta chamado `_default.scss`, onde ***variáveis especiais podem ser declaradas***.

É importante frisar que **variáveis especiais precisam ser declaradas entre aspas simples**. Isso é exigido não só pelo manual de boas práticas do próprio SASS como também porque essas variáveis passam por vários tratamentos específicos e não funcionarão de outra maneira.

[Sass Guidelines](https://sass-guidelin.es/#about-sass)

## **Grupos de Variáveis**

As variáveis são organizadas em grupos específicos pré-determinados para facilitar o gerenciamento e a aplicação consistente em todo o projeto. Alguns dos grupos comuns incluem:

### **Cores**

As cores são frequentemente organizadas em grupos separados com diferentes propósitos, como cores de fundo, cores de texto, cores de borda, cores de gradiente, etc. Aqui está um exemplo de como os grupos de cores podem ser declarados:

```scss
//* Cores de Fundo
$c-backgrounds: (
    "c-bg-1": '#141616',
    "c-bg-2": '#FFFFFF',
);

//* Cores de Texto
$c-strings: (
    "c-s-1": '#FFFFFF',
    "c-s-2": '#999999',
);

//* Cores de Bordas
$c-borders: (
    "c-border-1": '#444444',
    "c-border-2": '#666666',
);
```

### **Temas**

Os temas podem incluir uma variedade de cores específicas de design, como cores principais, secundárias, acentuadas, etc. Aqui está um exemplo de como os temas podem ser declarados:

```scss
//* Cores do Tema
$c-themes: (
    "c-t1-050": #effcfc,
    "c-t1-100": #d8f5f4,
    "c-t1-400": #42c1c7, //? Main
);
```

## **Uso das Variáveis**

Depois de declaradas as variáveis, elas podem ser facilmente utilizadas em todo o projeto por meio de classes específicas. Por exemplo, para usar uma cor de fundo específica em um elemento HTML, podemos adicionar a classe correspondente:

```html
<div class="bg(c-bg-1)"></div>
```

Se quisermos aplicar estilos diferentes para dispositivos móveis, podemos adicionar classes específicas para isso:

```html
<div class="bg(c-bg-1) mob:bg(c-bg-2)"></div>
```

Isso permite que tenhamos controle granular sobre a aparência de elementos em diferentes dispositivos.

## **Funções de Classe**

Além das classes específicas para aplicação de variáveis, também existem funções de classe para casos comportamentais diferentes. Por exemplo:

- Alterar a fonte de alguma maneira: **`fnt(var)`**
- Alterar a cor de fundo: **`bg(var)`**
- Alterar a cor de texto: **`c(var)`**
- Alterar a cor de borda: **`bc(var)`**
- Adicionar efeitos visuais: `fx(param,var)` / `fx(var)`

Essas funções de classe permitem uma aplicação mais flexível e eficiente das variáveis CSS em todo o projeto.

## Usando as variáveis dentro de outros arquivos SCSS

Todas as variáveis declaradas no arquivo `_default.scss` geram uma versão de variável CSS comum. Essa versão permite o uso das variáveis dentro de outros arquivos CSS do projeto.

Por exemplo, a variável **`c-bg-1`**, que pode ser diretamente usada no HTML como **`bg(c-bg-1)`**, também pode ser utilizada no CSS da seguinte maneira:

```css
background-color: var(--c-bg-1);
```

Isso oferece flexibilidade adicional para o uso das variáveis em diferentes contextos dentro do projeto.

# Classes Utilitárias

Aprenda a usar todas as classes utilitárias auxiliares do WPF, desde o seu conceito até a aplicação.

# Nova Página



# Position

O atributo **position** é retratado de uma maneira bem natural e intuitiva pelo WPF. Para atribuir classes utilitárias de posição no seu código, basta escrever o nome do valor do atributo diretamente como uma classe css:

```html
<div class="relative">
  <!-- O conteúdo dessa classe recebeu o atributo css 'position: relative' -->
</div>

<div class="absolute">
  <!-- O conteúdo dessa classe recebeu o atributo css 'position: absolute' -->
</div>

<div class="sticky">
  <!-- O conteúdo dessa classe recebeu o atributo css 'position: sticky' -->
</div>

<!-- Isso funciona para qualquer outro tipo de atribuição de posicionamento. -->
```

Abaixo segue uma lista com todas as posições suportadas pelo framework:

<table border="1" id="bkmrk-classe-utilit%C3%A1ria-co" style="border-collapse: collapse; width: 100%; height: 213.938px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><thead><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">Classe Utilitária</td><td class="align-center" style="height: 29.7969px;">Comportamento</td></tr></thead><tbody><tr style="height: 30.1094px;"><td class="align-center" style="height: 30.1094px;">`static`</td><td class="align-center" style="height: 30.1094px;">*Posicionamento padrão, segue o fluxo normal do documento.*

</td></tr><tr style="height: 46.9062px;"><td class="align-center" style="height: 46.9062px;">`sticky`</td><td class="align-center" style="height: 46.9062px;">*Alterna entre* `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">relative</span>` *e* `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">fixed</span>`*, fixando o elemento ao atingir um ponto de rolagem definido.*

</td></tr><tr style="height: 46.9062px;"><td class="align-center" style="height: 46.9062px;">`relative`</td><td class="align-center" style="height: 46.9062px;">*Posicionado relativo à sua posição original.   
Permite ajustes com* `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">top</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">right</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">bottom</span>` e `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">left</span>`.

</td></tr><tr style="height: 30.1094px;"><td class="align-center" style="height: 30.1094px;">`absolute`</td><td class="align-center" style="height: 30.1094px;">*Posicionado em relação ao ancestral mais próximo com posição não* `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">static</span>`*, sai do fluxo normal.*</td></tr><tr style="height: 30.1094px;"><td class="align-center" style="height: 30.1094px;">`fixed`</td><td class="align-center" style="height: 30.1094px;">*Posicionado em relação à janela do navegador, permanece fixo durante a rolagem.*

</td></tr></tbody></table>

# Offset

As classes utilitárias de offsets no **WPF** permitem ajustar a posição de elementos com as propriedades CSS <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">top</span>, <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">right</span>, <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">bottom</span> e <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">left</span>. Elas são projetadas para serem intuitivas, seguindo uma sintaxe clara e flexível, compatível com unidades como `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">%</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">px</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">dvh</span>` e `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">dvw</span>`.

### Como Funcionam as Classes de Offsets

As classes de offsets seguem o padrão: <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">(propriedade)(valor)(unidade)</span>, onde:

- **Propriedade**: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">top</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">right</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">bottom</span>` ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">left</span>`.
- **Valor**: Um número inteiro (positivo ou negativo) que define o deslocamento.
- **Unidade**: Opcional, pode ser `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">%</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">px</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">dvh</span>` (altura dinâmica da viewport) e `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">dvw</span>` (largura dinâmica da viewport). Se omitida, o valor é tratado como unitless (ex.: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">top(10)</span>` equivale a `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">top: 10;</span>`).

Isso significa que uma classe válida segue este formato:

```html
<div class="fixed top(50%) left(20px)">
  <!-- Esse elemento html definiu os seguintes atributos css - top: 50%; left: 20px; -->
</div>

<div class="absolute right(-10dvw) bottom(100)">
  <!-- Esse elemento html definiu os seguintes atributos css - right: -10dvw; bottom: 100; -->
</div>
```

### Usando Funções de Classe para Centralização

As classes utilitárias de centralização do **WPF** simplificam o alinhamento de elementos horizontalmente, verticalmente ou em ambos os eixos. Elas combinam as propriedades <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">left</span>, <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">top</span> e <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">transform</span> para posicionar elementos com precisão, especialmente em elementos com <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">position: `absolute`</span>, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">fixed</span>` ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">sticky</span>`.

#### Como Funcionam as Classes de Centralização

As classes de centralização seguem uma sintaxe simples e intuitiva: **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">center(tipo)</span>**, onde o tipo define o eixo de centralização:

As classes de centralização **são ideais para elementos com** <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">**position:** `absolute`</span>, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">fixed</span>` ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">sticky</span>`, **dentro ou fora de um contêiner pai com** <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">**position semelhante**</span>. Certifique-se de que o elemento pai tenha dimensões definidas de alguma maneira (ex.: <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">width</span> e <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">height</span>) para que a centralização funcione corretamente.

<table border="1" id="bkmrk-a-a" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50.0596%;"></col><col style="width: 50.0596%;"></col></colgroup><thead><tr><td class="align-center">Classe Utilitária</td><td class="align-center"> Comportamento</td></tr></thead><tbody><tr><td class="align-center">`center(h)`</td><td class="align-center">*Centraliza horizontalmente o elemento.*  
</td></tr><tr><td class="align-center">`center(v)`</td><td class="align-center">*Centraliza verticalmente o elemento.*</td></tr><tr><td class="align-center">`center(c)`</td><td class="align-center">*Centraliza em **ambos** os eixos (horizontal e vertical).*</td></tr></tbody></table>

Com essa sintaxe, confira alguns exemplos dessas funções de classe em execução:

```html
<div class="fixed top(20px) center(h)">
  <!-- No seguinte elemento html, a seguinte configuração css foi atribuída - top: 20px; left: 50%; transform: translateX(-50%); -->
</div>

<div class="absolute top(5%) center(v)">
  <!-- No seguinte elemento html, a seguinte configuração css foi atribuída - left: 5%; top: 50%; transform: translateY(-50%); -->
</div>

<div class="relative center(c)">
  <!-- No seguinte elemento html, a seguinte configuração css foi atribuída - left: 50%; top: 50%; transform: translate(-50%, -50%); -->
</div>
```

### Notas

<p class="callout info">**Posicionamento**: As classes de centralização requerem que o elemento tenha <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">position: `absolute`</span>, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">fixed</span>` ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">sticky</span>`.</p>

<p class="callout info">**Contêiner Pai**: Certifique-se de que o elemento pai tenha algum atributo position não estático e dimensões definidas de alguma maneira.</p>

<p class="callout info">**Transformações Adicionais**: Certifique-se que, ao usar outros tipos de **configurações de transformação**, que elas não sobrescrevam os seus estilos!</p>

# Z-Index

As classes utilitárias de <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-index</span> do **WPF** permitem controlar a ordem de empilhamento de elementos no eixo Z, definindo qual elemento aparece acima ou abaixo de outros. Elas são ideais para layouts com sobreposições, como modais, menus ou elementos posicionados com <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">absolute</span> ou <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">fixed</span>.

### Como Funcionam as Classes de Z-Index

As classes de <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-index</span> seguem o padrão: **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-(valor)</span>**, onde:

- **Valor**: Um número inteiro (positivo ou negativo) que define a ordem de empilhamento.
- **Sintaxe**: A classe é formada por *<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-</span>* seguido de um número, como `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-10</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z--5</span>` ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-0</span>`.

#### Regras CSS Geradas

Cada classe é traduzida diretamente para a propriedade CSS <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-index</span>. Por exemplo:

- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-10</span>` → `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-index: 10;</span>`
- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z--5</span>` → `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-index: -5;</span>`
- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-0</span>` → `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-index: 0;</span>`

### Como Usar

As classes de **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-index</span>** são aplicadas a elementos com <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">position: `absolute`</span>, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">relative</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">fixed</span>` ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">sticky</span>`, já que o <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-index</span> só afeta elementos posicionados. Use-as para controlar a sobreposição de elementos em layouts complexos.

#### Exemplo 1: Sobreposição Simples

Posicione um elemento acima de outro:

```html
<div class="relative w-100% h-200px">
  <div class="absolute top(0) left(0) bg(c-blue) z-10"><!-- Elemento superior --></div>
  <div class="absolute top(10px) left(10px) bg(c-red) z-5"><!-- Elemento inferior --></div>
</div>
```

#### Exemplo 2: Z-Index Negativo

Coloque um elemento abaixo do conteúdo padrão:

```html
<div class="relative w-100% h-200px">
  <div class="absolute top(0) left(0) bg(c-gray) z--1"><!-- Fundo --></div>
  <div class="absolute top(20px) left(20px) bg(c-white)"><!-- Conteúdo principal --></div>
</div>
```

### Notas

<p class="callout info">**Valores altos**: Use valores como `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-100</span>` ou superiores para elementos que devem ficar **acima de tudo**, como *modais*.</p>

<p class="callout info">**Valores negativos**: Use `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z--1</span>` ou **inferiores** para **elementos de fundo ou camadas abaixo do conteúdo principal**.</p>

<p class="callout warning">O **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-index</span>** só funciona em elementos com <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">position</span> diferente de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">static</span>`.</p>

<p class="callout info">Valores maiores de **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-index</span>** colocam o elemento mais acima na ordem de empilhamento.</p>

<p class="callout warning">Evite valores extremamente altos (ex.: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">z-999999</span>`) para **manter a manutenção do código simples**.</p>

# Overflow

As classes utilitárias de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow</span>` do **WPF** controlam como o conteúdo excedente de um elemento é tratado, permitindo gerenciar a visibilidade e o comportamento de rolagem em elementos com dimensões limitadas. Elas são ideais para layouts com *contêineres*, *modais* ou áreas de conteúdo **restritas**.

### Como Funcionam as Classes de Overflow

As classes de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow</span>` seguem uma sintaxe intuitiva que permite definir o comportamento geral ou por eixo **(<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">x</span> ou <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">y</span>)**, com ou sem tipo específico (`<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">hidden</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">scroll</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">visible</span>`). O padrão `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow</span>` sem modificadores aplica `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow: auto;</span>` como valor padrão.

<table border="1" id="bkmrk-atributos-v%C3%A1lidos-co" style="border-collapse: collapse; width: 100%; height: 59.9063px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><thead><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">Atributos Válidos</td><td class="align-center" style="height: 29.7969px;">Comportamento

</td></tr></thead><tbody><tr style="height: 30.1094px;"><td class="align-center" style="height: 30.1094px;">`auto`  
</td><td class="align-center" style="height: 30.1094px;">*Deixa o navegador encarregado do comportamento. Seu funcionamento pode variar.*</td></tr><tr><td class="align-center">`hidden`  
</td><td class="align-center">*O conteúdo é cortado e nenhuma barra de rolagem é exibida.*</td></tr><tr><td class="align-center">`scroll`  
</td><td class="align-center">*O conteúdo é acessível através de barras de rolagem que são exibidas mesmo que o conteúdo não precise.*</td></tr><tr><td class="align-center">`visible`  
</td><td class="align-center">***Valor padrão**. O conteúdo não é cortado e pode ser renderizado para fora da caixa de conteúdo.*</td></tr></tbody></table>

As classes são traduzidas diretamente para propriedades CSS. Veja alguns exemplos:

- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow</span>`→ `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow: auto;</span>`
- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow-x</span>` → `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow-x: auto;</span>`
- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow-y-hidden</span>` → `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow-y: hidden;</span>`
- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow-scroll</span>` → `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow: scroll;</span>`

### Como Usar

As classes de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow</span>` são aplicadas a elementos com dimensões definidas (ex.: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">width</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">height</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">max-width</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">max-height</span>`) para controlar o comportamento do conteúdo que excede essas dimensões. Elas são úteis para criar áreas roláveis, ocultar conteúdo excedente ou manter visibilidade.

#### Exemplo 1: Overflow Padrão

Aplica rolagem automática para conteúdo excedente em ambas as direções:

```html
<div class="w-300px h-200px overflow">
  <p><!-- Conteúdo longo que excederá o contêiner... --></p>
</div>
```

#### Exemplo 2: Overflow por Eixo

Habilita rolagem horizontal, mas oculta o conteúdo vertical excedente:

```html
<div class="w-300px h-200px overflow-x overflow-y-hidden">
  <p><!-- Conteúdo longo horizontalmente e verticalmente... --></p>
</div>
```

#### Exemplo 3: Overflow com Tipo Específico

Cria uma área com rolagem vertical forçada e conteúdo horizontal visível:

```html
<div class="w-300px h-200px overflow-y-scroll overflow-x-visible">
  <p><!-- Conteúdo com rolagem vertical e visibilidade horizontal... --></p>
</div>
```

#### Exemplo 4: Combinação com Posicionamento

Usa <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow</span> com classes de posicionamento e centralização:

```html
<div class="relative w-100% h-400px overflow-hidden">
  <div class="absolute center(c) w-200px h-200px overflow-y-scroll">
    <p><!-- Conteúdo rolável centralizado... --></p>
  </div>
</div>
```

#### Notas

<p class="callout info">**Dimensões**: Sempre defina `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">width</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">height</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">max-width</span>` ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">max-height</span>` no elemento para que o `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow</span>` funcione corretamente.</p>

<p class="callout info">**Rolagem Automática**: Use `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow</span>` ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow-(x|y)</span>` para rolagem apenas quando necessário.</p>

<p class="callout info">**Combinações**: Combine com classes de posicionamento (`<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">absolute</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">relative</span>`, etc.) e offsets (`<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">top</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">left</span>`, etc.) para layouts complexos.</p>

<p class="callout warning">**Forçar Rolagem**: Aplicar o tipo `scroll` em um elemento evita o problema de barras de rolagem aparecendo e desaparecendo **quando o conteúdo é dinâmico**. Tenha em mente que **Impressoras podem imprimir o conteúdo vazado**.</p>

<p class="callout info">As classes `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow-x</span>` e `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow-y</span>` são úteis para controle granular em layouts responsivos.</p>

<p class="callout warning">O valor `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">visible</span>` pode causar sobreposição de conteúdo fora do contêiner, então use com cuidado.</p>

<p class="callout info">Para áreas roláveis, certifique-se de que o contêiner tenha conteúdo suficiente para ativar a rolagem.</p>

# Text-Align

Os alinhadores de texto do **WPF** são classes utilitárias que controlam o alinhamento horizontal de texto em elementos HTML. Eles utilizam a propriedade CSS `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">text-align</span>` para oferecer flexibilidade e simplicidade no ajuste de layouts textuais.

### Como Funcionam os Alinhadores de Texto

Os alinhadores seguem as seguintes definições principais:

<table border="1" id="bkmrk-classe-utilit%C3%A1ria-co" style="border-collapse: collapse; width: 100%; height: 238.375px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><thead><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">Classe Utilitária</td><td class="align-center" style="height: 29.7969px;">Comportamento</td></tr></thead><tbody><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">`t-left`</td><td class="align-center" style="height: 29.7969px;">*Alinha o texto à esquerda.*  
</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">`t-center`</td><td class="align-center" style="height: 29.7969px;">*Centraliza o texto.*  
</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">`t-right`</td><td class="align-center" style="height: 29.7969px;">*Alinha o texto à direita.*  
</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">`t-start`</td><td class="align-center" style="height: 29.7969px;">*Alinha o texto no início da **direção configurada do texto**.*  
</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">`t-end`</td><td class="align-center" style="height: 29.7969px;">*Alinha o texto no final da **direção configurada do texto**.*  
</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">`t-justify`</td><td class="align-center" style="height: 29.7969px;">*Justifica o texto.*  
</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">`t-justify-all`</td><td class="align-center" style="height: 29.7969px;">*Justifica todas as linhas do texto, **incluindo a última**.*  
</td></tr></tbody></table>

### Exemplos de Uso

#### Alinhamento Básico

```html
<p class="t-left"><!-- Texto à esquerda. --></p>
<p class="t-center"><!-- Texto centralizado. --></p>
<p class="t-right"><!-- Texto à direita. --></p>
```

#### Alinhamento Dinâmico

```html
<p class="t-start"><!-- Texto no início (esquerda em LTR). --></p>
<p class="t-end"><!-- Texto no final (direita em LTR). --></p>
```

#### Justificação

```html
<p class="t-justify"><!-- Texto justificado, exceto a última linha. --></p>
<p class="t-justify-all"><!-- Texto justificado, incluindo a última linha. --></p>
```

### Notas

<p class="callout info">**Suporte a Idiomas**: Use `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">t-start</span>` e `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">t-end</span>` para layouts que precisam se adaptar a direções de texto como *RTL (right-to-left)*.</p>

<p class="callout info">**Justify vs. Justify-All**: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">t-justify</span>` é ideal para parágrafos normais, enquanto `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">t-justify-all</span>` é útil para textos curtos que exigem alinhamento completo.</p>

<p class="callout warning">O valor `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">justify-all</span>` pode **não ser suportado** em navegadores mais antigos; <span style="text-decoration: underline;">teste a compatibilidade se necessário</span>.</p>

# Word-Break

As classes utilitárias de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">word-break</span>` no WPF são projetadas para controlar o comportamento de quebra de palavras em elementos HTML, utilizando a propriedade CSS `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">word-break</span>`. Elas são ideais para gerenciar textos longos, layouts responsivos ou conteúdos em idiomas que não utilizam espaços entre palavras.

### Como Funcionam as Classes de Word-Break

As classes seguem uma sintaxe simples e intuitiva, permitindo ajustar a quebra de palavras de acordo com a necessidade. Veja as classes disponíveis:

<table border="1" id="bkmrk-classes-utilit%C3%A1rias-" style="width: 122.262%;"><colgroup><col style="width: 49.2247%;"></col><col style="width: 50.7753%;"></col></colgroup><thead><tr><td class="align-center">Classes Utilitárias</td><td class="align-center">Comportamento</td></tr></thead><tbody><tr><td class="align-center">`w-nobreak`  
</td><td class="align-center">*Usa o **comportamento padrão** de quebra de palavras, onde o texto só é quebrado em **espaços em branco** ou **pontos naturais**. Palavras longas podem ultrapassar os limites do contêiner se não houver espaços suficientes.*

</td></tr><tr><td class="align-center">`w-break`  
</td><td class="align-center">*Permite que palavras longas sejam quebradas em pontos arbitrários para se ajustar ao contêiner, evitando overflow. Ideal para textos em idiomas ocidentais com palavras extensas.*</td></tr><tr><td class="align-center">`w-break-all`  
</td><td class="align-center">*Quebra o texto em qualquer ponto, inclusive dentro de palavras. Útil para idiomas sem espaços, como chinês ou japonês.*</td></tr><tr><td class="align-center">`w-break-keep-all`  
</td><td class="align-center">*Impede a quebra dentro de palavras, mantendo-as intactas. Pode causar overflow se as palavras forem longas, sendo ideal para preservar a integridade de palavras em idiomas com espaços.*</td></tr></tbody></table>

### Como Usar

Aplique essas classes a elementos de texto como `<p>`, `<div>` ou `<span>`. Elas são especialmente úteis em layouts responsivos ou para textos multilíngues com diferentes necessidades de quebra.

#### Exemplo 1: Comportamento Padrão

```html
<div class="w-300px w-nobreak">
  <p>Palavra longa: Supercalifragilisticexpialidocious</p>
  <!-- A palavra longa pode ultrapassar o contêiner de 300px, pois a quebra só ocorre nos espaços. -->
</div>
```

#### Exemplo 2: Quebra de Palavras Longas

```html
<div class="w-300px w-break">
  <p>Palavra longa: Supercalifragilisticexpialidocious</p>
  <!-- A palavra é quebrada para se ajustar ao contêiner, evitando overflow. -->
</div>
```

#### Exemplo 3: Quebra em Qualquer Ponto

```html
<div class="w-300px w-breakall">
  <p>Texto em chinês: 这是一个很长的句子，没有空格。</p>
  <!-- O texto é quebrado em qualquer ponto, ajustando-se ao contêiner mesmo sem espaços. -->
</div>
```

#### Exemplo 4: Preservar Palavras

```html
<div class="w-300px w-break-keep-all">
  <p>Texto em japonês: これは非常に長い文で、単語を壊さないようにします。</p>
  <!-- As palavras são mantidas intactas, mas o texto pode ultrapassar o contêiner se for muito longo. -->
</div>
```

### Dicas de Uso

- **Idiomas sem Espaços**: Use `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">w-break-all</span>` para textos em *chinês*, *japonês* ou *tailandês*.
- **Preservar Palavras**: Prefira `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">w-break-keep-all</span>` para idiomas como *português* ou *inglês*, mantendo a legibilidade.
- **Combinações**: Combine com classes de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow</span>` (ex.: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow-hidden</span>`) para gerenciar excessos de texto.
- **Responsividade**: Use `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">w-break</span>` com larguras dinâmicas (ex.: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">w-100%</span>`) para layouts adaptáveis.
- **Testes**: Verifique o comportamento em diferentes navegadores, especialmente para idiomas específicos.

### Notas

<p class="callout warning">O uso de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">w-break-all</span>` pode afetar a legibilidade; **aplique com cuidado** e teste o resultado visual.</p>

<p class="callout info">As classes `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">w-nobreak</span>` e `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">w-break</span>` são mais comuns em **idiomas ocidentais**, enquanto `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">w-break-all</span>` e `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">w-break-keep-all</span>` atendem a necessidades de **idiomas asiáticos** ou **textos técnicos**.</p>

# Text-Wrap

As classes utilitárias de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">text-wrap</span>` no **WPF** permitem controlar como o texto é quebrado e exibido em um elemento, utilizando a propriedade CSS `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">text-wrap</span>`. Elas são ideais para ajustar a apresentação de texto em layouts variados, desde evitar quebras de linha até aplicar modos avançados de formatação.

A propriedade `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">text-wrap</span>` define o comportamento de quebra de linha do texto dentro de um contêiner. Com as classes do WPF, você pode facilmente aplicar esses comportamentos sem escrever CSS manualmente, garantindo consistência e praticidade no design.

### Classes Disponíveis

- `t-nowrap`: Impede que o texto quebre em várias linhas, exibindo-o em uma única linha contínua. Útil para títulos ou textos que devem permanecer compactos, mas pode gerar overflow se o conteúdo for maior que o contêiner.
- `t-wrap`: Permite que o texto quebre em linhas de forma natural, conforme o espaço disponível e as regras de quebra de palavras do navegador.
- <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">`t-wrap-auto`: </span>Deixa o navegador escolher o modo de quebra mais adequado.
- `t-wrap-balance`: Distribui o texto de forma equilibrada entre as linhas, ideal para parágrafos curtos.
- `t-wrap-stable`: Garante consistência no layout durante a renderização, evitando mudanças bruscas.
- `t-wrap-pretty`: Prioriza a legibilidade, ajustando as quebras para um fluxo visual mais agradável.

### Exemplos de Uso

#### Exemplo 1: Texto em Linha Única

```html
<span class="t-nowrap">Este texto longo não será quebrado em várias linhas.</span>
```

#### Exemplo 2: Quebra de Linha Padrão

```html
<p class="t-wrap">Este texto será quebrado em linhas conforme o espaço disponível no contêiner.</p>
```

#### Exemplo 3: Modos Específicos

```html
<p class="t-wrap-balance">Este parágrafo será balanceado para linhas de tamanhos similares.</p>
<p class="t-wrap-pretty">Este texto é ajustado para melhor legibilidade e fluidez.</p>
```

### Dicas e Notas

<p class="callout info">**Overflow**: Use `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">t-nowrap</span>` com classes de <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow</span> (ex.: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overflow-hidden</span>`) para gerenciar texto que ultrapassa o contêiner.</p>

<p class="callout warning">**Compatibilidade**: Modos como *<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">balance</span>* e *<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">pretty</span>* podem não ser suportados em navegadores antigos. Teste em seu ambiente alvo.</p>

# Word-Wrap

As classes utilitárias de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">word-wrap</span>` no **WPF** são usadas para controlar o comportamento de quebra de palavras em elementos HTML, aplicando a propriedade CSS `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">word-wrap</span>`. Elas ajudam a gerenciar textos longos em contêineres com largura limitada.

### Classes Disponíveis

- `w-nowrap`: Impede a quebra de palavras, mantendo o texto em uma única linha. Se o texto for muito longo, ele pode ultrapassar os limites do contêiner, **resultando em overflow**.
- `w-wrap`: Permite que palavras longas sejam quebradas em pontos arbitrários, ajustando o texto ao tamanho do contêiner e **evitando overflow**.

### Exemplos de Uso

#### Exemplo 1: Impedir Quebra de Palavras

```html
<div class="w-300px w-nowrap">
  <p>Supercalifragilisticexpialidocious</p>
  <!-- A palavra longa não será quebrada e pode exceder a largura de 300px do contêiner. -->
</div>
```

#### Exemplo 2: Permitir Quebra de Palavras

```html
<div class="w-300px w-wrap">
  <p>Supercalifragilisticexpialidocious</p>
  <!-- A palavra será quebrada para se ajustar ao contêiner de 300px. -->
</div>
```

# Line-Height

As classes utilitárias de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">line-height</span>` no **WPF** permitem ajustar a altura das linhas de texto de forma rápida e consistente. Elas controlam o espaçamento entre linhas, melhorando a legibilidade e a estética do texto em parágrafos, títulos e outros elementos.

### Como Funcionam as Classes de Line Height

As classes seguem o padrão **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">lh-\[valor\]\[unidade\]</span>**, onde:

- **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">\[valor\]</span>** é um número (*inteiro* ou *decimal*) que **define o tamanho da altura da linha**.
- **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">\[unidade\]</span>** é uma unidade de medida obrigatória: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">px</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">rem</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">em</span>` ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">%</span>`.

### Regras CSS Geradas

Cada classe é convertida para a propriedade CSS `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">line-height</span>`. Por exemplo:

- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">lh-20px</span>` → <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">`line-height: 20px`;</span>
- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">lh-1.5rem</span>` → <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">`line-height: 1.5rem`;</span>
- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">lh-150%</span>` → <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">`line-height: 150%`;</span>

### Como Usar

Aplique as classes diretamente aos elementos HTML, como `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"><p></span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"><h1></span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"><li></span>`, etc., para ajustar o espaçamento entre linhas.

#### Exemplo 1: Texto de Corpo

```html
<p class="lh-1.6rem">
  <!-- Este parágrafo tem uma altura de linha de 1.6rem, ideal para legibilidade em textos longos. -->
</p>
```

#### Exemplo 2: Títulos

```html
<h2 class="lh-1.2em">
  <!-- Este título usa uma altura de linha mais compacta, perfeita para textos curtos. -->
</h2>
```

### Notas

<p class="callout warning">Essas classes exigem uma unidade de medida (`<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">px</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">rem</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">em</span>`, ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">%</span>`). Valores sem unidade (ex.: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">lh-1.5</span>`) não são suportados por este conjunto de utilitários.  
</p>

# Font-Size

As classes utilitárias de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">font-size</span>` no **WPF** permitem ajustar o tamanho da fonte de elementos HTML de maneira rápida e consistente. Elas utilizam a propriedade CSS `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">font-size</span>` e suportam unidades absolutas e relativas, como `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">px</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">em</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">rem</span>` e `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">%</span>`, oferecendo flexibilidade para diferentes contextos de design.

### Como Funcionam as Classes de Font-Size

As classes seguem o padrão **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">fs-\[valor\]\[unidade\]</span>**, onde:

- **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">\[valor\]</span>** é um número (*inteiro* ou *decimal*) que **define o tamanho da fonte**.
- **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">\[unidade\]</span>** é uma unidade de medida obrigatória: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">px</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">em</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">rem</span>` ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">%</span>`.

### Regras CSS Geradas

Cada classe é traduzida diretamente para a propriedade CSS `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">font-size</span>`. Por exemplo:

- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">fs-16px</span>` → <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">`font-size: 16px`;</span>
- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">fs-1.5rem</span>` → <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">`font-size: 1.5rem`;</span>
- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">fs-120%</span>` → <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">`font-size: 120%`;</span>

### Como Usar

Aplique as classes diretamente a elementos de texto, como `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"><p></span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"><h1></span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"><span></span>`, etc., para ajustar o tamanho da fonte. As classes são ideais para criar hierarquias tipográficas claras e consistentes.

#### Exemplo 1: Texto de Corpo

```html
<p class="fs-16px">Este parágrafo tem fonte de 16px.</p>
<p class="fs-1.2rem">Este parágrafo tem fonte de 1.2rem, relativo ao elemento raiz.</p>
```

#### Exemplo 2: Títulos

```html
<h1 class="fs-32px">Título Principal (32px)</h1>
<h2 class="fs-24px">Subtítulo (24px)</h2>
```

#### Exemplo 3: Tamanhos Relativos

```html
<div class="fs-1.5em">
  <p>Este texto é 1.5 vezes maior que o pai.</p>
  <p class="fs-80%">Este texto é 80% do tamanho do pai (1.5em * 0.8 = 1.2em do original).</p>
</div>
```

#### Exemplo 4: Percentuais

```html
<p class="fs-150%">Este texto é 150% maior que o tamanho da fonte do pai.</p>
```

### Dicas e Melhores Práticas

<p class="callout info">**Hierarquia**: Combine diferentes tamanhos para criar uma hierarquia visual clara entre títulos, subtítulos e textos de corpo. Mantenha-se consistente em quais tags html utilizar para quais tamanhos;</p>

<p class="callout info">**Acessibilidade**: Evite tamanhos muito pequenos (ex.: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">fs-10px</span>`) para garantir legibilidade, especialmente em dispositivos móveis. O *tamanho recomendado para texto é a partir de* **12 pixels de tamanho.**</p>

<p class="callout info">**Testes**: Verifique o comportamento em diferentes navegadores e tamanhos de tela para garantir que o texto se ajuste corretamente.</p>

# Text-Decoration

As classes utilitárias de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">text-decoration</span>` no **WPF** permitem adicionar ou remover decorações de texto, como *sublinhados*, *linhas sobre o texto* ou *tachados*, de **forma rápida e consistente**. Elas utilizam a propriedade CSS `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">text-decoration</span>` e oferecem uma variedade de estilos para personalizar a aparência do texto.

### Como Funcionam as Classes de Text-Decoration

As classes seguem o padrão **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">t-\[estilo\]</span>**, onde **<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">\[estilo\]</span>** é um dos valores permitidos: `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">underline</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">dashed</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">double</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">line-through</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">overline</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">solid</span>`, `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">wavy</span>` ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">none</span>`.

<table border="1" id="bkmrk-classes-utilit%C3%A1rias-" style="border-collapse: collapse; width: 100%; height: 303.641px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><thead><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">Classes Utilitárias</td><td class="align-center" style="height: 29.7969px;">Comportamento</td></tr></thead><tbody><tr style="height: 30.1094px;"><td class="align-center" style="height: 30.1094px;">`t-underline`  
</td><td class="align-center" style="height: 30.1094px;">*Adiciona um **sublinhado sólido** ao texto.*

</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">`t-dashed`  
</td><td class="align-center" style="height: 46.5938px;">*Adiciona um **sublinhado tracejado** ao texto.*</td></tr><tr style="height: 46.5938px;"><td class="align-center" style="height: 46.5938px;">`t-double`  
</td><td class="align-center" style="height: 46.5938px;">*Adiciona um **sublinhado** **duplo** ao texto.*</td></tr><tr style="height: 30.1094px;"><td class="align-center" style="height: 30.1094px;">`t-line-through`  
</td><td class="align-center" style="height: 30.1094px;">*Adiciona um **tachado** ao texto.*</td></tr><tr style="height: 30.1094px;"><td class="align-center" style="height: 30.1094px;">`t-overline`  
</td><td class="align-center" style="height: 30.1094px;">*Adiciona uma **linha sobre** o texto.*</td></tr><tr style="height: 30.1094px;"><td class="align-center" style="height: 30.1094px;">`t-solid`  
</td><td class="align-center" style="height: 30.1094px;">*Adiciona um **sublinhado sólido** (similar a* `underline`*, mas pode ser usado para consistência).*</td></tr><tr style="height: 30.1094px;"><td class="align-center" style="height: 30.1094px;">`t-wavy`  
</td><td class="align-center" style="height: 30.1094px;">*Adiciona um **sublinhado ondulado** ao texto.*</td></tr><tr style="height: 30.1094px;"><td class="align-center" style="height: 30.1094px;">`t-none`  
</td><td class="align-center" style="height: 30.1094px;">***Remove qualquer decoração** de texto.*</td></tr></tbody></table>

### Regras CSS Geradas

Cada classe é traduzida diretamente para a propriedade CSS `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">text-decoration</span>`, seguindo o template **.t-<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">\[estilo\] { text-decoration: \[estilo\]; }</span>**. Por exemplo:

- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">t-underline</span>` → <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">`text-decoration: underline`;</span>
- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">t-dashed</span>` → <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">`text-decoration: dashed`;</span>
- `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">t-none</span>` → <span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">`text-decoration: none`;</span>

### Exemplos de Uso

#### Exemplo 1: Sublinhado Simples

```html
<p class="t-underline">Este texto está sublinhado.</p>
```

#### Exemplo 2: Tachado

```html
<p class="t-line-through">Este texto está tachado.</p>
```

#### Exemplo 3: Sublinhado Ondulado

```html
<p class="t-wavy">Este texto tem um sublinhado ondulado.</p>
```

#### Exemplo 4: Remover Decoração

```html
<a href="#" class="t-none">Este link não tem sublinhado.</a>
```

### Guia de Boas Práticas

<p class="callout info">**Acessibilidade**: Use `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">t-line-through</span>` para indicar **texto excluído** ou **desatualizado**, mas certifique-se de que o significado seja claro para todos os usuários.</p>

<p class="callout info">**Consistência**: Use `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">t-none</span>` para remover sublinhados de links ou outros elementos que por padrão têm decorações.</p>

<p class="callout warning">**Navegadores**: Alguns estilos, como `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">dashed</span>` ou `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">wavy</span>`, podem ter renderizações diferentes em navegadores antigos. Teste em seu ambiente alvo.</p>

### Notas

<p class="callout info">As classes de `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">text-decoration</span>` são aplicadas diretamente ao elemento e afetam todo o texto dentro dele.</p>

<p class="callout warning">Para decorações mais complexas, como múltiplas linhas ou cores específicas, considere usar CSS personalizado.</p>

<p class="callout success">O valor `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">solid</span>` é similar a `<span class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn">underline</span>`, mas pode ser útil para manter a consistência na nomenclatura.</p>

# Posicionamento

Aprenda mais sobre como utilizar classes relacionadas à position, overflow, z-index, box-sizing entre outros que regem a posição espacial do seu elemento visual dentro do ambiente de trabalho.

# Posicionamento

Essas classes oferecem diferentes opções de posicionamento para elementos HTML. Elas são úteis ao precisar controlar a posição de um elemento em relação ao seu contêiner ou à janela do navegador.

### **Classes Disponíveis**

- `.static`: Define o posicionamento do elemento como estático, ou seja, ele segue o fluxo normal do documento e não é afetado por outros elementos.
- `.sticky`: Define o posicionamento do elemento como "sticky", o que significa que ele se comporta como "relative" até que atinja um determinado ponto de rolagem. Após atingir esse ponto, ele se torna "fixed", mantendo-se fixo na tela.
- `.relative`: Define o posicionamento do elemento como relativo ao seu posicionamento normal. Isso permite que você mova o elemento usando as propriedades **`top`**, **`right`**, **`bottom`** e **`left`**.
- `.absolute`: Define o posicionamento do elemento como absoluto em relação ao seu ancestral mais próximo que possui uma posição diferente de `static`. Se nenhum ancestral for encontrado, o elemento será posicionado em relação ao elemento `<html>`.
- `.fixed`: Define o posicionamento do elemento como fixo em relação à janela do navegador. Ele permanecerá na mesma posição, independentemente da rolagem da página.

### **Uso**

Para aplicar esses estilos de posicionamento a um elemento HTML, basta adicionar a classe correspondente conforme necessário. Por exemplo:

```html
<div class="static">
    Este é um elemento com posicionamento estático.
</div>

<div class="sticky">
    Este é um elemento com posicionamento "sticky".
</div>

<div class="relative">
    Este é um elemento com posicionamento relativo.
</div>

<div class="absolute">
    Este é um elemento com posicionamento absoluto.
</div>

<div class="fixed">
    Este é um elemento com posicionamento fixo.
</div>
```

Cada classe de posicionamento alterará o comportamento do elemento conforme descrito acima, permitindo um controle preciso sobre o layout e a aparência da página.

# Configurando posicionamento por funções

Há casos onde será necessário instruir o elemento a se comportar de uma maneira ainda mais específica e, portanto, o WPF oferece algumas funções que auxiliam o usuário a configurar o posicionamento do seu elemento de forma específica diretamente no seu arquivo SCSS/SASS:

Confira elas aqui:

[setPosition()](https://www.notion.so/setPosition-1341d6473c9981b181bbe9db1a77081f?pvs=21)

[centerPosition()](https://www.notion.so/centerPosition-1341d6473c9981ed984acc6c75d5b8ce?pvs=21)

Esses mixins oferecem maneiras simples e flexíveis de configurar o posicionamento de elementos em seus projetos, permitindo uma maior personalização e controle sobre o layout.

Além dos mixins, você também pode optar por usar uma versão dessas funções *em classe.* Juntamente com as classes auxiliares que definem um posicionamento. Se elas forem `absolute`, `relative` ou `fixed` , é possível utilizar as funções `top()`, `right()`, `bottom()` e `left()`, com valores em **%, px, dvh** ou **dvw** para setar valores **diretamente no atributo class** do seu componente HTML. É possível até mesmo utilizar o mixin [centerPosition()](https://www.notion.so/centerPosition-1341d6473c9981ed984acc6c75d5b8ce?pvs=21) via classe com a função `center()`.

# Transbordamento

As classes de overflow são utilizadas para definir o comportamento de overflow (transbordamento) de conteúdo para um elemento. Elas oferecem opções para controlar o comportamento de overflow em várias direções.

### Uso Geral:

```html
<div class="overflow-y">
    <!-- Conteúdo aqui -->
</div>
```

### Opções Disponíveis:

- **`.overflow`**: 
    - Aplica **`overflow: auto !important;`** para habilitar barras de rolagem quando necessário.
- **`.overflow-hidden`**: 
    - Aplica **`overflow: hidden !important;`** para ocultar o conteúdo que ultrapassa os limites do elemento.
- **`.overflow-scroll`**: 
    - Aplica **`overflow: scroll !important;`** para exibir barras de rolagem, independentemente se o conteúdo ultrapassa os limites ou não.
- **`.overflow-visible`**: 
    - Aplica **`overflow: visible !important;`** para exibir todo o conteúdo, mesmo que ele ultrapasse os limites do elemento.

### Opções de Direção:

As classes também oferecem opções para controlar o comportamento de overflow em direções específicas: vertical e horizontal.

- **`.overflow-y`**: 
    - Aplica **`overflow-y: auto !important;`** para habilitar barras de rolagem vertical quando necessário.
- **`.overflow-y-hidden`**: 
    - Aplica **`overflow-y: hidden !important;`** para ocultar o conteúdo que ultrapassa os limites verticalmente.
- **`.overflow-y-scroll`**: 
    - Aplica **`overflow-y: scroll !important;`** para exibir barras de rolagem vertical, independentemente se o conteúdo ultrapassa os limites ou não.
- **`.overflow-y-visible`**: 
    - Aplica **`overflow-y: visible !important;`** para exibir todo o conteúdo verticalmente, mesmo que ele ultrapasse os limites do elemento.
- **`.overflow-x`**: 
    - Aplica **`overflow-x: auto !important;`** para habilitar barras de rolagem horizontal quando necessário.
- **`.overflow-x-hidden`**: 
    - Aplica **`overflow-x: hidden !important;`** para ocultar o conteúdo que ultrapassa os limites horizontalmente.
- **`.overflow-x-scroll`**: 
    - Aplica **`overflow-x: scroll !important;`** para exibir barras de rolagem horizontal, independentemente se o conteúdo ultrapassa os limites ou não.
- **`.overflow-x-visible`**: 
    - Aplica **`overflow-x: visible !important;`** para exibir todo o conteúdo horizontalmente, mesmo que ele ultrapasse os limites do elemento.