feat: add animation for labels

This commit is contained in:
MAZE 2024-08-31 14:02:11 +04:30
parent 5865fc867d
commit 48a85b2601

View file

@ -1,7 +1,8 @@
import { useState, useEffect, useMemo, useCallback } from 'react'; import { useState, useEffect, useMemo, useCallback } from 'react';
import { motion } from 'framer-motion'; import { motion, AnimatePresence } from 'framer-motion';
import { padNumber } from '@/helpers/number'; import { padNumber } from '@/helpers/number';
import { fade } from '@/lib/motion';
import styles from './exercise.module.css'; import styles from './exercise.module.css';
@ -92,6 +93,8 @@ export function Exercise() {
return () => clearInterval(interval); return () => clearInterval(interval);
}, []); }, []);
const variants = fade();
return ( return (
<> <>
<div className={styles.exercise}> <div className={styles.exercise}>
@ -105,7 +108,19 @@ export function Exercise() {
key={selectedExercise} key={selectedExercise}
variants={animationVariants} variants={animationVariants}
/> />
<p className={styles.phase}>{PHASE_LABELS[currentPhase]}</p>
<AnimatePresence initial={false} mode="wait">
<motion.p
animate="show"
className={styles.phase}
exit="hidden"
initial="hidden"
key={PHASE_LABELS[currentPhase]}
variants={variants}
>
{PHASE_LABELS[currentPhase]}
</motion.p>
</AnimatePresence>
</div> </div>
<div className={styles.selectWrapper}> <div className={styles.selectWrapper}>