-
-

-

+
+
+

+

+
+
+
);
diff --git a/src/data/MockUsers.ts b/src/data/MockUsers.ts
index 087bb5b..5891d2b 100644
--- a/src/data/MockUsers.ts
+++ b/src/data/MockUsers.ts
@@ -1,11 +1,12 @@
import User from "../types/User.ts";
export const MockUsers: User[] = [
- new User(1, "Matthias", "matthias.jpg"),
- new User(2, "Kim", "kim.png"),
- new User(3, "Anja", "anja.png"),
+ new User(1, "Matthias", "matthias.jpg", "s4mapuch@uni-trier.de", 42, 7),
+ new User(2, "Kim", "kim.png", "kim@example.com", 28, 3),
+ new User(3, "Anja", "anja.png", "anja@example.com", 15, 5),
+ new User(4, "Neo Quantum", "neo.png", "neo@remind.dev", 64, 12),
]
export const MockUserMap: Map
= new Map(MockUsers.map(user => [user.id, user]));
-export default MockUsers;
\ No newline at end of file
+export default MockUsers;
diff --git a/src/index.css b/src/index.css
index 5960035..8954949 100644
--- a/src/index.css
+++ b/src/index.css
@@ -1,13 +1,16 @@
@import "tailwindcss";
:root {
- --bg: #f9f6ff;
+ --bg: #f8f5ff;
--container: #ede6fa;
- --card: #d6c6ff;
+ --card: #e0d4ff;
--text: #1e102e;
--text-muted: #4a375e;
- --accent: #7f39fb;
- --accent-gradient: linear-gradient(135deg, #7f39fb, #d500f9);
+ --accent: #9d4eff;
+ --accent-gradient: linear-gradient(135deg, #9d4eff, #d500f9);
+ --accent-soft: #c9a4ff;
+ --accent-dark: #6a0dad;
+ --shadow: rgba(157, 78, 255, 0.2);
font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
line-height: 1.5;
@@ -24,13 +27,16 @@
}
[data-theme="dark"] {
- --bg: #1e102e;
- --container: #3a1a5d;
- --card: #5c2d91;
+ --bg: #1a0933;
+ --container: #2d1155;
+ --card: #3d1a6e;
--text: #f5e6ff;
--text-muted: #c9a4e3;
--accent: #bb86fc;
- --accent-gradient: linear-gradient(135deg, #7f39fb, #d500f9);
+ --accent-gradient: linear-gradient(135deg, #bb86fc, #d500f9);
+ --accent-soft: #9d4eff;
+ --accent-dark: #6a0dad;
+ --shadow: rgba(187, 134, 252, 0.3);
}
.border-background {
@@ -69,12 +75,13 @@ a:hover {
body {
margin: 0;
display: flex;
- place-items: center;
min-width: 320px;
min-height: 100vh;
+ width: 100%;
background-color: var(--bg);
color: var(--text);
transition: background-color 0.3s, color 0.3s;
+ overflow-x: hidden;
}
h1 {
@@ -173,3 +180,75 @@ button:focus-visible {
.theme-toggle input:checked + .slider {
background-color: var(--accent);
}
+
+/* Dreamy violet enhancements */
+.dream-title {
+ font-size: 1.5rem;
+ font-weight: bold;
+ background: var(--accent-gradient);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ margin-bottom: 0.5rem;
+}
+
+.dream-container {
+ background-color: var(--container);
+ border-radius: 16px;
+ padding: 1.5rem;
+ margin-bottom: 1.5rem;
+ box-shadow: 0 4px 15px var(--shadow);
+ transition: transform 0.3s, box-shadow 0.3s;
+}
+
+.dream-container:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 8px 25px var(--shadow);
+}
+
+/* Scrollbar styling */
+::-webkit-scrollbar {
+ width: 10px;
+}
+
+::-webkit-scrollbar-track {
+ background: var(--bg);
+}
+
+::-webkit-scrollbar-thumb {
+ background: var(--accent-soft);
+ border-radius: 5px;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background: var(--accent);
+}
+
+/* Animations */
+@keyframes dream-float {
+ 0% {
+ transform: translateY(0);
+ }
+ 50% {
+ transform: translateY(-10px);
+ }
+ 100% {
+ transform: translateY(0);
+ }
+}
+
+.floating {
+ animation: dream-float 6s ease-in-out infinite;
+}
+
+/* Responsive typography */
+@media (max-width: 768px) {
+ h1 {
+ font-size: 2.5em;
+ }
+ h2 {
+ font-size: 1.8em;
+ }
+ p {
+ font-size: 0.95em;
+ }
+}
diff --git a/src/pages/ProfilePage.tsx b/src/pages/ProfilePage.tsx
new file mode 100644
index 0000000..110ec1f
--- /dev/null
+++ b/src/pages/ProfilePage.tsx
@@ -0,0 +1,67 @@
+import React from 'react';
+import { MockUsers } from '../data/MockUsers';
+
+const ProfilePage: React.FC = () => {
+ // Find Neo Quantum in MockUsers
+ const profileUser = MockUsers.find(user => user.name === "Neo Quantum");
+
+ // Default values if user not found
+ const defaultName = "TestUser";
+ const defaultEmail = "user@example.com";
+ const defaultDreamCount = 0;
+ const defaultStreakDays = 0;
+
+ return (
+
+
+ {/* Profile Picture */}
+
+

+
+
+ {/* User Information */}
+
+
{profileUser ? profileUser.name : defaultName}
+
{profileUser ? profileUser.email : defaultEmail}
+
+
+
+
{profileUser ? profileUser.dreamCount : defaultDreamCount}
+
Dreams
+
+
+
{profileUser ? profileUser.streakDays : defaultStreakDays}
+
Days Streak
+
+
+
+
+
+
+
+ );
+};
+
+export default ProfilePage;
diff --git a/src/types/User.ts b/src/types/User.ts
index e483dcb..19978b9 100644
--- a/src/types/User.ts
+++ b/src/types/User.ts
@@ -2,14 +2,23 @@ export default class User {
id: number;
name: string;
profilePicture: string;
+ email: string;
+ dreamCount: number;
+ streakDays: number;
constructor(
id: number,
name: string,
- profilePicture: string
+ profilePicture: string,
+ email: string = "",
+ dreamCount: number = 0,
+ streakDays: number = 0
){
this.id = id
this.name = name
this.profilePicture = profilePicture
+ this.email = email
+ this.dreamCount = dreamCount
+ this.streakDays = streakDays
}
-}
\ No newline at end of file
+}