Melissa: promove rota oficial + redirect automatico da home

Sai do estado "preview/sandbox" e liga o Melissa como layout real
ativavel pelo user em Configuracoes -> Profile.

Mudancas:

- routes.misc.js: /preview/melissa/:secao? -> /melissa/:secao?,
  nome PreviewMelissa -> Melissa. Sem alias por compat (autorizado).

- router/index.js: novo beforeEach apos o supportGuard e antes do
  applyGuards. Quando to.name e' therapist.dashboard ou admin.dashboard
  E localStorage.layout_variant === 'melissa' E viewport >= 1280px,
  redireciona pra { name: 'Melissa' }. Le do localStorage (gravado pelo
  bootstrapUserSettings + setVariant) pra evitar esperar store do DB e
  evitar flash do shell antes do redirect. Bypassa mobile pq Melissa
  nao foi feito pra <xl e o effectiveVariant ja forca 'classic' la.

- MelissaLayout.vue: 2 chamadas router.push apontavam pra
  'PreviewMelissa', agora 'Melissa'. Header doc atualizado.

- useMelissaPacientes.js: comment doc citando /preview/melissa
  generalizado pra "sem session retorna vazio".

- ProfilePage.vue: card Melissa perde badge "Em construcao" e ganha
  badge "Beta". Texto explicativo perde "navegacao completa ainda
  nao esta integrada" e ganha "Ao salvar, sua proxima entrada na
  home cai direto no Melissa". Link /preview/melissa -> /melissa.
  Remove regra CSS .lv-card--wip orfa.

Tradeoff aceito: rotas especificas (/therapist/agenda etc.) seguem
no shell classico/rail. So a HOME do role e' interceptada pra /melissa.
Coerente com o desenho atual do MelissaLayout, que ja abre Agenda /
Pacientes / etc. como overlays internos via deep-link /melissa/<secao>.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-04-28 17:45:53 -03:00
parent 68d601e0f4
commit 76b58af9a1
5 changed files with 49 additions and 27 deletions
+5 -16
View File
@@ -1424,16 +1424,16 @@ onBeforeUnmount(() => {
</div>
</button>
<!-- Layout 3: Melissa (Direção B) Em construção -->
<!-- Layout 3: Melissa (Direção B) -->
<button
class="lv-card lv-card--wip"
class="lv-card"
:class="{ 'lv-card--active': layoutConfig.variant === 'melissa' }"
@click="
setVariant('melissa');
markDirty();
"
>
<span class="lv-card__badge">Em construção</span>
<span class="lv-card__badge lv-card__badge--beta">Beta</span>
<div class="lv-card__preview lv-card__preview--melissa">
<div class="lv-pm__clock">12<span class="lv-pm__sep">:</span>30</div>
<div class="lv-pm__cards">
@@ -1459,8 +1459,8 @@ onBeforeUnmount(() => {
<i class="pi pi-info-circle text-[var(--text-color-secondary)] mt-0.5 shrink-0" />
<div class="text-[1rem] text-[var(--text-color-secondary)] leading-relaxed">
<strong>Rail:</strong> ícones no canto esquerdo + painel expansível. Disponível apenas no desktop.<br />
<strong>Melissa</strong> <span class="text-[0.85rem] uppercase tracking-wider font-semibold" style="color: var(--primary-color)"> em construção:</span> layout fullscreen com resumo do dia, busca rápida e cronômetro de sessão. Selecionar aqui salva sua preferência, mas a navegação completa ainda não está integrada. Acesse o preview em
<a href="/preview/melissa" target="_blank" rel="noopener" class="underline hover:text-[var(--text-color)]">/preview/melissa</a>.
<strong>Melissa</strong> <span class="text-[0.85rem] uppercase tracking-wider font-semibold" style="color: var(--primary-color)"> beta:</span> layout fullscreen com resumo do dia, busca rápida e cronômetro de sessão. Ao salvar, sua próxima entrada na home cai direto no Melissa. Pra abrir manualmente,
<a href="/melissa" target="_blank" rel="noopener" class="underline hover:text-[var(--text-color)]">/melissa</a>.
</div>
</div>
</div>
@@ -1735,17 +1735,6 @@ onBeforeUnmount(() => {
}
/* ─── Card Melissa (Direção B) — preview Win11 lockscreen ──── */
.lv-card--wip {
/* Listras suaves no fundo do card pra reforçar visualmente "em obras",
sem prejudicar o preview no topo. */
background-image: repeating-linear-gradient(
135deg,
transparent 0,
transparent 12px,
color-mix(in srgb, var(--primary-color) 4%, transparent) 12px,
color-mix(in srgb, var(--primary-color) 4%, transparent) 14px
);
}
.lv-card__badge {
position: absolute;
top: 8px;