78 lines
3.3 KiB
JavaScript
78 lines
3.3 KiB
JavaScript
/*
|
|
|--------------------------------------------------------------------------
|
|
| Agência PSI
|
|
|--------------------------------------------------------------------------
|
|
| Criado e desenvolvido por Leonardo Nohama
|
|
|
|
|
| Tecnologia aplicada à escuta.
|
|
| Estrutura para o cuidado.
|
|
|
|
|
| Arquivo: src/utils/menuPageOptions.js
|
|
| Data: 2026
|
|
| Local: São Carlos/SP — Brasil
|
|
|--------------------------------------------------------------------------
|
|
| © 2026 — Todos os direitos reservados
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
// Catálogo plano de páginas do sistema para o select de documentação SaaS.
|
|
// Menus com `to` em string são extraídos automaticamente.
|
|
// O menu da Clínica usa route names, então suas páginas são listadas manualmente.
|
|
|
|
import therapistMenuRaw from '@/navigation/menus/therapist.menu.js';
|
|
import saasMenuFn from '@/navigation/menus/saas.menu.js';
|
|
|
|
function flattenItems(items = [], groupLabel = '') {
|
|
const result = [];
|
|
for (const item of items) {
|
|
const to = item.to;
|
|
if (to && typeof to === 'string' && item.label) {
|
|
const prefix = groupLabel ? `${groupLabel} · ` : '';
|
|
result.push({ label: `${prefix}${item.label}`, path: to });
|
|
}
|
|
if (item.items?.length) {
|
|
result.push(...flattenItems(item.items, item.label || groupLabel));
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
function flattenMenu(menu = []) {
|
|
const result = [];
|
|
for (const group of menu) {
|
|
if (group.items?.length) {
|
|
result.push(...flattenItems(group.items, group.label));
|
|
} else if (group.to && typeof group.to === 'string' && group.label) {
|
|
result.push({ label: group.label, path: group.to });
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
const therapistPages = flattenMenu(therapistMenuRaw).map((p) => ({ ...p, label: `Terapeuta · ${p.label}` }));
|
|
|
|
const saasPages = flattenMenu(saasMenuFn({ isSaasAdmin: true })).map((p) => ({ ...p, label: `SaaS · ${p.label}` }));
|
|
|
|
// Clínica usa route names → listagem manual com os paths reais das rotas
|
|
const clinicPages = [
|
|
{ label: 'Clínica · Dashboard', path: '/admin' },
|
|
{ label: 'Clínica · Agenda da Clínica', path: '/admin/agenda/clinica' },
|
|
{ label: 'Clínica · Compromissos', path: '/admin/agenda/compromissos' },
|
|
{ label: 'Clínica · Lista de Pacientes', path: '/admin/pacientes' },
|
|
{ label: 'Clínica · Grupos de Pacientes', path: '/admin/pacientes/grupos' },
|
|
{ label: 'Clínica · Tags de Pacientes', path: '/admin/pacientes/tags' },
|
|
{ label: 'Clínica · Link Externo', path: '/admin/pacientes/link-externo' },
|
|
{ label: 'Clínica · Cadastros Recebidos', path: '/admin/pacientes/cadastro/recebidos' },
|
|
{ label: 'Clínica · Profissionais', path: '/admin/clinic/professionals' },
|
|
{ label: 'Clínica · Tipos de Clínica', path: '/admin/clinic/features' },
|
|
{ label: 'Clínica · Meu Plano', path: '/admin/meu-plano' },
|
|
{ label: 'Clínica · Segurança', path: '/admin/settings/security' },
|
|
{ label: 'Clínica · Agendamento Online', path: '/admin/online-scheduling' }
|
|
];
|
|
|
|
const portalPages = [
|
|
{ label: 'Portal · Dashboard', path: '/portal' },
|
|
{ label: 'Portal · Minhas Sessões', path: '/portal/sessoes' }
|
|
];
|
|
|
|
export const PAGE_OPTIONS = [...therapistPages, ...clinicPages, ...saasPages, ...portalPages];
|