зеркало из
https://github.com/kodackx/disinformation-quest.git
synced 2025-10-29 12:46:03 +02:00
Add slow fade transitions to cards
Implement slow fade-in and fade-out transitions for each card in the application to enhance the visual experience. [skip gpt_engineer]
Этот коммит содержится в:
родитель
e13b90e9bc
Коммит
2eb487f048
@ -41,7 +41,6 @@ const stages: GameStage[] = [
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
// More stages will be added as we expand the game
|
|
||||||
];
|
];
|
||||||
|
|
||||||
const Index = () => {
|
const Index = () => {
|
||||||
@ -62,14 +61,13 @@ const Index = () => {
|
|||||||
title: "Choice Made",
|
title: "Choice Made",
|
||||||
description: `You've selected option ${choiceId}. Watch how it affects your campaign.`,
|
description: `You've selected option ${choiceId}. Watch how it affects your campaign.`,
|
||||||
});
|
});
|
||||||
// We'll add more complex logic here as we develop the game
|
|
||||||
setCurrentStage((prev) => prev + 1);
|
setCurrentStage((prev) => prev + 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!gameStarted) {
|
if (!gameStarted) {
|
||||||
return (
|
return (
|
||||||
<div className="min-h-screen bg-gradient-to-b from-gray-900 to-gray-800 flex items-center justify-center p-4">
|
<div className="min-h-screen bg-gradient-to-b from-gray-900 to-gray-800 flex items-center justify-center p-4">
|
||||||
<Card className="w-full max-w-2xl bg-black/50 text-white border-gray-700">
|
<Card className="w-full max-w-2xl bg-black/50 text-white border-gray-700 transition-all duration-1000 animate-fade-in">
|
||||||
<CardHeader className="text-center">
|
<CardHeader className="text-center">
|
||||||
<CardTitle className="text-3xl mb-2">TwoPlusTwo</CardTitle>
|
<CardTitle className="text-3xl mb-2">TwoPlusTwo</CardTitle>
|
||||||
<CardDescription className="text-gray-300">
|
<CardDescription className="text-gray-300">
|
||||||
@ -85,7 +83,7 @@ const Index = () => {
|
|||||||
<div className="flex justify-center">
|
<div className="flex justify-center">
|
||||||
<Button
|
<Button
|
||||||
onClick={handleStartGame}
|
onClick={handleStartGame}
|
||||||
className="bg-yellow-500 hover:bg-yellow-600 text-black px-8 py-4 text-lg"
|
className="bg-yellow-500 hover:bg-yellow-600 text-black px-8 py-4 text-lg transition-all duration-500"
|
||||||
>
|
>
|
||||||
Begin Simulation
|
Begin Simulation
|
||||||
</Button>
|
</Button>
|
||||||
@ -101,7 +99,7 @@ const Index = () => {
|
|||||||
if (!currentStageData) {
|
if (!currentStageData) {
|
||||||
return (
|
return (
|
||||||
<div className="min-h-screen bg-gradient-to-b from-gray-900 to-gray-800 flex items-center justify-center p-4">
|
<div className="min-h-screen bg-gradient-to-b from-gray-900 to-gray-800 flex items-center justify-center p-4">
|
||||||
<Card className="w-full max-w-2xl bg-black/50 text-white border-gray-700">
|
<Card className="w-full max-w-2xl bg-black/50 text-white border-gray-700 transition-all duration-1000 animate-fade-in">
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle>Simulation Complete</CardTitle>
|
<CardTitle>Simulation Complete</CardTitle>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
@ -115,7 +113,7 @@ const Index = () => {
|
|||||||
setCurrentStage(0);
|
setCurrentStage(0);
|
||||||
setGameStarted(false);
|
setGameStarted(false);
|
||||||
}}
|
}}
|
||||||
className="mt-4 bg-purple-600 hover:bg-purple-700"
|
className="mt-4 bg-yellow-500 hover:bg-yellow-600 text-black transition-all duration-500"
|
||||||
>
|
>
|
||||||
Start Over
|
Start Over
|
||||||
</Button>
|
</Button>
|
||||||
@ -128,7 +126,7 @@ const Index = () => {
|
|||||||
return (
|
return (
|
||||||
<div className="min-h-screen bg-gradient-to-b from-gray-900 to-gray-800 p-4">
|
<div className="min-h-screen bg-gradient-to-b from-gray-900 to-gray-800 p-4">
|
||||||
<div className="max-w-4xl mx-auto">
|
<div className="max-w-4xl mx-auto">
|
||||||
<Card className="bg-black/50 text-white border-gray-700">
|
<Card className="bg-black/50 text-white border-gray-700 transition-all duration-1000 animate-fade-in">
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle>{currentStageData.title}</CardTitle>
|
<CardTitle>{currentStageData.title}</CardTitle>
|
||||||
<CardDescription className="text-gray-300">
|
<CardDescription className="text-gray-300">
|
||||||
@ -139,7 +137,7 @@ const Index = () => {
|
|||||||
{currentStageData.choices.map((choice) => (
|
{currentStageData.choices.map((choice) => (
|
||||||
<Card
|
<Card
|
||||||
key={choice.id}
|
key={choice.id}
|
||||||
className="bg-gray-800/50 hover:bg-gray-700/50 transition-colors cursor-pointer border-gray-600"
|
className="bg-gray-800/50 hover:bg-gray-700/50 transition-all duration-1000 cursor-pointer border-gray-600 animate-fade-in"
|
||||||
onClick={() => handleChoice(choice.id)}
|
onClick={() => handleChoice(choice.id)}
|
||||||
>
|
>
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
|
|||||||
@ -18,6 +18,39 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
extend: {
|
extend: {
|
||||||
|
keyframes: {
|
||||||
|
'accordion-down': {
|
||||||
|
from: {
|
||||||
|
height: '0'
|
||||||
|
},
|
||||||
|
to: {
|
||||||
|
height: 'var(--radix-accordion-content-height)'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'accordion-up': {
|
||||||
|
from: {
|
||||||
|
height: 'var(--radix-accordion-content-height)'
|
||||||
|
},
|
||||||
|
to: {
|
||||||
|
height: '0'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'fade-in': {
|
||||||
|
'0%': {
|
||||||
|
opacity: '0',
|
||||||
|
transform: 'translateY(10px)'
|
||||||
|
},
|
||||||
|
'100%': {
|
||||||
|
opacity: '1',
|
||||||
|
transform: 'translateY(0)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
animation: {
|
||||||
|
'accordion-down': 'accordion-down 0.2s ease-out',
|
||||||
|
'accordion-up': 'accordion-up 0.2s ease-out',
|
||||||
|
'fade-in': 'fade-in 1s ease-out'
|
||||||
|
},
|
||||||
colors: {
|
colors: {
|
||||||
border: 'hsl(var(--border))',
|
border: 'hsl(var(--border))',
|
||||||
input: 'hsl(var(--input))',
|
input: 'hsl(var(--input))',
|
||||||
@ -67,28 +100,6 @@ export default {
|
|||||||
lg: 'var(--radius)',
|
lg: 'var(--radius)',
|
||||||
md: 'calc(var(--radius) - 2px)',
|
md: 'calc(var(--radius) - 2px)',
|
||||||
sm: 'calc(var(--radius) - 4px)'
|
sm: 'calc(var(--radius) - 4px)'
|
||||||
},
|
|
||||||
keyframes: {
|
|
||||||
'accordion-down': {
|
|
||||||
from: {
|
|
||||||
height: '0'
|
|
||||||
},
|
|
||||||
to: {
|
|
||||||
height: 'var(--radix-accordion-content-height)'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
'accordion-up': {
|
|
||||||
from: {
|
|
||||||
height: 'var(--radix-accordion-content-height)'
|
|
||||||
},
|
|
||||||
to: {
|
|
||||||
height: '0'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
animation: {
|
|
||||||
'accordion-down': 'accordion-down 0.2s ease-out',
|
|
||||||
'accordion-up': 'accordion-up 0.2s ease-out'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Загрузка…
x
Ссылка в новой задаче
Block a user