From 3ffd89ebe6837c0429462e76212720a5a658f95f Mon Sep 17 00:00:00 2001 From: Nicolas Perrin Date: Sat, 9 Aug 2025 21:11:20 +0100 Subject: [PATCH] feat: add theme variables and toggle --- src/app/app.component.ts | 9 ++++-- src/app/chat.component.ts | 6 ++-- src/app/login.component.ts | 2 +- src/app/profile.component.ts | 16 +++++------ src/styles.css | 54 ++++++++++++++++++++++++------------ 5 files changed, 55 insertions(+), 32 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 34d8bf0..59b9bbd 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -12,7 +12,8 @@ import { AngularFirestore, AngularFirestoreCollection } from '@angular/fire/comp
list - info + info + brightness_6
@@ -32,7 +33,7 @@ import { AngularFirestore, AngularFirestoreCollection } from '@angular/fire/comp `, }) -export class AppComponent { + export class AppComponent { constructor( public router:Router, @@ -53,4 +54,8 @@ export class AppComponent { fullScreenImage.src = ''; } + toggleTheme() { + document.body.classList.toggle('light-theme'); + } + } diff --git a/src/app/chat.component.ts b/src/app/chat.component.ts index d6229a8..456a0f5 100644 --- a/src/app/chat.component.ts +++ b/src/app/chat.component.ts @@ -63,7 +63,7 @@ import firebase from 'firebase/compat/app'
{{chatLastMessageObj?.recipients[recipient]?.name}}
-
X
+
X
@@ -154,7 +154,7 @@ import firebase from 'firebase/compat/app'
-
@@ -255,7 +255,7 @@ import firebase from 'firebase/compat/app'
diff --git a/src/app/login.component.ts b/src/app/login.component.ts index d0f6b5a..55a0ac6 100644 --- a/src/app/login.component.ts +++ b/src/app/login.component.ts @@ -41,7 +41,7 @@ import { first } from 'rxjs/operators';
-
{{messageUser}}
+
{{messageUser}}
diff --git a/src/app/profile.component.ts b/src/app/profile.component.ts index 3c9a81d..77a7c37 100644 --- a/src/app/profile.component.ts +++ b/src/app/profile.component.ts @@ -52,10 +52,10 @@ import { ChangeDetectorRef } from '@angular/core' -
inbox
-
history
-
chain
-
forecast
+
inbox
+
history
+
chain
+
forecast
New message to {{focusUserLastMessageObj?.name}}
@@ -152,13 +152,13 @@ import { ChangeDetectorRef } from '@angular/core'
+ [style.background-color]="(message.payload.doc.data()?.reads||{})[UI.currentUser]?'var(--surface-color)':(message.payload.doc.data()?.recipients[UI.currentUser]?.mentionMessages||message.payload.doc.data()?.text.includes(UI.currentUserLastMessageObj?.name))?'#5BBF2F':message.payload.doc.data()?.recipients[UI.currentUser]?'#38761D':'var(--secondary-color)'" + [style.color]="(message.payload.doc.data()?.reads||{})[UI.currentUser]?'var(--surface-color)':whitesmoke"> {{message.payload.doc.data()?.recipients[UI.currentUser]?.unreadMessages}}
+ [style.background-color]="'var(--secondary-color)'" + [style.color]="'var(--secondary-color)'"> {{message.payload.doc.data()?.recipients[UI.currentUser]?.unreadMessages}}
{{UI.formatSecondsToDhm1(math.max(0,(UI.nowSeconds-message.payload.doc.data()?.serverTimestamp?.seconds)))}}
diff --git a/src/styles.css b/src/styles.css index b0db970..20af25b 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1,12 +1,30 @@ +@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap'); + +:root { + --primary-color: #222C32; + --secondary-color: #B0BAC0; + --accent-color: #D85140; + --surface-color: #131B20; + --scrollbar-thumb-color: var(--secondary-color); +} + +body.light-theme { + --primary-color: #FFFFFF; + --secondary-color: #222C32; + --accent-color: #38761D; + --surface-color: #EEEEEE; + --scrollbar-thumb-color: #888888; +} + *, *:before, *:after { box-sizing: border-box; - font-family: verdana; + font-family: 'Roboto', sans-serif; font-weight: 100; margin: 0; padding: 0px; font-size: 13px; line-height: 20px; - border-color:#222C32; + border-color: var(--primary-color); border-radius:2px; border-width:thin; overflow: hidden; @@ -22,15 +40,15 @@ height: 5px; } *::-webkit-scrollbar-thumb { - background-color:#B0BAC0; + background-color: var(--scrollbar-thumb-color); } *::-webkit-scrollbar-track { - background-color: #131B20; + background-color: var(--surface-color); } body { border: 0; - background-color:#222C32; - color: #B0BAC0; + background-color: var(--primary-color); + color: var(--secondary-color); overscroll-behavior-x: none; touch-action: pan-y; } @@ -42,7 +60,7 @@ body { } #login { width: 10000px; - font-family: 'RobotoDraft', 'Roboto', sans-serif; + font-family: 'Roboto', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: table-cell; @@ -79,7 +97,7 @@ a:visited { .menu .iconSmall .activity { height: 12px; width: 12px; - background-color:#D85140; + background-color:var(--accent-color); position: absolute; top: 1px; left: 34px; @@ -103,14 +121,14 @@ a:visited { .listLight .activity { height: 12px; width: 12px; - background-color:#D85140; + background-color:var(--accent-color); position: absolute; top: 0px; right: 0px; z-index: 1000; } .listLight .selected { - background-color: #222C32; + background-color: var(--primary-color); } .buttonBlack { cursor: pointer; @@ -162,7 +180,7 @@ a:visited { text-align:center; border-style:solid; padding:3px; - border-color:#131B20; + border-color:var(--surface-color); border-radius: 4px; transition: 0.1s ease; border-width: 1px; @@ -185,7 +203,7 @@ button { border: 0; padding: 7px; margin: 10px; - color: #B0BAC0; + color: var(--secondary-color); -webkit-transition: 0.3s ease; transition: 0.3s ease; text-align:center; @@ -193,7 +211,7 @@ button { } input { background-color:#2D3941; - color: #B0BAC0; + color: var(--secondary-color); width: 90%; border-style:solid; padding: 10px; @@ -218,7 +236,7 @@ input { font-size: 10px; background: #1db217; box-sizing: border-box; - color: #131B20; + color: var(--surface-color); text-align: center; } @@ -273,7 +291,7 @@ hr { margin: 0 auto; width: 100%; max-width: 800px; - background-color: #131B20; + background-color: var(--surface-color); border-style: solid; border-width: 0 1px 0 1px; user-select:none; @@ -321,7 +339,7 @@ progress { appearance:none; width:100%; height:3px; - background-color: #131B20; + background-color: var(--surface-color); } progress::-webkit-progress-bar { background-color: transparent; width: 100%; @@ -423,7 +441,7 @@ img { outline: thin solid; border-radius: 4px; color: whitesmoke !important; - background-color: #222C32; + background-color: var(--primary-color); width: 155px; height: 35px; margin: 5px; @@ -450,7 +468,7 @@ img { } .socialmediabutton:hover { - background-color: #131B20; + background-color: var(--surface-color); transition: 0.1s ease; }