11import React from 'react' ;
22import { Tooltip , IconButton , useMediaQuery } from '@mui/material' ;
3+ import {
4+ ComponentsOverrides ,
5+ styled ,
6+ useThemeProps ,
7+ } from '@mui/material/styles' ;
38import Brightness4Icon from '@mui/icons-material/Brightness4' ;
49import Brightness7Icon from '@mui/icons-material/Brightness7' ;
510import { useTranslate } from 'ra-core' ;
@@ -25,6 +30,11 @@ import { useThemesContext, useTheme } from '../theme';
2530 * );
2631 */
2732export const ToggleThemeButton = ( ) => {
33+ const props = useThemeProps ( {
34+ props : { } ,
35+ name : PREFIX ,
36+ } ) ;
37+
2838 const translate = useTranslate ( ) ;
2939 const { darkTheme, defaultTheme } = useThemesContext ( ) ;
3040 const prefersDarkMode = useMediaQuery ( '(prefers-color-scheme: dark)' , {
@@ -43,13 +53,35 @@ export const ToggleThemeButton = () => {
4353
4454 return (
4555 < Tooltip title = { toggleThemeTitle } enterDelay = { 300 } >
46- < IconButton
56+ < StyledIconButton
4757 color = "inherit"
4858 onClick = { handleTogglePaletteType }
4959 aria-label = { toggleThemeTitle }
60+ { ...props }
5061 >
5162 { theme === 'dark' ? < Brightness7Icon /> : < Brightness4Icon /> }
52- </ IconButton >
63+ </ StyledIconButton >
5364 </ Tooltip >
5465 ) ;
5566} ;
67+
68+ const PREFIX = 'RaToggleThemeButton' ;
69+
70+ const StyledIconButton = styled ( IconButton , {
71+ name : PREFIX ,
72+ overridesResolver : ( props , styles ) => styles . root ,
73+ } ) ( { } ) ;
74+
75+ declare module '@mui/material/styles' {
76+ interface ComponentNameToClassKey {
77+ [ PREFIX ] : 'root' ;
78+ }
79+
80+ interface Components {
81+ [ PREFIX ] ?: {
82+ styleOverrides ?: ComponentsOverrides <
83+ Omit < Theme , 'components' >
84+ > [ typeof PREFIX ] ;
85+ } ;
86+ }
87+ }
0 commit comments