Implementing dark theme, fixes #5

This commit is contained in:
Jean Viscogliosi-Pate 2025-01-25 20:40:50 -08:00
parent dbe386d776
commit 4fa82d90de
5 changed files with 529 additions and 315 deletions

60
src/css/colors.css Normal file
View File

@ -0,0 +1,60 @@
:root {
/* Grayscale */
--color-l-gray-10: hsla(36, 38%, 98%, 1);
--color-l-gray-20: hsla(35, 36%, 96%, 1);
--color-l-gray-30: hsla(35, 37%, 92%, 1);
--color-l-gray-40: hsla(34, 34%, 90%, 1);
--color-l-gray-50: hsla(36, 35%, 88%, 1);
--color-l-gray-60: hsla(37, 38%, 83%, 1);
--color-l-gray-70: hsla(34, 37%, 70%, 1);
--color-l-gray-80: hsla(34, 29%, 60%, 1);
--color-l-gray-90: hsla(31, 23%, 50%, 1);
--color-l-gray-100: hsla(35, 28%, 40%, 1);
--color-l-gray-110: hsla(34, 30%, 37%, 1);
--color-l-gray-120: hsla(36, 32%, 30%, 1);
--color-l-gray-130: hsla(31, 45%, 24%, 1);
--color-l-gray-140: hsla(33, 54%, 17%, 1);
--color-l-alpha-gray: hsla(34, 37%, 70%, 0.15);
--color-d-gray-10: hsla(32, 48%, 85%, 1);
--color-d-gray-20: hsla(34, 39%, 74%, 1);
--color-d-gray-30: hsla(34, 31%, 68%, 1);
--color-d-gray-40: hsla(35, 27%, 55%, 1);
--color-d-gray-50: hsla(34, 24%, 46%, 1);
--color-d-gray-60: hsla(33, 27%, 33%, 1);
--color-d-gray-70: hsla(31, 27%, 25%, 1);
--color-d-gray-80: hsla(28, 22%, 19%, 1);
--color-d-gray-90: hsla(33, 20%, 17%, 1);
--color-d-gray-100: hsla(30, 19%, 15%, 1);
--color-d-gray-110: hsla(30, 17%, 14%, 1);
--color-d-gray-120: hsla(29, 16%, 13%, 1);
--color-d-gray-130: hsla(24, 18%, 11%, 1);
--color-d-gray-140: hsla(32, 21%, 9%, 1);
--color-d-alpha-gray: hsla(34, 24%, 40%, 0.2);
/* Red */
--color-l-red-10: hsla(4, 59%, 64%, 1);
--color-l-red-20: hsla(4, 72%, 55%, 1);
--color-l-red-30: hsla(4, 56%, 48%, 1);
--color-l-red-40: hsla(4, 72%, 35%, 1);
--color-l-alpha-red: hsla(350, 84%, 63%, 0.2);
--color-d-red-10: hsla(5, 94%, 73%, 1);
--color-d-red-20: hsla(4, 91%, 67%, 1);
--color-d-red-30: hsla(4, 88%, 61%, 1);
--color-d-red-40: hsla(2, 75%, 52%, 1);
--color-d-alpha-red: hsla(350, 84%, 63%, 0.2);
/* Green */
--color-l-green-10: hsla(148, 30%, 65%, 1);
--color-l-green-20: hsla(148, 48%, 47%, 1);
--color-l-green-30: hsla(149, 50%, 39%, 1);
--color-l-green-40: hsla(153, 65%, 29%, 1);
--color-l-alpha-green: hsla(74, 69%, 44%, 0.2);
--color-d-green-10: hsla(152, 51%, 54%, 1);
--color-d-green-20: hsla(154, 57%, 42%, 1);
--color-d-green-30: hsla(155, 78%, 29%, 1);
--color-d-green-40: hsla(154, 75%, 26%, 1);
--color-d-alpha-green: hsla(74, 69%, 44%, 0.2);
}

73
src/css/shadows.css Normal file
View File

@ -0,0 +1,73 @@
:root {
--button-inset-shadow-size: 2px;
--shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.2),
inset 0px 0px 0px 1px rgba(0, 0, 0, 0.1),
inset 0px calc(-1 * var(--button-inset-shadow-size)) 0px 2px rgba(0, 0, 0, 0.09),
inset 0px -2px 4px 0px rgba(0, 0, 0, 0.1),
0px 4px 4px -5.6px rgba(0, 0, 0, 0.4),
0px 2px 4px -2.7px rgba(0, 0, 0, 0.1),
0px 2px 4px -1px rgba(0, 0, 0, 0.05);
--shadow-hover: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.4),
inset 0px 0px 0px 1px rgba(0, 0, 0, 0.15),
inset 0px calc(-1 * var(--button-inset-shadow-size)) 0px 2px rgba(0, 0, 0, 0.09),
inset 0px -2px 4px 0px rgba(0, 0, 0, 0.1),
0px 4px 4px -5.6px rgba(0, 0, 0, 0.4),
0px 2px 4px -2.7px rgba(0, 0, 0, 0.15),
0px 2px 6px -1px rgba(0, 0, 0, 0.1);
--shadow-active: inset 0px 0px 0px 1px rgba(0, 0, 0, 0.15),
inset 0px 0px 0px calc(1px + var(--button-inset-shadow-size)) rgba(0, 0, 0, 0.09),
inset 0px 2px 8px 0px rgba(0, 0, 0, 0.2),
0px 0px 0px 1px rgba(255, 255, 255, 0.6);
--shadow-focus: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.2),
inset 0px 0px 0px 1px rgba(0, 0, 0, 0.1),
inset 0px calc(-1 * var(--button-inset-shadow-size)) 0px 2px rgba(0, 0, 0, 0.09),
inset 0px -2px 4px 0px rgba(0, 0, 0, 0.1),
0px 4px 4px -5.6px rgba(0, 0, 0, 0.4),
0px 2px 4px -2.7px rgba(0, 0, 0, 0.1),
0px 2px 4px -1px rgba(0, 0, 0, 0.05),
0px 0px 0px 3px var(--color-l-alpha-gray);
--text-input-shadow-active: inset 0px 1px 0px 0px rgba(255, 255, 255, 1), inset 0px -1px 0px 0px rgba(0, 0, 0, 0.04), 0px 1px 6px 0px rgba(0, 0, 0, 0.07);
}
@media(prefers-color-scheme: dark) {
:root {
--shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.02),
inset 0px 0px 0px 1px rgba(0, 0, 0, 0.25),
inset 0px calc(-1 * var(--button-inset-shadow-size)) 0px 2px rgba(0, 0, 0, 0.2),
inset 0px -2px 4px 0px rgba(0, 0, 0, 0.25),
0px 4px 4px -5.6px rgba(0, 0, 0, 0.55),
0px 2px 4px -2.7px rgba(0, 0, 0, 0.25),
0px 2px 4px -1px rgba(0, 0, 0, 0.2);
--shadow-hover: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.06),
inset 0px 0px 0px 1px rgba(0, 0, 0, 0.3),
inset 0px calc(-1 * var(--button-inset-shadow-size)) 0px 2px rgba(0, 0, 0, 0.2),
inset 0px -2px 4px 0px rgba(0, 0, 0, 0.25),
0px 4px 4px -5.6px rgba(0, 0, 0, 0.55),
0px 2px 4px -2.7px rgba(0, 0, 0, 0.3),
0px 2px 6px -1px rgba(0, 0, 0, 0.25);
--shadow-active: inset 0px 0px 0px 1px rgba(0, 0, 0, 0.45),
inset 0px 0px 0px calc(1px + var(--button-inset-shadow-size)) rgba(0, 0, 0, 0.15),
inset 0px 2px 8px 0px rgba(0, 0, 0, 0.57),
0px 0px 0px 1px rgba(255, 255, 255, 0.02);
--button-shadow-focus: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.05),
inset 0px 0px 0px 1px rgba(0, 0, 0, 0.3),
inset 0px calc(-1 * var(--button-inset-shadow-size)) 0px 2px rgba(0, 0, 0, 0.24),
inset 0px -2px 4px 0px rgba(0, 0, 0, 0.25),
0px 4px 4px -5.6px rgba(0, 0, 0, 0.55),
0px 2px 4px -2.7px rgba(0, 0, 0, 0.3),
0px 2px 6px -1px rgba(0, 0, 0, 0.25),
0px 0px 0px 3px var(--color-d-alpha-gray);
--text-input-shadow-active: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.03),
inset 0px -1px 0px 0px rgba(0, 0, 0, 0.39),
0px 1px 6px 0px rgba(0, 0, 0, 0.37);
}
}

View File

@ -1,139 +1,325 @@
/*TODO text color dropdowns, button icons and text*/
@import "css/colors.css";
@import "css/shadows.css";
:root {
--font-features: "calt" 1, "case" 0, "ccmp" 1, "ss03" 1, "cv01" 1, "cv05" 1, "cv06" 1, "cv08" 0, "cv11" 1, "cv12" 0, "cv13" 0;
--large-text: 16px;
--small-text: 14px;
--text-large: 12pt;
--text-small: 10pt;
/* Grayscale */
--color-l-gray-10: hsla(36, 38%, 98%, 1);
--color-l-gray-20: hsla(35, 36%, 96%, 1);
--color-l-gray-30: hsla(35, 37%, 92%, 1);
--color-l-gray-40: hsla(34, 34%, 90%, 1);
--color-l-gray-50: hsla(36, 35%, 88%, 1);
--color-l-gray-60: hsla(37, 38%, 83%, 1);
--color-l-gray-70: hsla(34, 37%, 70%, 1);
--color-l-gray-80: hsla(34, 29%, 60%, 1);
--color-l-gray-90: hsla(31, 23%, 50%, 1);
--color-l-gray-100: hsla(35, 28%, 40%, 1);
--color-l-gray-110: hsla(34, 30%, 37%, 1);
--color-l-gray-120: hsla(36, 32%, 30%, 1);
--color-l-gray-130: hsla(31, 45%, 24%, 1);
--color-l-gray-140: hsla(33, 54%, 17%, 1);
--color-l-alpha-gray: hsla(34, 37%, 70%, 0.15);
--window-margin: 10px;
--window-width: 360px; /* Equal to width of add-ons panel */
--window-height: 550px; /* Equal to hwightof add-ons panel */
--scrollbar-width: 5px; /*TODO make sure this is correct */
/* Green */
--color-l-green-10: hsla(148, 30%, 65%, 1);
--color-l-green-20: hsla(148, 48%, 47%, 1);
--color-l-green-30: hsla(149, 50%, 39%, 1);
--color-l-green-40: hsla(153, 65%, 29%, 1);
--color-l-alpha-green: hsla(74, 69%, 44%, 0.2);
--toggle-margin-left: 15px;
--toggle-margin-right: 5px;
/* Red */
--color-l-red-10: hsla(4, 59%, 64%, 1);
--color-l-red-20: hsla(4, 72%, 55%, 1);
--color-l-red-30: hsla(4, 56%, 48%, 1);
--color-l-red-40: hsla(4, 72%, 35%, 1);
--color-l-alpha-red: hsla(350, 84%, 63%, 0.2);
--speed-fast: .1s;
--speed-slow: .3s;
--spacer-tiny: 2px;
--spacer-small: 6px;
--spacer-medium: 8px;
--spacer-large: 12px;
--spacer-select: 26px;
--spacer-other: 18px;
--spacer-button-grid: 34px;
--border-radius-section: .5rem;
--border-radius-input: .5rem;
--total-height-other: 297px;
--total-height-also-li: 26px;
}
/* Light theme */
:root {
--text-color: var(--color-l-gray-120);
--desc-color: var(--color-l-gray-100);
--placeholder-color: var(--color-l-gray-70);
--link-color: var(--color-l-gray-90);
--icon-color: var(--color-l-gray-80);
--icon-color-hover: var(--color-l-gray-90);
--border-color: var(--color-l-gray-50);
--border-color-hover: var(--color-l-gray-60);
--scrollbar-color: var(--color-l-gray-70);
--button-inset-shadow-size: 2px;
--shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.2),
inset 0px 0px 0px 1px rgba(0, 0, 0, 0.1),
inset 0px calc(-1 * var(--button-inset-shadow-size)) 0px 2px rgba(0, 0, 0, 0.09),
inset 0px -2px 4px 0px rgba(0, 0, 0, 0.1),
0px 4px 4px -5.6px rgba(0, 0, 0, 0.4),
0px 2px 4px -2.7px rgba(0, 0, 0, 0.1),
0px 2px 4px -1px rgba(0, 0, 0, 0.05);
--shadow-hover: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.4),
inset 0px 0px 0px 1px rgba(0, 0, 0, 0.15),
inset 0px calc(-1 * var(--button-inset-shadow-size)) 0px 2px rgba(0, 0, 0, 0.09),
inset 0px -2px 4px 0px rgba(0, 0, 0, 0.1),
0px 4px 4px -5.6px rgba(0, 0, 0, 0.4),
0px 2px 4px -2.7px rgba(0, 0, 0, 0.15),
0px 2px 6px -1px rgba(0, 0, 0, 0.1);
--shadow-active: inset 0px 0px 0px 1px rgba(0, 0, 0, 0.15),
inset 0px 0px 0px calc(1px + var(--button-inset-shadow-size)) rgba(0, 0, 0, 0.09),
inset 0px 2px 8px 0px rgba(0, 0, 0, 0.2),
0px 0px 0px 1px rgba(255, 255, 255, 0.6);
--shadow-focus: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.2),
inset 0px 0px 0px 1px rgba(0, 0, 0, 0.1),
inset 0px calc(-1 * var(--button-inset-shadow-size)) 0px 2px rgba(0, 0, 0, 0.09),
inset 0px -2px 4px 0px rgba(0, 0, 0, 0.1),
0px 4px 4px -5.6px rgba(0, 0, 0, 0.4),
0px 2px 4px -2.7px rgba(0, 0, 0, 0.1),
0px 2px 4px -1px rgba(0, 0, 0, 0.05),
0px 0px 0px 3px var(--color-l-alpha-gray);
--text-input-shadow-active: inset 0px 1px 0px 0px rgba(255, 255, 255, 1), inset 0px -1px 0px 0px rgba(0, 0, 0, 0.04), 0px 1px 6px 0px rgba(0, 0, 0, 0.07);
--body-background-color: var(--color-l-gray-30);
--section-background-color: var(--color-l-gray-10);
--hide-speed: .2s;
/* State */
--state-text-color-disabled: var(--color-l-red-20);
--state-text-color-enabled: var(--color-l-green-20);
/* Text input */
--text-input-background-color-focus: var(--color-l-gray-10);
--text-input-placeholder-color: var(--color-l-gray-70);
--text-input-background-color: var(--color-l-gray-20);
/* Select */
--select-background-color: var(--color-l-gray-20);
--select-icon: url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"%23655134\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m7 15 5 5 5-5\"/><path d=\"m7 9 5-5 5 5\"/></svg>") no-repeat;
/* Button */
--button-background-color: var(--color-l-gray-20);
--button-background-color-hover: var(--color-l-gray-10);
/* Save button */
--save-button-text-color: var(--color-l-gray-10);
--save-button-background-color: var(--color-l-gray-90);
--save-button-background-color-hover: var(--color-l-gray-80);
--save-button-background-color-active: var(--color-l-gray-90);
/* State button */
--state-button-text-color: var(--color-l-gray-10);
--state-button-background-color-disabled: var(--color-l-red-20);
--state-button-background-color-disabled-hover: var(--color-l-red-10);
--state-button-background-color-enabled: var(--color-l-green-20);
--state-button-background-color-enabled-hover: var(--color-l-green-10);
}
input, select {
background-color: var(--color-l-gray-20);
border: 1px solid var(--border-color);
border-radius: .5em;
font-size: var(--large-text);
/* Dark theme */
@media (prefers-color-scheme: dark) {
:root {
--text-color: var(--color-d-gray-10);
--desc-color: var(--color-d-gray-20);
--link-color: var(--color-d-gray-50);
--icon-color: var(--color-d-gray-40);
--icon-color-hover: var(--color-d-gray-50);
--border-color: var(--color-d-gray-90);
--border-color-hover: var(--color-d-gray-80);
--scrollbar-color: var(--color-d-gray-90);
--body-background-color: var(--color-d-gray-120);
--section-background-color: var(--color-d-gray-100);
/* State */
--state-text-color-disabled: var(--color-d-red-30);
--state-text-color-enabled: var(--color-d-green-20);
/* Text input */
--text-input-background-color-focus: var(--color-d-gray-90);
--text-input-placeholder-color: var(--color-d-gray-70);
--text-input-background-color: var(--color-d-gray-100);
/* Select */
--select-background-color: var(--color-d-gray-110);
--select-icon: url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"%23EBDAC6\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m7 15 5 5 5-5\"/><path d=\"m7 9 5-5 5 5\"/></svg>") no-repeat;
/* Button */
--button-background-color: var(--color-d-gray-110);
--button-background-color-hover: var(--color-d-gray-100);
/* Save button */
--save-button-text-color: var(--color-d-gray-10);
--save-button-background-color: var(--color-d-gray-70);
--save-button-background-color-hover: var(--color-d-gray-60);
--save-button-background-color-active: var(--color-d-gray-70);
/* State button */
--state-button-text-color: var(--color-d-gray-10);
--state-button-background-color-disabled: var(--color-d-red-40);
--state-button-background-color-disabled-hover: var(--color-d-red-30);
--state-button-background-color-enabled: var(--color-d-green-30);
--state-button-background-color-enabled-hover: var(--color-d-green-20);
}
}
/* Common */
html {
scrollbar-color: var(--scrollbar-color) transparent;
}
* {
font-family: 'Inter', sans-serif;
font-feature-settings: var(--font-features);
font-size: var(--text-large);
}
body {
background-color: var(--body-background-color);
color: var(--text-color);
padding: 2px 8px 2px 8px;
gap: 8px;
width: var(--window-width);
height: var(--window-height);
padding-left: var(--window-margin);
padding-right: calc(var(--window-margin) + var(--scrollbar-width));
margin: auto;
}
input {
box-sizing: border-box;
width: 100%;
section {
background-color: var(--section-background-color);
padding: var(--text-large) var(--window-margin);
border: 1px solid var(--border-color);
border-radius: var(--border-radius-section);
margin-top: var(--text-small);
}
input::placeholder {
color: var(--placeholder-color);
ul {
list-style: none;
padding-left: 0;
margin: 0;
}
input:hover {
border: 1px solid var(--border-color-hover);
transition: 0.3s;
}
input:focus {
transition: 0.1s;
border: 1px solid var(--border-color-hover);
background-color: var(--color-l-gray-10);
box-shadow: var(--text-input-shadow-active);
/* Common button */
button:not(.delete) {
font-weight: 600;
border: 1px solid var(--border-color);
padding: var(--spacer-small);
cursor: pointer;
box-shadow: var(--shadow);
outline: none;
}
select {
padding: 6px;
padding-right: 26px;
box-shadow: var(--shadow);
appearance: none;
background: url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"%23655134\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m7 15 5 5 5-5\"/><path d=\"m7 9 5-5 5 5\"/></svg>") no-repeat;
background-position-x: calc(100% - 2px);
background-position-y: calc(50% - 2px);
button:not(.delete):hover {
transition-duration: var(--speed-slow);
box-shadow: var(--shadow-hover);
}
select:active, select:focus {
button:not(.delete):active {
transition: var(--speed-slow);
box-shadow: var(--shadow-active);
}
button:not(.delete) > svg {
transform: translateY(-.15em);
}
button:not(.delete):active > svg {
transition: var(--speed-slow);
transform: translateY(0);
}
/* Site state section */
#site-state {
display: flex;
justify-content: space-between;
}
#site-details {
min-width: 0;
}
#site-details h1 {
font-size: var(--text-large);
font-weight: 600;
overflow: hidden;
text-overflow: ellipsis;
}
#state {
color: var(--state-text-color-disabled);
transition: var(--speed-slow);
}
#state.is-on {
color: var(--state-text-color-enabled);
transition: var(--speed-slow);
}
/* Toggle */
#toggle {
border-radius: 100%;
padding: var(--spacer-large);
align-self: center;
margin-left: var(--toggle-margin-left);
margin-right: var(--toggle-margin-right);
background-color: var(--state-button-background-color-disabled);
color: var(--state-button-text-color);
}
#toggle:hover, #toggle:focus {
background-color: var(--state-button-background-color-disabled-hover);
}
#toggle:active {
background-color: var(--state-button-background-color-disabled);
}
#toggle.is-on {
background-color: var(--state-button-background-color-enabled);
color: var(--state-button-text-color);
}
#toggle.is-on:hover, #toggle.is-on:focus {
background-color: var(--state-button-background-color-enabled-hover);
}
#toggle.is-on:active {
background-color: var(--state-button-background-color-enabled);
}
/* Configuration section */
#config input, select {
border: 1px solid var(--border-color);
border-radius: var(--border-radius-input);
font-size: var(--text-large);
color: var(--text-color);
gap: var(--spacer-medium);
outline: none;
}
#config input {
background-color: var(--text-input-background-color);
box-sizing: border-box;
width: 100%;
padding: var(--spacer-tiny) var(--spacer-medium);
}
#config input::placeholder {
color: var(--text-input-placeholder-color);
}
#config input:hover {
border: 1px solid var(--border-color-hover);
transition: var(--speed-fast);
}
#config input:focus {
transition: var(--speed-fast);
border: 1px solid var(--border-color-hover);
background-color: var(--text-input-background-color-focus);
box-shadow: var(--text-input-shadow-active);
}
#config select {
padding: var(--spacer-small);
padding-right: var(--spacer-select);
box-shadow: var(--shadow);
appearance: none;
background: var(--select-icon);
background-position-x: calc(100% - 2px);
background-position-y: calc(50% - 2px);
background-color: var(--select-background-color);
}
#config select:active, #config select:focus {
outline: none;
box-shadow: var(--shadow-focus);
}
label {
font-size: var(--large-text);
#config label {
font-size: var(--text-large);
}
.primary-prompt {
display: flex;
align-items: center;
text-wrap: nowrap;
gap: 6px;
gap: var(--spacer-small);
align-content: center;
}
@ -144,53 +330,55 @@ label {
#header-pov {
margin-top: 8px;
margin-bottom: 21.25px;
transition: .5s;
}
/* Other pronouns */
#other {
display: grid;
overflow: hidden;
margin-top: 8px;
margin-left: 18px;
gap: 6px;
height: 297px;
margin-top: var(--spacer-medium);
margin-left: var(--spacer-other);
gap: var(--spacer-small);
height: var(--total-height-other);
}
#other li {
display: grid;
grid-template-columns: 1fr 2fr;
align-items: center;
gap: 6px;
gap: var(--spacer-small);
}
#other > li > label {
font-size: var(--small-text);
#other li label {
font-size: var(--text-small);
text-align: right;
text-wrap: nowrap;
}
#other > li > input {
font-size: var(--small-text);
#other li input {
font-size: var(--text-small);
}
#other > li > select {
font-size: var(--small-text);
#other li select {
font-size: var(--text-small);
width: min-content;
}
#also > li {
/* Also replacements */
#also li {
display: flex;
align-items: center;
gap: 6px;
margin-top: 6px;
height: 26px;
gap: var(--spacer-small);
margin-top: var(--spacer-small);
height: var(--total-height-also-li);
}
.lhs {
text-align: right;
}
.delete {
color: var(--icon-color);
background-color: transparent;
@ -198,10 +386,9 @@ label {
margin: 0;
padding: 0;
border: 0;
box-shadow: 0;
visibility: block;
scale: 1;
transition: all .1s allow-discrete;
transition: all var(--speed-fast) allow-discrete;
}
.delete:hover, .delete:focus {
@ -209,119 +396,107 @@ label {
outline: none;
}
.hide-button > button {
.delete-disabled button {
visibility: hidden;
scale: 0;
}
body {
background-color: var(--color-l-gray-30);
color: var(--text-color);
width: 350px; /* Same as width of add-on viewer on my system */
height: 500px; /* Max height allowed TODO verify on wi-fi */
padding-left: 10px;
padding-right: 15px;
font-family: 'Inter', sans-serif;
font-feature-settings: var(--font-features);
font-size: var(--small-text);
margin: auto;
}
html {
scrollbar-color: var(--scrollbar-color) transparent;
}
h1 {
font-size: var(--large-text);
font-weight: 600;
overflow: hidden;
text-overflow: ellipsis;
}
ul {
list-style: none;
padding-left: 0;
margin: 0;
}
/* Button grid */
#button-grid {
display: grid;
grid-template-columns: 7fr 5fr;
gap: 8px;
margin-top: 34px;
gap: var(--spacer-medium);
margin-top: var(--spacer-button-grid);
}
button:not(.delete) {
#button-grid button {
display: flex;
justify-content: center;
align-items: center;
font-weight: 600;
border: 1px solid var(--border-color);
font-size: var(--large-text);
padding: 6px;
cursor: pointer;
box-shadow: var(--shadow);
background-color: var(--color-l-gray-20);
color: var(--text-color);
}
#button-grid > button {
border-radius: .5em;
border-radius: var(--border-radius-input);
width: 100%;
gap: 8px;
text-align: center;
gap: var(--spacer-medium);
}
button:not(.delete) > svg {
transform: translateY(-.15em);
}
#button-grid > button > p {
#button-grid button p {
margin: 0;
font-family: 'Inter', sans-serif;
font-feature-settings: var(--font-features);
text-align: center;
transform: translateY(-.15em);
}
button:not(.delete):hover {
transition-duration: 0.3s;
box-shadow: var(--shadow-hover);
background-color: var(--color-l-gray-10);
}
button:not(.delete):active {
transition: 0.3s;
box-shadow: var(--shadow-active);
}
#button-grid > button:active > p {
transition: 0.3s;
#button-grid button:active p {
transition: var(--speed-slow);
transform: translateY(0);
}
button:not(.delete):active > svg {
transition: 0.3s;
transform: translateY(0);
}
/* Save */
/* Save button */
#save {
background-color: var(--color-l-gray-90);
color: var(--color-l-gray-10);
background-color: var(--save-button-background-color);
color: var(--save-button-text-color);
}
#save:hover {
background-color: var(--color-l-gray-80);
#save:hover, #save:focus {
background-color: var(--save-button-background-color-hover);
}
#save:active {
background-color: var(--color-l-gray-90);
background-color: var(--save-button-background-color-active);
}
/* Restore */
#restore {
background-color: var(--button-background-color);
color: var(--text-color);
}
#restore:hover, #restore:focus {
background-color: var(--button-background-color-hover);
}
#restore:active {
background-color: var(--button-background-color-active);
}
/* Links section */
#links {
text-align: right;
padding: var(--text-small) 0;
}
#links li {
margin-bottom: var(--spacer-small);
}
#links a {
display: flex;
justify-content: flex-end;
text-align: right;
color: var(--link-color);
text-decoration: underline;
text-decoration-color: color-mix(in srgb, currentColor 22%, transparent);
transition-duration: var(--speed-fast);
}
#links a:hover, #links a:focus{
color: var(--text-color);
outline: none;
}
#links a p {
margin: 0;
font-size: var(--text-small);
}
/* Accessibility */
.visually-hidden {
clip: rect(0 0 0 0);
clip-path: inset(50%);
@ -334,111 +509,7 @@ button:not(.delete):active > svg {
/* Site enabled section */
#site-enabled {
display: flex;
justify-content: space-between;
background-color: var(--color-l-gray-10);
padding: 10px;
border: 1px solid var(--border-color);
border-radius: .5em;
margin-top: var(--small-text);
}
#site-details {
min-width: 0;
}
#state {
color: var(--color-l-red-20);
transition: .3s;
}
#state.is-on {
color: var(--color-l-green-20);
transition: .3s;
}
#toggle {
border-radius: 3em;
padding: 12px;
align-self: center;
margin-left: 15px;
margin-right: 5px;
background-color: var(--color-l-red-20);
color: var(--color-l-gray-10);
}
#toggle:hover {
background-color: var(--color-l-red-10);
}
#toggle:active {
background-color: var(--color-l-red-20);
}
#toggle.is-on {
background-color: var(--color-l-green-20);
color: var(--color-l-gray-10);
}
#toggle.is-on:hover {
background-color: var(--color-l-green-10);
}
#toggle.is-on:active {
background-color: var(--color-l-green-20);
}
/* Configuration section */
#configuration {
background-color: var(--color-l-gray-10);
padding: 16px 10px;
border: 1px solid var(--border-color);
border-radius: .5em;
margin-top: var(--small-text);
}
label {
font-size: var(--large-text);
}
.primary-promt input {
font-size: 50px;
}
.lhs {
text-align: right;
}
/* Links section */
#links {
text-align: right;
padding: var(--small-text) 0;
}
#links > li {
margin-bottom: 6px;
}
a {
color: var(--link-color);
text-decoration: underline;
text-decoration-color: color-mix(in srgb, currentColor 22%, transparent);
transition-duration: 0.1s;
}
a:hover{
color: var(--text-color);
}
/* Transition elements */
.hide {
height: 0 !important;
@ -450,12 +521,22 @@ a:hover{
opacity: 0 !important;
}
.unhide {
.unhide-slow {
transition:
height var(--hide-speed) ease-out,
padding-top var(--hide-speed) ease-out,
padding-bottom var(--hide-speed) ease-out,
margin-top var(--hide-speed) ease-out,
margin-bottom var(--hide-speed) ease-out,
opacity var(--hide-speed) linear !important;
height var(--speed-slow) ease-out,
padding-top var(--speed-slow) ease-out,
padding-bottom var(--speed-slow) ease-out,
margin-top var(--speed-slow) ease-out,
margin-bottom var(--speed-slow) ease-out,
opacity var(--speed-slow) linear !important;
}
.unhide-fast {
transition:
height var(--speed-fast) ease-out,
padding-top var(--speed-fast) ease-out,
padding-bottom var(--speed-fast) ease-out,
margin-top var(--speed-fast) ease-out,
margin-bottom var(--speed-fast) ease-out,
opacity var(--speed-fast) linear !important;
}

View File

@ -8,7 +8,7 @@
<body>
<main>
<div id="site-enabled">
<section id="site-state">
<div id="site-details">
<h1 id="domain">example.com</h1>
<p>MetamorPOV replacements are <b id="state">disabled</b> for this website</p>
@ -16,9 +16,9 @@
<button type="button" id="toggle" title="Toggle to enable">
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v10"/><path d="M18.4 6.6a9 9 0 1 1-12.77.04"/></svg>
</button>
</div>
</section>
<div id="configuration">
<section id="config">
<form id="options">
<h2 class="visually-hidden">Name</h2>
@ -40,7 +40,7 @@
</select>
</div>
<ul id="other" class="hide unhide">
<ul id="other" class="hide unhide-slow">
<li>
<label for="subjective">Subjective</label>
<input type="text" id="subjective" name="subjective" placeholder="e.g. he, they">
@ -125,25 +125,25 @@
</button>
</div>
</form>
</div>
</section>
</main>
<ul id="links">
<li>
<a href="https://git.viscogliosi-pate.com/jean/metamorpov/wiki" target="_blank">
How to write for MetamorPOV
<p>How to write for MetamorPOV</p>
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 7h10v10"/><path d="M7 17 17 7"/></svg>
</a>
</li>
<li>
<a href="mailto:metamorpov@viscogliosi-pate.com" target="_blank">
Report an issue
<p>Report an issue</p>
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 7h10v10"/><path d="M7 17 17 7"/></svg>
</a>
</li>
<li>
<a href="https://git.viscogliosi-pate.com/jean/metamorpov" target="_blank">
Source code
<p>Source code</p>
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 7h10v10"/><path d="M7 17 17 7"/></svg>
</a>
</li>

View File

@ -160,7 +160,7 @@ function saveAlso() {
/* Creates the HTML for a new also replacement */
function createLi(index) {
const li = document.createElement("li");
li.classList.add("unhide");
li.classList.add("unhide-fast");
const lhs = document.createElement("input");
lhs.type = "text";
@ -250,10 +250,10 @@ function addFinal(also, index) {
function setFinal(li, isFinal) {
if (isFinal) {
li.querySelector(".lhs").addEventListener("change", addLi);
li.classList.add("hide-button");
li.classList.add("delete-disabled");
} else {
li.querySelector(".lhs").removeEventListener("change", addLi);
li.classList.remove("hide-button");
li.classList.remove("delete-disabled");
}
}