Ajuste Layout, Dashboard Terapeuta, Timeline, Suporte técnico, Documentação e FAQ

This commit is contained in:
Leonardo
2026-03-15 19:46:06 -03:00
parent ee09b30987
commit f66f6f3fde
21 changed files with 24146 additions and 721 deletions

View File

@@ -574,8 +574,8 @@
</div>
</div>
<!-- Menu Mode -->
<div class="col-span-12 md:col-span-4">
<!-- Menu Mode: relevante no Layout Clássico -->
<div v-if="layoutConfig.variant === 'classic'" class="col-span-12 md:col-span-4">
<div class="prof-ctrl-box">
<div class="prof-ctrl-box__head">
<div>
@@ -1125,7 +1125,7 @@ async function uploadAvatarIfNeeded () {
/* ----------------------------
Aparência (SEM duplicar engine)
----------------------------- */
const { layoutConfig, toggleDarkMode, changeMenuMode } = useLayout()
const { layoutConfig, layoutState, toggleDarkMode, changeMenuMode } = useLayout()
function isDarkNow () {
return document.documentElement.classList.contains('app-dark')
@@ -1155,8 +1155,11 @@ const menuModeModel = computed({
set: (val) => {
if (!val || val === layoutConfig.menuMode) return
layoutConfig.menuMode = val
try { changeMenuMode?.(val) } catch {
try { changeMenuMode?.({ value: val }) } catch {}
// Não chama changeMenuMode() no Rail — ela reseta estados do sidebar
if (layoutConfig.variant !== 'rail') {
try { changeMenuMode?.(val) } catch {
try { changeMenuMode?.({ value: val }) } catch {}
}
}
if (!silentApplying.value) markDirty()
}
@@ -1229,13 +1232,9 @@ async function loadUserSettings (uid) {
// fazendo a sidebar desaparecer ao entrar na página.
}
// layout variant — só aplica se mudou, para não resetar o estado do layout
if (
(settings.layout_variant === 'rail' || settings.layout_variant === 'classic') &&
settings.layout_variant !== layoutConfig.variant
) {
setVariant(settings.layout_variant)
}
// Variant NÃO é re-aplicada aqui: bootstrapUserSettings cuida disso no arranque.
// Re-aplicar no loadUserSettings causava regressão (dado stale do banco sobrescrevia
// o variant ativo). A UI lê layoutConfig.variant diretamente para exibir a seleção.
applyThemeEngine(layoutConfig)
@@ -1405,7 +1404,7 @@ async function saveAll () {
primary_color: layoutConfig.primary || 'noir',
surface_color: layoutConfig.surface || 'slate',
menu_mode: layoutConfig.menuMode || 'static',
layout_variant: layoutConfig.variant || 'classic',
layout_variant: layoutConfig.variant || 'rail',
updated_at: new Date().toISOString()
}
@@ -1425,6 +1424,7 @@ async function saveAll () {
clearAvatarFile()
dirty.value = false
layoutState._variantDirty = false
toast.add({ severity: 'success', summary: 'Salvo', detail: 'Seu perfil foi atualizado.', life: 2500 })
} catch (e) {
toast.add({ severity: 'error', summary: 'Erro ao salvar', detail: e?.message || 'Não consegui salvar.', life: 6000 })
@@ -1510,9 +1510,6 @@ onBeforeUnmount(() => {
.prof-root {
padding: 1rem;
}
@media (min-width: 768px) {
.prof-root { padding: 1.5rem; }
}
/* ─── Hero ──────────────────────────────────────────────── */
.prof-hero-sentinel { height: 1px; }
@@ -1959,4 +1956,4 @@ onBeforeUnmount(() => {
.prof-slide-leave-to {
opacity: 0; max-height: 0; margin: 0;
}
</style>
</style>

File diff suppressed because it is too large Load Diff