From d2216c09749b68057f1dc074c5bd8b560c3eddcb Mon Sep 17 00:00:00 2001 From: Giovanni Martire Date: Sun, 7 Apr 2024 21:10:05 +0200 Subject: [PATCH 1/2] dark mode implementation --- app/globals.css | 127 +++++++++++++++++- app/layout.tsx | 21 +-- .../FilterChangeButton.module.css | 2 +- .../Charts/InlineChart/InlineChart.module.css | 4 + components/Charts/RadarChart/RadarChart.tsx | 14 +- .../ModeSwitcher/ModeSwitcher.module.css | 5 + components/NavBar/NavBar.module.css | 9 +- components/NavBar/NavBar.tsx | 8 +- .../ThemeSwitcher/ThemeSwitcher.module.css | 14 ++ .../NavBar/ThemeSwitcher/ThemeSwitcher.tsx | 22 +++ package-lock.json | 10 ++ package.json | 1 + public/icons/sun.svg | 3 + 13 files changed, 215 insertions(+), 25 deletions(-) create mode 100644 components/NavBar/ThemeSwitcher/ThemeSwitcher.module.css create mode 100644 components/NavBar/ThemeSwitcher/ThemeSwitcher.tsx create mode 100644 public/icons/sun.svg diff --git a/app/globals.css b/app/globals.css index c0a4747..8c246ea 100644 --- a/app/globals.css +++ b/app/globals.css @@ -123,6 +123,131 @@ --toast-error-border: 50, 70%, 64%; } +[data-theme='dark'] { + --max-width: 1100px; + --border-radius: 12px; + --font-families: var(--font-Inter), ui-monospace, Menlo, Monaco, + 'Cascadia Mono', 'Segoe UI Mono', 'Roboto Mono', 'Oxygen Mono', + 'Ubuntu Monospace', 'Source Code Pro', 'Fira Mono', 'Droid Sans Mono', + 'Courier New', monospace; + + /* --main-padding: 2.5rem; + --internal-gap: 0.8rem; */ + --main-padding: 2vw; /* fluid design */ + --internal-gap: 1vw; /* fluid design */ + --main-borderRadius: 0.75rem; + + --color-grey: 0, 0%, 6%; + + /* COLORS */ + + --gray-950: 210, 20%, 98%; /* #4d94ff, #4280de, #376dbe, #2c5a9e, #224880, #183663, #0f2648, #07162e, #020816, #000103 */ + --gray-900: 220, 14%, 96%; + --gray-800: 220, 13%, 91%; + --gray-700: 216, 12%, 84%; + --gray-600: 218, 11%, 65%; + --gray-500: 220, 9%, 46%; + --gray-400: 215, 14%, 34%; + --gray-300: 217, 19%, 27%; + --gray-200: 215, 28%, 17%; + --gray-100: 221, 39%, 11%; + --gray-50: 224, 71%, 4%; + + --blue-50: 214, 100%, 97%; + --blue-100: 214, 95%, 93%; + --blue-200: 213, 97%, 87%; + --blue-300: 212, 96%, 78%; + --blue-400: 213, 94%, 68%; + --blue-500: 217, 91%, 60%; + --blue-600: 221, 83%, 53%; + --blue-700: 224, 76%, 48%; + --blue-800: 226, 71%, 40%; + --blue-900: 224, 64%, 33%; + --blue-950: 226, 57%, 21%; + + --yellow-50: 55, 92%, 95%; + --yellow-100: 55, 97%, 88%; + --yellow-200: 53, 98%, 77%; + --yellow-300: 50, 98%, 64%; + --yellow-400: 48, 96%, 53%; + --yellow-500: 45, 93%, 47%; + --yellow-600: 41, 96%, 40%; + --yellow-700: 35, 92%, 33%; + --yellow-800: 32, 81%, 29%; + --yellow-900: 28, 73%, 26%; + --yellow-950: 26, 83%, 14%; + + --red-50: 0, 86%, 97%; + --red-100: 0, 93%, 94%; + --red-200: 0, 96%, 89%; + --red-300: 0, 94%, 82%; + --red-400: 0, 91%, 71%; + --red-500: 0, 84%, 60%; + --red-600: 0, 72%, 51%; + --red-700: 0, 74%, 42%; + --red-800: 0, 70%, 35%; + --red-900: 0, 63%, 31%; + --red-950: 0, 75%, 15%; + + --green-50: 138, 76%, 97%; + --green-100: 141, 84%, 93%; + --green-200: 141, 79%, 85%; + --green-300: 142, 77%, 73%; + --green-400: 142, 69%, 58%; + --green-500: 142, 71%, 45%; + --green-600: 142, 76%, 36%; + --green-700: 142, 72%, 29%; + --green-800: 143, 64%, 24%; + --green-900: 144, 61%, 20%; + --green-950: 145, 80%, 10%; + + --background-hsl: 222, 45%, 8%; + --foreground-hsl: 0, 0%, 90%; + + --mods-NM-bg: 226, 99%, 65%; + --mods-NM-bg-row: 226, 99%, 65%, 0.15; + --mods-HD-bg: 43, 98%, 60%; + --mods-HD-bg-row: 43, 98%, 60%, 0.15; + --mods-HR-bg: 0, 100%, 69%; + --mods-HR-bg-row: 0, 100%, 69%, 0.15; + --mods-HDHR-bg: 13, 98%, 60%; + --mods-HDHR-bg-row: 13, 98%, 60%, 0.15; + --mods-HDDT-bg: 302, 97%, 86%; + --mods-HDDT-bg-row: 302, 97%, 86%, 0.15; + --mods-EZ-bg: 120, 100%, 50%; + --mods-EZ-bg-row: 120, 100%, 50%, 0.15; + --mods-FL-bg: 0, 0%, 8%; + --mods-FL-bg-row: 0, 0%, 8%, 0.15; + --mods-HT-bg: 6, 34%, 52%; + --mods-HT-bg-row: 6, 34%, 52%, 0.15; + --mods-DT-bg: 267, 97%, 73%; + --mods-DT-bg-row: 267, 97%, 73%, 0.15; + --mods-FM-bg: 101, 38%, 63%; + --mods-FM-bg-row: 101, 38%, 63%, 0.15; + --mods-TB-bg: 191, 26%, 57%; + --mods-TB-bg-row: 191, 26%, 57%, 0.15; + + --accent-color: 216, 100%, 65%; + --accent-secondary-color: var(--blue-400); + + /* CHARTS */ + --tooltip-color: 0, 0%, 100%; + --tooltip-gain: var(--green-400); + --tooltip-loss: var(--red-400); + + /* BADGES */ + --badge-provisional-background: var(--yellow-400); + --badge-provisional-foreground: var(--yellow-900); + + /* USER RATING TIER */ + --tier-bar-background: var(--gray-300); + --tier-bar-accent: var(--accent-color); + + /* TOAST */ + --toast-error-bg: var(--yellow-200); + --toast-error-border: 50, 70%, 64%; +} + * { box-sizing: border-box; padding: 0; @@ -139,7 +264,7 @@ body { } body { - background-color: hsl(var(--background-rgb)); + background-color: hsl(var(--background-hsl)); color: hsl(var(--foreground-hsl)); font-family: var(--font-families); min-height: 100vh; diff --git a/app/layout.tsx b/app/layout.tsx index 6732abc..1b3ca67 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -4,6 +4,7 @@ import ErrorProvider from '@/util/ErrorContext'; import UserProvider from '@/util/UserLoggedContext'; import type { Metadata } from 'next'; import { Viewport } from 'next'; +import { ThemeProvider } from 'next-themes'; import { Inter } from 'next/font/google'; import './globals.css'; @@ -31,16 +32,18 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( - + - - - - {children} -