🌍 Estilos Globais no globals.css
Este arquivo contém a definição de estilos globais para a aplicação, configurando temas e estilos básicos. Utiliza o Tailwind CSS para facilitar a personalização e a definição de estilos.
📜 Importações e Configuração Inicial
O arquivo começa importando os estilos essenciais do Tailwind CSS para garantir que a base, componentes e utilitários estejam disponíveis.
🔄 Importações do Tailwind CSS
@tailwind base;
@tailwind components;
@tailwind utilities;
Essas diretivas importam a base de estilos, componentes e utilitários do Tailwind CSS para a aplicação.
🛠️ Camadas de Estilo: @layer base
A seguir, temos a definição de variáveis de tema e regras de estilo padrão.
🎨 Variáveis CSS para Temas
@layer base {
:root {
--background: 213.8 100% 95%;
--foreground: 213.8 5% 10%;
--card: 213.8 50% 90%;
--primary: 213.8 100% 96.9%;
--secondary: 213.8 30% 70%;
--accent: 175.8 30% 80%;
--destructive: 0 100% 31%;
--border: 213.8 30% 50%;
--radius: 0.5rem;
}
}
Essas variáveis definem as cores e características de design para a aplicação, com temas claros e escuros.
🌙 Tema Escuro
.dark {
--background: 213.8 50% 10%;
--foreground: 213.8 5% 90%;
--primary: 213.8 100% 96.9%;
--secondary: 213.8 30% 20%;
--muted: 175.8 30% 25%;
--accent: 175.8 30% 25%;
--border: 213.8 30% 31%;
}
Quando o tema escuro é ativado, as variáveis são redefinidas para garantir um contraste adequado e uma experiência visual consistente.
🔲 Estilos Globais
🔶 Aplicação de Estilos Básicos
* {
@apply border-border;
}
body {
@apply bg-background text-foreground;
}
Esses estilos aplicam bordas e definem o fundo e a cor do texto do corpo, garantindo uma base visual consistente.
📝 Estilos para Texto Rico
🏷️ Cabeçalhos e Texto
.richText h1 {
font-size: 2.5rem;
margin-top: 1.5rem;
margin-bottom: 1rem;
}
Aqui, temos os estilos para os cabeçalhos, com margens e tamanhos definidos para hierarquizar o conteúdo textual.
📜 Parágrafos e Listas
.richText p {
margin: 0.75rem 0;
text-align: justify;
}
.richText ul, .richText ol {
padding-left: 1.5rem;
margin: 0.75rem 0;
}
Estilos para parágrafos com alinhamento justificado e listas com padding personalizado para boa legibilidade.
💻 Citações e Blocos de Código
.richText blockquote {
margin: 1rem 0;
padding: 0.5rem 1rem;
border-left: 4px solid currentColor;
}
.richText pre {
background-color: #f4f4f4;
padding: 0.75rem;
border-radius: 4px;
overflow-x: auto;
}
Estilos para citações, com bordas e destaque, e blocos de código com fundo e padding personalizados para fácil leitura.
🔗 Links e Imagens
.richText a {
text-decoration: underline;
cursor: pointer;
}
.richText img {
max-width: 100%;
height: auto;
display: block;
margin: 0.75rem 0;
}
Links sublinhados e responsivos, e imagens ajustadas para garantir uma exibição flexível em qualquer dispositivo.
📝 Código Completo
Aqui está o código completo do arquivo globals.css
:
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
--background: 213.8 100% 95%;
--foreground: 213.8 5% 10%;
--card: 213.8 50% 90%;
--card-foreground: 213.8 5% 15%;
--popover: 213.8 100% 95%;
--popover-foreground: 213.8 100% 10%;
--primary: 213.8 100% 96.9%;
--primary-foreground: 0 0% 0%;
--secondary: 213.8 30% 70%;
--secondary-foreground: 0 0% 0%;
--muted: 175.8 30% 85%;
--muted-foreground: 213.8 5% 35%;
--accent: 175.8 30% 80%;
--accent-foreground: 213.8 5% 15%;
--destructive: 0 100% 31%;
--destructive-foreground: 213.8 5% 90%;
--border: 213.8 30% 50%;
--input: 213.8 30% 31%;
--ring: 213.8 100% 96.9%;
--radius: 0.5rem;
}
.dark {
--background: 213.8 50% 10%;
--foreground: 213.8 5% 90%;
--card: 213.8 50% 10%;
--card-foreground: 213.8 5% 90%;
--popover: 213.8 50% 5%;
--popover-foreground: 213.8 5% 90%;
--primary: 213.8 100% 96.9%;
--primary-foreground: 0 0% 0%;
--secondary: 213.8 30% 20%;
--secondary-foreground: 0 0% 100%;
--muted: 175.8 30% 25%;
--muted-foreground: 213.8 5% 60%;
--accent: 175.8 30% 25%;
--accent-foreground: 213.8 5% 90%;
--destructive: 0 100% 31%;
--destructive-foreground: 213.8 5% 90%;
--border: 213.8 30% 31%;
--input: 213.8 30% 31%;
--ring: 213.8 100% 96.9%;
--radius: 0.5rem;
}
}
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground;
}
}
.richText {
font-family: 'Arial', sans-serif;
font-size: 1rem;
line-height: 1.6;
margin: 1rem 0;
word-wrap: break-word;
}
.richText h1 {
font-size: 2.5rem;
margin-top: 1.5rem;
margin-bottom: 1rem;
}
.richText h2 {
font-size: 2rem;
margin-top: 1.4rem;
margin-bottom: 0.9rem;
}
.richText h3 {
font-size: 1.75rem;
margin-top: 1.3rem;
margin-bottom: 0.8rem;
}
.richText h4 {
font-size: 1.5rem;
margin-top: 1.2rem;
margin-bottom: 0.7rem;
}
.richText h5 {
font-size: 1.25rem;
margin-top: 1.1rem;
margin-bottom: 0.6rem;
}
.richText h6 {
font-size: 1.1rem;
margin-top: 1rem;
margin-bottom: 0.5rem;
font-weight: bold;
}
.richText p {
margin: 0.75rem 0;
text-align: justify;
}
.richText ul,
.richText ol {
padding-left: 1.5rem;
margin: 0.75rem 0;
}
.richText ul li,
.richText ol li {
margin-bottom: 0.5rem;
list-style-position: outside;
}
.richText ul {
list-style-type: disc;
}
.richText ol {
counter-reset: list-counter;
}
.richText ol li {
counter-increment: list-counter;
position: relative;
}
.richText ol li::before {
content: counter(list-counter) '. ';
position: absolute;
left: -1.5rem;
}
.richText blockquote {
margin: 1rem 0;
padding: 0.5rem 1rem;
border-left: 4px solid currentColor;
font-style: italic;
}
.richText code {
font-family: 'Courier New', monospace;
padding: 0.2rem 0.4rem;
background-color: #f4f4f4;
border-radius: 4px;
white-space: pre-wrap;
}
.richText pre {
background-color: #f4f4f4;
padding: 0.75rem;
border-radius: 4px;
overflow-x: auto;
font-family: 'Courier New', monospace;
margin: 1rem 0;
white-space: pre;
}
.richText a {
text-decoration: underline;
cursor: pointer;
}
.richText img {
max-width: 100%;
height: auto;
display: block;
margin: 0.75rem 0;
}
.richText table {
width: 100%;
border-collapse: collapse;
margin: 0.75rem 0;
}
.richText table th,
.richText table td {
padding: 0.6rem;
border: 1px solid #ddd;
text-align: left;
}
.richText table th {
font-weight: bold;
}
.richText ul[data-lexical-list-type='check'] li {
list-style-type: none;
}
.richText ul[data-lex
ical-list-type='check'] li input {
cursor: pointer;
}