Skip to content

Commit ba6dd67

Browse files
committed
feat: Implement and document the new "Zen" design system philosophy by updating theme configurations and anti-pattern guidelines.
1 parent 1b3f4c7 commit ba6dd67

File tree

6 files changed

+602
-182
lines changed

6 files changed

+602
-182
lines changed
Lines changed: 97 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,120 @@
11
---
22
name: riligar-design-system
3-
description: Especialista no Sistema Visual da RiLiGar. Use para: (1) Criação de interfaces web e mobile (Light/Dark Mode), (2) Implementação de componentes UI (Mantine Only), (3) Garantir estética minimalista "Content-First", (4) Aplicar tokens de design via Mantine Theme.
3+
description: Especialista no Sistema Visual Zen da RiLiGar. Use para: (1) Criação de interfaces com estética "Content over Chrome", (2) Aplicar hierarquia massiva via Big Type Metrics, (3) Diferenciar contextos Zen Stage (impacto) e Zen Dense (densidade), (4) Implementar componentes UI (Mantine Only), (5) Garantir padrão monocromático e palco central limpo.
44
---
55

6-
# RiLiGar Design System Expert
6+
# 🏮 RiLiGar Zen Design System
77

8-
Você é um especialista em design e interface seguindo as diretrizes da RiLiGar. Sua missão é garantir que qualquer código gerado use **APENAS** a API do Mantine 8, sem CSS customizado ou inline.
8+
Você é um especialista em design e interface seguindo a filosofia **Zen** da RiLiGar. Sua missão é garantir que qualquer código gerado siga os princípios do Zen e use **APENAS** a API do Mantine 8, sem CSS customizado ou inline.
99

10-
## Filosofia: "Content-First" & "Theme-Aware"
10+
> _"O Zen não é sobre o que você coloca, é sobre o que você decide não colocar."_
1111
12-
A interface deve ser invisível e funcionar perfeitamente em Light e Dark Mode.
12+
---
13+
14+
## A Filosofia Zen: 3 Pilares
15+
16+
### 1. Content over Chrome
17+
18+
A interface **não compete** com a informação. Botões, bordas e sombras são reduzidos ao mínimo absoluto. Se um elemento não ajuda na leitura do dado, ele é removido sem piedade.
19+
20+
### 2. The Stage (O Palco)
21+
22+
Cada visualização é tratada como um **palco teatral**:
23+
24+
- O cabeçalho é o "anúncio" → Subtítulo leve (Small Caps, 10-12px, fw 800) + Título pesado (48-72px, fw 900)
25+
- O conteúdo é a "performance" → Centro da tela limpo, focado, sem distrações laterais
26+
- O `ZenLayout` garante essa fundação: container `size="xl"`, padding vertical generoso (`py={80}`)
27+
28+
### 3. Hierarquia Massiva
29+
30+
Dados não são exibidos — são **declarados**. Números se tornam declarações de design:
31+
32+
- **Big Type Metrics**: fw 900, fz 64-120px, lh 1
33+
- **Labels**: fw 800, fz 10-12px, uppercase, letter-spacing 1.5px, cor gray.4
34+
- **Títulos**: fw 900, fz 48-72px, letter-spacing -0.04em
35+
36+
---
37+
38+
## Dois Contextos de Aplicação
39+
40+
O agente **DEVE** identificar o contexto antes de gerar qualquer interface:
41+
42+
### 🎭 Zen Stage (Impacto Teatral)
43+
44+
**Quando usar:** Landing pages, dashboards de métricas, onboarding, telas de apresentação.
1345

14-
- **Estrutura:** Whitespace e alinhamento preciso.
15-
- **Estética:** Monocromática, funcional, estilo Notion/Linear.
16-
- **Técnica:** Zero CSS files. Zero `style={{}}`. Tudo via Props.
46+
- Tipografia massiva (Big Type Metrics 64px+)
47+
- Inputs minimalistas (unstyled, apenas `border-bottom`)
48+
- Padding vertical generoso (80px)
49+
- Container centralizado size XL
50+
- Máximo de respiro, mínimo de elementos
51+
52+
### 📊 Zen Dense (Densidade Admin)
53+
54+
**Quando usar:** Painéis admin, tabelas, formulários CRUD, configurações.
55+
56+
- Densidade de dados estilo Notion/Linear
57+
- Inputs com borda completa (compactos, 32px)
58+
- Tabelas com padding tight (`py-xs`)
59+
- Foco em escaneabilidade e eficiência
60+
61+
**Importante:** Ambos os contextos compartilham a mesma alma — monocromia, Content over Chrome, zero ornamentos. A diferença está no **ritmo** e na **escala tipográfica**.
62+
63+
---
1764

1865
## Guia de Referência
1966

20-
Para atingir a excelência:
67+
Para atingir a excelência Zen:
2168

22-
- **[Excellence Patterns](references/master-patterns.md)**: Código "Gold Standard" usando Mantine Props. **Sempre use como base.**
23-
- **[Theme Config](assets/theme.js)**: Configuração do tema com suporte a Dark Mode automático.
24-
- **[Visual references](references/visual-references.md)**: Mapeamento de nuances estéticas.
25-
- **[Anti-patterns](references/anti-patterns.md)**: O que evitar (especialmente CSS inline).
26-
- **[Design Guidelines](references/design-system.md)**: Tipografia, cores e hierarquia visual detalhada.
69+
- **[Master Patterns](references/master-patterns.md)**: Código "Gold Standard" com patterns Stage e Dense. **Sempre use como base.**
70+
- **[Theme Config](assets/theme.js)**: Configuração do tema Zen com headings fw 900 e Dark Mode automático.
71+
- **[Visual References](references/visual-references.md)**: Dicionário Visual-Code com especificações Zen.
72+
- **[Anti-patterns](references/anti-patterns.md)**: O que evitar (CSS inline, inputs decorados, títulos leves).
73+
- **[Design Guidelines](references/design-system.md)**: Tipografia, cores, hierarquia e contextos detalhados.
74+
75+
---
2776

28-
## Checklist de Lapidação (RiLiGar Excellence)
77+
## Checklist de Lapidação Zen
2978

3079
Antes de entregar qualquer interface, o agente **DEVE** validar:
3180

32-
1. [ ] Configurei `defaultProps` no theme.js para evitar repetição de props?
33-
2. [ ] O código do componente está "limpo"? (Ex: `<Button>Save</Button>` sem `radius/size`).
34-
3. [ ] Removi **TODO** o CSS inline (`style={{}}`)?
35-
4. [ ] Usei props semânticas do Mantine (`bd`, `bg`, `c`)?
36-
5. [ ] As cores são semânticas e theme-aware? (Ex: `c="dimmed"`).
37-
6. [ ] Removi todas as tags HTML nativas (`div`, `button`)?
38-
7. [ ] Usei Montserrat via font-family do tema?
39-
8. [ ] O padding vertical em listas e tabelas é compacto?
40-
9. [ ] Os ícones usam `stroke={1.5}`?
41-
10. [ ] O resultado é "Clean" e livre de ruído visual?
81+
### Foundation
82+
83+
1. [ ] Identifiquei o contexto correto? (Stage vs Dense)
84+
2. [ ] Configurei `defaultProps` no theme.js para evitar repetição?
85+
3. [ ] O código está "limpo"? (Ex: `<Button>Save</Button>` sem `radius/size`)
86+
4. [ ] Removi **TODO** o CSS inline (`style={{}}`)? Zero CSS files?
87+
5. [ ] Removi todas as tags HTML nativas (`div`, `button`)?
88+
89+
### Zen Soul
90+
91+
6. [ ] Títulos usam fw 900 e letter-spacing -0.04em?
92+
7. [ ] Labels/subtítulos usam Small Caps (uppercase, fw 800, ls 1.5px)?
93+
8. [ ] Métricas principais usam Big Type (64px+, fw 900, lh 1)?
94+
9. [ ] Inputs no contexto Stage usam estilo unstyled (border-bottom only)?
95+
10. [ ] O layout segue o conceito de "Palco"? (container XL, py generoso)
96+
97+
### Excellence
98+
99+
11. [ ] Cores são semânticas e theme-aware? (Ex: `c="dimmed"`)
100+
12. [ ] Ícones usam `stroke={1.5}` e tamanho 16-18px?
101+
13. [ ] O padding vertical em listas/tabelas é compacto no contexto Dense?
102+
14. [ ] O resultado é "Clean" e livre de ruído visual?
103+
104+
---
42105

43106
## Princípios de Implementação
44107

45-
1. **Theme First:** Se você está repetindo `size="sm"` em todo lugar, mova para `theme.components`.
46-
2. **Mantine Nativo:** Use APENAS a API do Mantine. Zero CSS files.
47-
3. **Semântica:** Use `bg="default"` ou `bg="body"` para superfícies que mudam com o tema.
48-
4. **Bordas:** Use `withBorder` em componentes ou `bd` em Caixas.
49-
5. **Tipografia:** Use `Title`, `Text` e `Code` do sistema.
108+
1. **Theme First:** Se você está repetindo uma prop, mova para `theme.components`.
109+
2. **Mantine Nativo:** Use APENAS a API do Mantine. Zero CSS files.
110+
3. **Semântica:** Use `bg="default"` ou `bg="body"` para superfícies que mudam com o tema.
111+
4. **Bordas:** Use `withBorder` em componentes ou `bd` em Caixas.
112+
5. **Tipografia:** Use `Title`, `Text` e `Code` do sistema — nunca tags HTML.
113+
114+
## Master Prompt (Geração Zen)
50115

51-
## Instruções de Geração
116+
Ao gerar novas interfaces, use este prompt mental como guia:
52117

53-
Ao gerar UI, sempre prefira as estruturas em **[Master Patterns](references/master-patterns.md)**.
118+
> "Crie uma interface com estética Zen-Modern de alto impacto. Princípios: Conteúdo sobre Cromo (foco total na tipografia e dados). Paleta minimalista (Pure White backgrounds, Dark-9/Gray-9 texts). Hierarquia Massiva (Títulos em Bold/900 com letter-spacing -0.04em, Labels em Small Caps/LTS 1.5px). Big Type Metrics: fontes gigantes (64px+) para valores de dados principais. Inputs Minimalistas: estilo unstyled com apenas border-bottom. Palco Unificado: containers largos (XL) com padding vertical generoso (80px)."
54119
55120
**Atenção:** Código verboso com muitas props repetidas será considerado uma falha de design system.

.agent/skills/riligar-design-system/assets/theme.js

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,47 @@ import { createTheme, rem } from '@mantine/core'
33
export const theme = createTheme({
44
fontFamily: 'Montserrat, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',
55

6+
// --- ZEN HEADINGS ---
7+
// fw 900 + tracking -0.04em = Hierarquia Massiva (Zen Manifesto §3)
8+
headings: {
9+
fontWeight: '900',
10+
sizes: {
11+
h1: { fontSize: rem(56), lineHeight: '1', letterSpacing: '-0.04em' },
12+
h2: { fontSize: rem(48), lineHeight: '1', letterSpacing: '-0.04em' },
13+
h3: { fontSize: rem(32), lineHeight: '1.1', letterSpacing: '-0.03em' },
14+
h4: { fontSize: rem(20), lineHeight: '1.2', letterSpacing: '-0.02em' },
15+
},
16+
},
17+
618
colors: {
719
// Escala Neutra Universal (Substitui o gray padrão)
820
gray: [
9-
'#F9FAFB', // 0: App Background
10-
'#F3F4F6', // 1: Hover/Subtle
11-
'#E5E7EB', // 2: Borders
21+
'#F9FAFB', // 0: App Background / Canvas
22+
'#F3F4F6', // 1: Hover / Subtle Feedback
23+
'#E5E7EB', // 2: Borders (a borda universal Zen)
1224
'#D1D5DB', // 3: Disabled
13-
'#9CA3AF', // 4: Placeholder
25+
'#9CA3AF', // 4: Zen Labels (Small Caps)
1426
'#6B7280', // 5: Text Secondary
1527
'#4B5563', // 6: Text Primary Soft
1628
'#374151', // 7: Text Primary
1729
'#1F2937', // 8: Headers
18-
'#11181C', // 9: Absolute Black
30+
'#11181C', // 9: Absolute Black (nunca #000)
1931
],
20-
// Semânticos neutralizados para manter monochromaticidade total
32+
// Semânticos neutralizados para monocromaticidade total
2133
error: ['#F9FAFB', '#F3F4F6', '#E5E7EB', '#D1D5DB', '#9CA3AF', '#6B7280', '#4B5563', '#374151', '#1F2937', '#11181C'],
2234
success: ['#F9FAFB', '#F3F4F6', '#E5E7EB', '#D1D5DB', '#9CA3AF', '#6B7280', '#4B5563', '#374151', '#1F2937', '#11181C'],
2335
},
2436

2537
primaryColor: 'dark', // Escala dark mapeada para cinzas
2638
autoContrast: true,
2739

28-
defaultRadius: 'md', // 6px
40+
defaultRadius: 'md', // 6px — suave, nunca "pill"
2941

3042
components: {
3143
// --- LAYOUT & CONTAINERS ---
3244
Paper: {
3345
defaultProps: {
34-
withBorder: true,
46+
withBorder: true, // Borda > Sombra (Zen §2: Layer 1)
3547
shadow: 'none',
3648
radius: 'lg', // 8px para containers
3749
},
@@ -48,7 +60,7 @@ export const theme = createTheme({
4860
// --- DATA DISPLAY ---
4961
Table: {
5062
defaultProps: {
51-
verticalSpacing: 'xs', // 8px density
63+
verticalSpacing: 'xs', // 8px — Zen Dense density
5264
horizontalSpacing: 'md',
5365
withRowBorders: true,
5466
highlightOnHover: true,
@@ -58,22 +70,22 @@ export const theme = createTheme({
5870
defaultProps: {
5971
size: 'sm',
6072
radius: 'sm',
61-
variant: 'light',
73+
variant: 'light', // Sutil — nunca chamativo
6274
fw: 500,
6375
},
6476
},
6577

6678
// --- INPUTS & ACTIONS ---
6779
Button: {
6880
defaultProps: {
69-
size: 'sm', // 32px
81+
size: 'sm', // 32px — compacto
7082
fw: 500,
7183
radius: 'md',
7284
},
7385
},
7486
TextInput: {
7587
defaultProps: {
76-
size: 'sm', // 32px height
88+
size: 'sm', // 32px height — Zen Dense
7789
radius: 'md',
7890
},
7991
styles: theme => ({
@@ -93,7 +105,7 @@ export const theme = createTheme({
93105
},
94106
ActionIcon: {
95107
defaultProps: {
96-
size: 'sm', // 26px context triggers
108+
size: 'sm', // 26px context triggers
97109
variant: 'subtle',
98110
color: 'gray',
99111
radius: 'md',
@@ -107,14 +119,16 @@ export const theme = createTheme({
107119
color: 'gray',
108120
},
109121
},
122+
123+
// --- TYPOGRAPHY ---
110124
Title: {
111125
defaultProps: {
112-
lh: 1.2,
126+
lh: 1, // Zen: lh 1 para impacto massivo
113127
},
114128
},
115129
Text: {
116130
defaultProps: {
117-
lh: 1.6,
131+
lh: 1.6, // Corpo: respiro para legibilidade
118132
},
119133
},
120134
},
Lines changed: 67 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,85 @@
1-
# Anti-Patterns: O que NÃO é RiLiGar
1+
# Anti-Patterns: O que NÃO é Zen
22

3-
Para atingir a excelência, devemos eliminar vícios de design comum que deixam a interface com cara de "genérica".
3+
Para atingir a excelência, devemos eliminar vícios que destroem a alma Zen da interface.
44

5-
| Erro Comum | Por que é ruim? | A Solução RiLiGar |
5+
## Anti-Patterns Universais
6+
7+
| Erro Comum | Por que é ruim? | A Solução Zen |
68
| :-------------------------- | :------------------------------------------------------ | :-------------------------------------------------- |
7-
| **Sombras Drop (Pesadas)** | Adiciona ruído visual e amadorismo. | `border: 1px solid #E5E7EB`. |
8-
| **Azul "Bootstrap"** | Cor saturada demais para a estética minimalista. | Use `#000000` (Preto) ou um azul marinho `#11181C`. |
9+
| **Sombras Drop (Pesadas)** | Adiciona ruído visual e amadorismo. | `border: 1px solid gray.2`. |
10+
| **Azul "Bootstrap"** | Cor saturada demais para a estética Zen. | Use `#000000` (Preto) ou um azul marinho `#11181C`. |
911
| **Pillings (Radius total)** | Lembra apps mobile infantis ou Google Material antigos. | `border-radius: 6px`. Retangular com quinas suaves. |
1012
| **Inputs Gigantes** | Quebram a densidade de informação útil. | `height: 32px`. Compacto e focado. |
1113
| **Gradientes Lineares** | Introduzem profundidade desnecessária. | Cores puras e sólidas (Flat). |
12-
| **Divisores Escuros** | Chamam mais atenção que o próprio conteúdo. | Use `#F3F4F6` para divisores internos. |
14+
| **Divisores Escuros** | Chamam mais atenção que o próprio conteúdo. | Use `gray.1` para divisores internos. |
15+
| **CSS Inline** | Quebra a centralização do design system. | Tudo via Props do Mantine ou `theme.components`. |
16+
| **Tags HTML nativas** | `div`, `button`, `input` fora do Mantine. | Use `Box`, `Button`, `TextInput` do Mantine. |
17+
18+
## Anti-Patterns do Zen Stage
19+
20+
| Erro | Por que é ruim? | A Solução Zen |
21+
| :--------------------------------------- | :---------------------------------------------- | :----------------------------------------------- |
22+
| **Títulos com peso ≤ 700** | Falta impacto teatral. Parece genérico. | Use fw 900 com ls -0.04em. |
23+
| **Inputs com bordas completas no Stage** | Decoração excessiva. Compete com o conteúdo. | Variant `unstyled` com apenas `border-bottom`. |
24+
| **Métricas em tamanho normal (14-20px)** | Desperdiça a oportunidade de declaração visual. | Big Type: 64px+ para dados principais. |
25+
| **Container sem padding vertical** | Quebra o conceito de "Palco". Conteúdo colado. | `py={80}` no Container principal. |
26+
| **Labels sem Small Caps** | Perde a hierarquia sutil que distingue o Zen. | Uppercase, fw 800, fz 10-12px, lts 1.5px. |
27+
| **Muitos elementos competindo** | O palco fica poluído. A "performance" se perde. | Reduza. O Zen é sobre o que você decide NÃO pôr. |
1328

14-
## Exemplo de Refatoração (Cérebro do Agente)
29+
## Exemplo de Refatoração
1530

1631
**❌ Antes (Design Comum):**
1732

18-
```html
19-
<div style="box-shadow: 0 4px 6px rgba(0,0,0,0.1); border-radius: 20px; padding: 20px; background: blue;">
20-
<h1 style="color: white; font-weight: 800;">User Info</h1>
21-
<button style="border-radius: 50px; padding: 10px 20px;">Click Me</button>
33+
```jsx
34+
<div style={{ boxShadow: '0 4px 6px rgba(0,0,0,0.1)', borderRadius: 20, padding: 20 }}>
35+
<h1 style={{ fontSize: 24, fontWeight: 600 }}>Revenue</h1>
36+
<p style={{ fontSize: 18 }}>$42,500</p>
37+
<input style={{ border: '1px solid #ccc', borderRadius: 8, padding: 12 }} />
2238
</div>
2339
```
2440

25-
**✅ Depois (RiLiGar Excellence):**
41+
**✅ Depois (Zen Excellence):**
2642

27-
```html
28-
<div style="border: 1px solid #E5E7EB; border-radius: 8px; padding: 16px; background: #FFF;">
29-
<h3 style="color: #11181C; font-weight: 600; font-size: 14px; margin-bottom: 8px;">User Info</h3>
30-
<button style="border-radius: 6px; height: 32px; padding: 0 12px; background: #000; color: #FFF; font-size: 12px;">Action</button>
31-
</div>
43+
```jsx
44+
<Container
45+
size="xl"
46+
py={80}
47+
>
48+
<Stack gap={4}>
49+
<Text
50+
fz={11}
51+
fw={800}
52+
c="gray.4"
53+
tt="uppercase"
54+
lts="1.5px"
55+
>
56+
Revenue
57+
</Text>
58+
<Title
59+
order={2}
60+
fz={80}
61+
fw={900}
62+
lh={1}
63+
lts="-0.04em"
64+
>
65+
$42,500
66+
</Title>
67+
</Stack>
68+
69+
<TextInput
70+
variant="unstyled"
71+
placeholder="Search..."
72+
styles={{
73+
input: {
74+
borderBottom: '1px solid var(--mantine-color-gray-2)',
75+
borderRadius: 0,
76+
paddingBottom: 8,
77+
},
78+
}}
79+
/>
80+
</Container>
3281
```
3382

3483
---
3584

36-
_Lembre-se: O design RiLiGar é sobre **restrição**. Se você pode remover uma borda ou uma cor e o app ainda funciona, remova._
85+
_Lembre-se: O design Zen é sobre **restrição**. Se você pode remover um elemento e a interface ainda funciona, remova._

0 commit comments

Comments
 (0)