Files
stats/apps/public/src/components/battery-icon.tsx
Carl-Gerhard Lindesvärd ac4429d6d9 feat: new public website
2025-12-02 09:22:36 +01:00

29 lines
638 B
TypeScript

'use client';
import {
BatteryFullIcon,
BatteryLowIcon,
BatteryMediumIcon,
type LucideProps,
} from 'lucide-react';
import { useEffect, useState } from 'react';
export function BatteryIcon(props: LucideProps) {
const [index, setIndex] = useState(0);
const icons = [BatteryLowIcon, BatteryMediumIcon, BatteryFullIcon];
const Icon = icons[index];
useEffect(() => {
const interval = setInterval(() => {
setIndex((index + 1) % icons.length);
}, 750);
return () => clearInterval(interval);
}, [index]);
if (!Icon) {
return <div className={props.className} />;
}
return <Icon {...props} />;
}