анимация/в процессе
This commit is contained in:
parent
f6439c5647
commit
8359710c7c
@ -51,7 +51,7 @@ const Settings: React.FC = () => {
|
||||
</div>
|
||||
</div>
|
||||
{/* Medical Information */}
|
||||
<div className="px-4 mb-6">
|
||||
{/* <div className="px-4 mb-6">
|
||||
<div className="bg-white/80 backdrop-blur-lg rounded-2xl p-6 border border-gray-200/50 shadow-lg ">
|
||||
<h2 className="text-lg font-semibold text-gray-800 mb-4">Медицинская информация</h2>
|
||||
<div className="space-y-4">
|
||||
@ -84,7 +84,7 @@ const Settings: React.FC = () => {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> */}
|
||||
{/* Logout Button */}
|
||||
<div className="px-4 mb-8">
|
||||
<button
|
||||
|
@ -9,9 +9,9 @@ const CourseComplete: React.FC = () => {
|
||||
|
||||
useEffect(() => {
|
||||
const timer1 = setTimeout(() => setAnimationPhase(1), 500)
|
||||
const timer2 = setTimeout(() => setAnimationPhase(2), 1000)
|
||||
const timer3 = setTimeout(() => setAnimationPhase(3), 1500)
|
||||
const timer4 = setTimeout(() => setAnimationPhase(3), 2000)
|
||||
const timer2 = setTimeout(() => setAnimationPhase(2), 1500)
|
||||
const timer3 = setTimeout(() => setAnimationPhase(3), 2000)
|
||||
const timer4 = setTimeout(() => setAnimationPhase(4), 2500)
|
||||
|
||||
return () => {
|
||||
clearTimeout(timer1)
|
||||
@ -29,45 +29,48 @@ const CourseComplete: React.FC = () => {
|
||||
{/* Men Animation */}
|
||||
|
||||
|
||||
<div className="min-h-screen p-4 relative overflow-hidden max-w-4xl mx-auto">
|
||||
<div className="min-h-screen p-4 relative overflow-hidden max-w-2xl mx-auto">
|
||||
<div className="absolute inset-0 flex items-start justify-center pt-30">
|
||||
{/* тело */}
|
||||
<div className="absolute top-20 left-1/2 transform -translate-x-1/2">
|
||||
<div className={`absolute left-[37%] transform duration-800 delay-300 ${animationPhase >= 1 ? "opacity-100 scale-100 top-[24%]" : "opacity-0 scale-0 top-[10%]"} ` }>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="109" height="166" viewBox="0 0 109 166" fill="none">
|
||||
<rect width="109" height="166" rx="39" fill="#F3945B" />
|
||||
<rect width="109" height="166" rx="40" fill="#F3945B" />
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
{/* руки */}
|
||||
<div className="absolute top-80 left-[20%] transform -translate-y-1/2">
|
||||
<div className={`absolute left-[15%] transition-all duration-800 delay-300 ${animationPhase >= 1 ? "opacity-100 scale-100 top-[16%]" : "opacity-0 scale-0 top-[7%]"} ` }
|
||||
>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="292" height="221" viewBox="0 0 292 221" fill="none">
|
||||
<path d="M26 78.0571C43.5001 101.057 67.9999 122.5 111 129C154 135.5 164 119.557 202.5 138.557C241 157.557 248.5 188.057 252 203.057C255.5 218.057 270 221.057 277.5 220.057C285 219.057 289.5 212.557 291 206.057C292.5 199.557 287.5 159.557 246.5 121.557C205.5 83.5571 174 95.0575 114.5 89.5571C55.0001 84.0568 39.5 24.0576 34 9.55715C28.5001 -4.94333 -1.70972e-05 -2.94326 0 15.5571C1.70972e-05 34.0576 8.49988 55.0571 26 78.0571Z" fill="black" />
|
||||
<path d="M26 78.0571C43.5001 101.057 67.9999 122.5 111 129C154 135.5 164 119.557 202.5 138.557C241 157.557 248.5 188.057 252 203.057C255.5 218.057 270 221.057 277.5 220.057C285 219.057 289.5 212.557 291 206.057C292.5 199.557 287.5 159.557 246.5 121.557C205.5 83.5571 174 95.0575 114.5 89.5571C55.0001 84.0568 39.5 24.0576 34 9.55715C28.5001 -4.94333 -1.70972e-05 -2.94326 0 15.5571C1.70972e-05 34.0576 8.49988 55.0571 26 78.0571Z" fill="#F3945B" />
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
{/* нога 1 */}
|
||||
<div className="absolute bottom-[ -20px ] left-[ calc(50% -60px) ] w-[37px] h-[129px]">
|
||||
<div className={`absolute transition-all duration-800 delay-300 ${animationPhase >= 1 ? "opacity-100 scale-100 top-[34%] left-[37%]" : "opacity-0 scale-0 top-[15%] left-[47%]"} ` }>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="37" height="129" viewBox="0 0 37 129" fill="none">
|
||||
<rect width="37" height="129" rx="18.5" fill="#F3945B" />
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
{/* нога 2 */}
|
||||
<div className="absolute bottom-[ -20px ] right-[ calc(50% -60px) ] w-[37px] h-[178px]">
|
||||
<div className={`absolute transition-all duration-800 delay-300 ${animationPhase >= 1 ? "opacity-100 scale-100 top-[34%] right-[37%] " : "opacity-0 scale-0 top-[15%] right-[47%] "} ` }>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="37" height="178" viewBox="0 0 37 178" fill="none">
|
||||
<rect width="37" height="178" rx="18.5" fill="#F3945B" />
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
{/* голова */}
|
||||
<div className="absolute top-2.5 left-1/2 transform -translate-x-1/2">
|
||||
<div className={`absolute transition-all duration-800 delay-300 ${animationPhase >= 1 ? "opacity-100 scale-100 top-[16%] left-[41%] " : "opacity-0 scale-0 top-[20%] right-[40%] "} ` }>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="75" height="75" viewBox="0 0 75 75" fill="none">
|
||||
<circle cx={37.5} cy={37.5} r={37.5} fill="#F3945B" />
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{/* мяч */}
|
||||
<div className='absolute top-[-10px] left-1/2 transform -translate-x-1/2'>
|
||||
<div className={`absolute transition-all duration-400 delay-100 ${animationPhase >= 2 ? "opacity-100 scale-100 top-[14%] left-[22%] " : "opacity-0 scale-0 -top-[20%] right-[40%] "} ` }>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' width='54' height='54' viewBox='0 0 54 54' fill='none'>
|
||||
<circle cx='27' cy='27' r='27' fill='#F3945B' />
|
||||
</svg>
|
||||
@ -83,20 +86,20 @@ const CourseComplete: React.FC = () => {
|
||||
<div className="text-center px-8 z-10">
|
||||
{/* App Name */}
|
||||
<div
|
||||
className={`transition-opacity duration-1000 delay-100 ${animationPhase >= 1 ? "opacity-100" : "opacity-0"}`}
|
||||
className={`transition-opacity duration-1000 delay-300 ${animationPhase >= 1 ? "opacity-100" : "opacity-0"}`}
|
||||
>
|
||||
<h1 className="text-5xl font-black text-white mb-4 tracking-tight filter drop-shadow-lg">Реабилитация</h1>
|
||||
{/* Line Loader - now appears with subtitle in phase 4, and grows from left to right */}
|
||||
<div
|
||||
className="h-1 bg-white/70 rounded-full mx-auto my-2 transition-all duration-500 ease-out"
|
||||
style={{
|
||||
width: animationPhase >= 3 ? '320px' : '0px', // или начальное значение
|
||||
width: animationPhase >= 2 ? '320px' : '0px', // или начальное значение
|
||||
maxWidth: '320px',
|
||||
opacity: animationPhase >= 3 ? 1 : 0,
|
||||
opacity: animationPhase >= 2 ? 1 : 0,
|
||||
}}
|
||||
></div>
|
||||
{/* Subtitle - appears with opacity transition in phase 4 */}
|
||||
<p className={`text-white/90 text-xl font-medium tracking-wide transition-opacity duration-1000 ${animationPhase >= 1 ? 'opacity-100' : 'opacity-0'}`}>
|
||||
<p className={`text-white/90 text-xl font-medium tracking-wide transition-opacity duration-1000 ${animationPhase >= 2 ? 'opacity-100' : 'opacity-0'}`}>
|
||||
Восстановление через движение
|
||||
</p>
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user