-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.vue
106 lines (98 loc) · 2.96 KB
/
app.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<template>
<div>
<nav class="navbar navbar-expand-lg" :class="darkMode ? 'navbar-dark bg-dark' : 'navbar-light bg-light'">
<div class="container-fluid">
<a class="navbar-brand" href="#">Store Dashboard</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<router-link class="nav-link" to="/">Overview</router-link>
</li>
<li class="nav-item">
<router-link class="nav-link" to="/products">Produtos</router-link>
</li>
<li class="nav-item">
<router-link class="nav-link" to="/carts">Carrinho</router-link>
</li>
<li class="nav-item">
<router-link class="nav-link" to="/users">Usuários</router-link>
</li>
<li class="nav-item">
<router-link class="nav-link" to="/login">Login</router-link>
</li>
<!-- Botão para alternar entre modo claro/escuro -->
<li class="nav-item">
<button class="btn btn-outline-secondary" @click="toggleDarkMode">
{{ darkMode ? 'Modo Claro' : 'Modo Escuro' }}
</button>
</li>
</ul>
</div>
</div>
</nav>
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
darkMode: false, // Controle para o modo escuro
};
},
methods: {
toggleDarkMode() {
this.darkMode = !this.darkMode;
this.updateBodyClass();
// Salva a preferência do modo escuro no localStorage
localStorage.setItem('darkMode', this.darkMode ? 'enabled' : 'disabled');
},
updateBodyClass() {
if (this.darkMode) {
document.body.classList.add('dark-mode');
} else {
document.body.classList.remove('dark-mode');
}
},
},
created() {
// Recupera a preferência do modo escuro do localStorage quando a página é carregada
const savedMode = localStorage.getItem('darkMode');
if (savedMode === 'enabled') {
this.darkMode = true;
this.updateBodyClass();
}
},
};
</script>
<style>
/* Transição suave para o fundo e cor do texto */
body {
transition: background-color 0.3s ease, color 0.3s ease;
}
/* Estilos para o modo escuro */
body.dark-mode {
background-color: #121212;
color: #f0f0f0;
}
/* Estilos para a navbar no modo escuro */
.navbar-dark .navbar-nav .nav-link {
color: #f0f0f0;
}
.navbar-dark .navbar-brand {
color: #f0f0f0;
}
.navbar-light .navbar-nav .nav-link {
color: #333;
}
.navbar-light .navbar-brand {
color: #333;
}
.navbar-dark .navbar-toggler-icon {
background-color: #f0f0f0;
}
</style>