From c4592979685ccb5f51648803c16c12198462714b Mon Sep 17 00:00:00 2001 From: deyvisonwanderley Date: Wed, 5 Nov 2025 12:09:41 -0300 Subject: [PATCH] refactor: update components to use lucide icons and improve structure - Replaced SVG icons with lucide-svelte components across various files for consistency and improved performance. - Refactored ActionGuard, ErrorModal, FileUpload, and other components to enhance readability and maintainability. - Updated the dashboard pages to include new icons and improved layout for better user experience. - Enhanced StatsCard component to support dynamic icon rendering, allowing for more flexible usage. - Improved overall styling and structure in multiple components to align with design standards. --- .../web/src/lib/components/ActionGuard.svelte | 154 +-- apps/web/src/lib/components/ErrorModal.svelte | 17 +- apps/web/src/lib/components/FileUpload.svelte | 30 +- .../lib/components/ModelosDeclaracoes.svelte | 321 +++-- apps/web/src/lib/components/PrintModal.svelte | 921 +++++++------ apps/web/src/lib/components/Sidebar.svelte | 94 +- .../src/lib/components/chat/ChatWindow.svelte | 75 +- .../lib/components/chat/MessageInput.svelte | 41 +- .../components/chat/NotificationBell.svelte | 105 +- .../src/lib/components/ti/StatsCard.svelte | 81 +- apps/web/src/routes/(dashboard)/+page.svelte | 1161 ++++++++--------- .../routes/(dashboard)/compras/+page.svelte | 91 +- .../(dashboard)/comunicacao/+page.svelte | 91 +- .../(dashboard)/controladoria/+page.svelte | 187 ++- .../(dashboard)/financeiro/+page.svelte | 187 ++- .../routes/(dashboard)/juridico/+page.svelte | 91 +- .../(dashboard)/licitacoes/+page.svelte | 187 ++- .../programas-esportivos/+page.svelte | 91 +- .../(dashboard)/recursos-humanos/+page.svelte | 534 ++++---- .../ti/painel-administrativo/+page.svelte | 29 +- .../routes/(dashboard)/ti/perfis/+page.svelte | 11 +- .../ti/solicitacoes-acesso/+page.svelte | 9 +- 22 files changed, 2085 insertions(+), 2423 deletions(-) diff --git a/apps/web/src/lib/components/ActionGuard.svelte b/apps/web/src/lib/components/ActionGuard.svelte index 90cbe93..d88ca22 100644 --- a/apps/web/src/lib/components/ActionGuard.svelte +++ b/apps/web/src/lib/components/ActionGuard.svelte @@ -1,83 +1,71 @@ - - -{#if verificando} -
-
- -

Verificando permissões...

-
-
-{:else if permitido} - {@render children?.()} -{:else} -
-
-
- - - -
-

Acesso Negado

-

- Você não tem permissão para acessar esta ação. -

-
-
-{/if} + + +{#if verificando} +
+
+ +

Verificando permissões...

+
+
+{:else if permitido} + {@render children?.()} +{:else} +
+
+
+ +
+

Acesso Negado

+

+ Você não tem permissão para acessar esta ação. +

+
+
+{/if} diff --git a/apps/web/src/lib/components/ErrorModal.svelte b/apps/web/src/lib/components/ErrorModal.svelte index e5b1ca0..410886c 100644 --- a/apps/web/src/lib/components/ErrorModal.svelte +++ b/apps/web/src/lib/components/ErrorModal.svelte @@ -1,4 +1,6 @@ - -
-
-

- - - - Modelos de Declarações -

- -
- - - -
-

Baixe os modelos, preencha, assine e faça upload no sistema

-

Estes documentos são necessários para completar o cadastro do funcionário

-
-
- -
- {#each modelosDeclaracoes as modelo} -
-
-
- -
- - - -
- - -
-

{modelo.nome}

-

{modelo.descricao}

- - -
- - - {#if showPreencherButton && modelo.podePreencherAutomaticamente && funcionario} - - {/if} -
-
-
-
-
- {/each} -
- -
-

💡 Dica: Após preencher e assinar os documentos, faça upload na seção "Documentação Anexa"

-
-
-
- + + +
+
+

+ + Modelos de Declarações +

+ +
+ +
+

Baixe os modelos, preencha, assine e faça upload no sistema

+

Estes documentos são necessários para completar o cadastro do funcionário

+
+
+ +
+ {#each modelosDeclaracoes as modelo} +
+
+
+ +
+ + + +
+ + +
+

{modelo.nome}

+

{modelo.descricao}

+ + +
+ + + {#if showPreencherButton && modelo.podePreencherAutomaticamente && funcionario} + + {/if} +
+
+
+
+
+ {/each} +
+ +
+

💡 Dica: Após preencher e assinar os documentos, faça upload na seção "Documentação Anexa"

+
+
+
+ diff --git a/apps/web/src/lib/components/PrintModal.svelte b/apps/web/src/lib/components/PrintModal.svelte index d411b57..566f550 100644 --- a/apps/web/src/lib/components/PrintModal.svelte +++ b/apps/web/src/lib/components/PrintModal.svelte @@ -1,463 +1,458 @@ - - - - - - - - + + + + + + + + diff --git a/apps/web/src/lib/components/Sidebar.svelte b/apps/web/src/lib/components/Sidebar.svelte index 0df953f..cc0b25b 100644 --- a/apps/web/src/lib/components/Sidebar.svelte +++ b/apps/web/src/lib/components/Sidebar.svelte @@ -12,6 +12,7 @@ import PresenceManager from "$lib/components/chat/PresenceManager.svelte"; import { getBrowserInfo } from "$lib/utils/browserInfo"; import { getAvatarUrl } from "$lib/utils/avatarGenerator"; + import { Menu, User, Home, UserPlus, XCircle, LogIn, Tag, Plus, Check } from "lucide-svelte"; let { children }: { children: Snippet } = $props(); @@ -180,21 +181,11 @@
- - - + strokeWidth={2.5} + />
@@ -261,15 +252,10 @@ /> {:else} - - - + /> {/if} @@ -301,21 +287,11 @@
- - - + strokeWidth={2.5} + /> {/if}
@@ -365,20 +341,10 @@ href="/" class={getMenuClasses(currentPath === "/")} > - - - + strokeWidth={2} + /> Dashboard @@ -399,20 +365,10 @@ href="/solicitar-acesso" class={getSolicitarClasses(currentPath === "/solicitar-acesso")} > - - - + strokeWidth={2} + /> Solicitar acesso @@ -446,9 +402,7 @@ {#if erroLogin}
- - - + {erroLogin}
{/if} @@ -492,9 +446,7 @@ Entrando... {:else} - - - + Entrar {/if} @@ -559,16 +511,12 @@
- - - +

Versão

1.0 26_2025

- - - + Em Desenvolvimento
@@ -603,9 +551,7 @@ class="btn btn-primary btn-lg w-full max-w-xs mx-auto shadow-lg hover:shadow-xl transition-all duration-300" onclick={closeAboutModal} > - - - + OK diff --git a/apps/web/src/lib/components/chat/ChatWindow.svelte b/apps/web/src/lib/components/chat/ChatWindow.svelte index 14636f6..39fe45a 100644 --- a/apps/web/src/lib/components/chat/ChatWindow.svelte +++ b/apps/web/src/lib/components/chat/ChatWindow.svelte @@ -11,7 +11,7 @@ import SalaReuniaoManager from "./SalaReuniaoManager.svelte"; import { getAvatarUrl } from "$lib/utils/avatarGenerator"; import { authStore } from "$lib/stores/auth.svelte"; - import { Bell, X } from "lucide-svelte"; + import { Bell, X, ArrowLeft, LogOut, MoreVertical, Users, Clock, XCircle } from "lucide-svelte"; interface Props { conversaId: string; @@ -117,18 +117,10 @@ aria-label="Voltar" title="Voltar para lista de conversas" > - - - + strokeWidth={2.5} + /> @@ -215,20 +207,10 @@ title="Sair da conversa" >
- - - - - + strokeWidth={2} + /> {/if} @@ -247,20 +229,10 @@ title="Recursos administrativos" >
- - - - - + strokeWidth={2} + /> {#if showAdminMenu}
    - - - + Gerenciar Participantes @@ -293,9 +263,7 @@ showAdminMenu = false; }} > - - - + Enviar Notificação @@ -324,9 +292,7 @@ })(); }} > - - - + Encerrar Reunião @@ -345,19 +311,10 @@ title="Agendar mensagem" >
    - - - - + strokeWidth={2} + /> diff --git a/apps/web/src/lib/components/chat/MessageInput.svelte b/apps/web/src/lib/components/chat/MessageInput.svelte index 4878c6d..8f35137 100644 --- a/apps/web/src/lib/components/chat/MessageInput.svelte +++ b/apps/web/src/lib/components/chat/MessageInput.svelte @@ -4,6 +4,7 @@ import type { Id } from "@sgse-app/backend/convex/_generated/dataModel"; import { onMount } from "svelte"; import { authStore } from "$lib/stores/auth.svelte"; + import { Paperclip, Smile, Send } from "lucide-svelte"; interface Props { conversaId: Id<"conversas">; @@ -340,18 +341,10 @@ {:else} - - - + strokeWidth={2} + /> {/if} @@ -367,21 +360,10 @@ title="Adicionar emoji" >
    - - - - - - + strokeWidth={2} + /> @@ -458,14 +440,9 @@ {:else} - - - + /> {/if} diff --git a/apps/web/src/lib/components/chat/NotificationBell.svelte b/apps/web/src/lib/components/chat/NotificationBell.svelte index 047f7da..6bf2489 100644 --- a/apps/web/src/lib/components/chat/NotificationBell.svelte +++ b/apps/web/src/lib/components/chat/NotificationBell.svelte @@ -6,6 +6,7 @@ import { ptBR } from "date-fns/locale"; import { onMount } from "svelte"; import { authStore } from "$lib/stores/auth.svelte"; + import { Bell, Mail, AtSign, Users, Calendar, Clock, BellOff } from "lucide-svelte"; // Queries e Client const client = useConvexClient(); @@ -200,22 +201,14 @@ {/if} - - - + fill="currentColor" + /> {#if count + (notificacoesFerias?.length || 0) > 0} @@ -264,50 +257,11 @@
    {#if notificacao.tipo === "nova_mensagem"} - - - + {:else if notificacao.tipo === "mencao"} - - - + {:else} - - - + {/if}
    @@ -349,20 +303,7 @@
    - - - +
    @@ -398,20 +339,7 @@
    - - - +
    @@ -436,20 +364,7 @@ {#if notificacoes.length === 0 && notificacoesFerias.length === 0 && notificacoesAusencias.length === 0}
    - - - +

    Nenhuma notificação

    {/if} diff --git a/apps/web/src/lib/components/ti/StatsCard.svelte b/apps/web/src/lib/components/ti/StatsCard.svelte index 8e879ae..8d17419 100644 --- a/apps/web/src/lib/components/ti/StatsCard.svelte +++ b/apps/web/src/lib/components/ti/StatsCard.svelte @@ -1,39 +1,42 @@ - - -
    -
    -
    - {#if icon} - - {@html icon} - - {/if} -
    -
    {title}
    -
    {value}
    - {#if description} -
    {description}
    - {/if} - {#if trend} -
    - {trend.isPositive ? '↗︎' : '↘︎'} {Math.abs(trend.value)}% -
    - {/if} -
    -
    - - + + +
    +
    +
    + {#if Icon} + + {:else if icon} + + {@html icon} + + {/if} +
    +
    {title}
    +
    {value}
    + {#if description} +
    {description}
    + {/if} + {#if trend} +
    + {trend.isPositive ? '↗︎' : '↘︎'} {Math.abs(trend.value)}% +
    + {/if} +
    +
    diff --git a/apps/web/src/routes/(dashboard)/+page.svelte b/apps/web/src/routes/(dashboard)/+page.svelte index fe42423..c3eb11c 100644 --- a/apps/web/src/routes/(dashboard)/+page.svelte +++ b/apps/web/src/routes/(dashboard)/+page.svelte @@ -1,582 +1,579 @@ - - -
    - - {#if showAlert} - {@const alertData = getAlertMessage()} -
    -
    - {alertData.icon} -
    -

    {alertData.title}

    -

    {alertData.message}

    - {#if alertType === "access_denied"} - - {/if} -
    - -
    -
    - {/if} - - -
    -
    -
    -

    - {getSaudacao()}! 👋 -

    -

    - Bem-vindo ao Sistema de Gerenciamento da Secretaria de Esportes -

    -

    - {currentTime.toLocaleDateString("pt-BR", { - weekday: "long", - year: "numeric", - month: "long", - day: "numeric", - })} - {" - "} - {currentTime.toLocaleTimeString("pt-BR")} -

    -
    -
    -
    Sistema Online
    -
    Atualizado
    -
    -
    -
    - - - {#if statsQuery.isLoading} -
    - -
    - {:else if statsQuery.data} -
    - -
    -
    -
    -
    -

    Total de Funcionários

    -

    - {formatNumber(statsQuery.data.totalFuncionarios)} -

    -

    - {statsQuery.data.funcionariosAtivos} ativos -

    -
    -
    - {calcPercentage(statsQuery.data.funcionariosAtivos, statsQuery.data.totalFuncionarios)}% -
    -
    -
    -
    - - -
    -
    -
    -
    -

    Solicitações Pendentes

    -

    - {formatNumber(statsQuery.data.solicitacoesPendentes)} -

    -

    - de {statsQuery.data.totalSolicitacoesAcesso} total -

    -
    -
    - - - -
    -
    -
    -
    - - -
    -
    -
    -
    -

    Símbolos Cadastrados

    -

    - {formatNumber(statsQuery.data.totalSimbolos)} -

    -

    - {statsQuery.data.cargoComissionado} CC / {statsQuery.data.funcaoGratificada} FG -

    -
    -
    - - - -
    -
    -
    -
    - - - {#if activityQuery.data} -
    -
    -
    -
    -

    Atividade (24h)

    -

    - {formatNumber(activityQuery.data.funcionariosCadastrados24h + activityQuery.data.solicitacoesAcesso24h)} -

    -

    - {activityQuery.data.funcionariosCadastrados24h} cadastros -

    -
    -
    - - - -
    -
    -
    -
    - {/if} -
    - - - {#if statusSistemaQuery.data && atividadeBDQuery.data && distribuicaoQuery.data} - {@const status = statusSistemaQuery.data} - {@const atividade = atividadeBDQuery.data} - {@const distribuicao = distribuicaoQuery.data} - -
    -
    -
    - - - -
    -
    -

    Monitoramento em Tempo Real

    -

    - Atualizado a cada segundo • {new Date(status.ultimaAtualizacao).toLocaleTimeString('pt-BR')} -

    -
    -
    - - - LIVE -
    -
    - - -
    - -
    -
    -
    -
    -

    Usuários Online

    -

    {status.usuariosOnline}

    -

    sessões ativas

    -
    -
    - - - -
    -
    -
    -
    - - -
    -
    -
    -
    -

    Total Registros

    -

    {status.totalRegistros.toLocaleString('pt-BR')}

    -

    no banco de dados

    -
    -
    - - - -
    -
    -
    -
    - - -
    -
    -
    -
    -

    Tempo Resposta

    -

    {status.tempoMedioResposta}ms

    -

    média atual

    -
    -
    - - - -
    -
    -
    -
    - - -
    -
    -
    -

    Uso do Sistema

    -
    -
    -
    - CPU - {status.cpuUsada}% -
    - -
    -
    -
    - Memória - {status.memoriaUsada}% -
    - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -

    Atividade do Banco de Dados

    -

    Entradas e saídas em tempo real (último minuto)

    -
    -
    - - Atualizando -
    -
    - -
    - -
    - {#each [10, 8, 6, 4, 2, 0] as val} - {val} - {/each} -
    - - -
    - - {#each Array.from({length: 6}) as _, i} -
    - {/each} - - -
    - {#each atividade.historico as ponto, idx} - {@const maxAtividade = Math.max(...atividade.historico.map(p => Math.max(p.entradas, p.saidas)))} -
    - -
    - -
    - - -
    -
    ↑ {ponto.entradas} entradas
    -
    ↓ {ponto.saidas} saídas
    -
    -
    - {/each} -
    -
    - - -
    - - -
    - -60s - -30s - agora -
    -
    - - -
    -
    -
    - Entradas no BD -
    -
    -
    - Saídas do BD -
    -
    -
    -
    - - -
    -
    -
    -

    Tipos de Operações

    -
    -
    -
    - Queries (Leituras) - {distribuicao.queries} -
    - -
    -
    -
    - Mutations (Escritas) - {distribuicao.mutations} -
    - -
    -
    -
    -
    - -
    -
    -

    Operações no Banco

    -
    -
    -
    - Leituras - {distribuicao.leituras} -
    - -
    -
    -
    - Escritas - {distribuicao.escritas} -
    - -
    -
    -
    -
    -
    -
    - {/if} - - - -
    -
    -
    -

    Status do Sistema

    -
    -
    - Banco de Dados - Online -
    -
    - API - Operacional -
    -
    - Backup - Atualizado -
    -
    -
    -
    - - - -
    -
    -

    Informações

    -
    -

    - Versão: 1.0.0 -

    -

    - Última Atualização: {new Date().toLocaleDateString("pt-BR")} -

    -

    - Suporte: TI SGSE -

    -
    -
    -
    -
    - {/if} -
    - - + + +
    + + {#if showAlert} + {@const alertData = getAlertMessage()} +
    +
    + {alertData.icon} +
    +

    {alertData.title}

    +

    {alertData.message}

    + {#if alertType === "access_denied"} + + {/if} +
    + +
    +
    + {/if} + + +
    +
    +
    +

    + {getSaudacao()}! 👋 +

    +

    + Bem-vindo ao Sistema de Gerenciamento da Secretaria de Esportes +

    +

    + {currentTime.toLocaleDateString("pt-BR", { + weekday: "long", + year: "numeric", + month: "long", + day: "numeric", + })} + {" - "} + {currentTime.toLocaleTimeString("pt-BR")} +

    +
    +
    +
    Sistema Online
    +
    Atualizado
    +
    +
    +
    + + + {#if statsQuery.isLoading} +
    + +
    + {:else if statsQuery.data} +
    + +
    +
    +
    +
    +

    Total de Funcionários

    +

    + {formatNumber(statsQuery.data.totalFuncionarios)} +

    +

    + {statsQuery.data.funcionariosAtivos} ativos +

    +
    +
    + {calcPercentage(statsQuery.data.funcionariosAtivos, statsQuery.data.totalFuncionarios)}% +
    +
    +
    +
    + + +
    +
    +
    +
    +

    Solicitações Pendentes

    +

    + {formatNumber(statsQuery.data.solicitacoesPendentes)} +

    +

    + de {statsQuery.data.totalSolicitacoesAcesso} total +

    +
    +
    + + + +
    +
    +
    +
    + + +
    +
    +
    +
    +

    Símbolos Cadastrados

    +

    + {formatNumber(statsQuery.data.totalSimbolos)} +

    +

    + {statsQuery.data.cargoComissionado} CC / {statsQuery.data.funcaoGratificada} FG +

    +
    +
    + + + +
    +
    +
    +
    + + + {#if activityQuery.data} +
    +
    +
    +
    +

    Atividade (24h)

    +

    + {formatNumber(activityQuery.data.funcionariosCadastrados24h + activityQuery.data.solicitacoesAcesso24h)} +

    +

    + {activityQuery.data.funcionariosCadastrados24h} cadastros +

    +
    +
    + + + +
    +
    +
    +
    + {/if} +
    + + + {#if statusSistemaQuery.data && atividadeBDQuery.data && distribuicaoQuery.data} + {@const status = statusSistemaQuery.data} + {@const atividade = atividadeBDQuery.data} + {@const distribuicao = distribuicaoQuery.data} + +
    +
    +
    + + + +
    +
    +

    Monitoramento em Tempo Real

    +

    + Atualizado a cada segundo • {new Date(status.ultimaAtualizacao).toLocaleTimeString('pt-BR')} +

    +
    +
    + + + LIVE +
    +
    + + +
    + +
    +
    +
    +
    +

    Usuários Online

    +

    {status.usuariosOnline}

    +

    sessões ativas

    +
    +
    + + + +
    +
    +
    +
    + + +
    +
    +
    +
    +

    Total Registros

    +

    {status.totalRegistros.toLocaleString('pt-BR')}

    +

    no banco de dados

    +
    +
    + + + +
    +
    +
    +
    + + +
    +
    +
    +
    +

    Tempo Resposta

    +

    {status.tempoMedioResposta}ms

    +

    média atual

    +
    +
    + + + +
    +
    +
    +
    + + +
    +
    +
    +

    Uso do Sistema

    +
    +
    +
    + CPU + {status.cpuUsada}% +
    + +
    +
    +
    + Memória + {status.memoriaUsada}% +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +

    Atividade do Banco de Dados

    +

    Entradas e saídas em tempo real (último minuto)

    +
    +
    + + Atualizando +
    +
    + +
    + +
    + {#each [10, 8, 6, 4, 2, 0] as val} + {val} + {/each} +
    + + +
    + + {#each Array.from({length: 6}) as _, i} +
    + {/each} + + +
    + {#each atividade.historico as ponto, idx} + {@const maxAtividade = Math.max(...atividade.historico.map(p => Math.max(p.entradas, p.saidas)))} +
    + +
    + +
    + + +
    +
    ↑ {ponto.entradas} entradas
    +
    ↓ {ponto.saidas} saídas
    +
    +
    + {/each} +
    +
    + + +
    + + +
    + -60s + -30s + agora +
    +
    + + +
    +
    +
    + Entradas no BD +
    +
    +
    + Saídas do BD +
    +
    +
    +
    + + +
    +
    +
    +

    Tipos de Operações

    +
    +
    +
    + Queries (Leituras) + {distribuicao.queries} +
    + +
    +
    +
    + Mutations (Escritas) + {distribuicao.mutations} +
    + +
    +
    +
    +
    + +
    +
    +

    Operações no Banco

    +
    +
    +
    + Leituras + {distribuicao.leituras} +
    + +
    +
    +
    + Escritas + {distribuicao.escritas} +
    + +
    +
    +
    +
    +
    +
    + {/if} + + + +
    +
    +
    +

    Status do Sistema

    +
    +
    + Banco de Dados + Online +
    +
    + API + Operacional +
    +
    + Backup + Atualizado +
    +
    +
    +
    + + + +
    +
    +

    Informações

    +
    +

    + Versão: 1.0.0 +

    +

    + Última Atualização: {new Date().toLocaleDateString("pt-BR")} +

    +

    + Suporte: TI SGSE +

    +
    +
    +
    +
    + {/if} +
    + + diff --git a/apps/web/src/routes/(dashboard)/compras/+page.svelte b/apps/web/src/routes/(dashboard)/compras/+page.svelte index d2964d2..619c5c0 100644 --- a/apps/web/src/routes/(dashboard)/compras/+page.svelte +++ b/apps/web/src/routes/(dashboard)/compras/+page.svelte @@ -1,48 +1,43 @@ - - -
    - - -
    -
    -
    - - - -
    -
    -

    Compras

    -

    Gestão de compras e aquisições

    -
    -
    -
    - -
    -
    -
    -
    - - - -
    -

    Módulo em Desenvolvimento

    -

    - O módulo de Compras está sendo desenvolvido e em breve estará disponível com funcionalidades completas para gestão de compras e aquisições. -

    -
    - - - - Em Desenvolvimento -
    -
    -
    -
    -
    - + + +
    + + +
    +
    +
    + +
    +
    +

    Compras

    +

    Gestão de compras e aquisições

    +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Módulo em Desenvolvimento

    +

    + O módulo de Compras está sendo desenvolvido e em breve estará disponível com funcionalidades completas para gestão de compras e aquisições. +

    +
    + + Em Desenvolvimento +
    +
    +
    +
    +
    + diff --git a/apps/web/src/routes/(dashboard)/comunicacao/+page.svelte b/apps/web/src/routes/(dashboard)/comunicacao/+page.svelte index 31165c4..9caada5 100644 --- a/apps/web/src/routes/(dashboard)/comunicacao/+page.svelte +++ b/apps/web/src/routes/(dashboard)/comunicacao/+page.svelte @@ -1,48 +1,43 @@ - - -
    - - -
    -
    -
    - - - -
    -
    -

    Comunicação

    -

    Gestão de comunicação institucional

    -
    -
    -
    - -
    -
    -
    -
    - - - -
    -

    Módulo em Desenvolvimento

    -

    - O módulo de Comunicação está sendo desenvolvido e em breve estará disponível com funcionalidades completas de gestão de comunicação institucional. -

    -
    - - - - Em Desenvolvimento -
    -
    -
    -
    -
    - + + +
    + + +
    +
    +
    + +
    +
    +

    Comunicação

    +

    Gestão de comunicação institucional

    +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Módulo em Desenvolvimento

    +

    + O módulo de Comunicação está sendo desenvolvido e em breve estará disponível com funcionalidades completas de gestão de comunicação institucional. +

    +
    + + Em Desenvolvimento +
    +
    +
    +
    +
    + diff --git a/apps/web/src/routes/(dashboard)/controladoria/+page.svelte b/apps/web/src/routes/(dashboard)/controladoria/+page.svelte index f74e3be..440da96 100644 --- a/apps/web/src/routes/(dashboard)/controladoria/+page.svelte +++ b/apps/web/src/routes/(dashboard)/controladoria/+page.svelte @@ -1,99 +1,88 @@ - - -
    - - - - -
    -
    -
    - - - -
    -
    -

    Controladoria

    -

    Controle e auditoria interna da secretaria

    -
    -
    -
    - - -
    -
    -
    -
    - - - -
    -

    Módulo em Desenvolvimento

    -

    - O módulo de Controladoria está sendo desenvolvido e em breve estará disponível com funcionalidades completas de controle e auditoria. -

    -
    - - - - Em Desenvolvimento -
    -
    -
    -
    - - -
    -

    Funcionalidades Previstas

    -
    -
    -
    -
    -
    - - - -
    -

    Auditoria Interna

    -
    -

    Controle e verificação de processos internos

    -
    -
    - -
    -
    -
    -
    - - - -
    -

    Compliance

    -
    -

    Conformidade com normas e regulamentos

    -
    -
    - -
    -
    -
    -
    - - - -
    -

    Indicadores de Gestão

    -
    -

    Monitoramento de KPIs e métricas

    -
    -
    -
    -
    -
    - + + +
    + + + + +
    +
    +
    + +
    +
    +

    Controladoria

    +

    Controle e auditoria interna da secretaria

    +
    +
    +
    + + +
    +
    +
    +
    + +
    +

    Módulo em Desenvolvimento

    +

    + O módulo de Controladoria está sendo desenvolvido e em breve estará disponível com funcionalidades completas de controle e auditoria. +

    +
    + + Em Desenvolvimento +
    +
    +
    +
    + + +
    +

    Funcionalidades Previstas

    +
    +
    +
    +
    +
    + +
    +

    Auditoria Interna

    +
    +

    Controle e verificação de processos internos

    +
    +
    + +
    +
    +
    +
    + +
    +

    Compliance

    +
    +

    Conformidade com normas e regulamentos

    +
    +
    + +
    +
    +
    +
    + +
    +

    Indicadores de Gestão

    +
    +

    Monitoramento de KPIs e métricas

    +
    +
    +
    +
    +
    + diff --git a/apps/web/src/routes/(dashboard)/financeiro/+page.svelte b/apps/web/src/routes/(dashboard)/financeiro/+page.svelte index 6852168..daf2763 100644 --- a/apps/web/src/routes/(dashboard)/financeiro/+page.svelte +++ b/apps/web/src/routes/(dashboard)/financeiro/+page.svelte @@ -1,99 +1,88 @@ - - -
    - - - - -
    -
    -
    - - - -
    -
    -

    Financeiro

    -

    Gestão financeira e orçamentária da secretaria

    -
    -
    -
    - - -
    -
    -
    -
    - - - -
    -

    Módulo em Desenvolvimento

    -

    - O módulo Financeiro está sendo desenvolvido e em breve estará disponível com funcionalidades completas de gestão financeira e orçamentária. -

    -
    - - - - Em Desenvolvimento -
    -
    -
    -
    - - -
    -

    Funcionalidades Previstas

    -
    -
    -
    -
    -
    - - - -
    -

    Controle Orçamentário

    -
    -

    Gestão e acompanhamento do orçamento anual

    -
    -
    - -
    -
    -
    -
    - - - -
    -

    Fluxo de Caixa

    -
    -

    Controle de entradas e saídas financeiras

    -
    -
    - -
    -
    -
    -
    - - - -
    -

    Relatórios Financeiros

    -
    -

    Geração de relatórios e demonstrativos

    -
    -
    -
    -
    -
    - + + +
    + + + + +
    +
    +
    + +
    +
    +

    Financeiro

    +

    Gestão financeira e orçamentária da secretaria

    +
    +
    +
    + + +
    +
    +
    +
    + +
    +

    Módulo em Desenvolvimento

    +

    + O módulo Financeiro está sendo desenvolvido e em breve estará disponível com funcionalidades completas de gestão financeira e orçamentária. +

    +
    + + Em Desenvolvimento +
    +
    +
    +
    + + +
    +

    Funcionalidades Previstas

    +
    +
    +
    +
    +
    + +
    +

    Controle Orçamentário

    +
    +

    Gestão e acompanhamento do orçamento anual

    +
    +
    + +
    +
    +
    +
    + +
    +

    Fluxo de Caixa

    +
    +

    Controle de entradas e saídas financeiras

    +
    +
    + +
    +
    +
    +
    + +
    +

    Relatórios Financeiros

    +
    +

    Geração de relatórios e demonstrativos

    +
    +
    +
    +
    +
    + diff --git a/apps/web/src/routes/(dashboard)/juridico/+page.svelte b/apps/web/src/routes/(dashboard)/juridico/+page.svelte index 486f80d..b82f26f 100644 --- a/apps/web/src/routes/(dashboard)/juridico/+page.svelte +++ b/apps/web/src/routes/(dashboard)/juridico/+page.svelte @@ -1,48 +1,43 @@ - - -
    - - -
    -
    -
    - - - -
    -
    -

    Jurídico

    -

    Assessoria jurídica e gestão de processos

    -
    -
    -
    - -
    -
    -
    -
    - - - -
    -

    Módulo em Desenvolvimento

    -

    - O módulo Jurídico está sendo desenvolvido e em breve estará disponível com funcionalidades completas de assessoria jurídica e gestão de processos. -

    -
    - - - - Em Desenvolvimento -
    -
    -
    -
    -
    - + + +
    + + +
    +
    +
    + +
    +
    +

    Jurídico

    +

    Assessoria jurídica e gestão de processos

    +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Módulo em Desenvolvimento

    +

    + O módulo Jurídico está sendo desenvolvido e em breve estará disponível com funcionalidades completas de assessoria jurídica e gestão de processos. +

    +
    + + Em Desenvolvimento +
    +
    +
    +
    +
    + diff --git a/apps/web/src/routes/(dashboard)/licitacoes/+page.svelte b/apps/web/src/routes/(dashboard)/licitacoes/+page.svelte index c4255aa..6075af1 100644 --- a/apps/web/src/routes/(dashboard)/licitacoes/+page.svelte +++ b/apps/web/src/routes/(dashboard)/licitacoes/+page.svelte @@ -1,99 +1,88 @@ - - -
    - - - - -
    -
    -
    - - - -
    -
    -

    Licitações

    -

    Gestão de processos licitatórios

    -
    -
    -
    - - -
    -
    -
    -
    - - - -
    -

    Módulo em Desenvolvimento

    -

    - O módulo de Licitações está sendo desenvolvido e em breve estará disponível com funcionalidades completas para gestão de processos licitatórios. -

    -
    - - - - Em Desenvolvimento -
    -
    -
    -
    - - -
    -

    Funcionalidades Previstas

    -
    -
    -
    -
    -
    - - - -
    -

    Processos Licitatórios

    -
    -

    Cadastro e acompanhamento de licitações

    -
    -
    - -
    -
    -
    -
    - - - -
    -

    Fornecedores

    -
    -

    Cadastro e gestão de fornecedores

    -
    -
    - -
    -
    -
    -
    - - - -
    -

    Documentação

    -
    -

    Gestão de documentos e editais

    -
    -
    -
    -
    -
    - + + +
    + + + + +
    +
    +
    + +
    +
    +

    Licitações

    +

    Gestão de processos licitatórios

    +
    +
    +
    + + +
    +
    +
    +
    + +
    +

    Módulo em Desenvolvimento

    +

    + O módulo de Licitações está sendo desenvolvido e em breve estará disponível com funcionalidades completas para gestão de processos licitatórios. +

    +
    + + Em Desenvolvimento +
    +
    +
    +
    + + +
    +

    Funcionalidades Previstas

    +
    +
    +
    +
    +
    + +
    +

    Processos Licitatórios

    +
    +

    Cadastro e acompanhamento de licitações

    +
    +
    + +
    +
    +
    +
    + +
    +

    Fornecedores

    +
    +

    Cadastro e gestão de fornecedores

    +
    +
    + +
    +
    +
    +
    + +
    +

    Documentação

    +
    +

    Gestão de documentos e editais

    +
    +
    +
    +
    +
    + diff --git a/apps/web/src/routes/(dashboard)/programas-esportivos/+page.svelte b/apps/web/src/routes/(dashboard)/programas-esportivos/+page.svelte index 356f023..47809cc 100644 --- a/apps/web/src/routes/(dashboard)/programas-esportivos/+page.svelte +++ b/apps/web/src/routes/(dashboard)/programas-esportivos/+page.svelte @@ -1,48 +1,43 @@ - - -
    - - -
    -
    -
    - - - -
    -
    -

    Programas Esportivos

    -

    Gestão de programas e projetos esportivos

    -
    -
    -
    - -
    -
    -
    -
    - - - -
    -

    Módulo em Desenvolvimento

    -

    - O módulo de Programas Esportivos está sendo desenvolvido e em breve estará disponível com funcionalidades completas para gestão de programas e projetos esportivos. -

    -
    - - - - Em Desenvolvimento -
    -
    -
    -
    -
    - + + +
    + + +
    +
    +
    + +
    +
    +

    Programas Esportivos

    +

    Gestão de programas e projetos esportivos

    +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Módulo em Desenvolvimento

    +

    + O módulo de Programas Esportivos está sendo desenvolvido e em breve estará disponível com funcionalidades completas para gestão de programas e projetos esportivos. +

    +
    + + Em Desenvolvimento +
    +
    +
    +
    +
    + diff --git a/apps/web/src/routes/(dashboard)/recursos-humanos/+page.svelte b/apps/web/src/routes/(dashboard)/recursos-humanos/+page.svelte index 90cf160..f3e9bec 100644 --- a/apps/web/src/routes/(dashboard)/recursos-humanos/+page.svelte +++ b/apps/web/src/routes/(dashboard)/recursos-humanos/+page.svelte @@ -1,281 +1,253 @@ - - -
    - -
    -

    Recursos Humanos

    -

    - Gerencie funcionários, símbolos e visualize relatórios do departamento -

    -
    - - - {#if statsQuery.data} -
    -
    -
    -
    - - - -
    -
    Total
    -
    {statsQuery.data.totalFuncionarios}
    -
    Funcionários cadastrados
    -
    -
    - -
    -
    -
    - - - -
    -
    Ativos
    -
    {statsQuery.data.funcionariosAtivos}
    -
    Funcionários ativos
    -
    -
    - -
    -
    -
    - - - -
    -
    Símbolos
    -
    {statsQuery.data.totalSimbolos}
    -
    Cargos e funções
    -
    -
    - -
    -
    -
    - - - -
    -
    CC / FG
    -
    {statsQuery.data.cargoComissionado} / {statsQuery.data.funcaoGratificada}
    -
    Distribuição
    -
    -
    -
    - {/if} - - -
    - {#each menuItems as categoria} -
    -
    - -
    -
    -
    - {@html categoria.icon} -
    -
    -
    -

    - {categoria.categoria} -

    -

    {categoria.descricao}

    -
    -
    - - - -
    -
    - {/each} -
    - - -
    - - - -
    -

    Precisa de ajuda?

    -
    - Entre em contato com o suporte técnico ou consulte a documentação do sistema para mais informações sobre as funcionalidades de Recursos Humanos. -
    -
    -
    -
    - - + + +
    + +
    +

    Recursos Humanos

    +

    + Gerencie funcionários, símbolos e visualize relatórios do departamento +

    +
    + + + {#if statsQuery.data} +
    +
    +
    +
    + +
    +
    Total
    +
    {statsQuery.data.totalFuncionarios}
    +
    Funcionários cadastrados
    +
    +
    + +
    +
    +
    + +
    +
    Ativos
    +
    {statsQuery.data.funcionariosAtivos}
    +
    Funcionários ativos
    +
    +
    + +
    +
    +
    + +
    +
    Símbolos
    +
    {statsQuery.data.totalSimbolos}
    +
    Cargos e funções
    +
    +
    + +
    +
    +
    + +
    +
    CC / FG
    +
    {statsQuery.data.cargoComissionado} / {statsQuery.data.funcaoGratificada}
    +
    Distribuição
    +
    +
    +
    + {/if} + + +
    + {#each menuItems as categoria} +
    +
    + +
    +
    + +
    +
    +

    + {categoria.categoria} +

    +

    {categoria.descricao}

    +
    +
    + + +
    + {#each categoria.opcoes as opcao} + +
    +
    +
    + +
    + +
    +

    + {opcao.nome} +

    +

    + {opcao.descricao} +

    +
    +
    + {/each} +
    +
    +
    + {/each} +
    + + +
    + +
    +

    Precisa de ajuda?

    +
    + Entre em contato com o suporte técnico ou consulte a documentação do sistema para mais informações sobre as funcionalidades de Recursos Humanos. +
    +
    +
    +
    + + diff --git a/apps/web/src/routes/(dashboard)/ti/painel-administrativo/+page.svelte b/apps/web/src/routes/(dashboard)/ti/painel-administrativo/+page.svelte index 0349c24..d005651 100644 --- a/apps/web/src/routes/(dashboard)/ti/painel-administrativo/+page.svelte +++ b/apps/web/src/routes/(dashboard)/ti/painel-administrativo/+page.svelte @@ -2,6 +2,7 @@ import { useQuery, useConvexClient } from "convex-svelte"; import { api } from "@sgse-app/backend/convex/_generated/api"; import StatsCard from "$lib/components/ti/StatsCard.svelte"; + import { BarChart3, Users, CheckCircle2, Ban, Clock, Plus, Layers, FileText, Info } from "lucide-svelte"; const client = useConvexClient(); const usuariosQuery = useQuery(api.usuarios.listar, {}); @@ -45,9 +46,7 @@
    - - - +

    Dashboard Administrativo TI

    @@ -62,7 +61,7 @@ @@ -70,7 +69,7 @@ title="Usuários Ativos" value={stats.ativos} description="{stats.total > 0 ? ((stats.ativos / stats.total) * 100).toFixed(1) + '% do total' : '0% do total'}" - icon='' + Icon={CheckCircle2} color="success" /> @@ -78,7 +77,7 @@ title="Usuários Bloqueados" value={stats.bloqueados} description="Requerem atenção" - icon='' + Icon={Ban} color="error" /> @@ -86,7 +85,7 @@ title="Usuários Inativos" value={stats.inativos} description="Desativados" - icon='' + Icon={Clock} color="warning" />
    @@ -102,23 +101,17 @@

    Ações Rápidas

    @@ -127,9 +120,7 @@
    - - - + Sistema de Gestão da Secretaria de Esportes - Versão 2.0 com controle avançado de acesso
    diff --git a/apps/web/src/routes/(dashboard)/ti/perfis/+page.svelte b/apps/web/src/routes/(dashboard)/ti/perfis/+page.svelte index e61b8e5..0da0cea 100644 --- a/apps/web/src/routes/(dashboard)/ti/perfis/+page.svelte +++ b/apps/web/src/routes/(dashboard)/ti/perfis/+page.svelte @@ -6,6 +6,7 @@ import type { Id } from "@sgse-app/backend/convex/_generated/dataModel"; import { format } from "date-fns"; import { ptBR } from "date-fns/locale"; + import { Users, Shield, AlertTriangle, Info, Building2 } from "lucide-svelte"; type Role = { _id: Id<"roles">; @@ -174,35 +175,35 @@
    diff --git a/apps/web/src/routes/(dashboard)/ti/solicitacoes-acesso/+page.svelte b/apps/web/src/routes/(dashboard)/ti/solicitacoes-acesso/+page.svelte index 1034330..43dfb7f 100644 --- a/apps/web/src/routes/(dashboard)/ti/solicitacoes-acesso/+page.svelte +++ b/apps/web/src/routes/(dashboard)/ti/solicitacoes-acesso/+page.svelte @@ -6,6 +6,7 @@ import StatsCard from "$lib/components/ti/StatsCard.svelte"; import { format } from "date-fns"; import { ptBR } from "date-fns/locale"; + import { FileText, Clock, CheckCircle2, XCircle } from "lucide-svelte"; type StatusSolicitacao = "pendente" | "aprovado" | "rejeitado"; @@ -294,7 +295,7 @@ @@ -302,7 +303,7 @@ title="Pendentes" value={stats.pendentes} description="{stats.total > 0 ? ((stats.pendentes / stats.total) * 100).toFixed(1) + '% do total' : '0% do total'}" - icon='' + Icon={Clock} color="warning" /> @@ -310,7 +311,7 @@ title="Aprovadas" value={stats.aprovadas} description="{stats.total > 0 ? ((stats.aprovadas / stats.total) * 100).toFixed(1) + '% do total' : '0% do total'}" - icon='' + Icon={CheckCircle2} color="success" /> @@ -318,7 +319,7 @@ title="Rejeitadas" value={stats.rejeitadas} description="{stats.total > 0 ? ((stats.rejeitadas / stats.total) * 100).toFixed(1) + '% do total' : '0% do total'}" - icon='' + Icon={XCircle} color="error" />