Cores

Os símbolos de cores semânticas cada componente BoardUI são construídos a partir de - primeiro plano, texto, fundo e papéis de borda, nomeados 1:1 com as variáveis Figma.

Como funciona o sistema

As cores estão em camadas em dois níveis. Primitivos são a paleta em bruto - escalas OKLCH padrão do Tailwind mais um punhado de sobreposições ajustadas em Figma styles/theme.css. Tokens semânticos sentar no topo e referenciar aqueles primitivos por finalidade - para que serve a cor, nunca o que parece. --color-text-secondary says “supporting copy”, not “neutral 500”.

Os componentes consomem apenas a camada semântica. Essa indireta única é o que faz o sistema ser mantido: reconectar um token primitivo ou remapear um token semântico e todas as atualizações de componentes ao mesmo tempo - nenhum arquivo componente muda. É também o caminho para o modo escuro: o .dark bloco no theme.css re-pontua os mesmos símbolos em valores escuros, para que os componentes nunca precisem dark: prefixos.

Os nomes dos itens espelham os caminhos das variáveis Figma (text/primary → --color-text-primary), então uma especificação de design traduz-se para código sem uma tabela de pesquisa. Observe o prefixo duplicado em nomes de classes - text-text-primary, bg-background-primary-default - o primeiro segmento é o utilitário Tailwind, o resto é o caminho semântico completo do token.

Um sistema de token, dois temas

Adicionar .dark para o elemento raiz. BoardUI remapeia os mesmos tokens semânticos, então cada componente muda com ele.

01

Mapear cada tema

Manter os valores de luz dentro :root e valores escuros dentro .dark.

02

Usar cores semânticas

Usar tokens como bg-background-primary-default, não cores cruas.

03

Mantenha-o centralizado

Evitar o nível de componentes dark: As mudanças permanecem previsíveis.

Inclui persistência e um script de inicialização sem flash.

Ver guia de instalação

Um sotaque, cada CTA

Cada superfície interativa - gradientes de botões primários, caixas de seleção, rádios, interruptores, controles deslizantes, guias, o item da barra lateral selecionada, anéis de foco - lê de um único --color-accent-50…950 rampa que é padrão para azul. Escolha qualquer matiz abaixo (ou uma cor totalmente personalizada) e veja esta página re- tint ao vivo; gráficos e cores de status deliberadamente permanecer.

Uma cor personalizada fica exatamente em --color-accent-500, o tom em que o gradiente dos botões primários começa e que os anéis de foco usam; os outros dez tons são construídos em volta dela. Os botões põem texto branco sobre ela, então escolha uma cor escura o bastante para a leitura.

Leve-o para casa: copie o sobrescrito de onze variáveis e cole-o após sua importação theme.css.

Guia de instalação

Primeiro plano

Preenchimentos de ícones e primórdios inversos/em cores - tudo desenhado em cima de uma superfície que não está executando texto.

TokenClasse de vento de caudaClaroEscuro
--color-foreground-fulltext-foreground-fullwhiteneutral-700
--color-foreground-icon-primarytext-foreground-icon-primaryneutral-950neutral-50
--color-foreground-icon-hovertext-foreground-icon-hoverblackwhite
--color-foreground-icon-secondarytext-foreground-icon-secondaryneutral-500neutral-500
--color-foreground-icon-tertiarytext-foreground-icon-tertiaryneutral-400neutral-600
--color-foreground-icon-quaternarytext-foreground-icon-quaternaryneutral-300neutral-700
--color-foreground-icon-errortext-foreground-icon-errorred-600red-400
--color-foreground-icon-disabledtext-foreground-icon-disabledneutral-300neutral-800
--color-foreground-disabledtext-foreground-disabledneutral-400neutral-700
--color-foreground-disabled-dangertext-foreground-disabled-dangerred-300red-400
--color-input-disabled-foregroundtext-input-disabled-foregroundneutral-300neutral-600
--color-icon-button-disabled-foregroundtext-icon-button-disabled-foregroundneutral-300neutral-500

Texto

A hierarquia do tipo: primária para cabeçalhos e valores-chave, secundária para cópia de suporte, terciária para dicas, mais desativada e estados de erro.

TokenClasse de vento de caudaClaroEscuro
--color-text-primarytext-text-primaryneutral-950neutral-50
--color-text-secondarytext-text-secondaryneutral-500neutral-500
--color-text-tertiarytext-text-tertiaryneutral-400neutral-600
--color-text-disabledtext-text-disabledneutral-300neutral-800
--color-text-disabled-dangertext-text-disabled-dangerred-300red-300
--color-text-error-primarytext-text-error-primaryred-500red-400
--color-input-disabled-texttext-input-disabled-textneutral-300neutral-500 / 40%
--color-text-placeholderplaceholder:text-text-placeholderneutral-400neutral-400
--color-text-whitetext-text-whitewhitewhite
--color-text-error-placeholdertext-text-error-placeholderred-400red-400

Contexto

Preenchimentos de superfície. Cheio é a tela exterior; primário, secundário e terciário descrever progressivamente superfícies aninhadas e seus estados de interação.

TokenClasse de vento de caudaClaroEscuro
--color-background-fullbg-background-fullwhiteneutral-925 (#121212)
--color-background-primary-defaultbg-background-primary-defaultwhiteneutral-800
--color-background-inner-defaultbg-background-inner-defaultwhiteneutral-800 / 60%
--color-background-primary-hoverbg-background-primary-hoverneutral-100neutral-700 / 60%
--color-background-primary-activebg-background-primary-activeneutral-200neutral-800
--color-background-primary-disabledbg-background-primary-disabledneutral-100neutral-800
--color-input-disabled-backgroundbg-input-disabled-backgroundneutral-100neutral-800 / 30%
--color-background-secondary-defaultbg-background-secondary-defaultneutral-100neutral-900
--color-background-secondary-hoverbg-background-secondary-hoverneutral-200neutral-800
--color-background-tertiary-defaultbg-background-tertiary-defaultneutral-200neutral-800
--color-background-tertiary-hoverbg-background-tertiary-hoverneutral-300neutral-700
--color-background-tertiary-errorbg-background-tertiary-errorred-100red-950 / 60%
--color-avatar-neutral-backgroundbg-avatar-neutral-backgroundneutral-300background/primary/default
--color-background-quaternary-defaultbg-background-quaternary-defaultneutral-300neutral-300
--color-background-quaternary-hoverbg-background-quaternary-hoverneutral-400neutral-400
--color-background-quaternary-errorbg-background-quaternary-errorred-200red-200
--color-notification-center-backgroundbg-notification-center-backgroundwhiteneutral-900
--color-segmented-control-backgroundbg-segmented-control-backgroundneutral-100neutral-925 (#121212)
--color-theme-toggle-sidebar-backgroundbg-theme-toggle-sidebar-backgroundneutral-200neutral-800
--color-theme-toggle-sidebar-selected-backgroundbg-theme-toggle-sidebar-selected-backgroundwhiteneutral-700

Contorno

Linhas de cabelo e anéis de foco. As bordas do botão passam mais escuro através do hover e ativo; o anel de foco é o único acento azul.

TokenClasse de vento de caudaClaroEscuro
--color-border-button-defaultborder-border-button-defaultneutral-200neutral-700
--color-border-button-hoverborder-border-button-hoverneutral-300neutral-500
--color-border-button-activeborder-border-button-activeneutral-400neutral-600
--color-border-button-whiteborder-border-button-whitewhitezinc-800
--color-border-checkbox-defaultborder-border-checkbox-defaultneutral-300neutral-700
--color-border-checkbox-hoverborder-border-checkbox-hoverneutral-400neutral-500
--color-border-checkbox-activeborder-border-checkbox-activeneutral-400neutral-500
--color-border-component-detail-containerborder-border-component-detail-containerneutral-200neutral-800
--color-border-ai-profile-cardborder-border-ai-profile-cardneutral-200neutral-800
--color-border-tableborder-border-tableneutral-200neutral-800
--color-border-button-groupborder-border-button-groupneutral-200neutral-600 / 60%
--color-border-sidebar-profile-hoverborder-border-sidebar-profile-hoverneutral-300neutral-600
--color-separator-borderborder-separator-borderneutral-200neutral-800
--color-separator-border-strongborder-separator-border-strongneutral-200neutral-700 / 60%
--color-border-focus-ringring-border-focus-ringblue-500blue-500

Gráficos

Chart colors. Track is the background bar/ring behind a series, cursor the hover outline and dashed reference line, neutral an “other”-style data slice. The numbered accents are a categorical ramp — each pairs a base fill with a one-tone-darker active used for hover emphasis (the 400 → 500 recipe every chart follows). In charts these are consumed as CSS variables (e.g. fill=“var(--color-chart-1)”) rather than classes.

TokenClasse de vento de caudaClaroEscuro
--color-chart-trackbg-chart-trackneutral-200neutral-800
--color-chart-cursorbg-chart-cursorneutral-300neutral-700
--color-chart-neutralbg-chart-neutralneutral-300neutral-800
--color-chart-1bg-chart-1teal-400teal-400
--color-chart-1-activebg-chart-1-activeteal-500teal-500
--color-chart-2bg-chart-2lime-400lime-400
--color-chart-2-activebg-chart-2-activelime-500lime-500
--color-chart-3bg-chart-3pink-400pink-400
--color-chart-3-activebg-chart-3-activepink-500pink-500
--color-chart-4bg-chart-4sky-400sky-400
--color-chart-4-activebg-chart-4-activesky-500sky-500
--color-chart-5bg-chart-5purple-400purple-400
--color-chart-5-activebg-chart-5-activepurple-500purple-500
--color-chart-6bg-chart-6blue-400blue-400
--color-chart-6-activebg-chart-6-activeblue-500blue-500
--color-chart-7bg-chart-7emerald-400emerald-400
--color-chart-7-activebg-chart-7-activeemerald-500emerald-500
--color-chart-8bg-chart-8yellow-400yellow-400
--color-chart-8-activebg-chart-8-activeyellow-500yellow-500
--color-chart-agents-barbg-chart-agents-barpurple-300purple-500
--color-chart-agents-bar-activebg-chart-agents-bar-activepurple-400purple-600

Estado

Cores de feedback semânticas cujo significado permanece estável entre os temas.

TokenClasse de vento de caudaClaroEscuro
--color-state-success-texttext-state-success-textlime-800lime-800
--color-state-success-basebg-state-success-baselime-200lime-200
--color-button-ghost-backgroundbg-button-ghost-backgroundblue-100blue-900
--color-button-ghost-hoverbg-button-ghost-hoverblue-200blue-800
--color-button-ghost-activebg-button-ghost-activeblue-300blue-700
--color-button-ghost-foregroundtext-button-ghost-foregroundblue-700blue-300
--color-notification-information-backgroundbg-notification-information-backgroundblue-100blue-800 / 50%
--color-notification-success-backgroundbg-notification-success-backgroundlime-100lime-800 / 50%
--color-notification-error-backgroundbg-notification-error-backgroundrose-100rose-800 / 50%
--color-badge-neutral-backgroundbg-badge-neutral-backgroundneutral-200neutral-800
--color-team-menu-count-backgroundbg-team-menu-count-backgroundneutral-200neutral-700
--color-team-menu-count-foregroundtext-team-menu-count-foregroundneutral-500neutral-400
--color-tab-count-selected-backgroundbg-tab-count-selected-backgroundblue-100blue-800 / 60%
--color-status-lime-backgroundbg-status-lime-backgroundlime-200lime-950 / 60%
--color-status-lime-texttext-status-lime-textlime-800lime-500
--color-status-yellow-backgroundbg-status-yellow-backgroundyellow-200yellow-950 / 60%
--color-status-yellow-texttext-status-yellow-textyellow-800yellow-500
--color-status-rose-backgroundbg-status-rose-backgroundrose-200rose-950 / 60%
--color-status-rose-texttext-status-rose-textrose-800rose-500
--color-status-cyan-backgroundbg-status-cyan-backgroundcyan-200cyan-950 / 60%
--color-status-cyan-texttext-status-cyan-textcyan-800cyan-400
--color-status-blue-backgroundbg-status-blue-backgroundblue-200blue-950 / 60%
--color-status-blue-texttext-status-blue-textblue-800blue-300
--color-status-purple-backgroundbg-status-purple-backgroundpurple-100purple-900 / 50%
--color-status-purple-texttext-status-purple-textpurple-600purple-300
--color-status-dot-green-halobg-status-dot-green-halogreen-100green-800 / 40%
--color-status-dot-yellow-halobg-status-dot-yellow-haloyellow-200yellow-800 / 40%
--color-status-dot-indigo-halobg-status-dot-indigo-haloindigo-100indigo-800 / 40%