khamba
Version:
A cli tool for sharing files through local network.
36 lines (35 loc) • 1.69 kB
JavaScript
import React, { useState, useEffect } from 'react';
import { Text } from 'ink';
const WaveAnimation = ({ speed = 250 }) => {
const [waveStage, setWaveStage] = useState(0);
useEffect(() => {
const interval = setInterval(() => {
setWaveStage(prevStage => (prevStage + 1) % 3);
}, speed);
return () => clearInterval(interval);
}, []);
const renderWave = () => {
switch (waveStage) {
case 0:
return (React.createElement(Text, { color: 'magenta', bold: true }, "\u2800\u2800\u2800\u2027\u2800\u2800\u2800"));
case 1:
return (React.createElement(Text, null,
"\u2800",
React.createElement(Text, { color: 'redBright', bold: true }, "\uFE59"),
React.createElement(Text, { color: 'magentaBright', bold: true }, "\u2027"),
React.createElement(Text, { color: 'redBright', bold: true }, "\uFE5A"),
"\u2800"));
case 2:
return (React.createElement(Text, null,
React.createElement(Text, { color: 'red', bold: true }, "("),
React.createElement(Text, { color: 'redBright', bold: true }, "\uFE59"),
React.createElement(Text, { color: 'magenta', bold: true }, "\u2027"),
React.createElement(Text, { color: 'redBright', bold: true }, "\uFE5A"),
React.createElement(Text, { color: 'red', bold: true }, ")")));
default:
return null;
}
};
return React.createElement(Text, null, renderWave());
};
export default WaveAnimation;