mirror of
https://github.com/go-shiori/shiori.git
synced 2025-10-23 03:56:34 +08:00
Add toggle night mode in web UI
This commit is contained in:
parent
f2afeab26f
commit
fe93c2d55c
9 changed files with 115 additions and 42 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
.header-link{border-right:1px solid #E5E5E5;color:#232323;cursor:pointer;font-size:.9em;line-height:60px;overflow:hidden;padding:0 16px}.header-link:hover{color:#F44336}.full-overlay{position:fixed;z-index:101;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column;background-color:rgba(0,0,0,0.5);top:0;left:0;right:0;bottom:0;overflow:hidden;-webkit-box-pack:center;justify-content:center;padding:32px}.yla-dialog__overlay{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;min-width:0;min-height:0;overflow:hidden;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:10001;background-color:rgba(0,0,0,0.6);padding:32px}.yla-dialog__overlay .yla-dialog{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;min-width:400px;min-height:0;max-height:100%;overflow:hidden;background-color:#FFF;font-size:16px}.yla-dialog__overlay .yla-dialog>.yla-dialog__header{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;padding:16px;min-height:0;background-color:#353535;color:#EEE;flex-shrink:0}.yla-dialog__overlay .yla-dialog>.yla-dialog__header>p{-webkit-box-flex:1;flex:1 0;font-weight:600;font-size:1em;text-transform:uppercase}.yla-dialog__overlay .yla-dialog>.yla-dialog__header>a:hover{color:#F44336}.yla-dialog__overlay .yla-dialog>.yla-dialog__body{padding:16px;display:grid;max-height:100%;min-height:80px;min-width:0;overflow:auto;grid-template-columns:max-content 1fr;-webkit-box-align:baseline;align-items:baseline;grid-gap:16px}.yla-dialog__overlay .yla-dialog>.yla-dialog__body>p.yla-dialog__content{grid-column-start:1;grid-column-end:3;align-self:baseline;font-size:.9em}.yla-dialog__overlay .yla-dialog>.yla-dialog__body>p.label{padding:8px 0;align-self:stretch;font-size:.9em}.yla-dialog__overlay .yla-dialog>.yla-dialog__body>input,.yla-dialog__overlay .yla-dialog>.yla-dialog__body>textarea{color:#232323;padding:8px;border:1px solid #E5E5E5;font-size:.9em;min-height:37px;resize:vertical}.yla-dialog__overlay .yla-dialog>.yla-dialog__body>.suggestion{position:absolute;display:block;padding:8px;background-color:#EEE;border:1px solid #E5E5E5}.yla-dialog__overlay .yla-dialog>.yla-dialog__footer{padding:16px;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-webkit-box-pack:end;justify-content:flex-end;border-top:1px solid #E5E5E5}.yla-dialog__overlay .yla-dialog>.yla-dialog__footer>a{text-transform:uppercase;padding:0 8px;font-size:.9em;font-weight:600;border-bottom:1px dashed transparent}.yla-dialog__overlay .yla-dialog>.yla-dialog__footer>a:hover{color:#F44336}.yla-dialog__overlay .yla-dialog>.yla-dialog__footer>a:focus{outline:none;color:#F44336;border-bottom:1px dashed #F44336}.yla-dialog__overlay .yla-dialog>.yla-dialog__footer>i{width:19px;line-height:19px;text-align:center}
|
.header-link{border-right:1px solid #E5E5E5;color:#232323;cursor:pointer;font-size:.9em;line-height:60px;overflow:hidden;padding:0 16px}.header-link:hover{color:#F44336}.full-overlay{position:fixed;z-index:101;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column;background-color:rgba(0,0,0,0.5);top:0;left:0;right:0;bottom:0;overflow:hidden;-webkit-box-pack:center;justify-content:center;padding:32px}.yla-dialog__overlay{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;min-width:0;min-height:0;overflow:hidden;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:10001;background-color:rgba(0,0,0,0.6);padding:32px}.yla-dialog__overlay .yla-dialog{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;min-width:400px;min-height:0;max-height:100%;overflow:hidden;background-color:#FFF;font-size:16px}.yla-dialog__overlay .yla-dialog>.yla-dialog__header{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;padding:16px;min-height:0;background-color:#292929;color:#FFF;flex-shrink:0}.yla-dialog__overlay .yla-dialog>.yla-dialog__header>p{-webkit-box-flex:1;flex:1 0;font-weight:600;font-size:1em;text-transform:uppercase}.yla-dialog__overlay .yla-dialog>.yla-dialog__header>a:hover{color:#F44336}.yla-dialog__overlay .yla-dialog>.yla-dialog__body{padding:16px;display:grid;max-height:100%;min-height:80px;min-width:0;overflow:auto;grid-template-columns:max-content 1fr;-webkit-box-align:baseline;align-items:baseline;grid-gap:16px}.yla-dialog__overlay .yla-dialog>.yla-dialog__body>p.yla-dialog__content{grid-column-start:1;grid-column-end:3;align-self:baseline;font-size:.9em}.yla-dialog__overlay .yla-dialog>.yla-dialog__body>p.label{padding:8px 0;align-self:stretch;font-size:.9em}.yla-dialog__overlay .yla-dialog>.yla-dialog__body>input,.yla-dialog__overlay .yla-dialog>.yla-dialog__body>textarea{color:#232323;padding:8px;border:1px solid #E5E5E5;font-size:.9em;min-height:37px;resize:vertical}.yla-dialog__overlay .yla-dialog>.yla-dialog__body>.suggestion{position:absolute;display:block;padding:8px;background-color:#EEE;border:1px solid #E5E5E5}.yla-dialog__overlay .yla-dialog>.yla-dialog__footer{padding:16px;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-webkit-box-pack:end;justify-content:flex-end;border-top:1px solid #E5E5E5}.yla-dialog__overlay .yla-dialog>.yla-dialog__footer>a{text-transform:uppercase;padding:0 8px;font-size:.9em;font-weight:600;border-bottom:1px dashed transparent}.yla-dialog__overlay .yla-dialog>.yla-dialog__footer>a:hover{color:#F44336}.yla-dialog__overlay .yla-dialog>.yla-dialog__footer>a:focus{outline:none;color:#F44336;border-bottom:1px dashed #F44336}.yla-dialog__overlay .yla-dialog>.yla-dialog__footer>i{width:19px;line-height:19px;text-align:center}
|
|
@ -1 +1 @@
|
||||||
.header-link{border-right:1px solid #E5E5E5;color:#232323;cursor:pointer;font-size:.9em;line-height:70px;overflow:hidden;padding:0 16px}.header-link:hover{color:#F44336}.full-overlay{position:fixed;z-index:101;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column;background-color:rgba(0,0,0,0.5);top:0;left:0;right:0;bottom:0;overflow:hidden;-webkit-box-pack:center;justify-content:center;padding:32px}.yla-tooltip{font-size:14px;color:#EEE;background-color:#232323;padding:8px;border-radius:4px;position:relative;z-index:1000}.yla-tooltip::after{content:'';display:block;position:absolute;border:8px solid transparent}.yla-tooltip.left{margin-left:-14px}.yla-tooltip.left::after{top:50%;right:-16px;margin-top:-8px;border-left-color:#232323}.yla-tooltip.top{margin-top:-14px}.yla-tooltip.top::after{left:50%;bottom:-16px;margin-left:-8px;border-top-color:#232323}.yla-tooltip.right{margin-left:14px}.yla-tooltip.right::after{top:50%;left:-16px;margin-top:-8px;border-right-color:#232323}.yla-tooltip.bottom{margin-top:14px}.yla-tooltip.bottom::after{left:50%;top:-16px;margin-left:-8px;border-bottom-color:#232323}
|
.header-link{border-right:1px solid #E5E5E5;color:#232323;cursor:pointer;font-size:.9em;line-height:60px;overflow:hidden;padding:0 16px}.header-link:hover{color:#F44336}.full-overlay{position:fixed;z-index:101;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column;background-color:rgba(0,0,0,0.5);top:0;left:0;right:0;bottom:0;overflow:hidden;-webkit-box-pack:center;justify-content:center;padding:32px}.yla-tooltip{font-size:14px;color:#FFF;background-color:#232323;padding:8px;border-radius:4px;position:relative;z-index:1000}.yla-tooltip::after{content:'';display:block;position:absolute;border:8px solid transparent}.yla-tooltip.left{margin-left:-14px}.yla-tooltip.left::after{top:50%;right:-16px;margin-top:-8px;border-left-color:#232323}.yla-tooltip.top{margin-top:-14px}.yla-tooltip.top::after{left:50%;bottom:-16px;margin-left:-8px;border-top-color:#232323}.yla-tooltip.right{margin-left:14px}.yla-tooltip.right::after{top:50%;left:-16px;margin-top:-8px;border-right-color:#232323}.yla-tooltip.bottom{margin-top:14px}.yla-tooltip.bottom::after{left:50%;top:-16px;margin-left:-8px;border-bottom-color:#232323}
|
|
@ -24,7 +24,7 @@
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div id="index-page">
|
<div id="index-page" :class="{night: nightMode}">
|
||||||
<div id="sidebar">
|
<div id="sidebar">
|
||||||
<p id="logo">栞</p>
|
<p id="logo">栞</p>
|
||||||
<yla-tooltip placement="right" content="Reload data">
|
<yla-tooltip placement="right" content="Reload data">
|
||||||
|
@ -49,8 +49,8 @@
|
||||||
</a>
|
</a>
|
||||||
</yla-tooltip>
|
</yla-tooltip>
|
||||||
<yla-tooltip placement="right" content="Toggle night mode">
|
<yla-tooltip placement="right" content="Toggle night mode">
|
||||||
<a>
|
<a @click="toggleNightMode">
|
||||||
<i class="fas fa-moon fa-fw"></i>
|
<i class="fas fa-fw" :class="nightMode ? 'fa-moon' : 'fa-sun'"></i>
|
||||||
</a>
|
</a>
|
||||||
</yla-tooltip>
|
</yla-tooltip>
|
||||||
<yla-tooltip placement="right" content="Log out">
|
<yla-tooltip placement="right" content="Log out">
|
||||||
|
@ -219,6 +219,10 @@
|
||||||
this.$refs.content.scrollTop = 0;
|
this.$refs.content.scrollTop = 0;
|
||||||
localStorage.setItem('shiori-list-view', this.listView ? '1' : '0');
|
localStorage.setItem('shiori-list-view', this.listView ? '1' : '0');
|
||||||
},
|
},
|
||||||
|
toggleNightMode() {
|
||||||
|
this.nightMode = !this.nightMode;
|
||||||
|
localStorage.setItem('shiori-night-mode', this.nightMode ? '1' : '0');
|
||||||
|
},
|
||||||
showDialogAdd() {
|
showDialogAdd() {
|
||||||
this.showDialog({
|
this.showDialog({
|
||||||
title: 'New Bookmark',
|
title: 'New Bookmark',
|
||||||
|
|
|
@ -72,7 +72,7 @@ a {
|
||||||
align-items: baseline;
|
align-items: baseline;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
p {
|
p {
|
||||||
color: @colorLight;
|
color: @color;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
margin-right: 16px;
|
margin-right: 16px;
|
||||||
min-width: 65px;
|
min-width: 65px;
|
||||||
|
@ -87,13 +87,13 @@ a {
|
||||||
a {
|
a {
|
||||||
display: block;
|
display: block;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: @colorLight;
|
color: @color;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
flex: 1 0;
|
flex: 1 0;
|
||||||
i {
|
i {
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
color: @colorLight;
|
color: @color;
|
||||||
}
|
}
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @main;
|
color: @main;
|
||||||
|
@ -135,7 +135,7 @@ a {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: column nowrap;
|
flex-flow: column nowrap;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
background-color: @darkBg;
|
background-color: @sidebarBg;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
@ -152,7 +152,7 @@ a {
|
||||||
line-height: 60px;
|
line-height: 60px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
display: block;
|
display: block;
|
||||||
color: @colorLight;
|
color: @colorSidebar;
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: @color;
|
background-color: @color;
|
||||||
}
|
}
|
||||||
|
@ -185,6 +185,7 @@ a {
|
||||||
line-height: 60px;
|
line-height: 60px;
|
||||||
padding: 0 16px;
|
padding: 0 16px;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
|
background-color: @contentBg;
|
||||||
border-right: 1px solid @border;
|
border-right: 1px solid @border;
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
|
@ -315,7 +316,9 @@ a {
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
|
color: @color;
|
||||||
border: 1px solid @border;
|
border: 1px solid @border;
|
||||||
|
background-color: @contentBg;
|
||||||
margin: 0 8px;
|
margin: 0 8px;
|
||||||
}
|
}
|
||||||
p {
|
p {
|
||||||
|
@ -350,14 +353,13 @@ a {
|
||||||
border-bottom-width: 1px;
|
border-bottom-width: 1px;
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-left: 100px;
|
padding-left: 100px;
|
||||||
background-color: #FAFAFA;
|
background-color: @contentBg;
|
||||||
&:first-of-type {
|
&:first-of-type {
|
||||||
border-top-width: 1px;
|
border-top-width: 1px;
|
||||||
}
|
}
|
||||||
.bookmark-content {
|
.bookmark-content {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: column nowrap;
|
flex-flow: column nowrap;
|
||||||
background-color: @contentBg;
|
|
||||||
border-left: 1px solid @border;
|
border-left: 1px solid @border;
|
||||||
padding: 16px 24px 8px;
|
padding: 16px 24px 8px;
|
||||||
img {
|
img {
|
||||||
|
@ -378,7 +380,6 @@ a {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.bookmark-menu {
|
.bookmark-menu {
|
||||||
background-color: @contentBg;
|
|
||||||
border-left: 1px solid @border;
|
border-left: 1px solid @border;
|
||||||
padding: 0 24px 16px;
|
padding: 0 24px 16px;
|
||||||
}
|
}
|
||||||
|
@ -390,6 +391,46 @@ a {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
&.night {
|
||||||
|
background-color: @nightBg;
|
||||||
|
#body {
|
||||||
|
#header {
|
||||||
|
color: @nightColor;
|
||||||
|
border-color: @nightBorder;
|
||||||
|
background-color: @nightContentBg;
|
||||||
|
input {
|
||||||
|
color: @nightColor;
|
||||||
|
border-color: @nightBorder;
|
||||||
|
background-color: @nightContentBg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#content {
|
||||||
|
#grid {
|
||||||
|
.bookmark {
|
||||||
|
border-color: @nightBorder;
|
||||||
|
background-color: @nightContentBg;
|
||||||
|
.bookmark-content {
|
||||||
|
border-color: @nightBorder;
|
||||||
|
.title,
|
||||||
|
.excerpt {
|
||||||
|
color: @nightColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bookmark-menu {
|
||||||
|
border-color: @nightBorder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.pagination-box {
|
||||||
|
input {
|
||||||
|
color: @nightColor;
|
||||||
|
border-color: @nightBorder;
|
||||||
|
background-color: @nightContentBg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#cache-page {
|
#cache-page {
|
||||||
|
@ -483,4 +524,24 @@ a {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.night .yla-dialog {
|
||||||
|
color: @nightColor;
|
||||||
|
background-color: @nightBg;
|
||||||
|
>.yla-dialog__header {
|
||||||
|
background-color: @nightContentBg;
|
||||||
|
border-bottom: 1px solid @nightBorder;
|
||||||
|
}
|
||||||
|
>.yla-dialog__body {
|
||||||
|
>input,
|
||||||
|
>textarea {
|
||||||
|
color: @nightColor;
|
||||||
|
border-color: @nightBorder;
|
||||||
|
background-color: @nightContentBg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>.yla-dialog__footer {
|
||||||
|
border-color: @nightBorder;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -2,18 +2,21 @@
|
||||||
//
|
//
|
||||||
// Background
|
// Background
|
||||||
@bg: #EEE;
|
@bg: #EEE;
|
||||||
@darkBg: #353535;
|
@sidebarBg: #292929;
|
||||||
@contentBg: #FFF;
|
@contentBg: #FFF;
|
||||||
|
@nightBg: #1F1F1F;
|
||||||
|
@nightContentBg: #292929;
|
||||||
//
|
//
|
||||||
// Border
|
// Border
|
||||||
@border: #E5E5E5;
|
@border: #E5E5E5;
|
||||||
@borderDark: #9E9E9E;
|
@nightBorder: #191919;
|
||||||
//
|
//
|
||||||
// Font color
|
// Font color
|
||||||
@color: #232323;
|
@color: #232323;
|
||||||
@colorLink: #999;
|
@colorLink: #999;
|
||||||
@colorLight: #EEE;
|
@colorSidebar: #FFF;
|
||||||
@fontSize: 0.9em;
|
@fontSize: 0.9em;
|
||||||
|
@nightColor: #FFF;
|
||||||
//
|
//
|
||||||
// Color theme
|
// Color theme
|
||||||
@main: #F44336;
|
@main: #F44336;
|
||||||
|
@ -22,8 +25,13 @@
|
||||||
//
|
//
|
||||||
// Tooltip
|
// Tooltip
|
||||||
@tooltipBg: #232323;
|
@tooltipBg: #232323;
|
||||||
|
@tooltipColor: #FFF;
|
||||||
@arrowWidth: 8px;
|
@arrowWidth: 8px;
|
||||||
//
|
//
|
||||||
|
// Dialog
|
||||||
|
@dialogHeaderBg: #292929;
|
||||||
|
@dialogHeaderColor: #FFF;
|
||||||
|
//
|
||||||
// Other variable
|
// Other variable
|
||||||
@headerHeight: 60px;
|
@headerHeight: 60px;
|
||||||
//
|
//
|
||||||
|
|
|
@ -29,8 +29,8 @@
|
||||||
flex-flow: row nowrap;
|
flex-flow: row nowrap;
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
background-color: @darkBg;
|
background-color: @dialogHeaderBg;
|
||||||
color: @colorLight;
|
color: @dialogHeaderColor;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
>p {
|
>p {
|
||||||
flex: 1 0;
|
flex: 1 0;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
@import "variable";
|
@import "variable";
|
||||||
.yla-tooltip {
|
.yla-tooltip {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: @colorLight;
|
color: @tooltipColor;
|
||||||
background-color: @tooltipBg;
|
background-color: @tooltipBg;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
|
Loading…
Add table
Reference in a new issue