Skip to content

Commit db1af3f

Browse files
committed
feat(light): add dark mode, add css variables #41
1 parent 396f485 commit db1af3f

File tree

2 files changed

+53
-20
lines changed

2 files changed

+53
-20
lines changed

light/src/App.vue

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<cron-light
44
v-model="value"
55
v-model:period="period"
6-
format="quartz"
6+
format="crontab"
77
locale="en"
88
@error="error = $event"
99
>
@@ -14,6 +14,11 @@
1414
</div>
1515
<br />
1616
Error: {{ error }}
17+
<div>
18+
<button @click="toggleDarkMode" class="cl-btn" style="margin-top: 1em">
19+
Switch to {{ isDark ? 'Light' : 'Dark' }} Mode
20+
</button>
21+
</div>
1722
</div>
1823
</template>
1924

@@ -26,9 +31,10 @@ export default {
2631
},
2732
data: () => {
2833
return {
29-
value: '* * * * * *',
34+
value: undefined,
3035
period: 'month',
3136
error: '',
37+
isDark: false,
3238
}
3339
},
3440
watch: {
@@ -43,11 +49,24 @@ export default {
4349
updateValue(evt: any) {
4450
this.value = evt.target.value
4551
},
52+
toggleDarkMode() {
53+
const body = document.querySelector('body')
54+
this.isDark = body?.classList.toggle('dark') ?? false
55+
},
4656
},
4757
}
4858
</script>
4959

5060
<style>
61+
body {
62+
font-family: sans-serif;
63+
}
64+
65+
body.dark {
66+
color: #f0f6fc;
67+
background-color: #0d1117;
68+
}
69+
5170
.vcron-editor {
5271
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
5372
}

light/src/components/select.vue

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export default defineComponent({
5151
5252
const { floatingStyles } = useFloating(btn, floating, {
5353
placement: 'bottom-start',
54-
middleware: [flip(), shift(), offset(7)],
54+
middleware: [flip(), shift(), offset(3)],
5555
whileElementsMounted: autoUpdate,
5656
})
5757
@@ -93,9 +93,9 @@ export default defineComponent({
9393
.cl-btn {
9494
display: inline-flex;
9595
align-items: center;
96-
color: black;
97-
background-color: #eee;
98-
border: 1px solid #ddd;
96+
color: var(--cl-text-color, inherit);
97+
background-color: var(--cl-bg-color, #eee);
98+
border: var(--cl-border, 1px solid #ddd);
9999
border-radius: 3px;
100100
margin: 0.2em 0.3em;
101101
padding: 0.1em 0.5em;
@@ -104,13 +104,13 @@ export default defineComponent({
104104
}
105105
106106
.cl-btn.disabled {
107-
background-color: #ccc;
108-
color: #444;
107+
background-color: var(--cl-disabled-bg-color, #ccc);
108+
color: var(--cl-disabled-text-color, #444);
109109
}
110110
111111
.cl-btn:not(.disabled):hover {
112112
/* border: 1px solid #ccc; */
113-
background-color: #ddd;
113+
background-color: var(--cl-hover-bg-color, #d6d6d6);
114114
}
115115
116116
.cl-btn-clear {
@@ -121,8 +121,8 @@ export default defineComponent({
121121
122122
.cl-menu {
123123
box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.5);
124-
border: 1px solid #aaa;
125-
background-color: #eee;
124+
border: var(--cl-border, 1px solid #ddd);
125+
background-color: var(--cl-bg-color, #eee);
126126
list-style: none;
127127
z-index: 100;
128128
}
@@ -139,21 +139,35 @@ export default defineComponent({
139139
user-select: none;
140140
padding: 0.2em 0.5em;
141141
text-align: center;
142-
color: black;
143142
}
144143
145144
.cl-col:hover {
146-
background-color: rgb(52, 147, 190);
147-
color: white;
145+
background-color: var(--cl-hover-bg-color, #d6d6d6);
146+
color: var(--cl-hover-text-color, inherit);
148147
}
149148
150-
.cl-col.selected {
151-
background-color: rgb(43, 108, 138);
152-
color: white;
149+
.cl-col.selected,
150+
.cl-col.selected:hover {
151+
background-color: var(--cl-selected-bg-color, rgb(43, 108, 138));
152+
color: var(--cl-selected-text-color, white);
153153
}
154154
155-
.cl-col.selected:hover {
156-
background-color: rgb(43, 108, 138);
157-
color: white;
155+
/* Dark mode styles */
156+
.dark {
157+
--cl-text-color: #eee;
158+
--cl-bg-color: #222;
159+
--cl-border: 1px solid #444;
160+
161+
--cl-disabled-bg-color: #333;
162+
--cl-disabled-text-color: #888;
163+
164+
--cl-hover-bg-color: #333;
165+
166+
--cl-selected-bg-color: #0a3041;
167+
--cl-selected-text-color: #43c3ff;
168+
}
169+
170+
.dark .cl-menu {
171+
box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.8);
158172
}
159173
</style>

0 commit comments

Comments
 (0)