From 8a0f3fc02e9c4af69833fc851dad81f0290ddcfc Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Thu, 3 Oct 2019 19:18:01 +0200 Subject: [PATCH] add dark mode --- gatsby-config.js | 11 ++- package.json | 4 + src/components/Layout.module.scss | 15 +++- src/components/Post/PostActions.module.scss | 4 + src/components/Post/PostImage.module.scss | 2 +- src/components/Post/PostTitle.module.scss | 4 + .../Search/SearchResults.module.scss | 4 + src/components/Search/index.tsx | 2 +- src/components/atoms/Changelog.module.scss | 4 + src/components/atoms/Exif.module.scss | 12 ++- src/components/atoms/ExifMap.tsx | 5 +- src/components/atoms/Modal.module.scss | 11 ++- src/components/molecules/Featured.module.scss | 2 +- src/components/molecules/Menu.module.scss | 4 + src/components/molecules/Menu.tsx | 2 +- .../molecules/ModalThanks.module.scss | 9 ++ .../molecules/ThemeSwitch.module.scss | 84 ++++++++++++++++++ src/components/molecules/ThemeSwitch.test.tsx | 24 +++++ src/components/molecules/ThemeSwitch.tsx | 55 ++++++++++++ src/components/organisms/Header.module.scss | 62 ++++--------- src/components/organisms/Header.tsx | 9 +- src/images/day.svg | 3 + src/images/logo.png | Bin 10739 -> 0 bytes src/images/logo.svg | 3 + src/images/logo@2x.png | Bin 21964 -> 0 bytes src/images/logo@3x.png | Bin 37890 -> 0 bytes src/images/night.svg | 3 + src/styles/_mixins.scss | 25 ++++++ src/styles/_variables.scss | 4 +- src/styles/global.scss | 61 +++++++------ 30 files changed, 337 insertions(+), 91 deletions(-) create mode 100644 src/components/molecules/ThemeSwitch.module.scss create mode 100644 src/components/molecules/ThemeSwitch.test.tsx create mode 100644 src/components/molecules/ThemeSwitch.tsx create mode 100644 src/images/day.svg delete mode 100644 src/images/logo.png create mode 100644 src/images/logo.svg delete mode 100644 src/images/logo@2x.png delete mode 100644 src/images/logo@3x.png create mode 100644 src/images/night.svg diff --git a/gatsby-config.js b/gatsby-config.js index abeeb8d7..43ca80ef 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -38,7 +38,8 @@ module.exports = { withWebp: true, linkImagesToOriginal: true, showCaptions: true, - backgroundColor: '#e7eef4' + backgroundColor: 'transparent', + disableBgImageOnAlpha: true } }, { @@ -208,6 +209,14 @@ module.exports = { exclude: ['/page/*', '/tags/*'] } }, + { + resolve: 'gatsby-plugin-use-dark-mode', + options: { + classNameDark: 'dark', + classNameLight: 'light', + minify: true + } + }, 'gatsby-plugin-webpack-size', 'gatsby-plugin-react-helmet', 'gatsby-plugin-catch-links', diff --git a/package.json b/package.json index bb1e0ed9..be0f346c 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "not op_mini all" ], "dependencies": { + "classnames": "^2.2.6", "dms2dec": "^1.1.0", "fast-exif": "^1.0.1", "fraction.js": "^4.0.12", @@ -46,6 +47,7 @@ "gatsby-plugin-sitemap": "^2.2.16", "gatsby-plugin-svgr": "^2.0.2", "gatsby-plugin-typescript": "^2.1.11", + "gatsby-plugin-use-dark-mode": "^1.1.2", "gatsby-plugin-webpack-size": "^1.0.0", "gatsby-redirect-from": "^0.2.1", "gatsby-remark-autolink-headers": "^2.1.13", @@ -76,6 +78,7 @@ "remark": "^11.0.1", "remark-react": "^6.0.0", "slugify": "^1.3.4", + "use-dark-mode": "^2.3.1", "web3": "^1.2.1" }, "devDependencies": { @@ -85,6 +88,7 @@ "@svgr/webpack": "^4.3.3", "@testing-library/jest-dom": "^4.1.0", "@testing-library/react": "^9.2.0", + "@types/classnames": "^2.2.9", "@types/jest": "^24.0.18", "@types/node": "^12.7.8", "@types/react": "^16.9.4", diff --git a/src/components/Layout.module.scss b/src/components/Layout.module.scss index 7d1a9aa2..ada64bc4 100644 --- a/src/components/Layout.module.scss +++ b/src/components/Layout.module.scss @@ -22,22 +22,31 @@ ///////////////////////////////////// .document { - @include transition; - width: 100%; padding-top: ($spacer * 2); - background-color: $page-background-color; + background-color: $body-background-color; border-top: 1px solid rgba(255, 255, 255, 0.7); border-bottom: 1px solid rgba(255, 255, 255, 0.7); padding-bottom: $spacer * 2; box-shadow: 0 1px 4px rgba($brand-main, 0.1), 0 -1px 4px rgba($brand-main, 0.2); transform: translate3d(0, 0, 0); + transition: 0.4s $easing; + transition-property: transform, background; :global(.has-menu-open) & { transform: translate3d(0, ($spacer * 3), 0); } + :global(.dark) & { + background-color: $body-background-color--dark; + color: $text-color--dark; + border-top-color: darken($brand-grey, 15%); + border-bottom-color: darken($brand-grey, 15%); + box-shadow: 0 1px 4px darken($brand-main, 10%), + 0 -1px 4px darken($brand-main, 15%); + } + @media (min-width: $screen-sm) and (min-height: 500px) { margin-top: $spacer * 2.65; margin-bottom: $spacer * 19; // height of footer diff --git a/src/components/Post/PostActions.module.scss b/src/components/Post/PostActions.module.scss index 007c1210..0ba10de8 100644 --- a/src/components/Post/PostActions.module.scss +++ b/src/components/Post/PostActions.module.scss @@ -13,6 +13,10 @@ flex-wrap: wrap; justify-content: space-between; + :global(.dark) & { + background: darken($body-background-color--dark, 2%); + } + @media (min-width: $screen-md) { margin-left: -100%; margin-right: -18%; diff --git a/src/components/Post/PostImage.module.scss b/src/components/Post/PostImage.module.scss index 061c624c..da0a36e3 100644 --- a/src/components/Post/PostImage.module.scss +++ b/src/components/Post/PostImage.module.scss @@ -15,7 +15,7 @@ top: 10%; padding: $spacer / 3 $spacer; background: rgba($link-color, 0.85); - color: #fff; + color: #fff !important; text-shadow: 0 1px 0 #000; left: 0; opacity: 0; diff --git a/src/components/Post/PostTitle.module.scss b/src/components/Post/PostTitle.module.scss index bc970961..e8eb1642 100644 --- a/src/components/Post/PostTitle.module.scss +++ b/src/components/Post/PostTitle.module.scss @@ -9,6 +9,10 @@ color: $color-headings; margin-top: 0; margin-bottom: $spacer; + + :global(.dark) & { + color: $color-headings--dark; + } } .hentry__title__link { diff --git a/src/components/Search/SearchResults.module.scss b/src/components/Search/SearchResults.module.scss index fca406b1..7c0c1160 100644 --- a/src/components/Search/SearchResults.module.scss +++ b/src/components/Search/SearchResults.module.scss @@ -15,6 +15,10 @@ -webkit-overflow-scrolling: touch; height: 91vh; + :global(.dark) & { + background: rgba($body-background-color--dark, 0.95); + } + ul { @include breakoutviewport; diff --git a/src/components/Search/index.tsx b/src/components/Search/index.tsx index f3a4be52..a4f90171 100644 --- a/src/components/Search/index.tsx +++ b/src/components/Search/index.tsx @@ -38,7 +38,7 @@ export default function Search({ lng }: { lng: string }) { {searchOpen && ( <> - + = 2 ? '@2x' : '' +const isDarkMode = + typeof window !== 'undefined' && document.body.classList.contains('dark') + const mapbox = (mapboxId: string, accessToken: string) => ( x: string, y: string, @@ -50,7 +53,7 @@ export default function ExifMap({ zoom={zoom} height={160} attribution={false} - provider={providers['light']} + provider={isDarkMode ? providers['dark'] : providers['light']} metaWheelZoom={true} metaWheelZoomWarning={'META+wheel to zoom'} > diff --git a/src/components/atoms/Modal.module.scss b/src/components/atoms/Modal.module.scss index 3bf22e3b..49bd3945 100644 --- a/src/components/atoms/Modal.module.scss +++ b/src/components/atoms/Modal.module.scss @@ -14,6 +14,10 @@ animation: fadein 0.3s; padding: $spacer; + :global(.dark) & { + background: rgba($body-background-color--dark, 0.95); + } + @media (min-width: $screen-sm) { display: flex; align-items: flex-start; @@ -24,7 +28,7 @@ .modal__content { outline: 0; - background: transparent; + background: $body-background-color; position: relative; border-radius: $border-radius; border: 1px solid rgba($brand-grey-light, 0.4); @@ -32,6 +36,11 @@ padding: 0 $spacer / 2 $spacer / 2; max-width: 100%; + :global(.dark) & { + background: $body-background-color--dark; + box-shadow: 0 5px 30px rgba(darken($brand-main, 20%), 0.5); + } + @media (min-width: $screen-md) { max-width: $screen-sm; padding: 0 $spacer $spacer; diff --git a/src/components/molecules/Featured.module.scss b/src/components/molecules/Featured.module.scss index 5b601ee2..342fc162 100644 --- a/src/components/molecules/Featured.module.scss +++ b/src/components/molecules/Featured.module.scss @@ -35,7 +35,7 @@ text-align: right; padding: $spacer / 3; background: rgba($link-color, 0.85); - color: #fff; + color: #fff !important; text-shadow: 0 1px 0 #000; left: 0; opacity: 0; diff --git a/src/components/molecules/Menu.module.scss b/src/components/molecules/Menu.module.scss index 44bd9f56..ecbc11f1 100644 --- a/src/components/molecules/Menu.module.scss +++ b/src/components/molecules/Menu.module.scss @@ -43,5 +43,9 @@ padding: $padding-base-horizontal; display: block; text-align: center; + + :global(.dark) & { + text-shadow: 0 -1px 0 rgba(#000, 0.5); + } } } diff --git a/src/components/molecules/Menu.tsx b/src/components/molecules/Menu.tsx index 201a7a85..77c7b154 100644 --- a/src/components/molecules/Menu.tsx +++ b/src/components/molecules/Menu.tsx @@ -24,7 +24,7 @@ export default function Menu() { return ( <> - +
    {MenuItems}
diff --git a/src/components/molecules/ModalThanks.module.scss b/src/components/molecules/ModalThanks.module.scss index 67570bb6..5deb94d0 100644 --- a/src/components/molecules/ModalThanks.module.scss +++ b/src/components/molecules/ModalThanks.module.scss @@ -13,6 +13,10 @@ margin-bottom: $spacer / 2; color: $brand-grey; text-transform: capitalize; + + :global(.dark) & { + color: $brand-grey-light; + } } header { @@ -20,6 +24,7 @@ text-align: center; margin-bottom: $spacer; + // stylelint-disable-next-line no-descending-specificity h4 { font-size: $font-size-large; margin-top: 0; @@ -28,6 +33,10 @@ p { color: $brand-grey-light; + + :global(.dark) & { + color: $brand-grey; + } } } } diff --git a/src/components/molecules/ThemeSwitch.module.scss b/src/components/molecules/ThemeSwitch.module.scss new file mode 100644 index 00000000..4735aaa9 --- /dev/null +++ b/src/components/molecules/ThemeSwitch.module.scss @@ -0,0 +1,84 @@ +@import 'variables'; +@import 'mixins'; + +.themeSwitch { + position: relative; + display: inline-block; + margin-right: $spacer; + opacity: 0.75; + bottom: -0.1rem; + + svg { + width: 0.8rem; + height: 0.8rem; + margin-top: -0.05rem; + fill: $brand-grey-light; + + &:last-child { + margin-top: -0.1rem; + width: 0.7rem; + height: 0.7rem; + } + } +} + +.checkboxContainer { + display: flex; + align-items: center; +} + +$knob-size: 8px; +$knob-space: 1px; + +.checkboxFake { + display: block; + position: relative; + width: ($knob-size + ($knob-space * 2)) * 2; + height: $knob-size + ($knob-space * 4); + border: 1px solid $brand-grey-light; + border-radius: 15rem; + margin-left: $spacer / 3; + margin-right: $spacer / 3; + + &::after { + content: ''; + position: absolute; + top: $knob-space; + left: $knob-space; + width: $knob-size; + height: $knob-size; + background-color: $brand-grey-light; + border-radius: 15rem; + transition: transform 0.2s $easing; + transform: translate3d(0, 0, 0); + } +} + +.checkbox { + position: relative; + cursor: pointer; + + [type='checkbox'], + .label { + width: 1px; + height: 1px; + border: 0; + clip: rect(0 0 0 0); + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + } + + [type='checkbox'] { + &:checked { + + .checkboxContainer { + .checkboxFake { + &::after { + transform: translate3d(100%, 0, 0); + } + } + } + } + } +} diff --git a/src/components/molecules/ThemeSwitch.test.tsx b/src/components/molecules/ThemeSwitch.test.tsx new file mode 100644 index 00000000..9f27cdbb --- /dev/null +++ b/src/components/molecules/ThemeSwitch.test.tsx @@ -0,0 +1,24 @@ +import React from 'react' +import { render, fireEvent, cleanup } from '@testing-library/react' +import ThemeSwitch from './ThemeSwitch' + +describe('ThemeSwitch', () => { + afterEach(cleanup) + + it('renders correctly', () => { + const { container } = render() + const switchContainer = container.querySelector('aside') + expect(switchContainer).toBeInTheDocument() + }) + + it('checkbox can be changed', () => { + const { container } = render() + + const toggle = container.querySelector('input') + const label = container.querySelector('label') + expect(toggle.checked).toBeFalsy() + fireEvent.click(label) + fireEvent.change(toggle, { target: { checked: true } }) + expect(toggle.checked).toBeTruthy() + }) +}) diff --git a/src/components/molecules/ThemeSwitch.tsx b/src/components/molecules/ThemeSwitch.tsx new file mode 100644 index 00000000..cbe769b5 --- /dev/null +++ b/src/components/molecules/ThemeSwitch.tsx @@ -0,0 +1,55 @@ +import React from 'react' +import useDarkMode from 'use-dark-mode' + +import { ReactComponent as Day } from '../../images/day.svg' +import { ReactComponent as Night } from '../../images/night.svg' +import styles from './ThemeSwitch.module.scss' + +const ThemeToggle = () => ( + + + + + +) + +const ThemeToggleInput = ({ + isDark, + toggleDark +}: { + isDark: boolean + toggleDark(): void +}) => ( + +) + +export default function ThemeSwitch() { + const darkMode = useDarkMode(false, { + classNameDark: 'dark', + classNameLight: 'light' + }) + + return ( + + ) +} diff --git a/src/components/organisms/Header.module.scss b/src/components/organisms/Header.module.scss index cbd69b9d..7bb79f01 100644 --- a/src/components/organisms/Header.module.scss +++ b/src/components/organisms/Header.module.scss @@ -15,7 +15,7 @@ } } -.header__content { +.headerContent { @include breakoutviewport; position: relative; @@ -31,56 +31,28 @@ // Logo ///////////////////////////////////// -.logo { - display: block; - background-image: url('../../images/logo.png'); - background-repeat: no-repeat; - background-position: left top; - width: 47px; - height: 31px; - - @media (min-width: $screen-sm) { - width: 183px; - } - - @media (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - background-image: url('../../images/logo@2x.png'); - background-size: 183px 62px; - } - - @media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 344dpi) { - background-image: url('../../images/logo@3x.png'); - background-size: 183px 62px; - } -} - .title { margin-top: $spacer / 5; margin-bottom: 0; - // display toned down logo - // by default - @extend .logo; -} -.header__logo { - @include hide-text; - // repeat logo - // but display hover version - @extend .logo; - - background-position: left bottom; - - // hide by default - opacity: 0; - // show smooooothly on hover - &:hover { - opacity: 1; - transform: none; + svg { + fill: $brand-grey-light; + width: 160px; + height: 30px; + margin: 0; + transition: 0.2s $easing; } - &:active { - top: 0; - box-shadow: none; + a { + display: block; + @include hide-text; + + &:hover, + &:focus { + svg { + fill: $brand-cyan; + } + } } } diff --git a/src/components/organisms/Header.tsx b/src/components/organisms/Header.tsx index d04a61f7..375870da 100644 --- a/src/components/organisms/Header.tsx +++ b/src/components/organisms/Header.tsx @@ -3,6 +3,8 @@ import { Link } from 'gatsby' import Container from '../atoms/Container' import Search from '../Search' import Menu from '../molecules/Menu' +import ThemeSwitch from '../molecules/ThemeSwitch' +import { ReactComponent as Logo } from '../../images/logo.svg' import styles from './Header.module.scss' @@ -10,14 +12,15 @@ export default function Header() { return (
-
+

- - kremalicious + + kremalicious

diff --git a/src/images/day.svg b/src/images/day.svg new file mode 100644 index 00000000..b48ffbb3 --- /dev/null +++ b/src/images/day.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/logo.png b/src/images/logo.png deleted file mode 100644 index ab0ef47f75de7827277e63caeed1ce176ae7e170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10739 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 TbjHDd|6eM|C`(sLngst3!ds+S diff --git a/src/images/logo.svg b/src/images/logo.svg new file mode 100644 index 00000000..4c82100e --- /dev/null +++ b/src/images/logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/logo@2x.png b/src/images/logo@2x.png deleted file mode 100644 index 1459db5d0534cc317feec9b3e6f731728a24e430..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21964 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

S 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 P00000NkvXXu0mjf%+j8Q diff --git a/src/images/night.svg b/src/images/night.svg new file mode 100644 index 00000000..c2ee7c9d --- /dev/null +++ b/src/images/night.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/styles/_mixins.scss b/src/styles/_mixins.scss index 31f58a5b..2583af2d 100644 --- a/src/styles/_mixins.scss +++ b/src/styles/_mixins.scss @@ -97,6 +97,14 @@ width: 100%; border-bottom: 1px dashed #fff; } + + :global(.dark) & { + border-bottom-color: darken($brand-main, 25%); + + &::before { + border-bottom-color: darken($brand-grey, 12%); + } + } } @mixin divider-top() { @@ -114,6 +122,14 @@ width: 100%; border-bottom: 1px dashed #fff; } + + :global(.dark) & { + border-top-color: darken($brand-main, 25%); + + &::after { + border-bottom-color: darken($brand-grey, 12%); + } + } } // Heading band @@ -124,6 +140,10 @@ background: rgba(255, 255, 255, 0.5); padding: ($spacer/2) $spacer ($spacer/2) 100%; margin-left: -100%; + + :global(.dark) & { + background: darken($body-background-color--dark, 2%); + } } // Layout breakout @@ -224,6 +244,11 @@ border-radius: $border-radius; box-shadow: 0 1px 3px rgba($brand-grey, 0.2); + :global(.dark) & { + box-shadow: 0 3px 5px rgba(darken($brand-main, 20%), 0.15), + 0 5px 16px rgba(darken($brand-main, 20%), 0.15); + } + @media (min-width: $screen-sm) { border: 2px solid transparent; } diff --git a/src/styles/_variables.scss b/src/styles/_variables.scss index 6b3e6dd1..fdb55f64 100644 --- a/src/styles/_variables.scss +++ b/src/styles/_variables.scss @@ -23,15 +23,13 @@ $alert-error: #f2dede; $body-background-color: $brand-light; $body-background-color--dark: darken($brand-grey, 22%); -$page-background-color: $brand-light; - // Text Colors ///////////////////////////////////// $text-color: $brand-grey; $text-color-light: $brand-grey-light; -$text-color--dark: lighten($brand-grey-light, 5%); +$text-color--dark: lighten($brand-grey-light, 10%); $text-color-light--dark: lighten($brand-grey-light, 5%); $link-color: $brand-cyan; diff --git a/src/styles/global.scss b/src/styles/global.scss index 1586524c..4f1787ae 100644 --- a/src/styles/global.scss +++ b/src/styles/global.scss @@ -13,7 +13,6 @@ html, body { margin: 0; padding: 0; - background: $body-background-color; } html { @@ -32,7 +31,8 @@ body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; min-height: 100vh; - transition: background 0.6s $easing; + transition: background 0.4s $easing; + background: $body-background-color; // handling long text, like URLs overflow-wrap: break-word; @@ -82,6 +82,26 @@ button { } } +// Links +///////////////////////////////////// + +a { + color: $link-color; + text-decoration: none; + transition: 0.2s ease-out; + + &:hover, + &:focus { + outline: 0; + color: $link-color-hover; + } + + &:active { + transition: none; + color: $link-color-active; + } +} + // Headings ///////////////////////////////////// @@ -153,38 +173,19 @@ h5, h6 { font-family: $font-family-headings; line-height: $line-height-headings; - color: $color-headings; font-weight: $font-weight-headings; letter-spacing: -0.02em; - .dark & { - color: $color-headings--dark; - } -} - -// Links -///////////////////////////////////// - -a { - color: $link-color; - text-decoration: none; - transition: 0.2s ease-out; - - h1 &, - h2 &, - h3 & { + // stylelint-disable no-descending-specificity + &, + a { color: $color-headings; } + // stylelint-enable no-descending-specificity - &:hover, - &:focus { - outline: 0; - color: $link-color-hover; - } - - &:active { - transition: none; - color: $link-color-active; + .dark &, + .dark & a { + color: $color-headings--dark; } } @@ -215,6 +216,10 @@ figcaption { font-style: italic; text-align: center; margin-top: -($spacer / $line-height); + + .dark & { + color: $brand-grey-light; + } } // Lists