added mock daily highlights, new dream entries, and enhanced personalized home page layout and functionality

Signed-off-by: Matthias Puchstein <matthias@puchstein.bayern>
This commit is contained in:
2025-07-09 23:27:45 +02:00
parent 18f2984bbc
commit 4bb7f4c979
3 changed files with 314 additions and 232 deletions

View File

@@ -0,0 +1,24 @@
/**
* Mock data for daily highlights on the home page
* Contains top dream topics and mood categories with their percentages
*/
// Top dream topics with percentages
export const topDreamTopics = [
{label: "Fliegen", percentage: 28},
{label: "Verfolgung", percentage: 22},
{label: "Wasser", percentage: 17}
];
// Primary mood categories with percentages
export const primaryMoodCategories = [
{label: "Neugier", percentage: 35},
{label: "Freude", percentage: 30},
{label: "Angst", percentage: 20},
{label: "Überraschung", percentage: 15}
];
export default {
topDreamTopics,
primaryMoodCategories
};

View File

@@ -77,6 +77,43 @@ export const mockDreams: Dream[] = [new Dream({
interpretation: 'The floating city symbolizes ambition and the desire to rise above limitations. The sunrise and golden light represent hope and new beginnings.',
image: 'floating_city_ai.png',
},
}), new Dream({
id: 9, userId: 4, title: 'Quantenreise', date: new Date('2025-07-04T01:15:00Z'), input: {
inputType: 'text',
input: 'Ich reiste durch einen Tunnel aus pulsierenden Datenströmen. Jede Berührung löste neue Realitäten aus, die sich wie Fraktale vor mir entfalteten.',
} as TextInput, ai: {
interpretation: 'Die Quantenreise symbolisiert deine Faszination für Möglichkeiten und Parallelwelten. Die Datenströme repräsentieren Informationsverarbeitung und Entscheidungsfindung in deinem Unterbewusstsein.',
image: 'quantum_journey.png',
video: 'quantum_journey.mp4',
}
}), new Dream({
id: 10, userId: 4, title: 'Neuronales Netzwerk', date: new Date('2025-07-05T02:30:00Z'), input: {
inputType: 'text',
input: 'Ich befand mich in einem riesigen neuronalen Netzwerk, wo Gedanken als leuchtende Impulse zwischen synaptischen Verbindungen tanzten. Ich konnte sie mit meinen Händen formen und lenken.',
} as TextInput, ai: {
interpretation: 'Das neuronale Netzwerk spiegelt dein Interesse an künstlicher Intelligenz und dem menschlichen Bewusstsein wider. Die Fähigkeit, Gedanken zu formen, deutet auf deinen Wunsch nach Kontrolle über deine mentalen Prozesse hin.',
image: 'neural_network.png',
audio: 'neural_network.mp3',
}
}), new Dream({
id: 11, userId: 4, title: 'Digitaler Garten', date: new Date('2025-07-06T03:45:00Z'), input: {
inputType: 'image',
img: 'digital_garden.jpg',
imgAlt: 'Ein Garten aus leuchtenden Codezeilen und holografischen Pflanzen',
description: 'Ich pflegte einen Garten, in dem Pflanzen aus Codezeilen und Algorithmen wuchsen. Jede Blüte entfaltete sich zu einer neuen Technologie.',
} as ImageInput, ai: {
interpretation: 'Der digitale Garten verkörpert deine kreative Verbindung von Natur und Technologie. Er zeigt, wie du Innovation als organischen, wachsenden Prozess betrachtest.',
image: 'digital_garden_ai.png',
}
}), new Dream({
id: 12, userId: 4, title: 'Zeitschleife', date: new Date('2025-07-07T04:20:00Z'), input: {
inputType: 'text',
input: 'Ich erlebte denselben Tag immer wieder, konnte aber jedes Mal kleine Änderungen vornehmen. Mit jeder Iteration wurde die Realität komplexer und unvorhersehbarer.',
} as TextInput, ai: {
interpretation: 'Die Zeitschleife reflektiert deine Gedanken über Kausalität und die Auswirkungen kleiner Entscheidungen. Sie symbolisiert auch den Wunsch, Fehler zu korrigieren und verschiedene Möglichkeiten zu erkunden.',
image: 'time_loop.png',
audio: 'time_loop.mp3',
}
}),
];

View File

@@ -1,255 +1,276 @@
import {BsMoonStars, BsStars} from 'react-icons/bs';
import {
FaBed,
FaBook,
FaBrain,
FaChartBar,
FaCloud,
FaEye,
FaHeart,
FaMicrophone,
FaMoon,
FaPen,
FaRobot,
FaStar,
FaVrCardboard,
} from 'react-icons/fa';
import {HiSparkles} from 'react-icons/hi';
import logotext from "../assets/logotext.svg";
import {useState} from 'react';
import {mockDreams} from '../data/MockDreams';
import {MockUserMap} from '../data/MockUsers';
import {getSortedDreamsByDate} from '../data/DreamUtils';
import {primaryMoodCategories, topDreamTopics} from '../data/MockDailyHighlights';
interface HomeProps {
isLoggedIn: boolean;
handleLogin: () => void;
}
export default function Home() {
const [inputMode, setInputMode] = useState<'text' | 'drawing'>('text');
const currentUser = MockUserMap.get(4); // Neo Quantum
const currentDate = new Date();
const formattedDate = currentDate.toLocaleDateString('de-DE', {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric'
});
export default function Home({isLoggedIn, handleLogin}: HomeProps) {
// Get personal dreams (latest 3 for user ID 4)
const personalDreams = getSortedDreamsByDate(
mockDreams.filter(dream => dream.userId === 4)
).slice(0, 3);
if (isLoggedIn) {
return (<div>
<h1>Hallo Neo!</h1>
</div>)
}
// Get friends' dreams (latest 5 from other users)
const friendsDreams = getSortedDreamsByDate(
mockDreams.filter(dream => dream.userId !== 4)
).slice(0, 5);
return (<div className="p-4 pb-20 max-w-6xl mx-auto relative overflow-hidden">
{/* Floating Background Elements */}
<div className="absolute inset-0 pointer-events-none">
<div className="absolute top-10 left-10 text-purple-200 opacity-30">
<FaCloud size={40}/>
return (
<div className="p-4 dream-container backdrop-blur-md bg-opacity-30"
style={{backgroundColor: 'transparent', boxShadow: '0 10px 30px var(--shadow)'}}>
{/* Welcome Card */}
<div className="dreamy-card p-4 mb-4 transition-all duration-300 hover:transform hover:scale-[1.01]"
style={{backgroundColor: 'var(--card)', color: 'var(--text)'}}>
<h1 className="text-2xl font-bold mb-2 dream-title">Hallo Neo!</h1>
<p className="text-sm" style={{color: 'var(--text-muted)'}}>{formattedDate}</p>
<p className="mt-2" style={{color: 'var(--text)'}}>Willkommen zurück in deiner Traumwelt.</p>
</div>
<div className="absolute top-32 right-20 text-purple-300 opacity-20">
<BsStars size={30}/>
</div>
<div className="absolute bottom-40 left-32 text-purple-200 opacity-25">
<BsMoonStars size={35}/>
</div>
</div>
{/* Hero Section */}
<div className="text-center mb-12 sm:mb-16 relative z-10">
<div className="animate-pulse flex flex-col items-center mb-8 sm:mb-12">
<div className="flex items-center justify-around">
<img src={logotext} alt="REMind Logo and Text" className="h-32 sm:h-40 md:h-48 mb-4"/>
</div>
<p className="text-lg sm:text-xl dreamy-text">Träume analysieren, Gesellschaft verstehen</p>
</div>
<div className="dream-container max-w-3xl mx-auto backdrop-blur-sm bg-white/10 dark:bg-white/5 rounded-3xl p-4 sm:p-6 md:p-8">
<div className="flex flex-col sm:flex-row justify-center items-center mb-3 sm:mb-4">
<HiSparkles className="text-yellow-400 mb-2 sm:mb-0 sm:mr-2" size={20} />
<h2 className="dream-title text-xl sm:text-2xl">Träume sammeln KI verstehen VR erleben</h2>
<HiSparkles className="text-yellow-400 mt-2 sm:mt-0 sm:ml-2 hidden sm:block" size={20} />
</div>
<p className="mb-4 sm:mb-6 md:mb-8 text-sm sm:text-base md:text-lg" style={{color: 'var(--text)'}}>
Verwandle deine nächtlichen Reisen in interaktive Traumlandschaften
mit KI-gestützter Analyse und immersiven VR-Erlebnissen
</p>
</div>
</div>
{/* Main Features Grid - Dreamy Cards */}
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 mb-16">
{/* KI-Traumdeutung */}
{/* Streak Notification */}
<div
className="card floating backdrop-blur-md bg-gradient-to-br from-purple-100/50 to-pink-100/50 border border-purple-200/30 dark:bg-gradient-to-br dark:from-purple-900/30 dark:to-pink-900/30 dark:border-purple-700/30"
style={{animationDelay: '0.5s'}}>
<div className="flex justify-center mb-4">
<div className="p-3 sm:p-4 bg-purple-500/20 rounded-full">
<FaBrain className="text-purple-600 dark:text-purple-400" size={28} />
className="dreamy-card p-4 mb-4 transition-all duration-300 hover:transform hover:scale-[1.01] floating"
style={{
background: 'var(--accent-gradient)',
color: 'white',
boxShadow: '0 10px 30px var(--shadow), inset 0 0 15px rgba(166, 77, 255, 0.3)'
}}>
<div className="flex items-center">
<div className="mr-3">
<svg xmlns="http://www.w3.org/2000/svg" className="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
d="M13 10V3L4 14h7v7l9-11h-7z"/>
</svg>
</div>
<div>
<h3 className="font-bold">Traum-Streak: {currentUser?.streakDays} Tage</h3>
<p className="text-sm">Beeindruckend! Du hältst deine Traum-Aufzeichnungen konstant bei.</p>
</div>
</div>
<h3 className="text-lg sm:text-xl font-bold mb-2 sm:mb-3 text-center" style={{color: 'var(--accent)'}}>
KI-Traumdeutung
</h3>
<p className="text-center text-sm sm:text-base" style={{color: 'var(--text)'}}>
Deine Träume werden von KI entschlüsselt -
Symbole erkannt, Emotionen analysiert, Bedeutungen offenbart
</p>
</div>
{/* Multimediale Traumerfassung */}
<div
className="card floating backdrop-blur-md bg-gradient-to-br from-blue-100/50 to-indigo-100/50 border border-blue-200/30 dark:bg-gradient-to-br dark:from-blue-900/30 dark:to-indigo-900/30 dark:border-blue-700/30"
style={{animationDelay: '1s'}}>
<div className="flex justify-center mb-4">
<div className="p-3 sm:p-4 bg-blue-500/20 rounded-full">
<FaMicrophone className="text-blue-600 dark:text-blue-400" size={28} />
{/* Input Card */}
<div className="dreamy-card p-4 mb-4 transition-all duration-300 hover:transform hover:scale-[1.01]"
style={{backgroundColor: 'var(--card)', color: 'var(--text)'}}>
<div className="flex justify-between items-center mb-3">
<h3 className="font-bold dream-title">Neuer Traum</h3>
<div className="flex rounded-lg overflow-hidden" style={{border: '1px solid var(--accent-soft)'}}>
<button
className={`px-3 py-1 text-sm transition-all duration-200`}
onClick={() => setInputMode('text')}
style={{
backgroundColor: inputMode === 'text' ? 'var(--accent)' : 'transparent',
color: inputMode === 'text' ? 'white' : 'var(--text)'
}}
>
Text
</button>
<button
className={`px-3 py-1 text-sm transition-all duration-200`}
onClick={() => setInputMode('drawing')}
style={{
backgroundColor: inputMode === 'drawing' ? 'var(--accent)' : 'transparent',
color: inputMode === 'drawing' ? 'white' : 'var(--text)'
}}
>
Zeichnung
</button>
</div>
</div>
<h3 className="text-lg sm:text-xl font-bold mb-2 sm:mb-3 text-center" style={{color: 'var(--accent)'}}>
Träume einfangen
</h3>
<p className="text-center text-sm sm:text-base" style={{color: 'var(--text)'}}>
Sprich deine Träume in der Nacht, zeichne traumhafte Skizzen
oder schreibe poetische Beschreibungen
</p>
</div>
{/* VR-Traumwelten */}
<div
className="card floating backdrop-blur-md bg-gradient-to-br from-violet-100/50 to-purple-100/50 border border-violet-200/30 dark:bg-gradient-to-br dark:from-violet-900/30 dark:to-purple-900/30 dark:border-violet-700/30"
style={{animationDelay: '1.5s'}}>
<div className="flex justify-center mb-4">
<div className="p-3 sm:p-4 bg-violet-500/20 rounded-full">
<FaVrCardboard className="text-violet-600 dark:text-violet-400" size={28} />
</div>
</div>
<h3 className="text-lg sm:text-xl font-bold mb-2 sm:mb-3 text-center" style={{color: 'var(--accent)'}}>
VR-Traumreisen
</h3>
<p className="text-center text-sm sm:text-base" style={{color: 'var(--text)'}}>
Betritt deine Träume als begehbare Welten -
schwebe durch Erinnerungen, berühre Traumsymbole
</p>
</div>
{/* Traumarchiv */}
<div
className="card backdrop-blur-md bg-gradient-to-br from-emerald-100/50 to-teal-100/50 border border-emerald-200/30 dark:bg-gradient-to-br dark:from-emerald-900/30 dark:to-teal-900/30 dark:border-emerald-700/30"
style={{animationDelay: '2s'}}>
<div className="flex justify-center mb-4">
<div className="p-3 sm:p-4 bg-emerald-500/20 rounded-full">
<FaBook className="text-emerald-600 dark:text-emerald-400" size={28} />
</div>
</div>
<h3 className="text-lg sm:text-xl font-bold mb-2 sm:mb-3 text-center" style={{color: 'var(--accent)'}}>
Traumschatzkammer
</h3>
<p className="text-center text-sm sm:text-base" style={{color: 'var(--text)'}}>
Deine Traumsammlung wächst - durchsuchbar nach Gefühlen,
Symbolen und magischen Momenten
</p>
</div>
{/* Traumstatistiken */}
<div
className="card backdrop-blur-md bg-gradient-to-br from-amber-100/50 to-orange-100/50 border border-amber-200/30 dark:bg-gradient-to-br dark:from-amber-900/30 dark:to-orange-900/30 dark:border-amber-700/30"
style={{animationDelay: '2.5s'}}>
<div className="flex justify-center mb-4">
<div className="p-3 sm:p-4 bg-amber-500/20 rounded-full">
<FaChartBar className="text-amber-600 dark:text-amber-400" size={28} />
</div>
</div>
<h3 className="text-lg sm:text-xl font-bold mb-2 sm:mb-3 text-center" style={{color: 'var(--accent)'}}>
Traummuster
</h3>
<p className="text-center text-sm sm:text-base" style={{color: 'var(--text)'}}>
Entdecke die geheimen Muster deiner Nachtreisen -
welche Träume kehren zurück?
</p>
</div>
{/* Schlafrhythmus */}
<div
className="card backdrop-blur-md bg-gradient-to-br from-rose-100/50 to-pink-100/50 border border-rose-200/30 dark:bg-gradient-to-br dark:from-rose-900/30 dark:to-pink-900/30 dark:border-rose-700/30"
style={{animationDelay: '3s'}}>
<div className="flex justify-center mb-4">
<div className="p-3 sm:p-4 bg-rose-500/20 rounded-full">
<FaMoon className="text-rose-600 dark:text-rose-400" size={28} />
</div>
</div>
<h3 className="text-lg sm:text-xl font-bold mb-2 sm:mb-3 text-center" style={{color: 'var(--accent)'}}>
Schlafzyklen
</h3>
<p className="text-center text-sm sm:text-base" style={{color: 'var(--text)'}}>
Verstehe deine Schlafrhythmen und wie sie deine
Traumlandschaften formen
</p>
</div>
</div>
{/* Dreamy Workflow Section */}
<div
className="dream-container mb-16 backdrop-blur-lg bg-gradient-to-br from-pink-500/30 to-red-400/30 dark:from-pink-800/30 dark:to-red-900/30 rounded-3xl p-6 sm:p-8 md:p-12">
<div className="text-center">
<FaHeart className="text-pink-500 dark:text-pink-400 mx-auto mb-4" size={32} />
<h2 className="dream-title text-2xl sm:text-3xl">Deine magische Traumreise</h2>
</div>
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-6 sm:gap-8 mt-6 sm:mt-8">
<div className="text-center">
{inputMode === 'text' ? (
<textarea
className="w-full p-3 rounded-lg mb-3 transition-all duration-200"
rows={4}
placeholder="Beschreibe deinen Traum..."
style={{
backgroundColor: 'var(--bg)',
color: 'var(--text)',
border: '1px solid var(--accent-soft)'
}}
></textarea>
) : (
<div
className="bg-gradient-to-br from-purple-400 to-purple-600 rounded-full w-16 h-16 sm:w-20 sm:h-20 flex items-center justify-center mx-auto mb-4 sm:mb-6 shadow-lg">
<FaBed className="text-white" size={24} />
className="w-full h-40 rounded-lg mb-3 flex items-center justify-center border-2 border-dashed transition-all duration-200"
style={{
backgroundColor: 'var(--bg)',
borderColor: 'var(--accent-soft)'
}}>
<p style={{color: 'var(--text-muted)'}}>Zeichne deinen Traum hier (Canvas-Platzhalter)</p>
</div>
<h4 className="font-bold mb-2 sm:mb-3 dreamy-text text-base sm:text-lg">1. Träumen</h4>
<p className="text-xs sm:text-sm" style={{color: 'var(--text)'}}>
In der Nacht zeichnen deine Sensoren sanft deine Traumreisen auf
</p>
</div>
<div className="text-center">
<div
className="bg-gradient-to-br from-blue-400 to-blue-600 rounded-full w-16 h-16 sm:w-20 sm:h-20 flex items-center justify-center mx-auto mb-4 sm:mb-6 shadow-lg">
<FaPen className="text-white" size={24} />
</div>
<h4 className="font-bold mb-2 sm:mb-3 dreamy-text text-base sm:text-lg">2. Einfangen</h4>
<p className="text-xs sm:text-sm" style={{color: 'var(--text)'}}>
Beim Erwachen flüsterst du deine Träume in die App
</p>
</div>
<div className="text-center">
<div
className="bg-gradient-to-br from-violet-400 to-violet-600 rounded-full w-16 h-16 sm:w-20 sm:h-20 flex items-center justify-center mx-auto mb-4 sm:mb-6 shadow-lg">
<FaRobot className="text-white" size={24} />
</div>
<h4 className="font-bold mb-2 sm:mb-3 dreamy-text text-base sm:text-lg">3. Verzaubern</h4>
<p className="text-xs sm:text-sm" style={{color: 'var(--text)'}}>
KI-Magie verwandelt deine Worte in Bilder, Klänge und Bedeutungen
</p>
</div>
<div className="text-center">
<div
className="bg-gradient-to-br from-pink-400 to-pink-600 rounded-full w-16 h-16 sm:w-20 sm:h-20 flex items-center justify-center mx-auto mb-4 sm:mb-6 shadow-lg">
<FaEye className="text-white" size={24} />
</div>
<h4 className="font-bold mb-2 sm:mb-3 dreamy-text text-base sm:text-lg">4. Erleben</h4>
<p className="text-xs sm:text-sm" style={{color: 'var(--text)'}}>
Tauche ein in deine VR-Traumwelten und entdecke dich selbst
</p>
</div>
</div>
</div>
)}
{/* Dreamy CTA Section */}
<div className="relative mt-12 sm:mt-16">
<div
className="card p-6 sm:p-8 md:p-12 text-center bg-gradient-to-br from-pink-600 via-violet-600 to-purple-600 border-none overflow-hidden">
<div className="relative z-10">
<div className="flex flex-col sm:flex-row justify-center items-center mb-4 sm:mb-6">
<FaStar className="text-yellow-300 mb-2 sm:mb-0 sm:mr-3" size={24} />
<h2 className="text-2xl sm:text-3xl md:text-4xl font-bold text-white">Wo Träume Realität werden</h2>
<FaStar className="text-yellow-300 mt-2 sm:mt-0 sm:ml-3 hidden sm:block" size={24} />
<div className="flex justify-between">
<div className="flex space-x-2">
<button className="p-2 rounded-full transition-all duration-200 hover:transform hover:scale-110"
style={{backgroundColor: 'var(--accent-soft)', color: 'var(--text)'}}>
<svg xmlns="http://www.w3.org/2000/svg" className="h-5 w-5" fill="none" viewBox="0 0 24 24"
stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
d="M19 11a7 7 0 01-7 7m0 0a7 7 0 01-7-7m7 7v4m0 0H8m4 0h4m-4-8a3 3 0 01-3-3V5a3 3 0 116 0v6a3 3 0 01-3 3z"/>
</svg>
</button>
<button className="p-2 rounded-full transition-all duration-200 hover:transform hover:scale-110"
style={{backgroundColor: 'var(--accent-soft)', color: 'var(--text)'}}>
<svg xmlns="http://www.w3.org/2000/svg" className="h-5 w-5" fill="none" viewBox="0 0 24 24"
stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
d="M15.172 7l-6.586 6.586a2 2 0 102.828 2.828l6.414-6.586a4 4 0 00-5.656-5.656l-6.415 6.585a6 6 0 108.486 8.486L20.5 13"/>
</svg>
</button>
</div>
<p className="text-base sm:text-lg md:text-xl text-purple-100 mb-6 sm:mb-8 md:mb-10 max-w-2xl mx-auto">
Lass dich von KI-gestützter Traumdeutung, VR-Erlebnissen und personalisierten
Einsichten in eine tiefere Welt deines Unterbewusstseins führen
</p>
<button
className="dreamy-button flex items-center mx-auto text-sm sm:text-base"
onClick={handleLogin}
>
<FaMoon className="mr-2 sm:mr-3" size={18} />
Lass die Magie beginnen!
<HiSparkles className="ml-2 sm:ml-3" size={18} />
<button className="px-4 py-2 rounded-lg transition-all duration-200 hover:transform hover:scale-105"
style={{background: 'var(--accent-gradient)', color: 'white'}}>
Senden
</button>
</div>
</div>
{/* Personal Feed */}
<div className="dreamy-card p-4 mb-4 transition-all duration-300 hover:transform hover:scale-[1.01]"
style={{backgroundColor: 'var(--card)', color: 'var(--text)'}}>
<h3 className="font-bold mb-3 dream-title">Deine letzten Träume</h3>
{personalDreams.length > 0 ? (
<div className="space-y-3">
{personalDreams.map((dream, index) => (
<div key={dream.id}
className="p-3 rounded-lg transition-all duration-300 hover:transform hover:scale-[1.02]"
style={{
backgroundColor: 'var(--bg)',
boxShadow: '0 4px 15px var(--shadow)',
animationDelay: `${index * 0.1}s`
}}>
<h4 className="font-medium" style={{color: 'var(--accent)'}}>{dream.title}</h4>
<p className="text-sm" style={{color: 'var(--text-muted)'}}>
{dream.date.toLocaleDateString('de-DE')}
</p>
</div>
))}
</div>
) : (
<p className="text-sm" style={{color: 'var(--text-muted)'}}>
Du hast noch keine Träume aufgezeichnet. Starte jetzt!
</p>
)}
</div>
{/* Friends Feed */}
<div className="dreamy-card p-4 mb-4 transition-all duration-300 hover:transform hover:scale-[1.01]"
style={{backgroundColor: 'var(--card)', color: 'var(--text)'}}>
<h3 className="font-bold mb-3 dream-title">Träume von Freunden</h3>
<div className="space-y-3">
{friendsDreams.map((dream, index) => {
const dreamUser = MockUserMap.get(dream.userId);
return (
<div key={dream.id}
className="p-3 rounded-lg transition-all duration-300 hover:transform hover:scale-[1.02]"
style={{
backgroundColor: 'var(--bg)',
boxShadow: '0 4px 15px var(--shadow)',
animationDelay: `${index * 0.1}s`
}}>
<div className="flex items-center mb-1">
<div
className="w-6 h-6 rounded-full mr-2 flex items-center justify-center overflow-hidden"
style={{
backgroundColor: 'var(--accent-soft)',
border: '1px solid var(--accent)'
}}>
{dreamUser?.profilePicture ? (
<img src={`/assets/profiles/${dreamUser.profilePicture}`}
alt={dreamUser.name} className="w-full h-full object-cover"/>
) : (
<span className="text-xs"
style={{color: 'var(--text)'}}>{dreamUser?.name.charAt(0)}</span>
)}
</div>
<span className="font-medium text-sm"
style={{color: 'var(--text)'}}>{dreamUser?.name}</span>
</div>
<h4 className="font-medium" style={{color: 'var(--accent)'}}>{dream.title}</h4>
<p className="text-sm" style={{color: 'var(--text-muted)'}}>
{dream.date.toLocaleDateString('de-DE')}
</p>
</div>
);
})}
</div>
</div>
{/* Daily Highlights */}
<div className="dreamy-card p-4 mb-4 transition-all duration-300 hover:transform hover:scale-[1.01]"
style={{backgroundColor: 'var(--card)', color: 'var(--text)'}}>
<h3 className="font-bold mb-3 dream-title">Tägliche Highlights</h3>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<div className="p-3 rounded-lg"
style={{backgroundColor: 'var(--bg)', boxShadow: '0 4px 15px var(--shadow)'}}>
<h4 className="font-medium mb-2" style={{color: 'var(--accent)'}}>Top Traumthemen</h4>
<ul className="list-disc pl-5 mb-4">
{topDreamTopics.map((topic, index) => (
<li key={index}
className="text-sm mb-1 transition-all duration-300 hover:transform hover:translate-x-1"
style={{color: 'var(--text)'}}>
<span style={{color: 'var(--accent-soft)'}}>{topic.label}:</span> {topic.percentage}%
</li>
))}
</ul>
</div>
<div className="p-3 rounded-lg"
style={{backgroundColor: 'var(--bg)', boxShadow: '0 4px 15px var(--shadow)'}}>
<h4 className="font-medium mb-2" style={{color: 'var(--accent)'}}>Stimmungskategorien</h4>
<ul className="list-disc pl-5">
{primaryMoodCategories.map((mood, index) => (
<li key={index}
className="text-sm mb-1 transition-all duration-300 hover:transform hover:translate-x-1"
style={{color: 'var(--text)'}}>
<span style={{color: 'var(--accent-soft)'}}>{mood.label}:</span> {mood.percentage}%
</li>
))}
</ul>
</div>
</div>
</div>
{/* Ad Banner */}
<div
className="dreamy-card p-4 mb-4 transition-all duration-300 hover:transform hover:scale-[1.01] floating"
style={{
background: 'linear-gradient(135deg, var(--accent), var(--accent-dark))',
color: 'white',
boxShadow: '0 10px 30px var(--shadow), inset 0 0 15px rgba(166, 77, 255, 0.3)'
}}>
<div className="flex flex-col sm:flex-row items-center">
<div className="mb-4 sm:mb-0 sm:mr-4 transition-all duration-300 hover:transform hover:rotate-12">
<svg xmlns="http://www.w3.org/2000/svg" className="h-16 w-16" fill="none" viewBox="0 0 24 24"
stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1}
d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/>
</svg>
</div>
<div>
<h3 className="font-bold text-lg mb-1">ReMind Sensor-Gerät</h3>
<p className="text-sm mb-2">Verbessere deine Traumerfahrung mit unserem Sensor mit EEG,
Bewegungserkennung und Vitalzeichen-Überwachung.</p>
<div
className="mb-3 inline-block px-2 py-1 text-xs font-bold rounded transition-all duration-300 hover:transform hover:scale-105"
style={{backgroundColor: 'var(--accent-soft)', color: 'var(--text)'}}>
Pro-Funktionen: VR-Räume, Automatische Traumerkennung und Aufzeichnung
</div>
</div>
</div>
</div>
</div>
</div>)
);
}