feat: Complete dark gaming theme redesign for React frontend

- Updated all Chat component styles (Chat, MessageInput, MessageList, ConversationList)
- Replaced purple/pink gradients with cyan/green gaming theme
- Implemented glassmorphism effects with backdrop blur
- Updated message bubbles with gradient for own messages, dark glass for others
- Changed all light backgrounds to OLED-friendly pure black
- Added cyan glow effects and shadows throughout
- Installed react-router-dom dependency
- Updated Demo.css with full dark theme
- All components now match Astro landing site aesthetic
This commit is contained in:
Anderson 2026-01-12 04:47:53 +00:00 committed by GitHub
parent 651cba733d
commit 3da5bc453d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 6359 additions and 100 deletions

View file

@ -0,0 +1,5 @@
{
"_variables": {
"lastUpdateCheck": 1768189288502
}
}

1
astro-site/.astro/types.d.ts vendored Normal file
View file

@ -0,0 +1 @@
/// <reference types="astro/client" />

6176
astro-site/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

1
astro-site/src/env.d.ts vendored Normal file
View file

@ -0,0 +1 @@
/// <reference path="../.astro/types.d.ts" />

View file

@ -1,4 +1,5 @@
supabase login --token YOUR_ACCESS_TOKENsupabase login --token YOUR_ACCESS_TOKEN* {
/* Sleek Dark Gaming Theme - BitChat/Root Inspired */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
@ -6,43 +7,44 @@ supabase login --token YOUR_ACCESS_TOKENsupabase login --token YOUR_ACCESS_TOKEN
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', 'Roboto', sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
background: #000000;
min-height: 100vh;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
monospace;
font-family: 'Fira Code', 'Consolas', 'Monaco', 'Courier New', monospace;
}
.app {
min-height: 100vh;
display: flex;
flex-direction: column;
background: #000000;
}
.app-header {
background: rgba(255, 255, 255, 0.95);
padding: 24px;
background: rgba(10, 10, 15, 0.8);
backdrop-filter: blur(20px);
padding: 20px 32px;
text-align: center;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
border-bottom: 1px solid rgba(0, 217, 255, 0.1);
box-shadow: 0 4px 24px rgba(0, 217, 255, 0.05);
}
.app-header h1 {
margin: 0 0 8px 0;
color: #1a1a1a;
color: #00d9ff;
font-size: 32px;
font-weight: 700;
text-shadow: 0 0 30px rgba(0, 217, 255, 0.3);
}
.app-header p {
margin: 0;
color: #666;
color: #a1a1aa;
font-size: 16px;
}
@ -55,29 +57,32 @@ code {
}
.user-profile {
background: white;
background: rgba(10, 10, 15, 0.6);
backdrop-filter: blur(20px);
border: 1px solid rgba(0, 217, 255, 0.1);
border-radius: 16px;
padding: 32px;
margin-bottom: 32px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
box-shadow: 0 8px 32px rgba(0, 217, 255, 0.1);
}
.profile-header {
text-align: center;
padding-bottom: 24px;
border-bottom: 2px solid #f3f4f6;
border-bottom: 1px solid rgba(0, 217, 255, 0.1);
margin-bottom: 24px;
}
.profile-header h2 {
margin: 0 0 8px 0;
color: #1a1a1a;
color: #ffffff;
font-size: 28px;
font-weight: 600;
}
.profile-header p {
margin: 0 0 16px 0;
color: #666;
color: #a1a1aa;
font-size: 16px;
}
@ -88,22 +93,22 @@ code {
}
.toggle-button {
padding: 12px 24px;
background: #4f46e5;
color: white;
padding: 12px 32px;
background: linear-gradient(135deg, #00d9ff 0%, #00ff88 100%);
color: #000000;
border: none;
border-radius: 8px;
border-radius: 12px;
font-size: 16px;
font-weight: 500;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
transition: all 0.3s;
align-self: center;
box-shadow: 0 4px 20px rgba(0, 217, 255, 0.3);
}
.toggle-button:hover {
background: #4338ca;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(79, 70, 229, 0.3);
box-shadow: 0 8px 30px rgba(0, 217, 255, 0.4), 0 0 40px rgba(0, 255, 136, 0.2);
}
.verification-container {
@ -111,21 +116,24 @@ code {
}
.info-section {
background: rgba(255, 255, 255, 0.95);
background: rgba(10, 10, 15, 0.6);
backdrop-filter: blur(20px);
border: 1px solid rgba(0, 217, 255, 0.1);
border-radius: 16px;
padding: 32px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
box-shadow: 0 8px 32px rgba(0, 217, 255, 0.1);
}
.info-section h3 {
margin: 0 0 16px 0;
color: #1a1a1a;
color: #00d9ff;
font-size: 24px;
font-weight: 600;
}
.info-section p {
margin: 0 0 16px 0;
color: #374151;
color: #d4d4d8;
line-height: 1.6;
}
@ -136,23 +144,28 @@ code {
}
.info-section li {
padding: 8px 0;
color: #374151;
padding: 12px 16px;
color: #d4d4d8;
font-size: 16px;
background: rgba(0, 217, 255, 0.05);
border-radius: 8px;
margin-bottom: 8px;
border-left: 3px solid #00d9ff;
}
.app-footer {
background: rgba(0, 0, 0, 0.8);
color: white;
background: rgba(10, 10, 15, 0.8);
backdrop-filter: blur(20px);
color: #a1a1aa;
text-align: center;
padding: 24px;
margin-top: auto;
border-top: 1px solid rgba(0, 217, 255, 0.1);
}
.app-footer p {
margin: 0;
font-size: 14px;
opacity: 0.8;
}
/* Responsive */

View file

@ -1,10 +1,10 @@
/* Demo App Styles - Dark Modern Theme */
/* Demo App Styles - Sleek Dark Gaming Theme (BitChat/Root Inspired) */
.demo-app {
min-height: 100vh;
display: flex;
flex-direction: column;
background: #0a0a0f;
background: #000000;
color: #e4e4e7;
}
@ -62,12 +62,10 @@
.logo-section h1 {
margin: 0;
font-size: 1.75rem;
background: linear-gradient(135deg, #8b5cf6 0%, #ec4899 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
color: #00d9ff;
font-weight: 700;
letter-spacing: -0.02em;
text-shadow: 0 0 30px rgba(0, 217, 255, 0.3);
}
.tagline {
@ -149,10 +147,11 @@
}
.nav-tab.active {
background: linear-gradient(135deg, #8b5cf6 0%, #ec4899 100%);
background: linear-gradient(135deg, #00d9ff 0%, #00ff88 100%);
border-color: transparent;
color: white;
box-shadow: 0 4px 12px rgba(139, 92, 246, 0.3);
color: #000000;
font-weight: 700;
box-shadow: 0 4px 12px rgba(0, 217, 255, 0.4);
}
.tab-label {
@ -233,7 +232,7 @@
left: 0;
right: 0;
height: 2px;
background: linear-gradient(90deg, #8b5cf6, #ec4899);
background: linear-gradient(90deg, #00d9ff, #00ff88);
opacity: 0;
transition: opacity 0.3s;
}
@ -286,7 +285,7 @@
.feature-card ul li:before {
content: "✓";
color: #8b5cf6;
color: #00d9ff;
font-weight: bold;
font-size: 0.875rem;
}
@ -371,8 +370,8 @@
}
.platform-badge:hover {
background: rgba(139, 92, 246, 0.15);
border-color: #8b5cf6;
background: rgba(0, 217, 255, 0.15);
border-color: #00d9ff;
transform: translateY(-2px);
}
@ -410,7 +409,7 @@
left: 0;
right: 0;
height: 2px;
background: linear-gradient(90deg, #8b5cf6, #ec4899);
background: linear-gradient(90deg, #00d9ff, #00ff88);
transform: scaleX(0);
transition: transform 0.3s;
}
@ -428,7 +427,7 @@
font-size: 2.5rem;
font-weight: 700;
line-height: 1;
background: linear-gradient(135deg, #8b5cf6 0%, #ec4899 100%);
background: linear-gradient(135deg, #00d9ff 0%, #00ff88 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
@ -494,7 +493,7 @@
.footer-section h4 {
margin: 0 0 1rem 0;
background: linear-gradient(135deg, #8b5cf6 0%, #ec4899 100%);
background: linear-gradient(135deg, #00d9ff 0%, #00ff88 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
@ -533,7 +532,7 @@
}
.footer-section ul li a:hover {
color: #8b5cf6;
color: #00d9ff;
}
.footer-bottom {

View file

@ -1,8 +1,8 @@
/* Chat Container */
/* Chat Container - Dark Gaming Theme */
.chat-container {
display: flex;
height: 100vh;
background: #f5f5f5;
background: #000000;
position: relative;
}
@ -21,13 +21,15 @@
}
.status-indicator.online {
background: #d1fae5;
color: #065f46;
background: rgba(0, 255, 136, 0.2);
color: #00ff88;
border: 1px solid #00ff88;
}
.status-indicator.offline {
background: #fee2e2;
color: #991b1b;
background: rgba(239, 68, 68, 0.2);
color: #ef4444;
border: 1px solid #ef4444;
}
/* Main Chat Area */
@ -35,14 +37,16 @@
flex: 1;
display: flex;
flex-direction: column;
background: white;
border-left: 1px solid #e5e7eb;
background: rgba(10, 10, 15, 0.6);
backdrop-filter: blur(20px);
border-left: 1px solid rgba(0, 217, 255, 0.1);
}
.chat-header {
padding: 1rem 1.5rem;
border-bottom: 1px solid #e5e7eb;
background: white;
border-bottom: 1px solid rgba(0, 217, 255, 0.1);
background: rgba(10, 10, 15, 0.8);
backdrop-filter: blur(20px);
}
.conversation-info {

View file

@ -1,15 +1,16 @@
/* Conversation List Sidebar */
/* Conversation List Sidebar - Dark Gaming Theme */
.conversation-list {
width: 320px;
background: white;
border-right: 1px solid #e5e7eb;
background: rgba(10, 10, 15, 0.8);
backdrop-filter: blur(20px);
border-right: 1px solid rgba(0, 217, 255, 0.1);
display: flex;
flex-direction: column;
}
.conversation-list-header {
padding: 1rem 1.5rem;
border-bottom: 1px solid #e5e7eb;
border-bottom: 1px solid rgba(0, 217, 255, 0.1);
display: flex;
align-items: center;
justify-content: space-between;
@ -19,25 +20,28 @@
margin: 0;
font-size: 1.25rem;
font-weight: 600;
color: #ffffff;
}
.btn-new-conversation {
width: 32px;
height: 32px;
border-radius: 50%;
background: #3b82f6;
color: white;
background: linear-gradient(135deg, #00d9ff 0%, #00ff88 100%);
color: #000000;
border: none;
font-size: 1.5rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.2s;
transition: all 0.3s;
box-shadow: 0 4px 12px rgba(0, 217, 255, 0.3);
}
.btn-new-conversation:hover {
background: #2563eb;
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(0, 217, 255, 0.4);
}
/* Conversation Items */

View file

@ -1,8 +1,9 @@
/* Message Input Container */
/* Message Input Container - Dark Gaming Theme */
.message-input {
padding: 1rem 1.5rem;
background: white;
border-top: 1px solid #e5e7eb;
background: rgba(10, 10, 15, 0.8);
backdrop-filter: blur(20px);
border-top: 1px solid rgba(0, 217, 255, 0.1);
display: flex;
align-items: flex-end;
gap: 0.75rem;
@ -14,20 +15,22 @@
width: 36px;
height: 36px;
border: none;
background: #f3f4f6;
background: rgba(0, 217, 255, 0.1);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
font-size: 1.25rem;
transition: background 0.2s;
transition: all 0.3s;
flex-shrink: 0;
color: #00d9ff;
}
.btn-attach:hover,
.btn-emoji:hover {
background: #e5e7eb;
background: rgba(0, 217, 255, 0.2);
transform: scale(1.05);
}
.btn-attach:disabled,
@ -42,7 +45,9 @@
min-height: 36px;
max-height: 120px;
padding: 0.5rem 0.75rem;
border: 1px solid #e5e7eb;
border: 1px solid rgba(0, 217, 255, 0.2);
background: rgba(0, 0, 0, 0.5);
color: #ffffff;
border-radius: 18px;
font-size: 0.9375rem;
font-family: inherit;
@ -52,34 +57,38 @@
}
.message-textarea:focus {
border-color: #3b82f6;
border-color: #00d9ff;
box-shadow: 0 0 0 2px rgba(0, 217, 255, 0.1);
}
.message-textarea:disabled {
background: #f9fafb;
background: rgba(0, 0, 0, 0.3);
cursor: not-allowed;
opacity: 0.5;
}
.message-textarea::placeholder {
color: #9ca3af;
color: #71717a;
}
/* Send Button */
.btn-send {
padding: 0.5rem 1.5rem;
background: #3b82f6;
color: white;
background: linear-gradient(135deg, #00d9ff 0%, #00ff88 100%);
color: #000000;
border: none;
border-radius: 18px;
font-size: 0.9375rem;
font-weight: 500;
font-weight: 600;
cursor: pointer;
transition: background 0.2s;
transition: all 0.3s;
flex-shrink: 0;
box-shadow: 0 4px 12px rgba(0, 217, 255, 0.3);
}
.btn-send:hover:not(:disabled) {
background: #2563eb;
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(0, 217, 255, 0.4);
}
.btn-send:disabled {

View file

@ -1,4 +1,4 @@
/* Message List Container */
/* Message List Container - Dark Gaming Theme */
.message-list {
flex: 1;
overflow-y: auto;
@ -6,7 +6,7 @@
display: flex;
flex-direction: column-reverse;
gap: 1rem;
background: #f9fafb;
background: rgba(0, 0, 0, 0.5);
}
.message-list.empty {
@ -42,7 +42,7 @@
left: 0;
right: 0;
height: 1px;
background: #e5e7eb;
background: rgba(0, 217, 255, 0.1);
z-index: 0;
}
@ -50,12 +50,13 @@
.message-timestamp-divider::after {
display: inline-block;
padding: 0.25rem 1rem;
background: #f9fafb;
color: #6b7280;
background: rgba(0, 0, 0, 0.8);
color: #71717a;
font-size: 0.75rem;
border-radius: 12px;
position: relative;
z-index: 1;
border: 1px solid rgba(0, 217, 255, 0.1);
}
/* Message */
@ -92,12 +93,12 @@
width: 32px;
height: 32px;
border-radius: 50%;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
background: linear-gradient(135deg, #00d9ff 0%, #00ff88 100%);
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: 600;
color: #000000;
font-weight: 700;
font-size: 0.875rem;
}
@ -120,12 +121,12 @@
.message-sender {
font-size: 0.75rem;
font-weight: 500;
color: #6b7280;
color: #a1a1aa;
padding: 0 0.75rem;
}
.verified-badge {
color: #3b82f6;
color: #00d9ff;
margin-left: 0.25rem;
}
@ -138,15 +139,18 @@
}
.message.own .message-bubble {
background: #3b82f6;
color: white;
background: linear-gradient(135deg, #00d9ff 0%, #00ff88 100%);
color: #000000;
font-weight: 500;
border-bottom-right-radius: 0.25rem;
box-shadow: 0 4px 12px rgba(0, 217, 255, 0.3);
}
.message.other .message-bubble {
background: white;
color: #111827;
border: 1px solid #e5e7eb;
background: rgba(10, 10, 15, 0.8);
backdrop-filter: blur(20px);
color: #ffffff;
border: 1px solid rgba(0, 217, 255, 0.2);
border-bottom-left-radius: 0.25rem;
}

View file

@ -10,7 +10,7 @@ body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background: #0a0a0f;
background: #000000;
color: #e4e4e7;
line-height: 1.5;
}

View file

@ -13,6 +13,7 @@
"axios": "^1.13.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.30.3",
"socket.io-client": "^4.8.3"
},
"devDependencies": {
@ -746,6 +747,15 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"node_modules/@remix-run/router": {
"version": "1.23.2",
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz",
"integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==",
"license": "MIT",
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/@rolldown/pluginutils": {
"version": "1.0.0-beta.27",
"resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
@ -1899,6 +1909,38 @@
"node": ">=0.10.0"
}
},
"node_modules/react-router": {
"version": "6.30.3",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.3.tgz",
"integrity": "sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==",
"license": "MIT",
"dependencies": {
"@remix-run/router": "1.23.2"
},
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
"react": ">=16.8"
}
},
"node_modules/react-router-dom": {
"version": "6.30.3",
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.3.tgz",
"integrity": "sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==",
"license": "MIT",
"dependencies": {
"@remix-run/router": "1.23.2",
"react-router": "6.30.3"
},
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
"react": ">=16.8",
"react-dom": ">=16.8"
}
},
"node_modules/rollup": {
"version": "4.55.1",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.55.1.tgz",

View file

@ -14,6 +14,7 @@
"axios": "^1.13.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.30.3",
"socket.io-client": "^4.8.3"
},
"devDependencies": {