SilverStarShadow's picture
Duplicate from hf4all/bingo
15bfa8d
raw
history blame contribute delete
831 Bytes
import './index.scss'
export interface VoiceProps extends CSSPropertyRule {
num?: number;
duration?: number;
}
export default function Voice({ duration = 400, num = 7, ...others }) {
return (
<div className="voice-button" { ...others }>
{Array.from({ length: num }).map((_, index) => {
const randomDuration = Math.random() * 100 + duration
const initialDelay = Math.random() * 2 * duration
const initialScale = Math.sin((index + 1) * Math.PI / num)
return (
<div
className="voice-button-item"
key={index}
style={{
animationDelay: initialDelay + 'ms',
animationDuration: randomDuration + 'ms',
transform: `scale(${initialScale})`
}}
/>
)
})}
</div>
)
}