From 7a7a6290634f76a7defbd1868387422457a31a01 Mon Sep 17 00:00:00 2001 From: limepotato Date: Wed, 30 Oct 2024 15:45:39 -0600 Subject: [PATCH] color scheme randomizer --- frontend/public/scripts/main.js | 231 +++++++++++++++++++- frontend/public/styles/css/color-scheme.css | 226 ++++++------------- frontend/src/layouts/Layout.astro | 2 +- 3 files changed, 297 insertions(+), 162 deletions(-) diff --git a/frontend/public/scripts/main.js b/frontend/public/scripts/main.js index 3c6c01f..ee4f8d0 100644 --- a/frontend/public/scripts/main.js +++ b/frontend/public/scripts/main.js @@ -1,11 +1,12 @@ const meowEndpoint = "https://nelle.observer/api/meow"; const beepEndpoint = "https://nelle.observer/api/beep"; const kaomojiEndpoint = "https://nelle.observer/api/kaomoji"; -var random_boolean = Math.random() < 0.5; +var colorBool = Math.random() < 0.5; // loads all the functions to be loaded on load, pretty simple, it loads shit on load. function onLoad() { jsEnabled(); + checkThemeStorage(); getSGAState(); redirect(); checkBoxes(); @@ -121,4 +122,232 @@ function showNtfyInfo() { ntfyInfoButton.innerHTML = "[show more info]" isNtfyInfoHidden = true; } +} + +//// color scheme changer +///TODO: make default gray-scale? +const headTag = document.getElementsByTagName('head')[0]; +const styleTag = document.createElement("style"); + +function checkThemeStorage() { + if (sessionStorage.getItem("themeGreen")) { + setGreen() + } + if (sessionStorage.getItem("themeOrange")) { + setOrange() + } + if (!sessionStorage.getItem("themeOrange") && !sessionStorage.getItem("themeGreen")) { + getTheme() + } +} + +function setGreen() { + styleTag.innerHTML = ` +:root { + --text: #e7eeea; + --background: #060d09; + --primary: #9ae2b9; + --secondary: #14904a; + --accent: #47e48a; + + --content-gradient: linear-gradient(to bottom right, var(--secondary-800), var(--primary-900)); + --accent-gradient: linear-gradient(to bottom right, var(--accent), var(--accent-200) 30%, var(--text) 60%); + + --link: var(--accent-300); + --visited: var(--accent-400); + --hover: var(--accent-500); + + --text-50: #f0f4f2; + --text-100: #e1eae5; + --text-200: #c3d5cb; + --text-300: #a5c0b1; + --text-400: #88aa97; + --text-500: #6a957d; + --text-600: #557764; + --text-700: #3f5a4b; + --text-800: #2a3c32; + --text-900: #151e19; + --text-950: #0b0f0c; + + --background-50: #eef7f2; + --background-100: #dcefe4; + --background-200: #b9dfc9; + --background-300: #96cfaf; + --background-400: #73bf94; + --background-500: #50af79; + --background-600: #408c61; + --background-700: #306949; + --background-800: #204630; + --background-900: #102318; + --background-950: #08110c; + + --primary-50: #ebf9f1; + --primary-100: #d7f4e4; + --primary-200: #b0e8c8; + --primary-300: #88ddad; + --primary-400: #61d192; + --primary-500: #39c676; + --primary-600: #2e9e5f; + --primary-700: #227747; + --primary-800: #174f2f; + --primary-900: #0b2818; + --primary-950: #06140c; + + --secondary-50: #e9fcf1; + --secondary-100: #d2f9e3; + --secondary-200: #a5f3c7; + --secondary-300: #78edab; + --secondary-400: #4be78f; + --secondary-500: #1fe073; + --secondary-600: #18b45c; + --secondary-700: #128745; + --secondary-800: #0c5a2e; + --secondary-900: #062d17; + --secondary-950: #03160b; + + --accent-50: #e9fcf1; + --accent-100: #d3f8e3; + --accent-200: #a6f2c7; + --accent-300: #7aebab; + --accent-400: #4ee48f; + --accent-500: #21de73; + --accent-600: #1bb15c; + --accent-700: #148545; + --accent-800: #0d592e; + --accent-900: #072c17; + --accent-950: #03160b; + + --alt-accent: #fbb055; + + /* TODO: Alter This */ + --glitch-1: var(--alt-accent-400); + --glitch-2: var(--alt-accent-500); + --glitch-3: var(--alt-accent-600); + + --alt-accent-50: #fef3e7; + --alt-accent-100: #fce8cf; + --alt-accent-200: #fad19e; + --alt-accent-300: #f7b96e; + --alt-accent-400: #f5a23d; + --alt-accent-500: #f28b0d; + --alt-accent-600: #c26f0a; + --alt-accent-700: #915308; + --alt-accent-800: #613805; + --alt-accent-900: #301c03; + --alt-accent-950: #180e01; +} +`; + headTag.appendChild(styleTag); + sessionStorage.setItem("themeGreen", 1); +} + +function setOrange() { + styleTag.innerHTML = ` +:root { + --text: #f2ede7; + --background: var(--background-950); + --primary: #d7bfa2; + --secondary: #76552e; + --accent: #ffa941; + + --content-gradient: linear-gradient(to bottom right, var(--secondary-800), var(--primary-900)); + --accent-gradient: linear-gradient(to bottom right, var(--accent), var(--accent-200) 30%, var(--text) 60%); + + --link: var(--accent-300); + --visited: var(--accent-400); + --hover: var(--accent-500); + + --text-50: #f6f3ee; + --text-100: #ede6de; + --text-200: #dbcebd; + --text-300: #c9b59c; + --text-400: #b89c7a; + --text-500: #a68359; + --text-600: #856947; + --text-700: #634f36; + --text-800: #423524; + --text-900: #211a12; + --text-950: #110d09; + + --background-50: #f7f3ee; + --background-100: #efe7dc; + --background-200: #dfcfb9; + --background-300: #cfb696; + --background-400: #bf9e73; + --background-500: #af8650; + --background-600: #8c6b40; + --background-700: #695030; + --background-800: #463620; + --background-900: #231b10; + --background-950: #110d08; + + --primary-50: #f7f3ed; + --primary-100: #f0e7db; + --primary-200: #e0ceb8; + --primary-300: #d1b694; + --primary-400: #c29d70; + --primary-500: #b3854d; + --primary-600: #8f6a3d; + --primary-700: #6b502e; + --primary-800: #47351f; + --primary-900: #241b0f; + --primary-950: #120d08; + + --secondary-50: #f8f3ed; + --secondary-100: #f1e7da; + --secondary-200: #e2ceb6; + --secondary-300: #d4b691; + --secondary-400: #c69d6c; + --secondary-500: #b88547; + --secondary-600: #936a39; + --secondary-700: #6e502b; + --secondary-800: #49351d; + --secondary-900: #251b0e; + --secondary-950: #120d07; + + --accent-50: #fff4e5; + --accent-100: #ffe8cc; + --accent-200: #ffd199; + --accent-300: #ffba66; + --accent-400: #ffa333; + --accent-500: #ff8c00; + --accent-600: #cc7000; + --accent-700: #995400; + --accent-800: #663800; + --accent-900: #331c00; + --accent-950: #1a0e00; + + --alt-accent: #60fe35; + + --glitch-1: var(--alt-accent-600); + --glitch-2: var(--alt-accent-700); + --glitch-3: var(--alt-accent-800); + + --alt-accent-50: #ebffe6; + --alt-accent-100: #d7ffcc; + --alt-accent-200: #affe9a; + --alt-accent-300: #88fe67; + --alt-accent-400: #60fe34; + --alt-accent-500: #38fe01; + --alt-accent-600: #2dcb01; + --alt-accent-700: #229801; + --alt-accent-800: #166501; + --alt-accent-900: #0b3300; + --alt-accent-950: #061900; +} +`; + headTag.appendChild(styleTag); + sessionStorage.setItem("themeOrange", 1); +} + +function getTheme() { + + if (colorBool) { + // if true: green + setGreen() + } + else { + // if false: orange + setOrange() + } } \ No newline at end of file diff --git a/frontend/public/styles/css/color-scheme.css b/frontend/public/styles/css/color-scheme.css index 931002c..2498012 100644 --- a/frontend/public/styles/css/color-scheme.css +++ b/frontend/public/styles/css/color-scheme.css @@ -1,83 +1,84 @@ /* default */ :root { - --text: #f2ede7; - --background: var(--background-950); - --primary: #d7bfa2; - --secondary: #76552e; - --accent: #ffa941; + --text: #f5efef; + --background: #030303; + --primary: #9a9a9a; + --secondary: #505050; + /*--accent: #232323;*/ + --accent: var(--accent-500); --content-gradient: linear-gradient(to bottom right, var(--secondary-800), var(--primary-900)); - --accent-gradient: linear-gradient(to bottom right, var(--accent), var(--accent-200) 30%, var(--text) 60%); + --accent-gradient: linear-gradient(to bottom right, var(--accent-300), var(--accent-200) 30%, var(--text) 60%); --link: var(--accent-300); --visited: var(--accent-400); --hover: var(--accent-500); - --text-50: #f6f3ee; - --text-100: #ede6de; - --text-200: #dbcebd; - --text-300: #c9b59c; - --text-400: #b89c7a; - --text-500: #a68359; - --text-600: #856947; - --text-700: #634f36; - --text-800: #423524; - --text-900: #211a12; - --text-950: #110d09; + --text-50: #f5efef; + --text-100: #ebe0e0; + --text-200: #d8c0c0; + --text-300: #c4a1a1; + --text-400: #b08282; + --text-500: #9d6262; + --text-600: #7d4f4f; + --text-700: #5e3b3b; + --text-800: #3f2727; + --text-900: #1f1414; + --text-950: #100a0a; - --background-50: #f7f3ee; - --background-100: #efe7dc; - --background-200: #dfcfb9; - --background-300: #cfb696; - --background-400: #bf9e73; - --background-500: #af8650; - --background-600: #8c6b40; - --background-700: #695030; - --background-800: #463620; - --background-900: #231b10; - --background-950: #110d08; + --background-50: #f2f2f2; + --background-100: #e6e6e6; + --background-200: #cccccc; + --background-300: #b3b3b3; + --background-400: #999999; + --background-500: #808080; + --background-600: #666666; + --background-700: #4d4d4d; + --background-800: #333333; + --background-900: #1a1a1a; + --background-950: #0d0d0d; - --primary-50: #f7f3ed; - --primary-100: #f0e7db; - --primary-200: #e0ceb8; - --primary-300: #d1b694; - --primary-400: #c29d70; - --primary-500: #b3854d; - --primary-600: #8f6a3d; - --primary-700: #6b502e; - --primary-800: #47351f; - --primary-900: #241b0f; - --primary-950: #120d08; + --primary-50: #f2f2f2; + --primary-100: #e6e6e6; + --primary-200: #cccccc; + --primary-300: #b3b3b3; + --primary-400: #999999; + --primary-500: #808080; + --primary-600: #666666; + --primary-700: #4d4d4d; + --primary-800: #333333; + --primary-900: #1a1a1a; + --primary-950: #0d0d0d; - --secondary-50: #f8f3ed; - --secondary-100: #f1e7da; - --secondary-200: #e2ceb6; - --secondary-300: #d4b691; - --secondary-400: #c69d6c; - --secondary-500: #b88547; - --secondary-600: #936a39; - --secondary-700: #6e502b; - --secondary-800: #49351d; - --secondary-900: #251b0e; - --secondary-950: #120d07; + --secondary-50: #f2f2f2; + --secondary-100: #e6e6e6; + --secondary-200: #cccccc; + --secondary-300: #b3b3b3; + --secondary-400: #999999; + --secondary-500: #808080; + --secondary-600: #666666; + --secondary-700: #4d4d4d; + --secondary-800: #333333; + --secondary-900: #1a1a1a; + --secondary-950: #0d0d0d; - --accent-50: #fff4e5; - --accent-100: #ffe8cc; - --accent-200: #ffd199; - --accent-300: #ffba66; - --accent-400: #ffa333; - --accent-500: #ff8c00; - --accent-600: #cc7000; - --accent-700: #995400; - --accent-800: #663800; - --accent-900: #331c00; - --accent-950: #1a0e00; + --accent-50: #f2f2f2; + --accent-100: #e6e6e6; + --accent-200: #cccccc; + --accent-300: #b3b3b3; + --accent-400: #999999; + --accent-500: #808080; + --accent-600: #666666; + --accent-700: #4d4d4d; + --accent-800: #333333; + --accent-900: #1a1a1a; + --accent-950: #0d0d0d; - --alt-accent: #60fe35; + --alt-accent: #677967; - --glitch-1: var(--alt-accent-600); - --glitch-2: var(--alt-accent-700); - --glitch-3: var(--alt-accent-800); + --glitch-1: var(--alt-accent-200); + --glitch-2: var(--alt-accent-300); + --glitch-3: var(--alt-accent-400); --alt-accent-50: #ebffe6; --alt-accent-100: #d7ffcc; @@ -90,99 +91,4 @@ --alt-accent-800: #166501; --alt-accent-900: #0b3300; --alt-accent-950: #061900; -} - -/* green */ -#green :root { - --text: #e7eeea; - --background: #060d09; - --primary: #9ae2b9; - --secondary: #14904a; - --accent: #47e48a; - - --content-gradient: linear-gradient(to bottom right, var(--secondary-800), var(--primary-900)); - --accent-gradient: linear-gradient(to bottom right, var(--accent), var(--accent-200) 30%, var(--text) 60%); - - --link: var(--accent-300); - --visited: var(--accent-400); - --hover: var(--accent-500); - - --text-50: #f0f4f2; - --text-100: #e1eae5; - --text-200: #c3d5cb; - --text-300: #a5c0b1; - --text-400: #88aa97; - --text-500: #6a957d; - --text-600: #557764; - --text-700: #3f5a4b; - --text-800: #2a3c32; - --text-900: #151e19; - --text-950: #0b0f0c; - - --background-50: #eef7f2; - --background-100: #dcefe4; - --background-200: #b9dfc9; - --background-300: #96cfaf; - --background-400: #73bf94; - --background-500: #50af79; - --background-600: #408c61; - --background-700: #306949; - --background-800: #204630; - --background-900: #102318; - --background-950: #08110c; - - --primary-50: #ebf9f1; - --primary-100: #d7f4e4; - --primary-200: #b0e8c8; - --primary-300: #88ddad; - --primary-400: #61d192; - --primary-500: #39c676; - --primary-600: #2e9e5f; - --primary-700: #227747; - --primary-800: #174f2f; - --primary-900: #0b2818; - --primary-950: #06140c; - - --secondary-50: #e9fcf1; - --secondary-100: #d2f9e3; - --secondary-200: #a5f3c7; - --secondary-300: #78edab; - --secondary-400: #4be78f; - --secondary-500: #1fe073; - --secondary-600: #18b45c; - --secondary-700: #128745; - --secondary-800: #0c5a2e; - --secondary-900: #062d17; - --secondary-950: #03160b; - - --accent-50: #e9fcf1; - --accent-100: #d3f8e3; - --accent-200: #a6f2c7; - --accent-300: #7aebab; - --accent-400: #4ee48f; - --accent-500: #21de73; - --accent-600: #1bb15c; - --accent-700: #148545; - --accent-800: #0d592e; - --accent-900: #072c17; - --accent-950: #03160b; - - --alt-accent: #fbb055; - - /* TODO: Alter This */ - --glitch-1: var(--alt-accent-400); - --glitch-2: var(--alt-accent-500); - --glitch-3: var(--alt-accent-600); - - --alt-accent-50: #fef3e7; - --alt-accent-100: #fce8cf; - --alt-accent-200: #fad19e; - --alt-accent-300: #f7b96e; - --alt-accent-400: #f5a23d; - --alt-accent-500: #f28b0d; - --alt-accent-600: #c26f0a; - --alt-accent-700: #915308; - --alt-accent-800: #613805; - --alt-accent-900: #301c03; - --alt-accent-950: #180e01; } \ No newline at end of file diff --git a/frontend/src/layouts/Layout.astro b/frontend/src/layouts/Layout.astro index ddf3eb7..74550da 100755 --- a/frontend/src/layouts/Layout.astro +++ b/frontend/src/layouts/Layout.astro @@ -16,7 +16,7 @@ const { title } = Astro.props; - +

{title}