import clsx from 'clsx' import {useEffect, useRef} from 'react' import FavIcon from "web/components/FavIcon"; export type SpinnerSize = 'sm' | 'md' | 'lg' function getSizeClass(size: SpinnerSize) { switch (size) { case 'sm': return 'h-4 w-4 border-2' case 'md': return 'h-6 w-6 border-4' case 'lg': default: return 'h-8 w-8 border-4' } } export function LoadingIndicator(props: { className?: string spinnerClassName?: string size?: SpinnerSize }) { const { className, spinnerClassName, size = 'lg' } = props return (
) } export function CompassLoadingIndicator(props: { className?: string spinnerClassName?: string size?: 'sm' | 'md' | 'lg' }) { const {className, spinnerClassName} = props const compassRef = useRef(null) useEffect(() => { const el = compassRef.current if (!el) return let angle = 0 let timeoutId: number const randomTurn = () => { // Randomly choose direction and angle const direction = Math.random() > 0.5 ? 1 : -1 const delta = Math.random() * 75 + 5 angle = direction * delta el.style.transform = `rotate(${angle}deg)` // Random delay before next movement const delay = Math.random() * 400 + 400 timeoutId = window.setTimeout(randomTurn, delay) } randomTurn() return () => clearTimeout(timeoutId) }, []) return (
) }