-
{ for (*messages).iter().map(|msg| html! {
-
-
{"Du • Jetzt"}
-
{ msg }
+
+
+ { if msg.is_incoming { "Empfangen" } else { "Du" } }
+
+
{ &msg.content }
}) }
diff --git a/styles.css b/styles.css
index defd248..1c9b7f9 100644
--- a/styles.css
+++ b/styles.css
@@ -2,10 +2,7 @@
body {
background-color: #0f0f13;
color: #e2e2e7;
- font-family:
- "Inter",
- -apple-system,
- sans-serif;
+ font-family: "Inter", -apple-system, sans-serif;
margin: 0;
line-height: 1.5;
display: flex;
@@ -19,7 +16,7 @@ html {
.feed-container {
width: 100%;
max-width: 600px;
- padding: 40px 20px 150px 20px; /* 150px unten Platz für das Dock */
+ padding: 40px 20px 150px 20px;
}
/* --- Navigation Dock --- */
@@ -70,11 +67,6 @@ html {
border-radius: 16px;
padding: 20px;
margin-bottom: 16px;
- transition: background 0.2s ease;
-}
-
-.post-card:hover {
- background: rgba(255, 255, 255, 0.05);
}
.post-author {
@@ -90,26 +82,16 @@ html {
}
/* --- Interaction Elements --- */
-.reload-btn,
.reload-btn-large {
cursor: pointer;
- border: 1px solid rgba(74, 144, 226, 0.3);
- transition: all 0.2s ease;
-}
-
-.reload-btn {
- background: rgba(255, 255, 255, 0.05);
- border-radius: 12px;
- padding: 8px 12px;
-}
-
-.reload-btn-large {
background: rgba(74, 144, 226, 0.1);
color: #4a90e2;
padding: 14px;
border-radius: 16px;
width: 100%;
font-weight: 600;
+ border: 1px solid rgba(74, 144, 226, 0.3);
+ transition: all 0.2s ease;
}
.reload-btn-large:hover {
@@ -117,13 +99,7 @@ html {
transform: translateY(-2px);
}
-.status-msg {
- text-align: center;
- color: #63636e;
- margin-top: 40px;
-}
-
-/* --- Chat Layout --- */
+/* --- Chat Layout (Neu & Verbessert) --- */
.chat-wrapper {
display: flex;
flex-direction: column;
@@ -133,48 +109,69 @@ html {
.chat-list {
display: flex;
flex-direction: column;
- gap: 24px;
- margin-bottom: 100px;
+ gap: 12px;
+ margin-bottom: 180px; /* Platz für Input-Container */
+ padding: 10px 0;
}
.chat-item {
- border-left: 2px solid rgba(74, 144, 226, 0.3);
- padding-left: 16px;
- transition: border-color 0.3s ease;
+ max-width: 85%;
+ padding: 12px 16px;
+ border-radius: 18px;
+ display: flex;
+ flex-direction: column;
}
-.chat-item:hover {
- border-left-color: #4a90e2;
+/* Ausrichtung der Bubbles */
+.chat-item.outgoing {
+ align-self: flex-end;
+ background: rgba(74, 144, 226, 0.2);
+ border: 1px solid rgba(74, 144, 226, 0.3);
+ border-bottom-right-radius: 4px;
+}
+
+.chat-item.incoming {
+ align-self: flex-start;
+ background: rgba(255, 255, 255, 0.05);
+ border: 1px solid rgba(255, 255, 255, 0.1);
+ border-bottom-left-radius: 4px;
}
.chat-meta {
- font-size: 0.75rem;
+ font-size: 0.65rem;
color: #63636e;
text-transform: uppercase;
- letter-spacing: 0.05em;
margin-bottom: 4px;
+ font-weight: 700;
+}
+
+.chat-item.outgoing .chat-meta {
+ color: #4a90e2;
+ text-align: right;
}
.chat-content {
- font-size: 1.1rem;
+ font-size: 1rem;
color: #e2e2e7;
+ word-wrap: break-word;
}
-/* --- Floating Input Field --- */
+/* --- Floating Chat Input --- */
.chat-input-container {
position: fixed;
- bottom: 110px; /* Platziert über dem Navbar-Dock */
+ bottom: 110px;
left: 50%;
transform: translateX(-50%);
- width: 100%;
+ width: 90%;
max-width: 500px;
display: flex;
gap: 10px;
- background: rgba(15, 15, 19, 0.8);
- backdrop-filter: blur(10px);
- padding: 10px;
- border-radius: 20px;
+ background: rgba(20, 20, 25, 0.9);
+ backdrop-filter: blur(15px);
+ padding: 12px;
+ border-radius: 24px;
border: 1px solid rgba(255, 255, 255, 0.1);
+ z-index: 900;
}
.chat-input {
@@ -182,8 +179,7 @@ html {
background: transparent;
border: none;
color: white;
- padding: 10px 15px;
- font-size: 1rem;
+ padding: 0 10px;
outline: none;
}
@@ -193,29 +189,57 @@ html {
border: none;
width: 40px;
height: 40px;
- border-radius: 12px;
+ border-radius: 50%;
cursor: pointer;
font-weight: bold;
- font-size: 1.2rem;
- transition: transform 0.2s ease;
-}
-
-.chat-send-btn:hover {
- transform: scale(1.05);
- background: #357abd;
}
+/* --- Recipient UI --- */
.recipient-box {
- margin-bottom: 20px;
+ position: sticky;
+ top: 0;
+ background: #0f0f13;
+ z-index: 100;
+ padding-bottom: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}
.recipient-input {
- background: transparent;
- border: none;
- color: #4a90e2; /* Blau markiert als Ziel */
- font-size: 0.9rem;
+ background: rgba(255, 255, 255, 0.03);
+ border: 1px solid rgba(255, 255, 255, 0.1);
+ border-radius: 12px;
+ color: #4a90e2;
+ font-family: monospace;
+ font-size: 0.85rem;
width: 100%;
- padding: 10px 0;
+ padding: 10px 15px;
outline: none;
+ box-sizing: border-box;
+}
+
+.relay-status {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ background: rgba(255, 255, 255, 0.05);
+ padding: 4px 12px;
+ border-radius: 20px;
+ font-size: 0.7rem;
+}
+
+.status-dot {
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ display: inline-block;
+}
+
+.status-dot.online {
+ background-color: #4ade80; /* Grün */
+ box-shadow: 0 0 8px #4ade80;
+}
+
+.status-dot.offline {
+ background-color: #facc15; /* Gelb/Orange für "Connecting" */
+ box-shadow: 0 0 8px #facc15;
}