Aller au contenu

Contrôleur de thème

Composants pour basculer entre les thèmes daisyUI.

import { ThemeController } from 'asterui'

Permutation (Soleil/Lune)

Basculer entre les thèmes clair et sombre avec des icônes animées.

import { ThemeController } from 'asterui'

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

export default App

Thèmes personnalisés

Utiliser des noms de thèmes personnalisés pour les modes clair et sombre.

import { ThemeController } from 'asterui'

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

export default App

Avec callback onChange

Gérer les changements de thème avec un 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

Menu déroulant (Thèmes multiples)

Sélectionner parmi plusieurs thèmes en utilisant un menu déroulant.

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

Menu déroulant avec thème par défaut

Définir un thème sélectionné par défaut pour le menu déroulant.

import { ThemeController } from 'asterui'

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

export default App

Menu déroulant avec onChange

Gérer les changements de sélection de thème.

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

Interrupteur à bascule

Interrupteur simple pour le thème clair/sombre.

import { ThemeController } from 'asterui'

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

export default App

Tailles d'interrupteur

Interrupteurs à bascule en différentes tailles.

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
PropriétéDescriptionTypeDéfaut
lightThemeNom du thème pour le mode clairstring'light'
darkThemeNom du thème pour le mode sombrestring'dark'
defaultCheckedInitialement coché (thème sombre)boolean-
onChangeCallback lorsque le thème change(theme: string) => void-
classNameClasses CSS supplémentairesstring-
data-testidID de test pour les testsstring-
PropriétéDescriptionTypeDéfaut
themesTableau des noms de thèmes disponiblesstring[]-
defaultThemeThème initialement sélectionnéstring-
onChangeCallback lorsque le thème change(theme: string) => void-
classNameClasses CSS supplémentairesstring-
data-testidID de test pour les testsstring-
PropriétéDescriptionTypeDéfaut
lightThemeNom du thème pour le mode clairstring'light'
darkThemeNom du thème pour le mode sombrestring'dark'
defaultCheckedInitialement coché (thème sombre)boolean-
onChangeCallback lorsque le thème change(theme: string) => void-
sizeTaille de l’interrupteur'xs' | 'sm' | 'md' | 'lg''md'
classNameClasses CSS supplémentairesstring-
data-testidID de test pour les testsstring-
  • Swap utilise le modèle de case à cocher avec des icônes soleil/lune animées
  • Toggle utilise une case à cocher avec aria-label pour les lecteurs d’écran
  • Dropdown utilise des entrées radio avec aria-label pour chaque option de thème
  • Les changements de thème sont immédiatement visibles sur tous les composants
  • Toutes les variantes sont accessibles au clavier