|
|
@ -1,7 +1,6 @@ |
|
|
|
<template> |
|
|
|
<div |
|
|
|
id="app" |
|
|
|
:style="cssVars" |
|
|
|
> |
|
|
|
<b-navbar |
|
|
|
id="top-nav" |
|
|
@ -115,7 +114,6 @@ |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import { |
|
|
|
SunIcon, |
|
|
@ -166,20 +164,11 @@ export default { |
|
|
|
twitterLink: '', |
|
|
|
instagramLink: '', |
|
|
|
linkedinLink: '', |
|
|
|
bgColor: '', |
|
|
|
textColor: '', |
|
|
|
buttonColor: '', |
|
|
|
topNavColor: '', |
|
|
|
bgColorDark: '', |
|
|
|
textColorDark: '', |
|
|
|
buttonColorDark: '', |
|
|
|
topNavColorDark: '', |
|
|
|
}), |
|
|
|
mounted() { |
|
|
|
const htmlElement = document.documentElement; |
|
|
|
const userPrefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; |
|
|
|
const theme = localStorage.getItem('data-theme'); |
|
|
|
|
|
|
|
if (userPrefersDark) { |
|
|
|
this.darkMode = true; |
|
|
|
} else if (theme === 'dark') { |
|
|
@ -189,12 +178,10 @@ export default { |
|
|
|
htmlElement.setAttribute('data-theme', 'light'); |
|
|
|
this.darkMode = false; |
|
|
|
} |
|
|
|
|
|
|
|
this.axios.get('/api/site/config').then((response) => { |
|
|
|
// Passed to the Index component |
|
|
|
this.title = response.data.Title; |
|
|
|
this.description = response.data.Description; |
|
|
|
|
|
|
|
// For this component |
|
|
|
this.metaTitle = response.data.MetaTitle; |
|
|
|
this.backLink = response.data.BackLink; |
|
|
@ -206,31 +193,13 @@ export default { |
|
|
|
this.twitterLink = response.data.TwitterLink; |
|
|
|
this.instagramLink = response.data.InstagramLink; |
|
|
|
this.linkedinLink = response.data.LinkedinLink; |
|
|
|
this.bgColor = response.data.BGColor; |
|
|
|
this.textColor = response.data.TextColor; |
|
|
|
this.buttonColor = response.data.ButtonColor; |
|
|
|
this.topNavColor = response.data.TopNavColor; |
|
|
|
this.bgColorDark = response.data.BGColorDark; |
|
|
|
this.textColorDark = response.data.TextColorDark; |
|
|
|
this.buttonColorDark = response.data.ButtonColorDark; |
|
|
|
this.topNavColorDark = response.data.TopNavColorDark; |
|
|
|
}).then(() => { |
|
|
|
document.title = this.metaTitle; |
|
|
|
document.querySelector(':root').style.setProperty('--bg-color', this.bgColor); |
|
|
|
document.querySelector(':root').style.setProperty('--text-color', this.textColor); |
|
|
|
document.querySelector(':root').style.setProperty('--button-color', this.buttonColor); |
|
|
|
document.querySelector(':root').style.setProperty('--top-nav-color', this.topNavColor); |
|
|
|
|
|
|
|
document.querySelector(':root').style.setProperty('--bg-color-dark', this.bgColorDark); |
|
|
|
document.querySelector(':root').style.setProperty('--text-color-dark', this.textColorDark); |
|
|
|
document.querySelector(':root').style.setProperty('--button-color-dark', this.buttonColorDark); |
|
|
|
document.querySelector(':root').style.setProperty('--top-nav-color-dark', this.topNavColorDark); |
|
|
|
}); |
|
|
|
}, |
|
|
|
watch: { |
|
|
|
darkMode() { |
|
|
|
const htmlElement = document.documentElement; |
|
|
|
|
|
|
|
if (this.darkMode) { |
|
|
|
localStorage.setItem('data-theme', 'dark'); |
|
|
|
htmlElement.setAttribute('data-theme', 'dark'); |
|
|
@ -240,82 +209,42 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
cssVars() { |
|
|
|
return { |
|
|
|
'--stuff': 'red', |
|
|
|
'--height': '2px', |
|
|
|
}; |
|
|
|
}, |
|
|
|
}, |
|
|
|
}; |
|
|
|
</script> |
|
|
|
|
|
|
|
<style lang="scss"> |
|
|
|
#app { |
|
|
|
-webkit-font-smoothing: antialiased; |
|
|
|
-moz-osx-font-smoothing: grayscale; |
|
|
|
text-align: center; |
|
|
|
} |
|
|
|
|
|
|
|
:root { |
|
|
|
body { |
|
|
|
body { |
|
|
|
background-color: var(--bg-color); |
|
|
|
} |
|
|
|
legend,label,h1,h2,h3,h4,h5,h6,p { |
|
|
|
} |
|
|
|
legend,label,h1,h2,h3,h4,h5,h6,p { |
|
|
|
color: var(--text-color); |
|
|
|
} |
|
|
|
#top-nav { |
|
|
|
} |
|
|
|
.navIcons { |
|
|
|
color: var(--text-color); |
|
|
|
} |
|
|
|
.navIcons:hover { |
|
|
|
filter: invert(0.5); |
|
|
|
} |
|
|
|
#top-nav { |
|
|
|
border-top: 14px solid var(--top-nav-color); |
|
|
|
} |
|
|
|
.navIcons { |
|
|
|
color: var(--text-color); |
|
|
|
} |
|
|
|
.radio.btn-theme { |
|
|
|
} |
|
|
|
.radio.btn-theme { |
|
|
|
background-color: #ffffff !important; |
|
|
|
border-color: var(--button-color) !important; |
|
|
|
color: var(--button-color) !important; |
|
|
|
} |
|
|
|
.radio.btn-theme.btn-sm.active { |
|
|
|
} |
|
|
|
.radio.btn-theme.btn-sm.active { |
|
|
|
background-color: var(--button-color) !important; |
|
|
|
border-color: var(--button-color) !important; |
|
|
|
color: #ffffff !important; |
|
|
|
} |
|
|
|
.btn-theme { |
|
|
|
background-color: var(--button-color) !important; |
|
|
|
color: #ffffff !important; |
|
|
|
} |
|
|
|
} |
|
|
|
[data-theme="dark"] { |
|
|
|
body { |
|
|
|
background-color: var(--bg-color-dark); |
|
|
|
} |
|
|
|
legend,label,h1,h2,h3,h4,h5,h6,p { |
|
|
|
color: var(--text-color-dark); |
|
|
|
} |
|
|
|
#top-nav { |
|
|
|
border-top: 14px solid var(--top-nav-color-dark); |
|
|
|
} |
|
|
|
.navIcons { |
|
|
|
color: var(--text-color-dark); |
|
|
|
} |
|
|
|
.radio.btn-theme { |
|
|
|
background-color: #ffffff !important; |
|
|
|
border-color: var(--button-color-dark) !important; |
|
|
|
color: var(--button-color-dark) !important; |
|
|
|
} |
|
|
|
.radio.btn-theme.btn-sm.active { |
|
|
|
background-color: var(--button-color-dark) !important; |
|
|
|
border-color: var(--button-color-dark) !important; |
|
|
|
color: #ffffff !important; |
|
|
|
} |
|
|
|
.btn-theme { |
|
|
|
background-color: var(--button-color-dark) !important; |
|
|
|
.btn-theme { |
|
|
|
background-color: var(--button-color) !important; |
|
|
|
color: #ffffff !important; |
|
|
|
} |
|
|
|
} |
|
|
|
.navIcons:hover { |
|
|
|
filter: invert(0.5); |
|
|
|
} |
|
|
|
.form-item { |
|
|
|
width: 75%; |
|
|
|