Skip to content

useSlide

@hua-labs/hua/motion

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

tsx
import { useSlideUp } from "@hua-labs/hua/framework";

// useSlide is an alias — use direction-specific hooks:
const slideUp = useSlideUp({ duration: 700, distance: 50 });

return (
  <div ref={slideUp.ref} style={slideUp.style}>
    Content slides up into view
  </div>
);

1
0ms
2
150ms
3
300ms
4
450ms

durationnumber700Animation duration in milliseconds
delaynumber0Delay before animation starts
direction"up" | "down" | "left" | "right""up"Slide direction
distancenumber50Slide distance in pixels
thresholdnumber0.1Viewport intersection threshold (0-1)
triggerOncebooleantrueOnly trigger once
easingstring"ease-out"Easing function
autoStartbooleantrueAuto start on viewport entry

refRefObject<T | null>Ref to attach to element
styleCSSPropertiesAnimated style (transform + opacity)
isVisiblebooleanWhether element is in viewport
isAnimatingbooleanWhether animation is in progress
progressnumberAnimation progress (0-1)
start() => voidStart animation
stop() => voidStop animation
reset() => voidReset to initial state

tsx
import { useSlideUp, useSlideLeft, useSlideRight } from "@hua-labs/hua/framework";

const up = useSlideUp({ distance: 50 });
const left = useSlideLeft({ distance: 50 });
const right = useSlideRight({ distance: 50 });

return (
  <>
    <div ref={up.ref} style={up.style}>Slide Up</div>
    <div ref={left.ref} style={left.style}>Slide Left</div>
    <div ref={right.ref} style={right.style}>Slide Right</div>
  </>
);