RD Station Tangram
Design system for RD Station (Tangram), Brazilian marketing automation platform. Blue primary (#1D63FF), DM Sans typography, metrics-driven dashboard patterns, and lead-nurturing workflow interfaces.
Quick Reference
Colors
Typography
Light/Dark
Light
Design Philosophy
Design system for RD Station (Tangram), Brazilian marketing automation platform. Blue primary (#1D63FF), DM Sans typography, metrics-driven dashboard
Live Preview
Fictitious landing page inspired by this design system — not affiliated with the brand.
DESIGN.md
---
name: RD Station Tangram
description: >
Design system da RD Station (Resultados Digitais) para produtos SaaS de
Marketing Digital, CRM de Vendas e Atendimento. Construído em React com
pacotes @resultadosdigitais/tangram-components, tangram-design-tokens e
tangram-react-icons. Focado em acessibilidade WCAG AA, consistência visual
e produtividade de times de produto.
colors:
primary:
primary-10: "#E8F0FF"
primary-20: "#C7DAFF"
primary-40: "#5B93FF"
primary-60: "#1D63FF"
primary-80: "#0A3FC7"
primary-on-color: "#FFFFFF"
neutral:
neutral-0: "#FFFFFF"
neutral-05: "#F7F8FA"
neutral-10: "#ECEEF2"
neutral-20: "#D3D7DE"
neutral-40: "#9BA2AD"
neutral-60: "#6B7280"
neutral-80: "#393F49"
neutral-100: "#212429"
neutral-interactive: "#4A5568"
danger:
danger-10: "#FFF0F0"
danger-20: "#FFD6D6"
danger-40: "#FF6B6B"
danger-60: "#E02020"
danger-80: "#B01A1A"
success:
success-10: "#E6FAF0"
success-20: "#B3F0D6"
success-40: "#4BD89E"
success-60: "#00875A"
success-80: "#006644"
warning:
warning-10: "#FFF8E6"
warning-20: "#FFE8B3"
warning-40: "#FFCC4D"
warning-60: "#FF991F"
warning-80: "#CC7A00"
highlight:
highlight-10: "#F0F0FF"
highlight-20: "#D6D6FF"
highlight-40: "#8B8BFF"
highlight-60: "#5243AA"
highlight-80: "#3D2E8C"
support:
support-01: "#FF6B6B"
support-02: "#FFCC4D"
support-03: "#4BD89E"
support-04: "#5B93FF"
support-05: "#8B8BFF"
support-06: "#FF8F73"
support-07: "#79E2F2"
support-08: "#B3D4FF"
typography:
families:
- DM Sans
weights:
regular: 400
bold: 700
extraBold: 800
sizes:
xxl: 36
xl: 28
lg: 20
md: 16
sm: 14
xs: 12
lineHeights:
xxl: 46
xl: 36
lg: 30
md: 24
sm: 20
xs: 16
letterSpacing:
xxl: "-0.02em"
xl: "-0.01em"
lg: "-0.01em"
md: "-0.01em"
sm: "-0.01em"
xs: "0em"
rounded:
rounded: 2
circle: "50%"
pill: 999
spacing:
spacing-01: 4
spacing-02: 8
spacing-03: 12
spacing-04: 16
spacing-05: 24
spacing-06: 32
spacing-07: 40
spacing-08: 48
spacing-09: 56
spacing-10: 64
spacing-11: 96
spacing-12: 160
---
## Overview
**Tangram** é o design system da **RD Station** (empresa brasileira de marketing digital e vendas, anteriormente chamada Resultados Digitais). Nomeado em referência ao puzzle chinês de 7 peças que formam infinitas composições, o Tangram reflete a filosofia de criar interfaces consistentes a partir de componentes modulares reutilizáveis.
O sistema foi lançado em 2018 como "Design System 1.0" e evoluiu para a versão 2.0 em 2019-2020, acompanhando o redesign completo dos produtos RD Station Marketing e RD Station CRM. É mantido pelo time de Design Ops (internamente chamado "Kondo") e pelo time Frontend Platform.
### Pacotes
| Pacote | Função |
|--------|--------|
| `@resultadosdigitais/tangram-components` | Componentes React (inclui tokens e ícones) |
| `@resultadosdigitais/tangram-design-tokens` | Design tokens (CSS custom properties) |
| `@resultadosdigitais/tangram-react-icons` | Biblioteca de ícones |
### Características
- **React-based** — Componentes em React com styled-components
- **Acessibilidade WCAG AA** — Contraste mínimo de 4.5:1 para texto normal, 3:1 para texto grande
- **Token-driven** — Todas decisões visuais expressas como CSS custom properties (`--token-name`)
- **Documentação** — Docusaurus com guidelines, exemplos e API de cada componente
- **Repositório** — [github.com/ResultadosDigitais/tangram](https://github.com/ResultadosDigitais/tangram)
---
## Colors
As cores do Tangram são organizadas em 5 grupos semânticos e usam uma escala numérica (10, 20, 40, 60, 80) onde valores menores indicam tons mais claros. O sufixo `-60` geralmente representa o tom padrão de uso.
### Primary
As cores primárias predominam nos elementos interativos e de destaque. O azul é a cor central da marca RD Station.
| Token | Uso |
|-------|-----|
| `--color-primary-10` | Background sutil, hover states suaves |
| `--color-primary-20` | Borders leves, estados selecionados |
| `--color-primary-40` | Ícones secundários, links em hover |
| `--color-primary-60` | CTA principal, botões primários, links |
| `--color-primary-80` | Hover/active em botões primários |
| `--color-primary-on-color` | Texto sobre superfícies primárias |
### Neutral
Neutros são usados em elementos sem necessidade de destaque: textos, bordas, backgrounds.
| Token | Uso |
|-------|-----|
| `--color-neutral-0` | Background branco puro |
| `--color-neutral-05` | Background da página/app |
| `--color-neutral-10` | Dividers, separadores |
| `--color-neutral-20` | Bordas padrão |
| `--color-neutral-40` | Texto de placeholder |
| `--color-neutral-60` | Texto secundário |
| `--color-neutral-80` | Texto de alta ênfase |
| `--color-neutral-100` | Texto primário/títulos |
| `--color-neutral-interactive` | Neutro com contraste elevado para elementos interativos |
### Functional (Feedback)
| Grupo | Uso |
|-------|-----|
| **Danger** | Ações críticas: exclusão, desconexão, perda de dados |
| **Success** | Feedback positivo, ações concluídas |
| **Warning** | Atenção sem criticidade, ação reversível |
| **Highlight** | Informação de suporte, ajuda (não usar como outro feedback) |
### Support
Cores de suporte são exclusivas para **charts, legendas e visualização de dados**. Não devem ser usadas em componentes de interface padrão.
---
## Typography
### Font Family
O Tangram usa a **DM Sans** em três pesos: Regular (400), Bold (700) e Extra Bold (800). DM Sans é uma sans-serif geométrica de baixo contraste, otimizada para interfaces digitais e com boa legibilidade em tamanhos menores.
### Escala Tipográfica
Os tokens são agnósticos ao elemento HTML — **não estão vinculados a tags** como `<h1>`, `<h2>`, etc. Isso exige atenção para manter a semântica HTML correta independente do estilo visual.
| Token | Size | Line Height | Letter Spacing | Uso |
|-------|:---:|:---:|:---:|-----|
| `--text-xxl` | 36px | 46px (130%) | -0.02em | Big numbers, métricas em destaque |
| `--text-xl` | 28px | 36px (130%) | -0.01em | Títulos principais de página |
| `--text-lg` | 20px | 30px (150%) | -0.01em | Subtítulos, títulos de modal/sidebar |
| `--text-md` | 16px | 24px (150%) | -0.01em | Texto padrão, labels, inputs, botões |
| `--text-sm` | 14px | 20px (140%) | -0.01em | Texto secundário, validação de inputs |
| `--text-xs` | 12px | 16px (130%) | 0em | Cabeçalhos de tabela, eixos de gráficos, footers |
### Tokens de texto disponíveis no componente Text
```
TEXT_XXL_BOLD | TEXT_XXL_EXTRABOLD | TEXT_XXL_REGULAR
TEXT_XL_BOLD | TEXT_XL_EXTRABOLD | TEXT_XL_REGULAR
TEXT_LG_BOLD | TEXT_LG_EXTRABOLD | TEXT_LG_REGULAR
TEXT_MD_BOLD | TEXT_MD_EXTRABOLD | TEXT_MD_REGULAR
TEXT_SM_BOLD | TEXT_SM_EXTRABOLD | TEXT_SM_REGULAR
TEXT_XS_BOLD | TEXT_XS_EXTRABOLD | TEXT_XS_REGULAR
```
---
## Layout
### Spacing System
O Tangram usa um grid de **8px** como base. Há 12 tokens de espaçamento organizados em duas faixas:
**Estruturas pequenas** (componentes): 4px a 24px
**Estruturas grandes** (padrões e telas completas): acima de 24px
| Token | Valor | Uso |
|-------|:---:|-----|
| `--size-spacing-01` | 4px | Espaçamento mínimo interno |
| `--size-spacing-02` | 8px | Gap entre ícone e texto |
| `--size-spacing-03` | 12px | Padding interno de tags/chips |
| `--size-spacing-04` | 16px | Padding padrão, spacing entre título e conteúdo |
| `--size-spacing-05` | 24px | Transição entre small e large structures |
| `--size-spacing-06` | 32px | Separação entre blocos de conteúdo |
| `--size-spacing-07` | 40px | Espaçamento entre seções menores |
| `--size-spacing-08` | 48px | Padding de seções |
| `--size-spacing-09` | 56px | Separações de seção |
| `--size-spacing-10` | 64px | Seções maiores |
| `--size-spacing-11` | 96px | Grandes separações visuais |
| `--size-spacing-12` | 160px | Espaçamento máximo/hero |
### Grid (componente Grid)
O sistema de grid é responsivo com `Container`, `Row` e `Col`. Suporta propriedades por viewport e permite inversão de direção:
```jsx
import { Grid } from '@resultadosdigitais/tangram-components'
<Grid.Container>
<Grid.Row>
<Grid.Col sm={12} md={6} lg={4}>...</Grid.Col>
</Grid.Row>
</Grid.Container>
```
### Vertical Rhythm
- **Título → Conteúdo abaixo:** mínimo de 16px (`--size-spacing-04`)
- **Título → Título consecutivo:** regra específica (menor espaçamento)
- Os valores são mínimos — nunca usar spacing menor que o especificado
---
## Elevation & Depth
### Sombras (Shadow tokens)
O Tangram define 6 níveis de elevação com shadows progressivos:
| Token | Nível | Uso |
|-------|:---:|-----|
| *(nenhuma)* | 1 | Nível base — textos, botões, formulários, imagens |
| `--shadow-xs` | 2 | Elementos pouco proeminentes — nav bars, cards elevados, hover states |
| `--shadow-sm` | 3 | Elementos pós-interação vinculados ao nível 1/2 — Dropdown, Popover, DatePicker |
| `--shadow-md` | 4 | Alta proeminência, atenção necessária — Toast |
| `--shadow-lg` | 5 | Máxima proeminência/isolamento — Drawer (fundo claro) |
| `--shadow-xl` | 6 | Elementos sobre fundo escuro (overlay) — Modal, Dialog, Drawer (fundo escuro) |
### Z-index
| Token | Valor | Uso |
|-------|:---:|-----|
| `--zindex-auto` | auto | Posição padrão no body |
| `--zindex-0` | 1 | Botões selecionados, Select, Card |
| `--zindex-1` | 1000 | Dropdown e Popover |
| `--zindex-2` | 1010 | Tooltips, Navbar fixa |
| `--zindex-3` | 1020 | Overlays de Drawer/Modal/Dialog |
| `--zindex-4` | 1030 | Drawer, Dialog e Modal |
| `--zindex-5` | 1040 | Overlays acima de tudo |
| `--zindex-6` | 1050 | Toast |
| `--zindex-back` | -1 | Enviar para trás |
---
## Shapes
### Border Radius
| Token | Valor | Uso |
|-------|:---:|-----|
| `--border-radius-rounded` | 2px | Arredondamento padrão de componentes |
| `--border-radius-circle` | 50% | Formações elípticas — Avatar circular |
| `--border-radius-pill` | 999px | Formações totalmente arredondadas (width = height) — pills, tags |
### Ícones
Todos os ícones do Tangram são criados em um frame de **24×24px**. Qualquer redimensionamento deve partir deste tamanho base.
---
## Motion
### Princípios
1. **Sempre com propósito** — Usar para destacar mudança de estado, revelar conteúdo ou enfatizar elemento
2. **Sem atraso desnecessário** — Animações não devem fazer o usuário esperar
3. **Metáforas do mundo físico** — Entrou pela esquerda? Sai pela esquerda. Menores se movem mais rápido
### Duration
| Token | Duração | Uso |
|-------|:---:|-----|
| `--motion-duration-extra-fast` | 100ms | Mudanças de estado em elementos pequenos (botões, toggles, checkboxes) |
| `--motion-duration-fast` | 200ms | Micro-interações, expansões curtas (select, dropdown) |
| `--motion-duration-normal` | 300ms | Expansão de elementos médios, alertas (Toasts) |
### Easing (Timing Functions)
| Token | Curva | Uso |
|-------|-------|-----|
| `--motion-timing-function-ease-in` | `cubic-bezier(0.55, 0.055, 0.675, 0.19)` | Remover elementos da tela (close modal, hide alert) |
| `--motion-timing-function-ease-out` | `cubic-bezier(0.215, 0.61, 0.355, 1)` | Adicionar elementos na tela (show modal, show sidebar) |
| `--motion-timing-function-ease-in-out` | `cubic-bezier(0.645, 0.045, 0.355, 1)` | Elementos visíveis do início ao fim (expand dropdown, toggle) |
---
## Components
O Tangram possui uma biblioteca abrangente organizada em 6 categorias:
### General
- **Brand** — Exibição do logo RD Station
- **Button** — Botões com variantes (primary, secondary, outline, ghost)
- **Dropdown** — Menu suspenso com opções
- **Link** — Links inline e standalone
- **Text** — Componente de texto com tokens tipográficos
### Layout
- **EmptyState** — Estado vazio com ilustração e ação
- **Fade** — Animação de fade-in/fade-out
- **Grid** (Container, Row, Col) — Grid responsivo
- **Hidden** — Controle de visibilidade por viewport
- **InlineGroup** — Agrupamento inline de elementos
- **Main** — Container principal
- **Overlay** — Camada de sobreposição
- **Shell** — Estrutura base da aplicação
- **Sidebar** — Painel lateral de navegação
- **Skeleton** — Placeholder de carregamento
- **Slide** — Animação de entrada/saída deslizante
- **StackGroup** — Agrupamento empilhado
- **StickyBar** — Barra fixa (ações bulk)
- **Theme** — Provider de tema
### Data Display
- **Accordion** — Conteúdo colapsável com expand/collapse
- **Avatar** — Imagem de perfil com fallback
- **Badge** — Indicador numérico/status
- **Card** — Container de conteúdo elevado
- **ChatAlert** — Alerta de mensagem de chat
- **ChatBubble** — Balão de mensagem
- **Collapse** — Conteúdo expansível
- **DataBlock** — Bloco de dados/métricas
- **Image** — Componente de imagem otimizado
- **List** (ListItem, ListHeader) — Listas verticais contínuas
- **Popover** — Popup ancorado com conteúdo rico
- **Table** (Header, Body, Row, Cell) — Tabela de dados
- **Tag** — Label categorização com cor e ação
- **Timeline** — Linha do tempo vertical
- **Tooltip** — Dica contextual on hover
### Feedback
- **Alert** — Mensagem de alerta inline
- **Dialog** — Modal de confirmação/ação
- **Drawer** — Painel deslizante lateral
- **Message** — Mensagem inline contextual
- **Modal** — Overlay modal para fluxos complexos
- **ProgressBar** — Barra de progresso
- **Snackbar** — Notificação inline breve
- **Spinner** — Indicador de carregamento
- **Toast** — Notificação temporária flutuante
### Navigation
- **DropdownMenu** — Menu dropdown de navegação
- **LinkPreview** — Preview de link ao hover
- **Navbar** — Barra de navegação principal
- **PageHeader** — Cabeçalho de página com breadcrumbs
- **Pagination** — Paginação de listas/tabelas
- **Steps** — Indicador de progresso por etapas
- **Tabs** — Abas de navegação
- **VerticalNav** — Navegação vertical (sidebar nav)
### Data Entry
- **Autocomplete** — Input com sugestões dinâmicas
- **BulkActions** — Ações em lote sobre itens selecionados
- **Checkbox** — Caixa de seleção múltipla
- **DatePicker** — Seletor de data
- **DateRangePicker** — Seletor de intervalo de datas
- **Dropfile** — Área de upload por drag and drop
- **Form** (Label, Feedback, Group) — Estrutura de formulário
- **Input** — Campo de texto com validação
- **Phone** — Input de telefone com máscara
- **Radio** — Seleção única em grupo
- **Search** — Campo de busca
- **Select** — Dropdown de seleção
- **Slider** — Controle deslizante de valor
- **Switch** — Toggle on/off
- **TextArea** — Campo de texto multilinha
---
## Do's and Don'ts
### ✅ Do's
- **Use CSS custom properties** — Todas as decisões visuais devem referenciar tokens (`--color-primary-60`, `--size-spacing-04`)
- **Respeite o contraste WCAG AA** — Mínimo 4.5:1 para texto normal, 3:1 para texto grande
- **Mantenha tokens de cor por semântica** — Use `danger` para ações críticas, `success` para positivas
- **Use a base de 8px** — O sistema de spacing é construído sobre uma grade de 8px
- **Aplique arredondamento consistente** — Use `--border-radius-rounded` (2px) como padrão em componentes
- **Siga o vertical rhythm** — Mínimo 16px entre título e conteúdo subsequente
- **Use elevações com intenção** — Elementos flutuantes usam shadow; conteúdo inline é flat (nível 1)
- **Respeite a hierarquia de z-index** — Não crie valores customizados; use os 8 tokens definidos
- **Use animações com propósito** — Destacar mudanças de estado, revelar conteúdo, enfatizar interações
- **Aplique a família DM Sans consistentemente** — Em todos os tamanhos e pesos do sistema
### ❌ Don'ts
- **Não use cores fora dos tokens** — Nunca hex/rgb hardcoded; toda cor vem da paleta tokenizada
- **Não use cores diferentes para default e hover do mesmo elemento** — Varia apenas a opacidade ou nível numérico
- **Não ignore a escala tipográfica** — Evite tamanhos intermediários (não existe `text-15px`)
- **Não misture fontes** — Use apenas DM Sans; não introduza outras famílias
- **Não use espaçamentos menores que os mínimos** — Os valores da escala são mínimos obrigatórios
- **Não crie sombras CSS customizadas** — Use os 5 tokens de shadow definidos (xs, sm, md, lg, xl)
- **Não use `--border-radius-circle` em elementos não-quadrados** — Circle (50%) só funciona corretamente com width = height
- **Não faça animações que impeçam o usuário de completar ações** — Movimentos devem ser rápidos e não bloqueantes
- **Não quebre metáforas físicas** — Se algo entrou pela esquerda, deve sair pela esquerda
- **Não use support colors em elementos de interface** — São exclusivas para gráficos e visualização de dados
---
## Attribution
| Campo | Valor |
|-------|-------|
| **Source** | [medium.com/design-rd](https://medium.com/design-rd), [rdstation.com](https://www.rdstation.com), [tangram.rdstation.com.br](https://tangram.rdstation.com.br) |
| **Method** | public documentation |
| **Date** | 2026-07-05 |
| **Repository** | [github.com/ResultadosDigitais/tangram](https://github.com/ResultadosDigitais/tangram) |
| **UI Kit** | [github.com/ResultadosDigitais/tangram-ui-kit](https://github.com/ResultadosDigitais/tangram-ui-kit) |
| **Packages** | `@resultadosdigitais/tangram-components`, `@resultadosdigitais/tangram-design-tokens`, `@resultadosdigitais/tangram-react-icons` |
| **Listed at** | [designsystemsbrasileiros.com/tangram](https://designsystemsbrasileiros.com/tangram/) |
| **Website** | [rdstation.com](https://www.rdstation.com) |
Extracted from: https://rdstation.com
Extracted: 7/5/2026
This site is not affiliated with, endorsed by, or sponsored by any of the listed brands. Design tokens shown were extracted exclusively from publicly accessible information (CSS visible in browsers). No copyrighted content is reproduced. If you are a trademark owner and wish to request removal, see our Privacy Policy — Section 9.