Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
import React from 'react';
import { useTheme } from 'next-themes';
import { useEffect, useState } from 'react';
import Moon from './icons/moon';
import Sun from './icons/sun';
/**
const { theme, setTheme, systemTheme } = useTheme();
const [mounted, setMounted] = useState(false);
// Prevents hydration errors by ensuring the component
// doesn't render icons until the client is mounted.
useEffect(() => {
setMounted(true);
}, []);
// Return null if environment is not configured for theme toggling
if (process.env.theme !== 'both') return null;
// If we haven't mounted yet, do not render icons to avoid SSR mismatches
if (!mounted) return null;
// If you want "system" theme to behave as 'light' or 'dark',
// use a condition like (theme === 'system' && systemTheme === 'light').
const isLight = theme === 'light' || (theme === 'system' && systemTheme === 'light');
return isLight ? (
<Moon
width="2em"
height="2em"
style={{ cursor: 'pointer' }}
onClick={() => setTheme('dark')}
/>
) : (
<Sun
width="2em"
height="2em"
style={{ cursor: 'pointer' }}
onClick={() => setTheme('light')}
/>
);
}