MelissaMenu: switch on/off no Modo escuro

Substitui o pill "Ligado/Desligado" por um switch CSS visual (track
+ thumb que desliza). Usa --p-primary-color quando ligado. O button
mantem o toggleDarkAndPersist no click + aria-pressed pra leitor de
tela. Switch tem aria-hidden pq a semantica vive no botao.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-05-06 14:16:01 -03:00
parent e344661d4d
commit 684f673cc1
+39 -2
View File
@@ -420,10 +420,18 @@ async function sair() {
<button class="mm-foot-item" @click="goSeguranca"> <button class="mm-foot-item" @click="goSeguranca">
<i class="pi pi-shield" /><span>Segurança</span> <i class="pi pi-shield" /><span>Segurança</span>
</button> </button>
<button class="mm-foot-item" @click="toggleDarkAndPersist"> <button
class="mm-foot-item"
:aria-pressed="isDarkTheme"
@click="toggleDarkAndPersist"
>
<i :class="isDarkTheme ? 'pi pi-sun' : 'pi pi-moon'" /> <i :class="isDarkTheme ? 'pi pi-sun' : 'pi pi-moon'" />
<span>Modo escuro</span> <span>Modo escuro</span>
<span class="mm-foot-item__hint">{{ isDarkTheme ? 'Ligado' : 'Desligado' }}</span> <span
class="mm-toggle"
:class="{ 'is-on': isDarkTheme }"
aria-hidden="true"
/>
</button> </button>
<button <button
class="mm-foot-item" class="mm-foot-item"
@@ -823,6 +831,35 @@ async function sair() {
border-radius: 999px; border-radius: 999px;
} }
/* Switch on/off (modo escuro) — usa as cores do tema */
.mm-toggle {
flex: none !important;
width: 32px;
height: 18px;
background: var(--m-border-strong, var(--m-border));
border-radius: 999px;
position: relative;
transition: background-color 200ms ease;
}
.mm-toggle::after {
content: '';
position: absolute;
top: 2px;
left: 2px;
width: 14px;
height: 14px;
border-radius: 50%;
background: white;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
transition: transform 200ms ease;
}
.mm-toggle.is-on {
background: var(--p-primary-color);
}
.mm-toggle.is-on::after {
transform: translateX(14px);
}
/* User row */ /* User row */
.mm-user { .mm-user {
display: flex; display: flex;