Update theme toggle mechanism
This commit is contained in:
parent
22687225b9
commit
246417a553
15 changed files with 425 additions and 200 deletions
|
|
@ -175,69 +175,6 @@
|
|||
display: none;
|
||||
}
|
||||
|
||||
html,
|
||||
html.light {
|
||||
--color-foreground: var(--color-light-foreground);
|
||||
--color-background: var(--color-light-background);
|
||||
--color-shade-1: var(--color-light-shade-1);
|
||||
--color-shade-2: var(--color-light-shade-2);
|
||||
--color-shade-3: var(--color-light-shade-3);
|
||||
--color-shade-4: var(--color-light-shade-4);
|
||||
--color-primary: var(--color-light-primary);
|
||||
--color-secondary: var(--color-light-secondary);
|
||||
--color-error: var(--color-light-error);
|
||||
--color-success: var(--color-light-success);
|
||||
--color-accent-1: var(--color-light-accent-1);
|
||||
--color-accent-2: var(--color-light-accent-2);
|
||||
--color-accent-3: var(--color-light-accent-3);
|
||||
--filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-argon-400));
|
||||
--filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-krypton-400));
|
||||
--color-glow-primary: var(--color-argon-950);
|
||||
--color-glow-secondary: var(--color-krypton-950);
|
||||
--transition-glow: filter 150ms cubic-bezier(0, 2, 1, -0.7) 50ms,
|
||||
border-color 150ms cubic-bezier(0, 2, 1, -0.7) 50ms;
|
||||
--text-glow-primary: drop-shadow(0 0 0.03125em var(--color-argon-400));
|
||||
--text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-krypton-400));
|
||||
}
|
||||
html .light-only,
|
||||
html.light .light-only {
|
||||
display: initial;
|
||||
}
|
||||
html .dark-only,
|
||||
html.light .dark-only {
|
||||
display: none;
|
||||
}
|
||||
|
||||
html.dark {
|
||||
--color-foreground: var(--color-dark-foreground);
|
||||
--color-background: var(--color-dark-background);
|
||||
--color-shade-1: var(--color-dark-shade-1);
|
||||
--color-shade-2: var(--color-dark-shade-2);
|
||||
--color-shade-3: var(--color-dark-shade-3);
|
||||
--color-shade-4: var(--color-dark-shade-4);
|
||||
--color-primary: var(--color-dark-primary);
|
||||
--color-secondary: var(--color-dark-secondary);
|
||||
--color-error: var(--color-dark-error);
|
||||
--color-success: var(--color-dark-success);
|
||||
--color-accent-1: var(--color-dark-accent-1);
|
||||
--color-accent-2: var(--color-dark-accent-2);
|
||||
--color-accent-3: var(--color-dark-accent-3);
|
||||
--filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-white)) drop-shadow(0 0 0.125em var(--color-primary)) drop-shadow(0 0 0.25em var(--color-primary));
|
||||
--filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-white)) drop-shadow(0 0 0.125em var(--color-secondary)) drop-shadow(0 0 0.25em var(--color-secondary));
|
||||
--color-glow-primary: var(--color-white);
|
||||
--color-glow-secondary: var(--color-white);
|
||||
--transition-glow: filter 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms,
|
||||
border-color 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms;
|
||||
--text-glow-primary: drop-shadow(0 0 0.03125em var(--color-white)) drop-shadow(0 0 0.0625em var(--color-primary)) drop-shadow(0 0 0.125em var(--color-primary));
|
||||
--text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-white)) drop-shadow(0 0 0.0625em var(--color-secondary)) drop-shadow(0 0 0.125em var(--color-secondary));
|
||||
}
|
||||
html.dark .light-only {
|
||||
display: none;
|
||||
}
|
||||
html.dark .dark-only {
|
||||
display: initial;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
--color-foreground: var(--color-dark-foreground);
|
||||
|
|
@ -268,6 +205,101 @@ html.dark .dark-only {
|
|||
html .dark-only {
|
||||
display: initial;
|
||||
}
|
||||
html:has(#themeLight:checked) {
|
||||
--color-foreground: var(--color-light-foreground);
|
||||
--color-background: var(--color-light-background);
|
||||
--color-shade-1: var(--color-light-shade-1);
|
||||
--color-shade-2: var(--color-light-shade-2);
|
||||
--color-shade-3: var(--color-light-shade-3);
|
||||
--color-shade-4: var(--color-light-shade-4);
|
||||
--color-primary: var(--color-light-primary);
|
||||
--color-secondary: var(--color-light-secondary);
|
||||
--color-error: var(--color-light-error);
|
||||
--color-success: var(--color-light-success);
|
||||
--color-accent-1: var(--color-light-accent-1);
|
||||
--color-accent-2: var(--color-light-accent-2);
|
||||
--color-accent-3: var(--color-light-accent-3);
|
||||
--filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-argon-400));
|
||||
--filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-krypton-400));
|
||||
--color-glow-primary: var(--color-argon-950);
|
||||
--color-glow-secondary: var(--color-krypton-950);
|
||||
--transition-glow: filter 150ms cubic-bezier(0, 2, 1, -0.7) 50ms,
|
||||
border-color 150ms cubic-bezier(0, 2, 1, -0.7) 50ms;
|
||||
--text-glow-primary: drop-shadow(0 0 0.03125em var(--color-argon-400));
|
||||
--text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-krypton-400));
|
||||
}
|
||||
html:has(#themeLight:checked) .light-only {
|
||||
display: initial;
|
||||
}
|
||||
html:has(#themeLight:checked) .dark-only {
|
||||
display: none;
|
||||
}
|
||||
#themeToggleDark {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media (prefers-color-scheme: light) {
|
||||
html {
|
||||
--color-foreground: var(--color-light-foreground);
|
||||
--color-background: var(--color-light-background);
|
||||
--color-shade-1: var(--color-light-shade-1);
|
||||
--color-shade-2: var(--color-light-shade-2);
|
||||
--color-shade-3: var(--color-light-shade-3);
|
||||
--color-shade-4: var(--color-light-shade-4);
|
||||
--color-primary: var(--color-light-primary);
|
||||
--color-secondary: var(--color-light-secondary);
|
||||
--color-error: var(--color-light-error);
|
||||
--color-success: var(--color-light-success);
|
||||
--color-accent-1: var(--color-light-accent-1);
|
||||
--color-accent-2: var(--color-light-accent-2);
|
||||
--color-accent-3: var(--color-light-accent-3);
|
||||
--filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-argon-400));
|
||||
--filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-krypton-400));
|
||||
--color-glow-primary: var(--color-argon-950);
|
||||
--color-glow-secondary: var(--color-krypton-950);
|
||||
--transition-glow: filter 150ms cubic-bezier(0, 2, 1, -0.7) 50ms,
|
||||
border-color 150ms cubic-bezier(0, 2, 1, -0.7) 50ms;
|
||||
--text-glow-primary: drop-shadow(0 0 0.03125em var(--color-argon-400));
|
||||
--text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-krypton-400));
|
||||
}
|
||||
html .light-only {
|
||||
display: initial;
|
||||
}
|
||||
html .dark-only {
|
||||
display: none;
|
||||
}
|
||||
html:has(#themeDark:checked) {
|
||||
--color-foreground: var(--color-dark-foreground);
|
||||
--color-background: var(--color-dark-background);
|
||||
--color-shade-1: var(--color-dark-shade-1);
|
||||
--color-shade-2: var(--color-dark-shade-2);
|
||||
--color-shade-3: var(--color-dark-shade-3);
|
||||
--color-shade-4: var(--color-dark-shade-4);
|
||||
--color-primary: var(--color-dark-primary);
|
||||
--color-secondary: var(--color-dark-secondary);
|
||||
--color-error: var(--color-dark-error);
|
||||
--color-success: var(--color-dark-success);
|
||||
--color-accent-1: var(--color-dark-accent-1);
|
||||
--color-accent-2: var(--color-dark-accent-2);
|
||||
--color-accent-3: var(--color-dark-accent-3);
|
||||
--filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-white)) drop-shadow(0 0 0.125em var(--color-primary)) drop-shadow(0 0 0.25em var(--color-primary));
|
||||
--filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-white)) drop-shadow(0 0 0.125em var(--color-secondary)) drop-shadow(0 0 0.25em var(--color-secondary));
|
||||
--color-glow-primary: var(--color-white);
|
||||
--color-glow-secondary: var(--color-white);
|
||||
--transition-glow: filter 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms,
|
||||
border-color 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms;
|
||||
--text-glow-primary: drop-shadow(0 0 0.03125em var(--color-white)) drop-shadow(0 0 0.0625em var(--color-primary)) drop-shadow(0 0 0.125em var(--color-primary));
|
||||
--text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-white)) drop-shadow(0 0 0.0625em var(--color-secondary)) drop-shadow(0 0 0.125em var(--color-secondary));
|
||||
}
|
||||
html:has(#themeDark:checked) .light-only {
|
||||
display: none;
|
||||
}
|
||||
html:has(#themeDark:checked) .dark-only {
|
||||
display: initial;
|
||||
}
|
||||
#themeToggleLight {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Athiti";
|
||||
|
|
@ -677,7 +709,7 @@ body > div nav ul li.active {
|
|||
body > div nav ul li.link-back a, body > div nav ul li.active a {
|
||||
border-color: var(--color-shade-4);
|
||||
}
|
||||
body > div nav ul li > a {
|
||||
body > div nav ul li > a, body > div nav ul li label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
|
|
@ -692,19 +724,19 @@ body > div nav ul li > a {
|
|||
transition-duration: 400ms;
|
||||
transition-timing-function: ease-in;
|
||||
}
|
||||
body > div nav ul li > a:visited, body > div nav ul li > a:focus, body > div nav ul li > a:active, body > div nav ul li > a:hover {
|
||||
body > div nav ul li > a:visited, body > div nav ul li > a:focus, body > div nav ul li > a:active, body > div nav ul li > a:hover, body > div nav ul li label:visited, body > div nav ul li label:focus, body > div nav ul li label:active, body > div nav ul li label:hover {
|
||||
color: var(--color-foreground);
|
||||
}
|
||||
body > div nav ul li:hover, body > div nav ul li:focus-within {
|
||||
background-color: transparent;
|
||||
}
|
||||
body > div nav ul li:hover a, body > div nav ul li:focus-within a {
|
||||
body > div nav ul li:hover a, body > div nav ul li:hover label, body > div nav ul li:focus-within a, body > div nav ul li:focus-within label {
|
||||
border: solid 0.1em var(--color-glow-primary);
|
||||
background-color: transparent;
|
||||
filter: var(--filter-glow-primary);
|
||||
transition: var(--transition-glow);
|
||||
}
|
||||
body > div nav ul li:hover a:visited, body > div nav ul li:hover a:focus, body > div nav ul li:hover a:active, body > div nav ul li:hover a:hover, body > div nav ul li:focus-within a:visited, body > div nav ul li:focus-within a:focus, body > div nav ul li:focus-within a:active, body > div nav ul li:focus-within a:hover {
|
||||
body > div nav ul li:hover a:visited, body > div nav ul li:hover a:focus, body > div nav ul li:hover a:active, body > div nav ul li:hover a:hover, body > div nav ul li:hover label:visited, body > div nav ul li:hover label:focus, body > div nav ul li:hover label:active, body > div nav ul li:hover label:hover, body > div nav ul li:focus-within a:visited, body > div nav ul li:focus-within a:focus, body > div nav ul li:focus-within a:active, body > div nav ul li:focus-within a:hover, body > div nav ul li:focus-within label:visited, body > div nav ul li:focus-within label:focus, body > div nav ul li:focus-within label:active, body > div nav ul li:focus-within label:hover {
|
||||
color: var(--color-glow-primary);
|
||||
}
|
||||
body > div nav ul li:hover.link-back a, body > div nav ul li:focus-within.link-back a {
|
||||
|
|
@ -714,17 +746,20 @@ body > div nav ul li:hover.link-back a, body > div nav ul li:focus-within.link-b
|
|||
body > div nav ul li:hover.link-back a:visited, body > div nav ul li:hover.link-back a:focus, body > div nav ul li:hover.link-back a:active, body > div nav ul li:hover.link-back a:hover, body > div nav ul li:focus-within.link-back a:visited, body > div nav ul li:focus-within.link-back a:focus, body > div nav ul li:focus-within.link-back a:active, body > div nav ul li:focus-within.link-back a:hover {
|
||||
color: var(--color-glow-secondary);
|
||||
}
|
||||
body > div nav ul li:not(.toggleTheme) i[data-icon] {
|
||||
body > div nav ul li:not(.themeToggle) i[data-icon] {
|
||||
padding-right: 0.5em;
|
||||
padding-top: 0.2em;
|
||||
padding-bottom: 0.2em;
|
||||
border-right: solid 0.1em currentColor;
|
||||
}
|
||||
body > div nav ul li.toggleTheme {
|
||||
body > div nav ul li.themeToggle {
|
||||
font-size: 1.4em;
|
||||
width: fit-content;
|
||||
}
|
||||
body > div nav ul li.toggleTheme a {
|
||||
body > div nav ul li.themeToggle input {
|
||||
display: none;
|
||||
}
|
||||
body > div nav ul li.themeToggle label {
|
||||
justify-content: center;
|
||||
padding: 0.25em;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue