From bd58bd82ed9b7b46a77202a374ba963ac1ade6f2 Mon Sep 17 00:00:00 2001 From: teddy Date: Wed, 5 Mar 2025 16:33:32 +0000 Subject: [PATCH] Feat(UI): Light / dark mode themes and toggle utility added. --- content/images/dark-mode-icon.webp | Bin 0 -> 9036 bytes content/images/light-mode-icon.svg | 28 +++++ content/images/light-mode-icon.webp | Bin 0 -> 6622 bytes index.html | 18 ++- scripts/scripts.js | 155 +++++++++++++++++++++-- styles/styles.css | 187 ++++++++++++++++++++++------ 6 files changed, 337 insertions(+), 51 deletions(-) create mode 100644 content/images/dark-mode-icon.webp create mode 100644 content/images/light-mode-icon.svg create mode 100644 content/images/light-mode-icon.webp diff --git a/content/images/dark-mode-icon.webp b/content/images/dark-mode-icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..1cb37e31e79727227bfa3e5c2e6693be0ebe90c4 GIT binary patch literal 9036 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/content/images/light-mode-icon.webp b/content/images/light-mode-icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..60f057679b17ec6fa1fc88247de6e4580fc10a9a GIT binary patch literal 6622 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 8b9f2f3..707b63d 100644 --- a/index.html +++ b/index.html @@ -1,5 +1,5 @@ - + @@ -16,7 +16,7 @@ GitHub Contributions Calendar (light mode default) - Statistics under calendar do not work. --> - + + + @@ -248,12 +256,15 @@