Files
conve-x/src/components/ThemeButton.tsx
T

30 lines
792 B
TypeScript
Raw Normal View History

2023-09-09 21:39:08 -05:00
'use client';
2023-09-11 00:40:14 -05:00
import { useMountedEffect } from '@/hooks';
2023-09-09 21:39:08 -05:00
import { useTheme } from 'next-themes';
import { useEffect, useState } from 'react';
import { BsMoonStarsFill, BsSunFill } from 'react-icons/bs';
import { ImSpinner2 } from 'react-icons/im';
export default function ThemeButton() {
2023-09-11 00:40:14 -05:00
const { mounted, Loader } = useMountedEffect();
2023-09-09 21:39:08 -05:00
const { theme, setTheme } = useTheme();
const isDark = theme === 'dark';
return (
<button
className='flex items-center justify-center'
onClick={() => setTheme(isDark ? 'light' : 'dark')}
>
{mounted === false ? (
2023-09-11 00:40:14 -05:00
<Loader className='animate-spin w-5 h-5' />
2023-09-09 21:39:08 -05:00
) : isDark ? (
<BsMoonStarsFill className='w-5 h-5' />
) : (
<BsSunFill className='w-5 h-5' />
)}
</button>
);
}