Ajústalo a tu marca
Personaliza la marca del widget de Support con variables CSS, la prop theme y los tokens de tu aplicación.
Puedes hacer que el widget parezca parte de tu producto sin sustituir ningún componente.
Usa esto cuando
- la forma por defecto del widget te vale y lo que necesitas sobre todo es la marca
- quieres una forma de copiar y pegar para fijar colores y radios
- quieres que el widget siga el tema de tu aplicación o forzar el modo oscuro
Elige el camino más simple
En muchas aplicaciones con Tailwind y shadcn, el widget ya se siente nativo en cuanto importas el punto de entrada de CSS. Empieza por la opción más pequeña que cubra lo que necesitas.
Mejor opción por defecto
No hacer nada
Si tu aplicación ya expone tokens al estilo de shadcn, importa el CSS del widget y renderiza el componente Support.
Configuración
Sin CSS de tema adicionalEl widget toma automáticamente los colores, el radio, las fuentes y el modo oscuro del anfitrión.
Marca fija
Define --fx-theme-*
Usa tokens explícitos del widget cuando quieras que mantenga los mismos valores de marca en todas las aplicaciones.
Configuración
.fluxo { --fx-theme-primary: ... }Las anulaciones del widget prevalecen sobre los tokens del anfitrión sin cambiar el resto de la aplicación.
Modo forzado
Use theme="dark"
Usa la prop theme cuando el widget deba quedarse en oscuro en vez de seguir el tema de la página.
Configuración
<Support theme="dark" />El modo de color queda fijo mientras el resto del contrato de tema no cambia.
Prioridad del tema
El widget resuelve los valores del tema en este orden:
- Las sustituciones explícitas de
--fx-theme-*que definas en.fluxo - Los tokens de la página anfitriona al estilo shadcn, como
--background,--primary,--radiusy--font-sans - Los valores por defecto integrados de Fluxo
Es decir: en muchos montajes el widget ya se parecerá bastante a tu aplicación antes de que escribas nada de CSS de tema.
Orden del tema
Cómo elige el widget su color de fondo
Gana el primer valor definido. El mismo orden se aplica a los demás tokens del widget.
Anulación del widget
Defínelo en .fluxo cuando quieras que el widget use un valor fijo.
--fx-theme-background ->Token de la aplicación anfitriona
Si no hay anulación del widget, este usa el token de tu aplicación.
--background ->Valor por defecto de Fluxo
Cuando no hay ningún token definido, el widget recurre al valor por defecto que trae de serie.
oklch(99% 0 0)Resultado: primero ganan las sobrescrituras del widget, luego los tokens al estilo shadcn del host y por último los valores predeterminados de Fluxo. El mismo patrón se aplica a colores, radios, fuentes y tokens sensibles al modo oscuro.
En muchas apps con shadcn, no hagas nada
Si tu aplicación ya expone los tokens habituales de shadcn en :root y .dark, el widget los toma automáticamente. No hace falta ninguna correspondencia de tema para empezar.
Renderiza <Support />, importa support.css o styles.css y comprueba hasta dónde te lleva el tema automático del anfitrión antes de añadir nada.
Qué se hereda automáticamente
Hoy el widget por defecto busca estos tokens del anfitrión:
--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
El modo oscuro también sigue a tu aplicación. El widget comprueba si hay .dark en algún ancestro o data-color-scheme="dark" en su raíz.
Esta adopción automática se limita a propósito a los tokens base estándar al estilo de shadcn:
- colores
- radio
- fuentes
- modo oscuro
Fijar los valores del widget
Define los tokens del widget una vez y conserva la interfaz por defecto.
.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;
}Eso suele bastar cuando quieres fijar el widget a tus propios valores en lugar de depender de los tokens de la página anfitriona.
Forzar el modo oscuro
import { Support } from "@fluxolat/react";
<Support theme="dark" />;Por defecto el widget sigue el tema de tu aplicación. Usa theme="dark" cuando
el widget deba quedarse oscuro en lugar de seguir el tema de la página.
Usa theme="light" para fijar el widget al modo claro.
<Support theme="light" />Fijar el widget a tus tokens de shadcn
Sigue siendo útil cuando quieres que el tema del widget quede explícitamente ligado a los tokens de tu aplicación, aunque más adelante renombres o cambies el origen de esos 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);
}Lo que no se hereda automáticamente
El widget hereda los tokens de diseño CSS, el radio, las fuentes y el modo oscuro. No hereda configuración arbitraria de Tailwind resuelta en tiempo de compilación, como:
- escalas de espaciado propias
- escalas de sombra propias
- utilidades de plugins propios
- renombrados o variantes de utilidades ajenos al widget
Si tu aplicación usa nombres de token propios fuera de los tokens base al estilo
shadcn, mapéalos explícitamente a --fx-theme-*.
Cuándo quedarte aquí
- con los colores, el radio y el modo oscuro te basta
- quieres mantener la maquetación por defecto
- no necesitas páginas propias ni una estructura propia
Siguiente paso
- Páginas y maquetación cuando necesites otra primera pantalla, una inserción en línea o tu propia estructura
- Textos e idioma cuando el siguiente cambio sea de redacción y no de interfaz
Referencia de tokens para empezar
Esta tabla cubre las sustituciones más habituales, no todos los tokens exportados. Usa el punto de entrada CSS que instales como referencia canónica de tu versión del paquete; ahí también se definen popover, secondary, accent, input, ring, el primer plano de destructive, las fuentes y niveles de fondo adicionales.
| Variable | Vista previa (claro) | Valor por defecto (claro) | Vista previa (oscuro) | Valor por defecto (oscuro) |
|---|---|---|---|---|
--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 | Mezcla de colores | Mezcla de colores | ||
--fx-theme-muted-foreground | Mezcla de colores | Mezcla de colores | ||
--fx-theme-radius | - | 0.375rem | - | 0.375rem |
Tokens adicionales
Úsalos cuando los tokens básicos no basten:
Colores de estado
| Variable | Vista previa (claro) | Valor por defecto (claro) | Vista previa (oscuro) | Valor por defecto (oscuro) |
|---|---|---|---|---|
--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) |
Colores de acento para avatares
| Variable | Vista previa (claro) | Valor por defecto (claro) | Vista previa (oscuro) | Valor por defecto (oscuro) |
|---|---|---|---|---|
--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) |
Tonos de fondo
| Variable | Vista previa (claro) | Valor por defecto (claro) | Vista previa (oscuro) | Valor por defecto (oscuro) |
|---|---|---|---|---|
--fx-theme-background-50 | Mezcla de colores | Mezcla de colores | ||
--fx-theme-background-100 | Mezcla de colores | Mezcla de colores | ||
--fx-theme-background-200 | Mezcla de colores | Mezcla de colores | ||
--fx-theme-background-300 | Mezcla de colores | Mezcla de colores |
Los tonos de fondo se derivan de tus colores base con color-mix(), salvo que
los sustituyas directamente.
El CSS actual usa color-mix(in oklch, …) para los tonos derivados. Si
necesitas dar soporte a un navegador antiguo sin esa sintaxis, sustituye
directamente los valores derivados de --fx-theme-* e incluye ese navegador en
tu matriz de pruebas visuales.
¿Te resultó útil esta página?
Abre una incidencia de documentación ya rellenada para que el equipo pueda actuar.
En esta página
Usa esto cuandoElige el camino más simplePrioridad del temaEn muchas apps con shadcn, no hagas nadaQué se hereda automáticamenteFijar los valores del widgetForzar el modo oscuroFijar el widget a tus tokens de shadcnLo que no se hereda automáticamenteCuándo quedarte aquíSiguiente pasoReferencia de tokens para empezarTokens adicionalesColores de estadoColores de acento para avataresTonos de fondo
