2024-06-07 20:17:03 +03:00
|
|
|
'use client';
|
|
|
|
|
|
|
|
import { ThreeCircles, ThreeDots } from 'react-loader-spinner';
|
|
|
|
|
2024-06-26 19:47:05 +03:00
|
|
|
import { useConceptOptions } from '@/context/ConceptOptionsContext';
|
2024-06-07 20:17:03 +03:00
|
|
|
|
|
|
|
interface LoaderProps {
|
2024-11-21 15:09:31 +03:00
|
|
|
/** Scale of the loader from 1 to 10. */
|
|
|
|
scale?: number;
|
|
|
|
|
|
|
|
/** Show a circular loader. */
|
2024-06-07 20:17:03 +03:00
|
|
|
circular?: boolean;
|
|
|
|
}
|
|
|
|
|
2024-11-21 15:09:31 +03:00
|
|
|
/**
|
|
|
|
* Displays animated loader.
|
|
|
|
*/
|
|
|
|
function Loader({ scale = 5, circular }: LoaderProps) {
|
2024-06-07 20:17:03 +03:00
|
|
|
const { colors } = useConceptOptions();
|
2024-12-11 14:59:04 +03:00
|
|
|
if (circular) {
|
|
|
|
return (
|
|
|
|
<ThreeCircles
|
|
|
|
color={colors.bgPrimary}
|
|
|
|
height={scale * 20}
|
|
|
|
width={scale * 20}
|
|
|
|
wrapperClass='flex justify-center'
|
|
|
|
/>
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
return (
|
|
|
|
<ThreeDots
|
|
|
|
color={colors.bgPrimary}
|
|
|
|
height={scale * 20}
|
|
|
|
width={scale * 20}
|
|
|
|
radius={scale * 2}
|
|
|
|
wrapperClass='flex justify-center'
|
|
|
|
/>
|
|
|
|
);
|
|
|
|
}
|
2024-06-07 20:17:03 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
export default Loader;
|