diff --git a/app/app.vue b/app/app.vue
index 4f165a3a9..4d1df64a5 100644
--- a/app/app.vue
+++ b/app/app.vue
@@ -126,4 +126,15 @@ a {
}
}
}
+
+/* Dark mode styles */
+.dark-mode body {
+ background-color: #020420;
+ color: #F4F4F5;
+}
+
+.dark-mode a {
+ color: #F4F4F5;
+}
+
diff --git a/app/components/AppHeader.vue b/app/components/AppHeader.vue
index ee0bdc512..bd99c9a50 100644
--- a/app/components/AppHeader.vue
+++ b/app/components/AppHeader.vue
@@ -1,5 +1,14 @@
@@ -32,7 +41,7 @@ import { feedsInfo } from '~~/utils/api'
>
{{ list.title }}
-
+
+
+
+
+
+
diff --git a/app/components/ItemListNav.vue b/app/components/ItemListNav.vue
index bfc06cf1e..371fb921c 100644
--- a/app/components/ItemListNav.vue
+++ b/app/components/ItemListNav.vue
@@ -59,4 +59,24 @@ const hasMore = computed(() => props.page < props.maxPage)
text-align: center;
}
}
+
+/* Dark mode styles */
+.dark-mode .news-list-nav, .dark-mode .news-list {
+ background-color: #2e2e2e;
+}
+
+.dark-mode .news-list-nav {
+ & a {
+ color: #ccc;
+ }
+
+ .disabled {
+ opacity: 0.5;
+ }
+
+ .page {
+ color: #ccc;
+ }
+}
+
diff --git a/app/components/PostComment.vue b/app/components/PostComment.vue
index e6e45fa4e..9c6e9caa5 100644
--- a/app/components/PostComment.vue
+++ b/app/components/PostComment.vue
@@ -103,4 +103,44 @@ function pluralize(n: number) {
}
}
}
+
+/* Dark mode styles */
+.dark-mode .comment {
+ border-top: 1px solid #444;
+
+ .by {
+ color: #ccc;
+
+ & a {
+ color: #ccc;
+ }
+ }
+
+ .text {
+ color: #ccc;
+
+ & a:hover {
+ color: #00C48D;
+ }
+
+ & pre {
+ background-color: #333;
+ color: #ccc;
+ }
+ }
+
+ .toggle {
+ background-color: #333;
+ color: #ccc;
+
+ & a {
+ color: #00C48D;
+ }
+
+ &.open {
+ background-color: transparent;
+ }
+ }
+}
+
diff --git a/app/components/PostItem.vue b/app/components/PostItem.vue
index 3bd5008d8..72b09c67a 100644
--- a/app/components/PostItem.vue
+++ b/app/components/PostItem.vue
@@ -86,4 +86,27 @@ defineProps<{
}
}
}
+
+/* Dark mode styles */
+.dark-mode .news-item {
+ background-color: #2e2e2e;
+ border-bottom: 1px solid #444;
+
+ .score {
+ color: #00C48D;
+ }
+
+ .meta, .host {
+ color: #ccc;
+
+ & a {
+ color: #ccc;
+
+ &:hover {
+ color: #00C48D;
+ }
+ }
+ }
+}
+
diff --git a/app/pages/[feed]/[page].vue b/app/pages/[feed]/[page].vue
index 140301f96..a12b6d1f1 100644
--- a/app/pages/[feed]/[page].vue
+++ b/app/pages/[feed]/[page].vue
@@ -139,4 +139,10 @@ watch(page, to => pageChanged(to))
margin: 10px 0;
}
}
+
+/* Dark mode styles */
+.dark-mode .news-list {
+ background-color: #2e2e2e;
+}
+
diff --git a/app/pages/item/[id].vue b/app/pages/item/[id].vue
index dab061a0c..74bed4594 100755
--- a/app/pages/item/[id].vue
+++ b/app/pages/item/[id].vue
@@ -123,4 +123,30 @@ useHead({
}
}
}
+
+/* Dark mode styles */
+.dark-mode .item-view-header {
+ background-color: #2e2e2e;
+ box-shadow: 0 1px 2px rgba(255, 255, 255, 0.1);
+
+ & h1 {
+ color: #F4F4F5;
+ }
+
+ .host, .meta, .meta a {
+ color: #ccc;
+ }
+ .meta a:hover {
+ color: #00C48D;
+ }
+}
+
+.dark-mode .item-view-comments {
+ background-color: #2e2e2e;
+}
+
+.dark-mode .item-view-comments-header {
+ color: #F4F4F5;
+}
+
diff --git a/app/pages/user/[id].vue b/app/pages/user/[id].vue
index 2a8c76d42..64d8de10c 100644
--- a/app/pages/user/[id].vue
+++ b/app/pages/user/[id].vue
@@ -72,4 +72,27 @@ useHead({
text-decoration: underline;
}
}
+
+/* Dark mode styles */
+.dark-mode .user-view {
+ background-color: #2e2e2e;
+ color: #F4F4F5;
+
+ & h1 {
+ color: #F4F4F5;
+ }
+
+ .label {
+ color: #ccc;
+ }
+
+ .about {
+ color: #ccc;
+ }
+
+ .links a {
+ color: #00C48D;
+ }
+}
+