aboutsummaryrefslogtreecommitdiff
path: root/ext/mixed/css
diff options
context:
space:
mode:
authorAlex Yatskov <alex@foosoft.net>2020-05-22 17:46:16 -0700
committerAlex Yatskov <alex@foosoft.net>2020-05-22 17:46:16 -0700
commit1480288561cb8b9fb87ad711d970c548329fea98 (patch)
tree87c2247f6d144407afcc6de316bbacc264582248 /ext/mixed/css
parentf2186c51e4ef219d158735d30a32bbf3e49c4e1a (diff)
parentd0dcff765f740bf6f0f6523b09cb8b21eb85cd93 (diff)
Merge branch 'master' into testing
Diffstat (limited to 'ext/mixed/css')
-rw-r--r--ext/mixed/css/display-dark.css96
-rw-r--r--ext/mixed/css/display-default.css96
-rw-r--r--ext/mixed/css/display.css299
3 files changed, 281 insertions, 210 deletions
diff --git a/ext/mixed/css/display-dark.css b/ext/mixed/css/display-dark.css
deleted file mode 100644
index e4549bbf..00000000
--- a/ext/mixed/css/display-dark.css
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2019-2020 Yomichan Authors
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the entrys of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-
-body { background-color: #1e1e1e; color: #d4d4d4; }
-
-h2 { border-bottom-color: #2f2f2f; }
-
-.navigation-header {
- background-color: #1e1e1e;
- border-bottom-color: #2f2f2f;
-}
-
-.entry+.entry { border-top-color: #2f2f2f; }
-
-.kanji-glyph-data>tbody>tr>* { border-top-color: #3f3f3f; }
-
-.tag { color: #e1e1e1; }
-.tag[data-category=default] { background-color: #69696e; }
-.tag[data-category=name] { background-color: #489148; }
-.tag[data-category=expression] { background-color: #b07f39; }
-.tag[data-category=popular] { background-color: #025caa; }
-.tag[data-category=frequent] { background-color: #4490a7; }
-.tag[data-category=archaism] { background-color: #b04340; }
-.tag[data-category=dictionary] { background-color: #9057ad; }
-.tag[data-category=frequency] { background-color: #489148; }
-.tag[data-category=partOfSpeech] { background-color: #565656; }
-.tag[data-category=search] { background-color: #69696e; }
-.tag[data-category=pitch-accent-dictionary] { background-color: #6640be; }
-
-.term-reasons { color: #888888; }
-
-.term-expression>.term-expression-text .kanji-link {
- border-bottom-color: #888888;
- color: #cccccc;
-}
-
-.term-expression[data-frequency=popular]>.term-expression-text,
-.term-expression[data-frequency=popular]>.term-expression-text .kanji-link {
- color: #0275d8;
-}
-
-.term-expression[data-frequency=rare]>.term-expression-text,
-.term-expression[data-frequency=rare]>.term-expression-text .kanji-link {
- color: #666666;
-}
-
-.term-definition-list,
-.term-pitch-accent-group-list,
-.term-pitch-accent-disambiguation-list,
-.kanji-glossary-list {
- color: #888888;
-}
-
-.term-glossary,
-.term-pitch-accent,
-.kanji-glossary {
- color: #d4d4d4;
-}
-
-.icon-checkbox:checked + label {
- /* invert colors */
- background-color: #d4d4d4;
- color: #1e1e1e;
-}
-
-.term-pitch-accent-container { border-bottom-color: #2f2f2f; }
-
-.term-pitch-accent-character:before { border-color: #ffffff; }
-
-.term-pitch-accent-graph-line,
-.term-pitch-accent-graph-line-tail,
-#term-pitch-accent-graph-dot,
-#term-pitch-accent-graph-dot-downstep,
-#term-pitch-accent-graph-triangle {
- stroke: #ffffff;
-}
-
-#term-pitch-accent-graph-dot,
-#term-pitch-accent-graph-dot-downstep>circle:last-of-type {
- fill: #ffffff;
-}
diff --git a/ext/mixed/css/display-default.css b/ext/mixed/css/display-default.css
deleted file mode 100644
index 7bcb1014..00000000
--- a/ext/mixed/css/display-default.css
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2019-2020 Yomichan Authors
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the entrys of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-
-body { background-color: #ffffff; color: #333333; }
-
-h2 { border-bottom-color: #eeeeee; }
-
-.navigation-header {
- background-color: #ffffff;
- border-bottom-color: #eeeeee;
-}
-
-.entry+.entry { border-top-color: #eeeeee; }
-
-.kanji-glyph-data>tbody>tr>* { border-top-color: #dddddd; }
-
-.tag { color: #ffffff; }
-.tag[data-category=default] { background-color: #8a8a91; }
-.tag[data-category=name] { background-color: #5cb85c; }
-.tag[data-category=expression] { background-color: #f0ad4e; }
-.tag[data-category=popular] { background-color: #0275d8; }
-.tag[data-category=frequent] { background-color: #5bc0de; }
-.tag[data-category=archaism] { background-color: #d9534f; }
-.tag[data-category=dictionary] { background-color: #aa66cc; }
-.tag[data-category=frequency] { background-color: #5cb85c; }
-.tag[data-category=partOfSpeech] { background-color: #565656; }
-.tag[data-category=search] { background-color: #8a8a91; }
-.tag[data-category=pitch-accent-dictionary] { background-color: #6640be; }
-
-.term-reasons { color: #777777; }
-
-.term-expression>.term-expression-text .kanji-link {
- border-bottom-color: #777777;
- color: #333333;
-}
-
-.term-expression[data-frequency=popular]>.term-expression-text,
-.term-expression[data-frequency=popular]>.term-expression-text .kanji-link {
- color: #0275d8;
-}
-
-.term-expression[data-frequency=rare]>.term-expression-text,
-.term-expression[data-frequency=rare]>.term-expression-text .kanji-link {
- color: #999999;
-}
-
-.term-definition-list,
-.term-pitch-accent-group-list,
-.term-pitch-accent-disambiguation-list,
-.kanji-glossary-list {
- color: #777777;
-}
-
-.term-glossary,
-.term-pitch-accent,
-.kanji-glossary {
- color: #000000;
-}
-
-.icon-checkbox:checked + label {
- /* invert colors */
- background-color: #333333;
- color: #ffffff;
-}
-
-.term-pitch-accent-container { border-bottom-color: #eeeeee; }
-
-.term-pitch-accent-character:before { border-color: #000000; }
-
-.term-pitch-accent-graph-line,
-.term-pitch-accent-graph-line-tail,
-#term-pitch-accent-graph-dot,
-#term-pitch-accent-graph-dot-downstep,
-#term-pitch-accent-graph-triangle {
- stroke: #000000;
-}
-
-#term-pitch-accent-graph-dot,
-#term-pitch-accent-graph-dot-downstep>circle:last-of-type {
- fill: #000000;
-}
diff --git a/ext/mixed/css/display.css b/ext/mixed/css/display.css
index d1a54064..8b567173 100644
--- a/ext/mixed/css/display.css
+++ b/ext/mixed/css/display.css
@@ -15,6 +15,72 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
+/*
+ * Variables
+ */
+
+:root {
+ --background-color: #ffffff;
+ --glossary-image-background-color: #eeeeee;
+
+ --dark-text-color: #000000;
+ --default-text-color: #333333;
+ --light-text-color: #777777;
+ --very-light-text-color: #999999;
+
+ --light-border-color: #eeeeee;
+ --medium-border-color: #dddddd;
+ --dark-border-color: #777777;
+
+ --popuplar-kanji-text-color: #0275d8;
+
+ --pitch-accent-annotation-color: #000000;
+
+ --tag-text-color: #ffffff;
+ --tag-default-background-color: #8a8a91;
+ --tag-name-background-color: #5cb85c;
+ --tag-expression-background-color: #f0ad4e;
+ --tag-popular-background-color: #0275d8;
+ --tag-frequent-background-color: #5bc0de;
+ --tag-archaism-background-color: #d9534f;
+ --tag-dictionary-background-color: #aa66cc;
+ --tag-frequency-background-color: #5cb85c;
+ --tag-part-of-speech-background-color: #565656;
+ --tag-search-background-color: #8a8a91;
+ --tag-pitch-accent-dictionary-background-color: #6640be;
+}
+
+:root[data-yomichan-theme=dark] {
+ --background-color: #1e1e1e;
+ --glossary-image-background-color: #2f2f2f;
+
+ --dark-text-color: #d8d8d8;
+ --default-text-color: #d4d4d4;
+ --light-text-color: #888888;
+ --very-light-text-color: #666666;
+
+ --light-border-color: #2f2f2f;
+ --medium-border-color: #3f3f3f;
+ --dark-border-color: #888888;
+
+ --popuplar-kanji-text-color: #0275d8;
+
+ --pitch-accent-annotation-color: #ffffff;
+
+ --tag-text-color: #e1e1e1;
+ --tag-default-background-color: #69696e;
+ --tag-name-background-color: #489148;
+ --tag-expression-background-color: #b07f39;
+ --tag-popular-background-color: #025caa;
+ --tag-frequent-background-color: #4490a7;
+ --tag-archaism-background-color: #b04340;
+ --tag-dictionary-background-color: #9057ad;
+ --tag-frequency-background-color: #489148;
+ --tag-part-of-speech-background-color: #565656;
+ --tag-search-background-color: #69696e;
+ --tag-pitch-accent-dictionary-background-color: #6640be;
+}
+
/*
* Fonts
@@ -25,6 +91,7 @@
src: url('/mixed/ttf/kanji-stroke-orders.ttf');
}
+
/*
* General
*/
@@ -45,6 +112,8 @@ body {
border: 0;
padding: 0;
overflow-y: scroll; /* always show scroll bar */
+ background-color: var(--background-color);
+ color: var(--default-text-color);
}
ol, ul {
@@ -68,10 +137,10 @@ h2 {
font-size: 1.25em;
font-weight: normal;
margin: 0.25em 0 0;
- border-bottom-width: 0.05714285714285714em; /* 14px * 1.25em => 1px */
- border-bottom-style: solid;
+ border-bottom: 0.05714285714285714em solid var(--light-border-color); /* 14px * 1.25em => 1px */
}
+
/*
* Navigation
*/
@@ -83,8 +152,8 @@ h2 {
height: 2.1em;
box-sizing: border-box;
padding: 0.25em 0.5em;
- border-bottom-width: 0.07142857em; /* 14px => 1px */
- border-bottom-style: solid;
+ border-bottom: 0.07142857em solid var(--light-border-color); /* 14px => 1px */
+ background-color: var(--background-color);
z-index: 10;
}
@@ -131,6 +200,12 @@ h2 {
user-select: none;
}
+.icon-checkbox:checked+label {
+ /* Invert colors */
+ background-color: var(--default-text-color);
+ color: var(--background-color);
+}
+
#query-parser-content {
margin-top: 0.5em;
font-size: 2em;
@@ -206,11 +281,21 @@ button.action-button {
}
.term-expression .kanji-link {
- border-bottom-width: 0.03571428em; /* 28px => 1px */
- border-bottom-style: dashed;
+ border-bottom: 0.03571428em dashed var(--dark-border-color); /* 28px => 1px */
+ color: var(--default-text-color);
text-decoration: none;
}
+.term-expression[data-frequency=popular]>.term-expression-text,
+.term-expression[data-frequency=popular]>.term-expression-text .kanji-link {
+ color: var(--popuplar-kanji-text-color);
+}
+
+.term-expression[data-frequency=rare]>.term-expression-text,
+.term-expression[data-frequency=rare]>.term-expression-text .kanji-link {
+ color: var(--very-light-text-color);
+}
+
.entry:not(.entry-current) .current {
display: none;
}
@@ -225,6 +310,48 @@ button.action-button {
white-space: nowrap;
vertical-align: baseline;
border-radius: 0.25em;
+ color: var(--tag-text-color);
+ background-color: var(--tag-default-background-color);
+}
+
+.tag[data-category=name] {
+ background-color: var(--tag-name-background-color);
+}
+
+.tag[data-category=expression] {
+ background-color: var(--tag-expression-background-color);
+}
+
+.tag[data-category=popular] {
+ background-color: var(--tag-popular-background-color);
+}
+
+.tag[data-category=frequent] {
+ background-color: var(--tag-frequent-background-color);
+}
+
+.tag[data-category=archaism] {
+ background-color: var(--tag-archaism-background-color);
+}
+
+.tag[data-category=dictionary] {
+ background-color: var(--tag-dictionary-background-color);
+}
+
+.tag[data-category=frequency] {
+ background-color: var(--tag-frequency-background-color);
+}
+
+.tag[data-category=partOfSpeech] {
+ background-color: var(--tag-part-of-speech-background-color);
+}
+
+.tag[data-category=search] {
+ background-color: var(--tag-search-background-color);
+}
+
+.tag[data-category=pitch-accent-dictionary] {
+ background-color: var(--tag-pitch-accent-dictionary-background-color);
}
.tag-inner {
@@ -249,8 +376,7 @@ button.action-button {
}
.entry+.entry {
- border-top-width: 0.07142857em; /* 14px => 1px */
- border-top-style: solid;
+ border-top: 0.07142857em solid var(--light-border-color); /* 14px => 1px */
}
.entry[data-type=term][data-expression-multi=true] .actions>.action-play-audio {
@@ -259,6 +385,7 @@ button.action-button {
.term-reasons {
display: inline-block;
+ color: var(--light-text-color);
}
.term-reasons>.term-reason+.term-reason-separator+.term-reason:before {
@@ -346,6 +473,7 @@ button.action-button {
margin: 0;
padding: 0;
list-style-type: none;
+ color: var(--light-text-color);
}
.term-definition-list:not([data-count="0"]):not([data-count="1"]) {
@@ -364,6 +492,10 @@ button.action-button {
list-style-type: circle;
}
+.term-glossary {
+ color: var(--dark-text-color);
+}
+
.term-definition-disambiguation-list[data-count="0"] {
display: none;
}
@@ -445,8 +577,7 @@ button.action-button {
}
.term-pitch-accent-container {
- border-bottom-width: 0.05714285714285714em; /* 14px * 1.25em => 1px */
- border-bottom-style: solid;
+ border-bottom: 0.05714285714285714em solid var(--light-border-color); /* 14px * 1.25em => 1px */
padding-bottom: 0.25em;
margin-bottom: 0.25em;
}
@@ -455,6 +586,7 @@ button.action-button {
margin: 0;
padding: 0;
list-style-type: none;
+ color: var(--light-text-color);
}
.term-pitch-accent-group-list:not([data-count="0"]):not([data-count="1"]) {
@@ -478,6 +610,7 @@ button.action-button {
.term-pitch-accent {
display: inline;
line-height: 1.5em;
+ color: var(--dark-text-color);
}
.term-pitch-accent-list:not([data-count="0"]):not([data-count="1"])>.term-pitch-accent {
@@ -490,6 +623,7 @@ button.action-button {
.term-pitch-accent-disambiguation-list {
padding-right: 0.25em;
+ color: var(--light-text-color);
}
.term-pitch-accent-disambiguation-list:before {
@@ -522,6 +656,9 @@ button.action-button {
display: inline-block;
position: relative;
}
+.term-pitch-accent-character:before {
+ border-color: var(--pitch-accent-annotation-color);
+}
.term-pitch-accent-character[data-pitch='high']:before {
content: "";
display: block;
@@ -586,33 +723,155 @@ button.action-button {
.term-pitch-accent-graph-line,
.term-pitch-accent-graph-line-tail {
fill: none;
- stroke: #000000;
+ stroke: var(--pitch-accent-annotation-color);
stroke-width: 5;
}
.term-pitch-accent-graph-line-tail {
stroke-dasharray: 5 5;
}
#term-pitch-accent-graph-dot {
- fill: #000000;
- stroke: #000000;
+ fill: var(--pitch-accent-annotation-color);
+ stroke: var(--pitch-accent-annotation-color);
stroke-width: 5;
}
#term-pitch-accent-graph-dot-downstep {
fill: none;
- stroke: #000000;
+ stroke: var(--pitch-accent-annotation-color);
stroke-width: 5;
}
#term-pitch-accent-graph-dot-downstep>circle:last-of-type {
- fill: #000000;
+ fill: var(--pitch-accent-annotation-color);
}
#term-pitch-accent-graph-triangle {
fill: none;
- stroke: #000000;
+ stroke: var(--pitch-accent-annotation-color);
stroke-width: 5;
}
/*
+ * Glossary images
+ */
+
+.term-glossary-image-container {
+ display: inline-block;
+ white-space: nowrap;
+ max-width: 100%;
+ position: relative;
+ vertical-align: top;
+ line-height: 0;
+ font-size: 0.07142857em; /* 14px => 1px */
+ overflow: hidden;
+ background-color: var(--glossary-image-background-color);
+}
+
+.term-glossary-image-link {
+ cursor: inherit;
+ color: inherit;
+}
+
+.term-glossary-image-link[href]:hover {
+ cursor: pointer;
+}
+
+.term-glossary-image-container-overlay {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ font-size: 14em; /* 1px => 14px; */
+ line-height: 1.42857143; /* 14px => 20px */
+ display: table;
+ table-layout: fixed;
+ white-space: normal;
+ color: var(--light-text-color);
+}
+
+.term-glossary-item[data-has-image=true][data-image-load-state=load-error] .term-glossary-image-container-overlay:after {
+ content: "Image failed to load";
+ display: table-cell;
+ width: 100%;
+ height: 100%;
+ vertical-align: middle;
+ text-align: center;
+ padding: 0.25em;
+}
+
+.term-glossary-image {
+ display: inline-block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ vertical-align: top;
+ object-fit: contain;
+ border: none;
+ outline: none;
+}
+
+.term-glossary-image:not([src]) {
+ display: none;
+}
+
+.term-glossary-image[data-pixelated=true] {
+ image-rendering: auto;
+ image-rendering: -moz-crisp-edges;
+ image-rendering: -webkit-optimize-contrast;
+ image-rendering: pixelated;
+ image-rendering: crisp-edges;
+}
+
+.term-glossary-image-aspect-ratio-sizer {
+ content: "";
+ display: inline-block;
+ width: 0;
+ vertical-align: top;
+ font-size: 0;
+}
+
+.term-glossary-image-link-text:before {
+ content: "[";
+}
+
+.term-glossary-image-link-text:after {
+ content: "]";
+}
+
+:root[data-compact-glossaries=true] .term-glossary-image-container {
+ display: none;
+ position: absolute;
+ left: 0;
+ top: 100%;
+ z-index: 1;
+}
+
+:root[data-compact-glossaries=true] .entry:nth-last-of-type(1):not(:nth-of-type(1)) .term-glossary-image-container {
+ bottom: 100%;
+ top: auto;
+}
+
+:root[data-compact-glossaries=true] .term-glossary-image-link {
+ position: relative;
+ display: inline-block;
+}
+
+:root[data-compact-glossaries=true] .term-glossary-image-link:hover .term-glossary-image-container,
+:root[data-compact-glossaries=true] .term-glossary-image-link:focus .term-glossary-image-container {
+ display: block;
+}
+
+:root:not([data-compact-glossaries=true]) .term-glossary-image-link-text {
+ display: none;
+}
+
+:root:not([data-compact-glossaries=true]) .term-glossary-image-description {
+ display: block;
+}
+
+
+/*
* Kanji
*/
@@ -631,8 +890,7 @@ button.action-button {
}
.kanji-glyph-data>tbody>tr>* {
- border-top-width: 0.07142857em; /* 14px => 1px */
- border-top-style: solid;
+ border-top: 0.07142857em solid var(--medium-border-color); /* 14px => 1px */
text-align: left;
vertical-align: top;
padding: 0.36em;
@@ -668,9 +926,14 @@ button.action-button {
margin: 0;
padding: 0;
list-style-type: none;
+ color: var(--light-text-color);
}
.kanji-glossary-list:not([data-count="0"]):not([data-count="1"]) {
padding-left: 1.4em;
list-style-type: decimal;
}
+
+.kanji-glossary {
+ color: var(--dark-text-color);
+}