carousel, agenda arquivados, agenda cor, agenda arquivados, grupos pacientes, pacientes arquivados - desativados, sessoes verificadas, ajuste notificações, Prontuario, Agenda Animation, Menu Profile, bagdes Profile, Offline

This commit is contained in:
Leonardo
2026-03-18 09:26:09 -03:00
parent 66f67cd40f
commit d6d2fe29d1
55 changed files with 3655 additions and 1512 deletions
+21
View File
@@ -6,13 +6,23 @@ import { useRouter, useRoute } from 'vue-router'
import { useMenuStore } from '@/stores/menuStore'
import { useLayout } from './composables/layout'
import { useEntitlementsStore } from '@/stores/entitlementsStore'
import { useMenuBadges } from '@/composables/useMenuBadges'
const menuStore = useMenuStore()
const { layoutState, hideMobileMenu } = useLayout()
const entitlements = useEntitlementsStore()
const menuBadges = useMenuBadges()
const router = useRouter()
const route = useRoute()
function menuBadgeLabel (item) {
const key = item?.badgeKey
if (!key) return null
const val = menuBadges[key]?.value || 0
if (!val) return null
return key === 'agendaHoje' ? `${val} hoje` : String(val)
}
const sections = computed(() => {
const model = menuStore.model || []
return model
@@ -389,6 +399,7 @@ watch(() => route.path, () => hideMobileMenu())
<i v-if="child.icon" :class="child.icon" class="rs__item-icon" />
<span>{{ child.label }}</span>
<span v-if="isLocked(child)" class="rs__pro">PRO</span>
<span v-if="menuBadgeLabel(child)" class="rs__badge">{{ menuBadgeLabel(child) }}</span>
</button>
</template>
@@ -405,6 +416,7 @@ watch(() => route.path, () => hideMobileMenu())
<i v-if="item.icon" :class="item.icon" class="rs__item-icon" />
<span>{{ item.label }}</span>
<span v-if="isLocked(item)" class="rs__pro">PRO</span>
<span v-if="menuBadgeLabel(item)" class="rs__badge">{{ menuBadgeLabel(item) }}</span>
</button>
</template>
</div>
@@ -672,6 +684,15 @@ watch(() => route.path, () => hideMobileMenu())
border: 1px solid var(--surface-border);
color: var(--text-color-secondary);
}
.rs__badge {
font-size: 0.62rem;
font-weight: 700;
padding: 1px 6px;
border-radius: 999px;
background: var(--primary-color);
color: #fff;
line-height: 1;
}
/* ── Slide-in da esquerda ────────────────────────────────── */
.rs-slide-enter-active,