ื˜ืงืกื˜Proื—ื“ืฉ

ื—ืฉื™ืคื” ืžืชื—ืช ืœื—ื™ืชื•ืš

ืื•ืชื™ื•ืช ืื• ืžื™ืœื™ื ืขื•ืœื•ืช ืื—ืช ืื—ืจื™ ื”ืฉื ื™ื™ื” ืžืชื—ืช ืœืงื• ื‘ืœืชื™ ื ืจืื”, ื‘ืื ื™ืžืฆื™ื™ืช ืงืคื™ืฅ. ืžืชืื™ื ืœืžืกืš ื”ืคืชื™ื—ื” ื•ืœื›ื•ืชืจื•ืช.

ื”ืชืืžื”

gradientFrom
gradientTo

ืžื‘ื•ืกืก ืขืœ Vertical Cut Reveal (MIT ืจื™ืฉื™ื•ืŸ) ยท ืชื ืื™ ืฉื™ืžื•ืฉ

ืžืืคื™ื™ื ื™ื

14 ืžืืคื™ื™ื ื™ื
ืžืืคื™ื™ืŸืกื•ื’ื‘ืจื™ืจืช ืžื—ื“ืœืชื™ืื•ืจ
childrenReactNodeโ€”ื”ื˜ืงืกื˜ ืฉื ื—ืฉืฃ.
splitBy'words' | 'characters' | 'lines' | string"words"ืื™ืš ืœืคืฆืœ ืืช ื”ื˜ืงืกื˜: ืœืคื™ ืžื™ืœื™ื, ืื•ืชื™ื•ืช ืื• ืฉื•ืจื•ืช.
staggerDurationnumber0.2ื”ืฉื”ื™ื” ื‘ื™ืŸ ื—ืœืงื™ ื”ื˜ืงืกื˜, ื‘ืฉื ื™ื•ืช.
staggerFrom'first' | 'last' | 'center' | 'random' | number"first"ืžืื™ื–ื• ืื•ืช ื”ื’ืœ ืžืชื—ื™ืœ.
reversebooleanfalseืœืจื“ืช ืžืœืžืขืœื” ื‘ืžืงื•ื ืœืขืœื•ืช ืžืœืžื˜ื”.
autoStartbooleantrueืœื”ืชื—ื™ืœ ืืช ื”ืื ื™ืžืฆื™ื” ืžื™ื“ ื‘ื˜ืขื™ื ื”.
transitionAnimationOptions"{ type: 'spring', stiffness: 190, damping: 22 }"ื”ื’ื“ืจื•ืช ืงืคื™ืฅ, ืืคืฉืจ ืœื”ื•ืกื™ืฃ ื›ืืŸ ื”ืฉื”ื™ื”.
containerClassNamestringโ€”ืžื—ืœืงื•ืช ืœืืœืžื ื˜ ื”ื—ื™ืฆื•ื ื™.
wordLevelClassNamestringโ€”ืžื—ืœืงื•ืช ืœืขื•ื˜ืฃ ืฉืœ ื›ืœ ืžื™ืœื”.
elementLevelClassNamestringโ€”ืžื—ืœืงื•ืช ืœื›ืœ ืื•ืช ืื• ืžื™ืœื”.
onStart / onComplete() => voidโ€”ื ืงืจืื™ื ื‘ืชื—ื™ืœืช ื”ืื ื™ืžืฆื™ื” ื•ื‘ืกื•ืคื”.
ref{ startAnimation(): void; reset(): void }โ€”ื”ืคืขืœื” ื•ืื™ืคื•ืก ื™ื“ื ื™ื™ื ืฉืœ ื”ืื ื™ืžืฆื™ื”, ืœืžืฉืœ ื‘ื’ืœื™ืœื”.
gradientFromstring"#ffffff"ืฆื‘ืข ื”ืื•ืช ื”ืจืืฉื•ื ื”. ื”ื˜ืงืกื˜ ืขื•ื‘ืจ ื‘ื”ื“ืจื’ื” ืœืฆื‘ืข ืกื•ืฃ ื”ืžืขื‘ืจ.
gradientTostring"#d4d4d8"ืฆื‘ืข ื”ืื•ืช ื”ืื—ืจื•ื ื”, ืกื•ืฃ ื”ืžืขื‘ืจ.

ืชืœื•ื™ื•ืช

3 ื—ื‘ื™ืœื•ืช ื ื“ืจืฉื•ืช

npm install motion clsx tailwind-merge

ืจื›ื™ื‘ื™ื ื“ื•ืžื™ื

ืœื›ืœ ื”ืจื›ื™ื‘ื™ื