Pular para o conteúdo principal

Combine com a sua marca

Personalize a marca do widget do Support com variáveis CSS, a prop theme e os tokens do seu app.

Você pode fazer o widget parecer parte do seu produto sem substituir nenhum componente.

Use isto quando

  • o formato padrão do widget serve e o que você precisa é principalmente da marca
  • você quer um jeito de copiar e colar para definir cores e raios
  • você quer que o widget siga o tema do seu app ou forçar o modo escuro

Escolha o caminho mais simples

Em muitos apps com Tailwind e shadcn, o widget já parece nativo assim que você importa o ponto de entrada de CSS. Comece pela menor opção que cubra o que você precisa.

Melhor padrão

Não fazer nada

Se o seu app já expõe tokens no estilo do shadcn, importe o CSS do widget e renderize o componente Support.

Configuração

Sem CSS de tema extra

O widget pega automaticamente as cores, o raio, as fontes e o modo escuro do hospedeiro.

Marca fixa

Defina --fx-theme-*

Use tokens explícitos do widget quando ele deve manter os mesmos valores de marca em todos os apps.

Configuração

.fluxo { --fx-theme-primary: ... }

As substituições do widget prevalecem sobre os tokens do hospedeiro sem mudar o resto do app.

Modo forçado

Use theme="dark"

Use a prop theme quando o widget deve ficar escuro em vez de seguir o tema da página.

Configuração

<Support theme="dark" />

O modo de cor fica fixo enquanto o resto do contrato de tema continua igual.

Prioridade do tema

O widget resolve os valores do tema nesta ordem:

  1. As substituições explícitas de --fx-theme-* que você definir em .fluxo
  2. Os tokens da página hospedeira no estilo shadcn, como --background, --primary, --radius e --font-sans
  3. Os valores padrão embutidos do Fluxo

Ou seja: em muitas configurações o widget já vai se parecer bastante com o seu app antes de você escrever qualquer CSS de tema.

Ordem do tema

Como o widget escolhe a cor de fundo

Vence o primeiro valor definido. A mesma ordem vale para os demais tokens do widget.

Passo 1

Substituição do widget

Defina isso em .fluxo quando quiser que o widget use um valor fixo.

--fx-theme-background ->
Passo 2

Token do app hospedeiro

Se não houver substituição do widget, ele usa o token do seu app.

--background ->
Passo 3

Padrão do Fluxo

Quando nenhum token está definido, o widget usa o padrão que vem de fábrica.

oklch(99% 0 0)

Resultado: primeiro vencem as sobrescritas do widget, depois os tokens no estilo shadcn do host e, por fim, os padrões do Fluxo. O mesmo padrão se aplica a cores, raios, fontes e tokens sensíveis ao modo escuro.

Em muitos apps com shadcn, não faça nada

Se o seu app já expõe os tokens habituais do shadcn em :root e .dark, o widget os pega automaticamente. Não é preciso nenhum mapeamento de tema para começar.

Renderize <Support />, importe support.css ou styles.css e veja até onde o tema automático do hospedeiro leva antes de você adicionar qualquer coisa.

O que é herdado automaticamente

Hoje o widget padrão procura estes tokens do hospedeiro:

  • --background
  • --foreground
  • --popover
  • --popover-foreground
  • --primary
  • --primary-foreground
  • --secondary
  • --secondary-foreground
  • --muted
  • --muted-foreground
  • --accent
  • --accent-foreground
  • --border
  • --input
  • --ring
  • --destructive
  • --destructive-foreground
  • --radius
  • --font-sans
  • --font-mono

O modo escuro também acompanha o seu app. O widget verifica se há .dark em algum ancestral ou data-color-scheme="dark" na raiz dele.

Essa adoção automática é limitada de propósito aos tokens base padrão no estilo do shadcn:

  • cores
  • raio
  • fontes
  • modo escuro

Fixar os valores do widget

Defina os tokens do widget uma vez e mantenha a interface padrão.

csssrc/index.css
.fluxo {
  --fx-theme-primary: #111827;
  --fx-theme-primary-foreground: #ffffff;
  --fx-theme-background: #ffffff;
  --fx-theme-foreground: #111827;
  --fx-theme-border: #e5e7eb;
  --fx-theme-radius: 0px;
}

Isso costuma bastar quando você quer fixar o widget nos seus próprios valores em vez de depender dos tokens da página hospedeira.

Forçar o modo escuro

import { Support } from "@fluxolat/react";
 
<Support theme="dark" />;

Por padrão o widget segue o tema do seu app. Use theme="dark" quando o widget precisar ficar escuro em vez de seguir o tema da página.

Use theme="light" para fixar o widget no modo claro.

<Support theme="light" />

Fixar o widget nos seus tokens do shadcn

Continua sendo útil quando você quer que o tema do widget fique explicitamente ligado aos tokens do seu app, mesmo que depois você renomeie ou troque a origem desses tokens.

:root {
  --fx-theme-background: var(--background);
  --fx-theme-foreground: var(--foreground);
  --fx-theme-primary: var(--primary);
  --fx-theme-primary-foreground: var(--primary-foreground);
  --fx-theme-border: var(--border);
  --fx-theme-radius: var(--radius);
}

O que não é herdado automaticamente

O widget herda os tokens de design CSS, o raio, as fontes e o modo escuro. Ele não herda configuração arbitrária do Tailwind resolvida em tempo de compilação, como:

  • escalas de espaçamento próprias
  • escalas de sombra próprias
  • utilitários de plugins próprios
  • renomeações ou variantes de utilitários alheios ao widget

Se o seu app usa nomes de token próprios fora dos tokens base no estilo shadcn, mapeie-os explicitamente para --fx-theme-*.

Quando parar por aqui

  • as cores, o raio e o modo escuro já bastam
  • você quer manter o layout padrão
  • você não precisa de páginas próprias nem de uma estrutura própria

Próximo passo

  • Páginas e layouts quando você precisar de outra primeira tela, de uma inserção inline ou da sua própria estrutura
  • Textos e idioma quando a próxima mudança for de redação, e não de interface

Referência de tokens para começar

Esta tabela cobre as substituições mais comuns, não todos os tokens exportados. Use o ponto de entrada CSS que você instalar como referência canônica da sua versão do pacote; lá também são definidos popover, secondary, accent, input, ring, o primeiro plano de destructive, as fontes e níveis de fundo adicionais.

VariávelPrévia (claro)Padrão (claro)Prévia (escuro)Padrão (escuro)
--fx-theme-backgroundoklch(99% 0 0)oklch(15.5% 0 0)
--fx-theme-foregroundoklch(20.5% 0 0)oklch(95% 0 0)
--fx-theme-primaryoklch(14.5% 0 0)oklch(98.5% 0 0)
--fx-theme-primary-foregroundoklch(98.5% 0 0)oklch(14.5% 0 0)
--fx-theme-borderoklch(92.2% 0 0)oklch(26.9% 0 0)
--fx-theme-mutedMistura de coresMistura de cores
--fx-theme-muted-foregroundMistura de coresMistura de cores
--fx-theme-radius-0.375rem-0.375rem

Tokens adicionais

Use estes quando os tokens básicos não bastarem:

Cores de status

VariávelPrévia (claro)Padrão (claro)Prévia (escuro)Padrão (escuro)
--fx-theme-destructiveoklch(57.7% 0.245 27.325)oklch(39.6% 0.141 25.723)
--fx-theme-successoklch(71.7% 0.18 142)oklch(60% 0.15 142)
--fx-theme-warningoklch(86.4% 0.144 99)oklch(90.3% 0.111 99)
--fx-theme-neutraloklch(60.8% 0 0)oklch(50% 0 0)

Cores de destaque dos avatares

VariávelPrévia (claro)Padrão (claro)Prévia (escuro)Padrão (escuro)
--fx-theme-pinkoklch(76.3% 0.152 354)oklch(84.2% 0.109 354)
--fx-theme-yellowoklch(86.4% 0.144 99)oklch(90.3% 0.111 99)
--fx-theme-blueoklch(72.5% 0.132 241)oklch(79.8% 0.089 241)
--fx-theme-orangeoklch(74.5% 0.166 50)oklch(68.2% 0.194 50)

Tons de fundo

VariávelPrévia (claro)Padrão (claro)Prévia (escuro)Padrão (escuro)
--fx-theme-background-50Mistura de coresMistura de cores
--fx-theme-background-100Mistura de coresMistura de cores
--fx-theme-background-200Mistura de coresMistura de cores
--fx-theme-background-300Mistura de coresMistura de cores

Os tons de fundo são derivados das suas cores base com color-mix(), a menos que você os substitua diretamente.

O CSS atual usa color-mix(in oklch, …) para os tons derivados. Se você precisa dar suporte a um navegador antigo sem essa sintaxe, substitua diretamente os valores derivados de --fx-theme-* e inclua esse navegador na sua matriz de testes visuais.

Esta página foi útil?

Abra uma issue de documentação já preenchida para que a equipe possa agir.