- {msg.text}
+
+
+ {data.coding.isActive ? (
+ // --- LIVE STATUS ---
+ <>
+
+
+
+
+
+
+ Coding Now
+
-
- ))}
- {isLoading && (
-
-
-
- Thinking...
-
-
+
+ {data.coding.project || "Unknown Project"}
+
+
+ {data.coding.file || "Writing code..."}
+
+ >
+ ) : (
+ // --- STATS STATUS ---
+ <>
+
+ Today's Stats
+
+
+ {data.coding.stats?.time || "0m"}
+
+
+ Focus: {data.coding.stats?.topLang}
+
+ >
)}
-
)}
-
- {/* Activity Bubbles */}
-
-
- {renderActivityBubble()}
- {renderMusicBubble()}
- {renderStatusBubble()}
-
- {/* Chat Toggle Button with Notification Indicator */}
-
setShowChat(!showChat)}
- className="relative bg-stone-900 text-white rounded-full p-4 shadow-xl hover:bg-stone-950 transition-all duration-500 ease-out"
- title="Ask me anything about Dennis"
- >
-
- {!showChat && (
-
-
+ {/* Background Glow */}
+
+
+
+ {data.gaming.image ? (
+

+ ) : (
+
+
+
+ )}
+
+
+
+
+ In Game
+
+
+ {data.gaming.name}
+
+
+ {data.gaming.details || data.gaming.state || "Playing..."}
+
+
+
+ )}
+
+
+ {/* --------------------------------------------------------------------------------
+ 3. MUSIC CARD (Spotify)
+ Erscheint nur, wenn Musik läuft
+ -------------------------------------------------------------------------------- */}
+ {data.music?.isPlaying && (
+
+
+

-
- )}
-
-
+
+
+
+
+
+
+
+
+ Spotify
+
+ {/* Equalizer Animation */}
+
+ {[1,2,3].map(i => (
+
+ ))}
+
+
+
+
+ {data.music.track}
+
+
+ {data.music.artist}
+
+
+
+ )}
+
+ {/* --------------------------------------------------------------------------------
+ 4. STATUS BADGE (Optional)
+ Kleiner Indikator ganz unten, falls nichts anderes da ist oder als Abschluss
+ -------------------------------------------------------------------------------- */}
+
+
+
+ {data.status.text === 'dnd' ? 'Do not disturb' : data.status.text}
+
+
+
+
);
-};
+}
\ No newline at end of file
diff --git a/app/components/BackgroundBlobsClient.tsx b/app/components/BackgroundBlobsClient.tsx
new file mode 100644
index 0000000..1b8bd0a
--- /dev/null
+++ b/app/components/BackgroundBlobsClient.tsx
@@ -0,0 +1,11 @@
+"use client";
+
+import dynamic from "next/dynamic";
+import React from "react";
+
+// Dynamically import the heavy framer-motion component on the client only
+const BackgroundBlobs = dynamic(() => import("@/components/BackgroundBlobs"), { ssr: false });
+
+export default function BackgroundBlobsClient() {
+ return