2023-12-13 14:32:57 +03:00
|
|
|
'use client';
|
|
|
|
|
2024-04-27 15:19:20 +03:00
|
|
|
import { ThreeCircles, ThreeDots } from 'react-loader-spinner';
|
2023-07-15 17:46:19 +03:00
|
|
|
|
2024-06-26 19:47:31 +03:00
|
|
|
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
2023-09-03 18:26:50 +03:00
|
|
|
|
2024-03-20 15:27:32 +03:00
|
|
|
import AnimateFade from '../wrap/AnimateFade';
|
2024-01-07 03:29:16 +03:00
|
|
|
|
2024-01-04 19:30:10 +03:00
|
|
|
interface LoaderProps {
|
2024-11-21 15:09:51 +03:00
|
|
|
/** Scale of the loader from 1 to 10. */
|
|
|
|
scale?: number;
|
|
|
|
|
|
|
|
/** Show a circular loader. */
|
2024-04-27 15:19:20 +03:00
|
|
|
circular?: boolean;
|
2023-08-13 13:18:50 +03:00
|
|
|
}
|
|
|
|
|
2024-11-21 15:09:51 +03:00
|
|
|
/**
|
|
|
|
* Displays animated loader.
|
|
|
|
*/
|
|
|
|
function Loader({ scale = 5, circular }: LoaderProps) {
|
2024-04-01 19:07:20 +03:00
|
|
|
const { colors } = useConceptOptions();
|
2023-07-15 17:46:19 +03:00
|
|
|
return (
|
2024-01-07 03:29:16 +03:00
|
|
|
<AnimateFade noFadeIn className='flex justify-center'>
|
2024-04-27 15:19:20 +03:00
|
|
|
{circular ? (
|
2024-11-21 15:09:51 +03:00
|
|
|
<ThreeCircles color={colors.bgPrimary} height={scale * 20} width={scale * 20} />
|
2024-04-27 15:19:20 +03:00
|
|
|
) : (
|
2024-11-21 15:09:51 +03:00
|
|
|
<ThreeDots color={colors.bgPrimary} height={scale * 20} width={scale * 20} radius={scale * 2} />
|
2024-04-27 15:19:20 +03:00
|
|
|
)}
|
2024-01-07 03:29:16 +03:00
|
|
|
</AnimateFade>
|
2023-12-28 14:04:44 +03:00
|
|
|
);
|
|
|
|
}
|
2024-01-07 03:29:16 +03:00
|
|
|
|
|
|
|
export default Loader;
|