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 extraO 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:
- As substituições explícitas de
--fx-theme-*que você definir em.fluxo - Os tokens da página hospedeira no estilo shadcn, como
--background,--primary,--radiuse--font-sans - 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.
Substituição do widget
Defina isso em .fluxo quando quiser que o widget use um valor fixo.
--fx-theme-background ->Token do app hospedeiro
Se não houver substituição do widget, ele usa o token do seu app.
--background ->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.
.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ável | Prévia (claro) | Padrão (claro) | Prévia (escuro) | Padrão (escuro) |
|---|---|---|---|---|
--fx-theme-background | oklch(99% 0 0) | oklch(15.5% 0 0) | ||
--fx-theme-foreground | oklch(20.5% 0 0) | oklch(95% 0 0) | ||
--fx-theme-primary | oklch(14.5% 0 0) | oklch(98.5% 0 0) | ||
--fx-theme-primary-foreground | oklch(98.5% 0 0) | oklch(14.5% 0 0) | ||
--fx-theme-border | oklch(92.2% 0 0) | oklch(26.9% 0 0) | ||
--fx-theme-muted | Mistura de cores | Mistura de cores | ||
--fx-theme-muted-foreground | Mistura de cores | Mistura 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ável | Prévia (claro) | Padrão (claro) | Prévia (escuro) | Padrão (escuro) |
|---|---|---|---|---|
--fx-theme-destructive | oklch(57.7% 0.245 27.325) | oklch(39.6% 0.141 25.723) | ||
--fx-theme-success | oklch(71.7% 0.18 142) | oklch(60% 0.15 142) | ||
--fx-theme-warning | oklch(86.4% 0.144 99) | oklch(90.3% 0.111 99) | ||
--fx-theme-neutral | oklch(60.8% 0 0) | oklch(50% 0 0) |
Cores de destaque dos avatares
| Variável | Prévia (claro) | Padrão (claro) | Prévia (escuro) | Padrão (escuro) |
|---|---|---|---|---|
--fx-theme-pink | oklch(76.3% 0.152 354) | oklch(84.2% 0.109 354) | ||
--fx-theme-yellow | oklch(86.4% 0.144 99) | oklch(90.3% 0.111 99) | ||
--fx-theme-blue | oklch(72.5% 0.132 241) | oklch(79.8% 0.089 241) | ||
--fx-theme-orange | oklch(74.5% 0.166 50) | oklch(68.2% 0.194 50) |
Tons de fundo
| Variável | Prévia (claro) | Padrão (claro) | Prévia (escuro) | Padrão (escuro) |
|---|---|---|---|---|
--fx-theme-background-50 | Mistura de cores | Mistura de cores | ||
--fx-theme-background-100 | Mistura de cores | Mistura de cores | ||
--fx-theme-background-200 | Mistura de cores | Mistura de cores | ||
--fx-theme-background-300 | Mistura de cores | Mistura 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.
Nesta página
Use isto quandoEscolha o caminho mais simplesPrioridade do temaEm muitos apps com shadcn, não faça nadaO que é herdado automaticamenteFixar os valores do widgetForçar o modo escuroFixar o widget nos seus tokens do shadcnO que não é herdado automaticamenteQuando parar por aquiPróximo passoReferência de tokens para começarTokens adicionaisCores de statusCores de destaque dos avataresTons de fundo
