import React, { FC, useEffect, useState } from 'react'; import { Box, Text } from 'ink'; const Spinner: FC<{ type?: keyof typeof spinners }> = ({ type = 'countdown' }) => { const { interval, frames } = spinners[type]; const [i, setI] = useState(0); useEffect(() => { const _ = setInterval(() => { setI((v) => (v < frames.length - 1 ? v + 1 : 0)); }, interval); return () => clearInterval(_); }, []); return frames[i]; }; const spinners = { countdown: { interval: 80, frames: [ {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , ], }, }; export default Spinner;