Skip to content

useMotionState

@hua-labs/hua/motion

bash
npm install @hua-labs/hua
tsx
import { useMotionState } from "@hua-labs/hua/framework";

tsx
const motion = useMotionState({
  duration: 2000,
  autoStart: false,
});

return (
  <div>
    <p>State: {motion.state}</p>
    <p>Progress: {Math.round(motion.progress)}%</p>
    <p>Elapsed: {motion.elapsed}ms</p>

    <button onClick={motion.play}>Play</button>
    <button onClick={motion.pause}>Pause</button>
    <button onClick={motion.stop}>Stop</button>
    <button onClick={motion.reverse}>Reverse</button>
  </div>
);

0%

initialState"idle" | "playing" | "paused" | "completed" | "error""idle"Initial playback state
durationnumber1000Total animation duration in milliseconds
delaynumber0Delay before playing
autoStartbooleanfalseStart playing automatically
loopbooleanfalseLoop when completed
direction"forward" | "reverse" | "alternate""forward"Playback direction
showOnMountbooleanfalseShow initial state on mount (SSR safety)

stateMotionStateCurrent state ("idle", "playing", "paused", "completed", "error")
directionMotionDirectionCurrent direction ("forward", "reverse", "alternate")
progressnumberPlayback progress (0-100)
elapsednumberElapsed time in milliseconds
remainingnumberRemaining time in milliseconds
mountedbooleanHydration safety flag
play() => voidStart or resume playback
pause() => voidPause playback
stop() => voidStop and reset to idle
reset() => voidReset to initial state
reverse() => voidReverse playback direction
seek(progress: number) => voidSeek to specific progress (0-100)
setState(newState: MotionState) => voidManually set state