Add Nord Theme. Closes #1158 and supersedes #1159 (#1899).

* Re-add tpbnick's Nord theme

* Run Prettier formatter on Nord theme

* Update themes index

* Fix button margins

* Modernise the look of switches

* Adjust margins and padding

* Fix sidebar's background colour not applying to all of sidebar when scrolling down

* Adjust App Bar box shadow

* Adjust roundedness

* Adjust shadows

* Adjust outlined inputs

* Add transitions to items in sidebar when hovered / losing hover

* Adjust border radiuses

* Adjust pagination buttons

* Add big play button from Spotify theme

* Remove playlist background gradient

* Adjust colour of MuiChip elelments

* Adjust table borders

* Remove duplicate MuiTableRow key

* Attempt to make switches in both the playlist section and settings section visable against background & the toggle. Not ideal.

* Style the player

* Format CSS to Prettier standards

* Fix mobile player style

* Make play button in album grid view blue

* Make main view background lighter
This commit is contained in:
Renere 2022-10-02 01:31:21 +09:30 committed by GitHub
parent 87feac041b
commit 22507c9789
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 589 additions and 0 deletions

View File

@ -6,6 +6,7 @@ import SpotifyTheme from './spotify'
import LigeraTheme from './ligera'
import MonokaiTheme from './monokai'
import ElectricPurpleTheme from './electricPurple'
import NordTheme from './nord'
export default {
// Classic default themes
@ -18,5 +19,6 @@ export default {
GreenTheme,
LigeraTheme,
MonokaiTheme,
NordTheme,
SpotifyTheme,
}

167
ui/src/themes/nord.css.js Normal file
View File

@ -0,0 +1,167 @@
module.exports = `
.react-jinke-music-player-main svg:active, .react-jinke-music-player-main svg:hover {
color: #81A1C1
}
.react-jinke-music-player-main .music-player-panel .panel-content .rc-slider-handle, .react-jinke-music-player-main .music-player-panel .panel-content .rc-slider-track {
background-color: #5E81AC
}
.react-jinke-music-player-main ::-webkit-scrollbar-thumb {
background-color: #5E81AC;
}
.react-jinke-music-player-main .music-player-panel .panel-content .rc-slider-handle:active {
box-shadow: 0 0 2px #5E81AC
}
.react-jinke-music-player-main .audio-item.playing svg {
color: #5E81AC
}
.react-jinke-music-player-main .audio-item.playing .player-singer {
color: #5E81AC !important
}
.react-jinke-music-player-main .loading svg {
color: #5E81AC !important
}
.react-jinke-music-player-main .music-player-panel .panel-content .rc-slider-handle {
border: hidden;
box-shadow:rgba(15, 17, 21, 0.25) 0px 4px 6px, rgba(15, 17, 21, 0.1) 0px 5px 7px;
}
.rc-slider-rail, .rc-slider-track {
border-radius: 1rem;
height: 6px;
}
.rc-slider {
padding: 3px 0;
}
.progress-bar > div:nth-child(2) > div:nth-child(4) {
transform: translateX(-50%) translateY(5%) !important;
}
.sound-operation > div:nth-child(4) {
transform: translateX(-50%) translateY(5%) !important;
}
.sound-operation {
padding: 4px 0;
}
.react-jinke-music-player-main .music-player-panel .panel-content .player-content .play-sounds .sound-operation {
width: 50px;
}
.react-jinke-music-player-main .music-player-panel {
background-color: #2E3440;
color: #ECEFF4
box-shadow: 0 0 8px rgba(0, 0, 0, 0.25);
}
.audio-lists-panel {
background-color: #2E3440;
border-radius: .625rem;
bottom: 6.25rem;
box-shadow:rgba(15, 17, 21, 0.25) 0px 4px 6px, rgba(15, 17, 21, 0.1) 0px 5px 7px;
}
.audio-lists-panel-content .audio-item.playing {
background-color: rgba(0, 0, 0, 0);
}
.audio-lists-panel-content .audio-item:nth-child(2n+1) {
background-color: rgba(0, 0, 0, 0);
}
.audio-lists-panel-content .audio-item:active,
.audio-lists-panel-content .audio-item:hover {
background-color:rgba(255, 255, 255, 0.08);
}
.audio-lists-panel-header {
border-bottom:1px solid #242936;
}
.react-jinke-music-player-main .music-player-panel .panel-content .player-content .audio-lists-btn {
background-color:rgba(0,0,0,0);
box-shadow:0 0 0 0;
}
.audio-lists-panel-content .audio-item {
line-height: 32px;
padding: 4px 20px;
border-radius: 8px;
margin: 3px;
}
.react-jinke-music-player-main .music-player-panel .panel-content .img-content {
box-shadow:rgba(15, 17, 21, 0.25) 0px 4px 6px, rgba(15, 17, 21, 0.1) 0px 5px 7px;
}
.react-jinke-music-player-main .music-player-lyric {
color: #D8DEE9;
-webkit-text-stroke: 2px #2E3440;
font-weight: bolder;
}
.react-jinke-music-player-main .lyric-btn-active, .react-jinke-music-player-main .lyric-btn-active svg {
color: #D8DEE9 !important;
}
.audio-lists-panel-header {
border-bottom:1px solid rgba(0, 0, 0, 0.25);
box-shadow:none;
}
.audio-lists-panel-content .audio-item.playing, .audio-lists-panel-content .audio-item.playing svg {
color: #5E81AC
}
.audio-lists-panel-content .audio-item:active .group:not([class=".player-delete"]) svg, .audio-lists-panel-content .audio-item:hover .group:not([class=".player-delete"]) svg {
color: #5E81AC
}
.audio-lists-panel-content .audio-item .player-icons {
scale: 75%;
}
.audio-lists-panel-content .audio-item:active,
.audio-lists-panel-content .audio-item:hover {
background-color: #3B4252;
}
/* Mobile */
.react-jinke-music-player-mobile-cover {
border: none;
box-shadow:rgba(15, 17, 21, 0.25) 0px 4px 6px, rgba(15, 17, 21, 0.1) 0px 5px 7px;
}
.react-jinke-music-player .music-player-controller {
border: none;
box-shadow:rgba(15, 17, 21, 0.25) 0px 4px 6px, rgba(15, 17, 21, 0.1) 0px 5px 7px;
color: #5E81AC;
}
.react-jinke-music-player .music-player-controller .music-player-controller-setting {
color: rgba(122,160,236,.3);
}
.react-jinke-music-player-mobile-progress .rc-slider-handle, .react-jinke-music-player-mobile-progress .rc-slider-track {
background-color: #5E81AC;
}
.react-jinke-music-player-mobile-progress .rc-slider-handle {
border: none;
}
`

420
ui/src/themes/nord.js Normal file
View File

@ -0,0 +1,420 @@
// For Album, Playlist
const musicListActions = {
alignItems: 'center',
'@global': {
button: {
margin: 5,
},
'button:first-child:not(:only-child)': {
'@media screen and (max-width: 720px)': {
transform: 'scale(1.5)',
margin: '1rem',
'&:hover': {
transform: 'scale(1.6) !important',
},
},
transform: 'scale(2)',
margin: '1.5rem',
minWidth: 0,
padding: 5,
transition: 'transform .3s ease',
backgroundColor: '#5E81AC !important',
color: '#fff',
borderRadius: 500,
border: 0,
'&:hover': {
transform: 'scale(2.1)',
backgroundColor: '#5E81AC !important',
border: 0,
},
},
'button:only-child': {
margin: '1.5rem',
},
'button:first-child>span:first-child': {
padding: 0,
},
'button:first-child>span:first-child>span': {
display: 'none',
},
'button>span:first-child>span, button:not(:first-child)>span:first-child>svg':
{
color: 'rgba(255, 255, 255, 0.8)',
},
},
}
export default {
themeName: 'Nord',
palette: {
primary: {
main: '#D8DEE9',
},
secondary: {
main: '#4C566A',
},
type: 'dark',
},
overrides: {
MuiFormGroup: {
root: {
color: '#D8DEE9',
},
},
MuiMenuItem: {
root: {
fontSize: '0.875rem',
paddingTop: '4px',
paddingBottom: '4px',
paddingLeft: '10px',
margin: '5px',
borderRadius: '8px',
},
},
MuiDivider: {
root: {
margin: '.75rem 0',
},
},
MuiButton: {
root: {
backgroundColor: '#4C566A !important',
border: '1px solid transparent',
borderRadius: 500,
'&:hover': {
backgroundColor: `${'#5E81AC !important'}`,
},
},
label: {
color: '#D8DEE9',
paddingRight: '1rem',
paddingLeft: '0.7rem',
},
contained: {
boxShadow: 'none',
'&:hover': {
boxShadow: 'none',
},
},
},
MuiIconButton: {
label: {
color: '#D8DEE9',
},
},
MuiDrawer: {
root: {
background: '#2E3440',
paddingTop: '10px',
},
},
MuiList: {
root: {
color: '#D8DEE9',
background: 'none',
},
},
MuiListItem: {
button: {
transition: 'background-color .1s ease !important',
},
},
MuiPaper: {
root: {
backgroundColor: '#3B4252',
},
rounded: {
borderRadius: '8px',
},
elevation1: {
boxShadow: 'none',
},
},
MuiTableRow: {
root: {
color: '#434C5E',
transition: 'background-color .3s ease',
'&:hover': {
backgroundColor: '#434C5E !important',
},
'&:last-child': {
borderBottom: '1px solid #4C566A !important',
},
},
head: {
color: '#4C566A',
},
},
MuiToolbar: {
root: {
backgroundColor: '#3B4252 !important',
},
},
MuiTableCell: {
root: {
borderBottom: 'none',
color: '#b3b3b3 !important',
padding: '10px !important',
},
head: {
borderBottom: '1px solid #2E3440',
fontSize: '0.75rem',
textTransform: 'uppercase',
letterSpacing: 1.2,
backgroundColor: '#4C566A !important',
color: '#D8DEE9 !important',
},
body: {
color: '#D8DEE9 !important',
},
},
MuiSwitch: {
track: {
width: '89%',
transform: 'translateX(.1rem) scale(140%)',
opacity: '0.7 !important',
backgroundColor: 'rgba(255,255,255,0.25)',
},
thumb: {
transform: 'scale(60%)',
boxShadow: 'none',
},
},
RaToolBar: {
regular: {
backgroundColor: 'none !important',
},
},
MuiAppBar: {
positionFixed: {
backgroundColor: '#4C566A !important',
boxShadow:
'rgba(15, 17, 21, 0.25) 0px 4px 6px, rgba(15, 17, 21, 0.1) 0px 5px 7px',
},
},
MuiOutlinedInput: {
root: {
borderRadius: '8px',
'&:hover': {
borderColor: '#D8DEE9',
},
},
notchedOutline: {
transition: 'border-color .1s',
},
},
MuiSelect: {
select: {
'&:focus': {
borderRadius: '8px',
},
},
},
MuiChip: {
root: {
backgroundColor: '#4C566A',
},
},
NDAlbumGridView: {
albumName: {
marginTop: '0.5rem',
fontWeight: 700,
textTransform: 'none',
color: '#E5E9F0',
},
albumSubtitle: {
color: '#b3b3b3',
},
albumContainer: {
backgroundColor: '#434C5E',
borderRadius: '8px',
padding: '.75rem',
transition: 'background-color .3s ease',
'&:hover': {
backgroundColor: '#4C566A',
},
},
albumPlayButton: {
backgroundColor: '#5E81AC',
borderRadius: '50%',
boxShadow: '0 8px 8px rgb(0 0 0 / 30%)',
padding: '0.35rem',
transition: 'padding .3s ease',
'&:hover': {
background: `${'#5E81AC'} !important`,
padding: '0.45rem',
},
},
},
NDPlaylistDetails: {
container: {
borderRadius: 0,
paddingTop: '2.5rem !important',
boxShadow: 'none',
},
title: {
fontSize: 'calc(1.5rem + 1.5vw);',
fontWeight: 700,
color: '#fff',
},
details: {
fontSize: '.875rem',
minWidth: '75vw',
color: 'rgba(255,255,255, 0.8)',
},
},
NDAlbumShow: {
albumActions: musicListActions,
},
NDPlaylistShow: {
playlistActions: musicListActions,
},
NDAlbumDetails: {
root: {
background: '#434C5E',
borderRadius: 0,
boxShadow: '0 8px 8px rgb(0 0 0 / 20%)',
},
cardContents: {
alignItems: 'center',
paddingTop: '1.5rem',
},
recordName: {
fontSize: 'calc(1rem + 1.5vw);',
fontWeight: 700,
},
recordArtist: {
fontSize: '.875rem',
fontWeight: 700,
},
recordMeta: {
fontSize: '.875rem',
color: 'rgba(255,255,255, 0.8)',
},
commentBlock: {
fontSize: '.875rem',
color: 'rgba(255,255,255, 0.8)',
},
},
NDAudioPlayer: {
audioTitle: {
color: '#D8DEE9',
fontSize: '0.875rem',
},
songTitle: {
fontWeight: 400,
},
songInfo: {
fontSize: '0.675rem',
color: '#b3b3b3',
},
player: {
border: '10px solid #4C566A',
backgroundColor: '#4C566A !important',
},
},
NDLogin: {
main: {
boxShadow: 'inset 0 0 0 2000px rgba(0, 0, 0, .75)',
},
systemNameLink: {
color: '#fff',
},
card: {
border: '1px solid #282828',
},
avatar: {
marginBottom: 0,
},
},
NDSubMenu: {
sidebarIsClosed: {
'& a': {
paddingLeft: '10px',
},
},
},
RaLayout: {
content: {
padding: '0 !important',
background: '#3B4252',
},
root: {
backgroundColor: '#2E3440',
},
},
RaList: {
content: {
backgroundColor: '#3B4252',
borderRadius: '0px',
},
},
RaListToolbar: {
toolbar: {
backgroundColor: '#2E3440',
padding: '0 .55rem !important',
},
},
RaSidebar: {
fixed: {
backgroundColor: '#2E3440',
},
drawerPaper: {
backgroundColor: '#2E3440 !important',
},
},
RaSearchInput: {
input: {
paddingLeft: '.9rem',
marginTop: '36px',
border: 0,
},
},
RaDatagrid: {
headerCell: {
'&:first-child': {
borderTopLeftRadius: '0px !important',
},
'&:last-child': {
borderTopRightRadius: '0px !important',
},
},
},
RaButton: {
button: {
margin: '0 5px 0 5px',
},
},
RaPaginationActions: {
currentPageButton: {
border: '2px solid rgba(255,255,255,0.25)',
},
button: {
backgroundColor: '#4C566A',
minWidth: 48,
margin: '0 4px',
'@global': {
'> .MuiButton-label': {
padding: 0,
},
},
},
actions: {
'@global': {
'.next-page': {
marginLeft: 8,
marginRight: 8,
},
'.previous-page': {
marginRight: 8,
},
},
},
},
},
player: {
theme: 'dark',
stylesheet: require('./nord.css.js'),
},
}