File tree Expand file tree Collapse file tree 3 files changed +54
-0
lines changed Expand file tree Collapse file tree 3 files changed +54
-0
lines changed Original file line number Diff line number Diff line change 1+ import { useState , useEffect } from "react" ;
2+
3+ const ThemeToggle = ( ) => {
4+ const [ theme , setTheme ] = useState ( "dark" ) ;
5+
6+ useEffect ( ( ) => {
7+ // if the theme isn't set, use the user's system preference
8+ const savedTheme = localStorage . getItem ( "theme" ) ;
9+ if ( savedTheme ) {
10+ setTheme ( savedTheme ) ;
11+ document . documentElement . setAttribute ( "data-theme" , savedTheme ) ;
12+ } else if ( window . matchMedia ( "(prefers-color-scheme: dark)" ) . matches ) {
13+ setTheme ( "dark" ) ;
14+ document . documentElement . setAttribute ( "data-theme" , "dark" ) ;
15+ } else {
16+ setTheme ( "light" ) ;
17+ document . documentElement . setAttribute ( "data-theme" , "light" ) ;
18+ }
19+ } ) ;
20+
21+ const toggleTheme = ( ) => {
22+ const newTheme = theme === "dark" ? "light" : "dark" ;
23+ setTheme ( newTheme ) ;
24+ localStorage . setItem ( "theme" , newTheme ) ;
25+ document . documentElement . setAttribute ( "data-theme" , newTheme ) ;
26+ } ;
27+
28+ return (
29+ < button onClick = { toggleTheme } className = "button" aria-label = "Toggle theme" >
30+ { theme === "dark" ? "🌞" : "🌚" }
31+ </ button >
32+ ) ;
33+ } ;
34+
35+ export default ThemeToggle ;
Original file line number Diff line number Diff line change @@ -2,13 +2,15 @@ import { GitHubIcon } from "../components/Icons";
22import LinkButton from "../components/LinkButton" ;
33import Logo from "../components/Logo" ;
44import SearchInput from "../components/SearchInput" ;
5+ import ThemeToggle from "../components/ThemeToggle" ;
56
67const Header = ( ) => {
78 return (
89 < header className = "header" >
910 < Logo />
1011 < nav className = "primary-nav" >
1112 < SearchInput />
13+ < ThemeToggle />
1214 < LinkButton
1315 href = "https://github.com/dostonnabotov/quicksnip/blob/main/CONTRIBUTING.md"
1416 target = "_blank"
Original file line number Diff line number Diff line change 5555
5656 --br-md : 0.5rem ;
5757 --br-lg : 0.75rem ;
58+
59+ transition :
60+ background-color 0.3s ease,
61+ color 0.3s ease;
62+ }
63+
64+ /*------------------------------------*\
65+ #ACCESSIBILITY/THEMING
66+ \*------------------------------------*/
67+ [data-theme = "light" ] {
68+ color-scheme : light;
69+ --clr-neutral-200 : hsl (0 , 0% , 10% );
70+ --clr-neutral-300 : hsl (0 , 0% , 30% );
71+ --clr-neutral-500 : hsl (0 , 0% , 85% );
72+ --clr-neutral-700 : hsl (0 , 0% , 95% );
73+ --clr-neutral-900 : hsl (60 , 25% , 98% );
5874}
5975
6076/*------------------------------------*\
@@ -434,6 +450,7 @@ abbr {
434450.categories {
435451 display : grid;
436452 background-color : var (--bg-secondary );
453+ border : 1px solid var (--border-color );
437454 padding : 1.25rem ;
438455 padding-bottom : 2rem ;
439456 border-radius : var (--br-lg );
You can’t perform that action at this time.
0 commit comments