full upgrade
This commit is contained in:
@@ -119,7 +119,7 @@ const SoundWaves = () => {
|
||||
);
|
||||
};
|
||||
|
||||
// Running animation
|
||||
// Running animation with smooth wavy motion
|
||||
const RunningAnimation = () => {
|
||||
return (
|
||||
<div className="absolute inset-0 overflow-hidden pointer-events-none">
|
||||
@@ -127,16 +127,34 @@ const RunningAnimation = () => {
|
||||
className="absolute bottom-2 text-4xl"
|
||||
animate={{
|
||||
x: ["-10%", "110%"],
|
||||
y: [0, -10, -5, -12, -3, -10, 0, -8, -2, -10, 0],
|
||||
}}
|
||||
transition={{
|
||||
duration: 3,
|
||||
repeat: Infinity,
|
||||
ease: "linear",
|
||||
x: {
|
||||
duration: 1.2,
|
||||
repeat: Infinity,
|
||||
ease: "linear",
|
||||
},
|
||||
y: {
|
||||
duration: 0.4,
|
||||
repeat: Infinity,
|
||||
ease: [0.25, 0.1, 0.25, 1], // Smooth cubic bezier for wavy effect
|
||||
},
|
||||
}}
|
||||
>
|
||||
🏃
|
||||
</motion.div>
|
||||
<div className="absolute bottom-2 left-0 right-0 h-0.5 bg-liquid-lime/30" />
|
||||
<motion.div
|
||||
className="absolute bottom-2 left-0 right-0 h-0.5 bg-liquid-lime/30"
|
||||
animate={{
|
||||
opacity: [0.3, 0.6, 0.3],
|
||||
}}
|
||||
transition={{
|
||||
duration: 0.4,
|
||||
repeat: Infinity,
|
||||
ease: "easeInOut",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
@@ -264,7 +282,9 @@ export const ActivityFeed = () => {
|
||||
setData(json);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("Failed to fetch activity", e);
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
console.error("Failed to fetch activity", e);
|
||||
}
|
||||
}
|
||||
};
|
||||
fetchData();
|
||||
@@ -301,7 +321,9 @@ export const ActivityFeed = () => {
|
||||
throw new Error("Chat API failed");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Chat error:", error);
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
console.error("Chat error:", error);
|
||||
}
|
||||
setChatHistory((prev) => [
|
||||
...prev,
|
||||
{
|
||||
@@ -527,7 +549,7 @@ export const ActivityFeed = () => {
|
||||
<div
|
||||
className={`max-w-[85%] p-3 rounded-2xl text-sm ${
|
||||
msg.role === "user"
|
||||
? "bg-gradient-to-br from-stone-800 to-stone-900 text-white rounded-tr-none shadow-md"
|
||||
? "bg-gradient-to-br from-stone-700 to-stone-600 text-white rounded-tr-none shadow-md"
|
||||
: "bg-gradient-to-br from-white to-stone-50 text-stone-900 shadow-md rounded-tl-none border-2 border-stone-100"
|
||||
}`}
|
||||
>
|
||||
@@ -561,14 +583,14 @@ export const ActivityFeed = () => {
|
||||
onChange={(e) => setChatMessage(e.target.value)}
|
||||
placeholder="Ask me anything..."
|
||||
disabled={isLoading}
|
||||
className="flex-1 bg-white border-2 border-stone-200 rounded-xl px-4 py-3 text-sm focus:outline-none focus:ring-2 focus:ring-liquid-mint focus:border-transparent disabled:opacity-50 transition-all duration-300"
|
||||
className="flex-1 bg-white border-2 border-stone-200 rounded-xl px-4 py-3 text-sm text-stone-900 placeholder:text-stone-400 focus:outline-none focus:ring-2 focus:ring-liquid-mint focus:border-transparent disabled:opacity-50 transition-all duration-300"
|
||||
/>
|
||||
<motion.button
|
||||
type="submit"
|
||||
disabled={isLoading || !chatMessage.trim()}
|
||||
whileHover={{ scale: 1.05 }}
|
||||
whileTap={{ scale: 0.95 }}
|
||||
className="p-3 bg-gradient-to-br from-stone-900 to-stone-800 text-white rounded-xl hover:from-black hover:to-stone-900 transition-all duration-300 disabled:opacity-50 disabled:cursor-not-allowed shadow-lg"
|
||||
className="p-3 bg-gradient-to-br from-stone-700 to-stone-600 text-white rounded-xl hover:from-stone-600 hover:to-stone-500 transition-all duration-300 disabled:opacity-50 disabled:cursor-not-allowed shadow-lg"
|
||||
>
|
||||
<Send size={18} />
|
||||
</motion.button>
|
||||
|
||||
Reference in New Issue
Block a user