Mermaid Design
← Voltar ao blog
Announcement Theming

Por que criei o mermaid.design: um playground ao vivo para temas de Mermaid

04/10/2026 · 4 min de leitura

Eu uso muito Mermaid — fluxogramas em documentos de design, diagramas de sequência em READMEs, ocasionalmente um diagrama ER. Diagramas como código são uma mão na roda: versionável, comparável, sem arrastar caixas pela tela. O que nunca foi uma mão na roda é a aparência do resultado.

Os temas embutidos são funcionais, mas as cores parecem datadas. O Mermaid tem, sim, um sistema de temas de verdade: defina theme: 'base' e sobrescreva o que quiser em themeVariables. O problema é o fluxo de trabalho: editar um bloco de frontmatter, renderizar de novo, apertar os olhos para o resultado, adivinhar qual das mais de 70 variáveis pinta aquilo que te incomoda e repetir.

Minha gota d’água foi um diagrama de sequência. Mudei o primaryColor e as caixas de ator mudaram de cor junto — afinal, elas pertencem ao actorBkg. Dez minutos por cor, a maior parte adivinhando, porque o nome de uma variável quase não diz nada sobre o que ela pinta.

O que eu queria era simples: ajustar uma variável e ver o que ela faz. Imediatamente.

Então construí o mermaid.design — código Mermaid à esquerda, prévia ao vivo no centro e todo o sistema de temas editável à direita. Cada mudança renderiza o diagrama de novo no mesmo lugar. O ciclo de feedback foi de minutos para segundos.

O editor do mermaid.design: código Mermaid à esquerda, prévia ao vivo do diagrama no centro, variáveis de tema à direita

Essa é a vitrine. Aqui estão os módulos que realmente economizam tempo.

A galeria: todos os tipos de diagrama de uma vez

O chato das variáveis de tema é que a mesma variável se comporta de jeito diferente em cada tipo de diagrama. A página da galeria renderiza os 84 modelos — fluxogramas, diagramas de sequência, de classes, de estados, ER e mais — ao vivo com o seu tema atual. Mude uma variável, role a galeria e o efeito em cada tipo de diagrama está ali, na sua frente. Chega de ficar alternando entre tipos de diagrama para conferir. É esse tempo que se economiza.

Variáveis de tema: valores padrão e herança à mostra

Cada uma das 73 variáveis mostra seu valor padrão do tema base do mermaid. As que você não definiu ganham um selo AUTO com o valor que o mermaid deriva na hora do render — e de onde esse valor vem:

  • mainBkg segue primaryColor
  • primaryBorderColor é uma cor de borda calculada a partir de primaryColor
  • secondaryTextColor é o inverso de secondaryColor (para contraste)
  • actorBkg segue mainBkg — o que explica a armadilha do começo: mudar primaryColor mexeu nas minhas caixas de ator porque existe uma cadeia de herança primaryColor → mainBkg → actorBkg

Vendo a cadeia, recolorir deixa de ser chute.

Predefinições: oficiais, de designer e mais a caminho

21 predefinições, um clique para aplicar: os 11 temas oficiais do mermaid (default, neutral, dark, forest, base, mais as famílias redux e neo da v12) e 10 predefinições de designer que ajustei à mão. Cada uma mostra uma mini prévia ao vivo — e a coleção continua crescendo.

Geração: uma cor primária, uma paleta inteira

Escolha uma única cor primária semente e o gerador rampa a luminosidade no espaço HSL ao redor do matiz dela — uma escala de 8 tons — para derivar uma paleta completa, variante escura incluída. O jeito mais rápido de fazer um diagrama combinar com a sua marca.

Configuração de render: além das cores

As cores são só metade. O Mermaid tem 438 campos de configuração que afetam o render, agrupados por tipo de diagrama em 34 grupos. Alguns exemplos:

  • Global: fontFamily, fontSize, wrap (quebra de texto automática), look (classic ou handDrawn, estilo desenhado à mão)
  • Fluxogramas: flowchart.curve (estilo das curvas), flowchart.nodeSpacing / flowchart.rankSpacing, flowchart.diagramPadding
  • Sequência: sequence.actorMargin, sequence.messageMargin, sequence.showSequenceNumbers (numeração de mensagens), sequence.mirrorActors
  • Pizza: pie.textPosition, pie.donutHole, pie.legendPosition

O grupo correspondente ao seu tipo de diagrama atual abre automaticamente.

Modo ASCII: o diagrama como texto

O mesmo diagrama pode ser renderizado como arte ASCII — um clique para copiar, pronto para comentários de código, mensagens de commit ou documentos em texto puro. Atualmente suporta cinco tipos de diagrama: fluxogramas, sequência, classes, estados e ER. O conjunto de caracteres pode ser box-drawing Unicode ou ASCII puro.

Resumindo

A motivação por trás do mermaid.design é simples: as cores oficiais dos temas são difíceis de gostar, ajustar themeVariables na mão é lento, e eu queria um lugar onde cada mudança mostrasse seu efeito na hora. Hoje ele tem variáveis de tema editáveis ao vivo com valores padrão e herança visíveis, uma galeria que mostra todos os tipos de diagrama de uma vez, predefinições oficiais e de designer, um gerador que tira uma paleta inteira de uma única cor primária, 438 campos de configuração de render e um modo ASCII que transforma diagramas em texto.

Se você também briga com temas de Mermaid, experimente.