Copyright, Financeiro, Lançamentos, aprimoramentos de ui

This commit is contained in:
Leonardo
2026-03-21 08:05:40 -03:00
parent 29ed349cf2
commit a89d1f5560
268 changed files with 58870 additions and 1752 deletions
+16 -1
View File
@@ -1,4 +1,19 @@
// src/utils/dateBR.js
/*
|--------------------------------------------------------------------------
| Agência PSI
|--------------------------------------------------------------------------
| Criado e desenvolvido por Leonardo Nohama
|
| Tecnologia aplicada à escuta.
| Estrutura para o cuidado.
|
| Arquivo: src/utils/dateBR.js
| Data: 2026
| Local: São Carlos/SP — Brasil
|--------------------------------------------------------------------------
| © 2026 — Todos os direitos reservados
|--------------------------------------------------------------------------
*/
export function pad2(n) {
return String(n).padStart(2, '0')
+16 -1
View File
@@ -1,4 +1,19 @@
// src/utils/feriadosBR.js
/*
|--------------------------------------------------------------------------
| Agência PSI
|--------------------------------------------------------------------------
| Criado e desenvolvido por Leonardo Nohama
|
| Tecnologia aplicada à escuta.
| Estrutura para o cuidado.
|
| Arquivo: src/utils/feriadosBR.js
| Data: 2026
| Local: São Carlos/SP — Brasil
|--------------------------------------------------------------------------
| © 2026 — Todos os direitos reservados
|--------------------------------------------------------------------------
*/
// Gera feriados nacionais brasileiros por algoritmo — sem API externa.
/**
+16 -1
View File
@@ -1,4 +1,19 @@
// src/utils/googleCalendarLink.js
/*
|--------------------------------------------------------------------------
| Agência PSI
|--------------------------------------------------------------------------
| Criado e desenvolvido por Leonardo Nohama
|
| Tecnologia aplicada à escuta.
| Estrutura para o cuidado.
|
| Arquivo: src/utils/googleCalendarLink.js
| Data: 2026
| Local: São Carlos/SP — Brasil
|--------------------------------------------------------------------------
| © 2026 — Todos os direitos reservados
|--------------------------------------------------------------------------
*/
// Gera uma URL de "Adicionar ao Google Calendar" via link template.
// Não requer OAuth — abre o Google Calendar do usuário com o evento pré-preenchido.
+16 -1
View File
@@ -1,4 +1,19 @@
// src/utils/menuPageOptions.js
/*
|--------------------------------------------------------------------------
| 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.
+16 -1
View File
@@ -1,4 +1,19 @@
// src/utils/slotsGenerator.js
/*
|--------------------------------------------------------------------------
| Agência PSI
|--------------------------------------------------------------------------
| Criado e desenvolvido por Leonardo Nohama
|
| Tecnologia aplicada à escuta.
| Estrutura para o cuidado.
|
| Arquivo: src/utils/slotsGenerator.js
| Data: 2026
| Local: São Carlos/SP — Brasil
|--------------------------------------------------------------------------
| © 2026 — Todos os direitos reservados
|--------------------------------------------------------------------------
*/
function toMinutes(hhmm) {
const [h, m] = String(hhmm).slice(0, 5).split(':').map(Number)
+70
View File
@@ -0,0 +1,70 @@
/*
|--------------------------------------------------------------------------
| Agência PSI
|--------------------------------------------------------------------------
| Criado e desenvolvido por Leonardo Nohama
|
| Tecnologia aplicada à escuta.
| Estrutura para o cuidado.
|
| Arquivo: src/utils/systemGroupColors.js
| Data: 2026
| Local: São Carlos/SP — Brasil
|--------------------------------------------------------------------------
| © 2026 — Todos os direitos reservados
|--------------------------------------------------------------------------
|
| Armazena cores personalizadas de grupos de sistema no localStorage.
| A RLS do Supabase impede UPDATE em is_system=true, portanto as
| preferências de cor ficam no cliente, por usuário/dispositivo.
|
| Chave: 'apsi_sys_grp_colors' → { [groupId]: '#hex' }
|--------------------------------------------------------------------------
*/
const STORAGE_KEY = 'apsi_sys_grp_colors'
/** Cores padrão por nome de grupo de sistema (fallback quando não há cor salva) */
export const SYSTEM_GROUP_DEFAULT_COLORS = {
'adultos': '#3b82f6',
'crianças': '#22c55e',
'adolescentes': '#8b5cf6',
'casais': '#ec4899',
'família': '#f97316',
'familias': '#f97316',
'famílias': '#f97316',
'grupos': '#14b8a6',
'idosos': '#64748b',
'infantil': '#22c55e',
'outro': '#94a3b8',
'outros': '#94a3b8',
'geral': '#6366f1',
'supervisão': '#eab308',
'supervisao': '#eab308',
}
/** Retorna a cor padrão (sem '#' extra) para um grupo de sistema pelo nome */
export function getSystemGroupDefaultColor (name) {
return SYSTEM_GROUP_DEFAULT_COLORS[String(name || '').trim().toLowerCase()] || '#6366f1'
}
function readMap () {
try { return JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}') } catch { return {} }
}
export function getSysGroupColor (groupId) {
if (!groupId) return null
return readMap()[groupId] || null
}
export function setSysGroupColor (groupId, color) {
if (!groupId) return
const map = readMap()
if (color) map[groupId] = color.startsWith('#') ? color : `#${color}`
else delete map[groupId]
localStorage.setItem(STORAGE_KEY, JSON.stringify(map))
}
export function getAllSysGroupColors () {
return readMap()
}
+16 -1
View File
@@ -1,4 +1,19 @@
// src/utils/upgradeContext.js
/*
|--------------------------------------------------------------------------
| Agência PSI
|--------------------------------------------------------------------------
| Criado e desenvolvido por Leonardo Nohama
|
| Tecnologia aplicada à escuta.
| Estrutura para o cuidado.
|
| Arquivo: src/utils/upgradeContext.js
| Data: 2026
| Local: São Carlos/SP — Brasil
|--------------------------------------------------------------------------
| © 2026 — Todos os direitos reservados
|--------------------------------------------------------------------------
*/
/**
* Parse "missing" query param into array of unique feature keys.