Saltar al contenido
EspañolEnglish
Todos los componentes (204)

Botón de tema

Acciones · ThemeButton

Qué es y cuándo usarlo

Cambiar de tema: claro, oscuro o el que diga el sistema operativo. Las tres opciones, no dos: un interruptor de dos posiciones no deja volver a «lo que diga el sistema» una vez tocado, y es lo que trae puesto casi todo el mundo.

Cuándo usarlo

  • En la cabecera de la aplicación o de la tienda, con shape="cycle" (por defecto): un botón de icono que va pasando de claro a oscuro, a «el del sistema» y vuelta a empezar. withText le pone el nombre del tema al lado del icono.
  • En la página de ajustes, con shape="group": las tres opciones a la vista.

Cuándo no

  • Para cualquier otro sí o no: Switch.
  • Si la aplicación solo tiene un tema, no se pone.

Teclado: en rueda, Tab llega al botón e Intro o Espacio pasan al tema siguiente. En grupo es un grupo de opciones: Tab entra en la marcada y las flechas cambian de tema.

Accesibilidad: el nombre del botón dice cómo está y a qué pasa: «Tema: claro. Cambiar a oscuro». Al cambiar se anuncia el tema y cómo se ve («Tema el del sistema, se ve oscuro»). El icono nuevo entra girando solo cuando lo cambia la persona, no al cargar.

Cómo funciona: escribe data-theme en el <html> (o lo quita, para «el del sistema») y guarda la elección en localStorage (amset-theme). En esta ficha cambia el tema de toda la vista previa, igual que en una aplicación.

Aspecto fino: sin variables propias. En rueda es un IconButton (ghost por defecto, con variant, tone y size; --amset-button-*) con las clases amset-theme__button, amset-theme__icon y amset-theme__text; en grupo, un SegmentedGroup con la clase amset-theme.

Cómo se ve

Cambia el tema de toda la web, igual que el conmutador de la cabecera: escribe en el atributo del documento y lo recuerda.

<ThemeButton withText variant="outline" />
<ThemeButton shape="group" />

Props

Se importa con import { ThemeButton } from '@amset/ui'. Las obligatorias van marcadas.

PropTipoPara qué sirve
classNamestringSe une a las clases de la biblioteca, no las sustituye.
shapeThemeButtonShape—
size"sm" | "md" | "lg"—
tone"neutral" | "accent" | "secondary" | "tertiary" | "info" | "success" | "warning" | "error"—
variant"solid" | "soft" | "outline" | "ghost"Como se pinta el boton de la rueda. Por defecto, fantasma.
withTextbooleanTexto al lado del icono en la forma de rueda.

Acepta además los atributos del elemento que pinta: className, style, data-*, aria-* y sus eventos.

En el banco de pruebas

Cada estado y cada variante, para tocarlos de uno en uno, en su ficha de ui.amset.tech: