Pular para o conteúdo

ThemeController

Componentes para alternar entre temas do daisyUI.

import { ThemeController } from 'asterui'

Troca (Sol/Lua)

Alterne entre temas claro e escuro com ícones animados.

import { ThemeController } from 'asterui'

function App() {
  return (
      <ThemeController.Swap />
    )
}

export default App

Temas Personalizados

Use nomes de tema personalizados para modos claro e escuro.

import { ThemeController } from 'asterui'

function App() {
  return (
      <ThemeController.Swap lightTheme="cupcake" darkTheme="dracula" />
    )
}

export default App

Com Callback onChange

Manipule mudanças de tema com um callback.

import { ThemeController, Modal } from 'asterui'

function App() {
  return (
      <ThemeController.Swap
        onChange={(theme) => {
          Modal.info({ title: 'Theme Changed', content: `Theme changed to: ${theme}` });
        }}
      />
    )
}

export default App

Dropdown (Múltiplos Temas)

Selecione entre múltiplos temas usando um menu dropdown.

import { ThemeController } from 'asterui'

function App() {
  return (
      <ThemeController.Dropdown
        themes={[
          'light',
          'dark',
          'cupcake',
          'bumblebee',
          'emerald',
          'corporate',
          'synthwave',
          'retro',
          'cyberpunk',
          'valentine',
          'halloween',
          'garden',
          'forest',
          'aqua',
          'lofi',
          'pastel',
          'fantasy',
          'wireframe',
          'black',
          'luxury',
          'dracula',
        ]}
      />
    )
}

export default App

Dropdown com Tema Padrão

Defina um tema padrão selecionado para o dropdown.

import { ThemeController } from 'asterui'

function App() {
  return (
      <ThemeController.Dropdown
        themes={['light', 'dark', 'synthwave', 'retro', 'cyberpunk']}
        defaultTheme="synthwave"
      />
    )
}

export default App

Dropdown com onChange

Manipule mudanças de seleção de tema.

import { ThemeController, Modal } from 'asterui'

function App() {
  return (
      <ThemeController.Dropdown
        themes={['light', 'dark', 'cupcake', 'dracula']}
        onChange={(theme) => {
          Modal.info({ title: 'Theme Selected', content: `Selected theme: ${theme}` });
        }}
      />
    )
}

export default App

Interruptor Toggle

Interruptor toggle simples para tema claro/escuro.

import { ThemeController } from 'asterui'

function App() {
  return (
      <ThemeController.Toggle />
    )
}

export default App

Tamanhos de Toggle

Interruptores toggle em diferentes tamanhos.

import { ThemeController, Space } from 'asterui'

function App() {
  return (
      <Space>
        <ThemeController.Toggle size="xs" />
        <ThemeController.Toggle size="sm" />
        <ThemeController.Toggle size="md" />
        <ThemeController.Toggle size="lg" />
      </Space>
    )
}

export default App
PropriedadeDescriçãoTipoPadrão
lightThemeNome do tema para modo clarostring'light'
darkThemeNome do tema para modo escurostring'dark'
defaultCheckedInicialmente marcado (tema escuro)boolean-
onChangeCallback quando o tema muda(theme: string) => void-
classNameClasses CSS adicionaisstring-
data-testidID de teste para testesstring-
PropriedadeDescriçãoTipoPadrão
themesArray de nomes de tema disponíveisstring[]-
defaultThemeTema selecionado inicialmentestring-
onChangeCallback quando o tema muda(theme: string) => void-
classNameClasses CSS adicionaisstring-
data-testidID de teste para testesstring-
PropriedadeDescriçãoTipoPadrão
lightThemeNome do tema para modo clarostring'light'
darkThemeNome do tema para modo escurostring'dark'
defaultCheckedInicialmente marcado (tema escuro)boolean-
onChangeCallback quando o tema muda(theme: string) => void-
sizeTamanho do toggle'xs' | 'sm' | 'md' | 'lg''md'
classNameClasses CSS adicionaisstring-
data-testidID de teste para testesstring-
  • Swap usa padrão de checkbox com ícones animados de sol/lua
  • Toggle usa checkbox com aria-label para leitores de tela
  • Dropdown usa inputs de rádio com aria-label para cada opção de tema
  • Mudanças de tema são imediatamente visíveis em todos os componentes
  • Todas as variantes são acessíveis por teclado