Skip to content

Commit fbe53e4

Browse files
committed
Added style string file
1 parent 9bd3f13 commit fbe53e4

File tree

2 files changed

+44
-32
lines changed

2 files changed

+44
-32
lines changed

Diff for: src/styles.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
export const styles = `
2+
html {
3+
background-color: #222 !important;
4+
color: #333 !important;
5+
}
6+
7+
body {
8+
filter: contrast(90%) invert(90%) hue-rotate(180deg) !important;
9+
-ms-filter: invert(100%);
10+
-webkit-filter: contrast(90%) invert(90%) hue-rotate(180deg) !important;
11+
text-rendering: optimizeSpeed;
12+
image-rendering: optimizeSpeed;
13+
-webkit-font-smoothing: antialiased;
14+
-webkit-image-rendering: optimizeSpeed;
15+
}
16+
17+
input, textarea, select {
18+
color: purple;
19+
}
20+
21+
img, video, iframe, canvas, svg, embed[type='application/x-shockwave-flash'], object[type='application/x-shockwave-flash'], *[style*='url('] {
22+
filter: invert(100%) hue-rotate(-180deg) !important;
23+
-ms-filter: invert(100%) !important;
24+
-webkit-filter: invert(100%) hue-rotate(-180deg) !important;
25+
}
26+
`

Diff for: src/vue-dark-mode.vue

+18-32
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,22 @@
11
<template>
22
<button
3-
@click="toggleDarkMode"
43
:aria-pressed="darkMode"
54
class="vue-darkmode"
5+
@click="toggleDarkMode"
66
>
7-
<slot :mode="darkMode"></slot>
8-
<component :is="'style'" :media="darkMode && $_use_filter ? 'screen' : 'none'" scoped>
9-
html {
10-
background-color: #222 !important;
11-
color: #333 !important;
12-
}
13-
14-
body {
15-
filter: contrast(90%) invert(90%) hue-rotate(180deg) !important;
16-
-ms-filter: invert(100%);
17-
-webkit-filter: contrast(90%) invert(90%) hue-rotate(180deg) !important;
18-
text-rendering: optimizeSpeed;
19-
image-rendering: optimizeSpeed;
20-
-webkit-font-smoothing: antialiased;
21-
-webkit-image-rendering: optimizeSpeed;
22-
}
23-
24-
input, textarea, select {
25-
color: purple;
26-
}
27-
28-
img, video, iframe, canvas, svg, embed[type='application/x-shockwave-flash'], object[type='application/x-shockwave-flash'], *[style*='url('] {
29-
filter: invert(100%) hue-rotate(-180deg) !important;
30-
-ms-filter: invert(100%) !important;
31-
-webkit-filter: invert(100%) hue-rotate(-180deg) !important;
32-
}
33-
</component>
7+
<slot :mode="darkMode" />
8+
<component
9+
:is="'style'"
10+
:media="darkMode && $_use_filter ? 'screen' : 'none'"
11+
scoped
12+
v-text="styles.trim()"
13+
/>
3414
</button>
3515
</template>
3616

3717
<script>
18+
import { styles } from './styles'
19+
3820
export default {
3921
name: 'DarkMode',
4022
props: {
@@ -46,7 +28,11 @@ export default {
4628
type: Boolean,
4729
default: true
4830
},
49-
storage: {
31+
styles: {
32+
type: String,
33+
default: styles
34+
},
35+
persist: {
5036
type: String,
5137
default: 'localStorage'
5238
},
@@ -69,7 +55,7 @@ export default {
6955
created () {
7056
this.darkMode = this.isDark
7157
if (!this.$isServer) {
72-
this.darkMode = !!window[this.storage].getItem('darkMode') || this.isDark || this.prefersDark()
58+
this.darkMode = !!window[this.persist].getItem('darkMode') || this.isDark || this.prefersDark()
7359
this.themeColorMeta = document.querySelector('meta[name="theme-color"]')
7460
if (this.useFilter) {
7561
this.$_use_filter = this.supportsFilters()
@@ -94,12 +80,12 @@ export default {
9480
document.documentElement.classList.toggle('dark-mode')
9581
},
9682
setDarkMode () {
97-
window[this.storage].setItem('darkMode', 'on')
83+
window[this.persist].setItem('darkMode', 'on')
9884
this.toggleClass()
9985
this.setThemeColor(this.themeColorDark)
10086
},
10187
removeDarkMode () {
102-
window[this.storage].removeItem('darkMode')
88+
window[this.persist].removeItem('darkMode')
10389
this.toggleClass()
10490
this.setThemeColor(this.themeColorLight)
10591
},

0 commit comments

Comments
 (0)