@@ -22,14 +22,17 @@ export declare namespace DarkModeToggle {
2222
2323 /** Optional className prop for the <button/> element (default = "") */
2424 readonly className ?: string ;
25+
26+ /** Allow optional id prop */
27+ readonly id ?: string ;
2528 } ;
2629}
2730
2831const lightToDarkSegment : AnimationSegment = [ 5 , 50 ] ;
2932const darkToLightSegment : AnimationSegment = [ 50 , 95 ] ;
3033
3134export const DarkModeToggle = React . memo < DarkModeToggle . Props > (
32- ( { isDarkMode, onChange, size = 85 , speed = 1.3 , className = "" } ) => {
35+ ( { isDarkMode, onChange, size = 85 , speed = 1.3 , className = "" , id = "" } ) => {
3336 const [ sizeValue , sizeUnit ] = parseUnit ( size ) ;
3437 const [ segments , setSegments ] = React . useState < AnimationSegment > ( [ 0 , 0 ] ) ;
3538 const [ goTo ] = React . useState ( isDarkMode ? darkToLightSegment [ 0 ] : lightToDarkSegment [ 0 ] ) ;
@@ -55,6 +58,7 @@ export const DarkModeToggle = React.memo<DarkModeToggle.Props>(
5558 onClick = { onToggleClick }
5659 aria-hidden = "true"
5760 className = { cx ( buttonStyles ( sizeValue , sizeUnit ) , className ) }
61+ id = { id }
5862 >
5963 < LottiePlayerLight
6064 className = { playerStyles ( isLottiePlayerMounted , sizeValue , sizeUnit ) }
@@ -79,7 +83,8 @@ function arePropsEqual(prevProps: DarkModeToggle.Props, nextProps: DarkModeToggl
7983 prevProps . size === nextProps . size &&
8084 prevProps . isDarkMode === nextProps . isDarkMode &&
8185 prevProps . speed === nextProps . speed &&
82- prevProps . className === nextProps . className
86+ prevProps . className === nextProps . className &&
87+ prevProps . id === nextProps . id
8388 ) ;
8489}
8590
0 commit comments