melissa/paciente-docs: drawer mobile herda tema (win11-root no portal)

Drawer teleportado pro body perdia as vars --m-* (definidas em
.win11-root no MelissaLayout), caia nos fallbacks hardcoded (#1a1d2e)
e ficava mais escuro que o resto do tema.

Fix:
- Wrapper .mpd-drawer-portal recebe class win11-root pra trazer as
  vars --m-* pro escopo teleportado.
- Vars locais --mpd-bg/--mpd-border/--mpd-text com cascata:
  --m-* (win11-root) -> --p-* (PrimeVue global) -> hardcoded.
  Respeita dark/light automaticamente.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-05-21 21:54:37 -03:00
parent 4e1ebeba13
commit 6c39c58dc8
+18 -6
View File
@@ -181,8 +181,10 @@ onBeforeUnmount(() => {
<template> <template>
<!-- Mobile drawer (tipos) teleportado pro body pra escapar de <!-- Mobile drawer (tipos) teleportado pro body pra escapar de
stacking contexts pais (transform/filter no MelissaPaciente stacking contexts pais (transform/filter no MelissaPaciente
travavam o fixed) --> travavam o fixed). win11-root no wrapper pra herdar os
tokens --m-* definidos nesse escopo. -->
<Teleport to="body"> <Teleport to="body">
<div class="win11-root mpd-drawer-portal">
<Transition name="mpd-drawer-fade"> <Transition name="mpd-drawer-fade">
<div <div
v-show="isMobile && drawerOpen" v-show="isMobile && drawerOpen"
@@ -199,6 +201,7 @@ onBeforeUnmount(() => {
@click="fecharDrawer" @click="fecharDrawer"
/> />
</Transition> </Transition>
</div>
</Teleport> </Teleport>
<section class="mpd-page"> <section class="mpd-page">
@@ -670,8 +673,17 @@ onBeforeUnmount(() => {
<!-- Styles do drawer mobile NÃO-scoped o <Teleport to="body"> tira o <!-- Styles do drawer mobile NÃO-scoped o <Teleport to="body"> tira o
elemento da árvore do componente, então perde os atributos data-v elemento da árvore do componente, então perde os atributos data-v
do scoped. Classes globais .mpd-mobile-drawer* garantem que aplique. --> do scoped. O wrapper .mpd-drawer-portal carrega .win11-root pra
herdar os tokens --m-* (definidos em MelissaLayout). -->
<style> <style>
/* Wrapper inerte — não cria stacking, só serve como host das vars */
.mpd-drawer-portal {
/* Garante que mesmo sem .win11-root (improvável) caia em fallbacks
de PrimeVue tokens, que existem globalmente e respeitam dark/light. */
--mpd-bg: var(--m-bg-medium, var(--p-content-background, #ffffff));
--mpd-border: var(--m-border, var(--p-content-border-color, rgba(0,0,0,0.1)));
--mpd-text: var(--m-text, var(--p-text-color, #1a1a1a));
}
.mpd-mobile-drawer { .mpd-mobile-drawer {
position: fixed; position: fixed;
top: 0; top: 0;
@@ -680,13 +692,13 @@ onBeforeUnmount(() => {
height: 100dvh; height: 100dvh;
width: min(320px, 86vw); width: min(320px, 86vw);
z-index: 80; z-index: 80;
background: var(--m-bg-medium, #1a1d2e); background: var(--mpd-bg);
backdrop-filter: blur(28px) saturate(160%); backdrop-filter: blur(28px) saturate(160%);
-webkit-backdrop-filter: blur(28px) saturate(160%); -webkit-backdrop-filter: blur(28px) saturate(160%);
border-right: 1px solid var(--m-border, rgba(255,255,255,0.1)); border-right: 1px solid var(--mpd-border);
transform: translateX(-100%); transform: translateX(-100%);
transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1); transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1);
color: var(--m-text, #fff); color: var(--mpd-text);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
font-family: 'Segoe UI', system-ui, -apple-system, sans-serif; font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
@@ -709,7 +721,7 @@ onBeforeUnmount(() => {
.mpd-mobile-drawer__scroll .mpd-side { .mpd-mobile-drawer__scroll .mpd-side {
width: 100%; width: 100%;
height: 100%; height: 100%;
border: 1px solid var(--m-border, rgba(255,255,255,0.1)); border: 1px solid var(--mpd-border);
} }
.mpd-mobile-drawer__backdrop { .mpd-mobile-drawer__backdrop {
position: fixed; position: fixed;