diff --git a/apps/web/src/lib/components/AlterarStatusFerias.svelte b/apps/web/src/lib/components/AlterarStatusFerias.svelte index 54f979f..2ecdf5e 100644 --- a/apps/web/src/lib/components/AlterarStatusFerias.svelte +++ b/apps/web/src/lib/components/AlterarStatusFerias.svelte @@ -2,6 +2,7 @@ import { useConvexClient } from 'convex-svelte'; import { api } from '@sgse-app/backend/convex/_generated/api'; import type { Id, Doc } from '@sgse-app/backend/convex/_generated/dataModel'; + import { XCircle, CheckCircle, AlertTriangle, Info, X, Clock } from 'lucide-svelte'; type PeriodoFerias = Doc<'ferias'> & { funcionario?: Doc<'funcionarios'> | null; @@ -129,20 +130,7 @@
{#each solicitacao.historicoAlteracoes as hist (hist.data)}
- - - + {formatarData(hist.data)} - {hist.acao} @@ -156,19 +144,7 @@ {#if solicitacao.status !== 'Cancelado_RH'}
- - - +

Cancelar Férias

@@ -185,39 +161,14 @@ onclick={cancelarPorRH} disabled={processando} > - - - + Cancelar Férias (RH)
{:else}
- - - + Esta solicitação já foi cancelada pelo RH.
{/if} @@ -225,19 +176,7 @@ {#if solicitacao.status === 'reprovado' && solicitacao.motivoReprovacao}
- - - +
Motivo da Reprovação:
{solicitacao.motivoReprovacao}
@@ -248,19 +187,7 @@ {#if erro}
- - - + {erro}
{/if} diff --git a/apps/web/src/lib/components/AprovarAusencias.svelte b/apps/web/src/lib/components/AprovarAusencias.svelte index c1b7368..e0c39e8 100644 --- a/apps/web/src/lib/components/AprovarAusencias.svelte +++ b/apps/web/src/lib/components/AprovarAusencias.svelte @@ -4,6 +4,7 @@ import type { Id, Doc } from '@sgse-app/backend/convex/_generated/dataModel'; import ErrorModal from './ErrorModal.svelte'; import UserAvatar from './chat/UserAvatar.svelte'; + import { Calendar, FileText, XCircle, X, Check, Clock, User, Info } from 'lucide-svelte'; type SolicitacaoAusencia = Doc<'solicitacoesAusencias'> & { funcionario?: Doc<'funcionarios'> | null; @@ -145,20 +146,7 @@

- - - +
Funcionário

@@ -201,20 +189,7 @@

- - - +
Período da Ausência

@@ -253,20 +228,7 @@

- - - +
Motivo da Ausência

@@ -294,19 +256,7 @@ {#if erro}
- - - + {erro}
{/if} @@ -323,20 +273,7 @@ {#if processando} {:else} - - - + {/if} Reprovar @@ -349,20 +286,7 @@ {#if processando} {:else} - - - + {/if} Aprovar @@ -386,11 +310,7 @@ {/if} {:else}
- > & { funcionario?: Doc<'funcionarios'> | null; @@ -278,20 +279,7 @@
{#each periodo.historicoAlteracoes as hist}
- - - + {formatarData(hist.data)} - {hist.acao} @@ -315,20 +303,7 @@ onclick={aprovar} disabled={processando} > - - - + Aprovar @@ -338,20 +313,7 @@ onclick={() => (modoAjuste = true)} disabled={processando} > - - - + Ajustar Datas e Aprovar
@@ -372,20 +334,7 @@ onclick={reprovar} disabled={processando || !motivoReprovacao.trim()} > - - - + Reprovar
@@ -453,20 +402,7 @@ onclick={ajustarEAprovar} disabled={processando || !novaDataInicio || !novaDataFim || diasAjustados <= 0} > - - - + Confirmar e Aprovar
@@ -477,16 +413,7 @@ {#if periodo.status === 'reprovado' && periodo.motivoReprovacao}
- - d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" /> @@ -500,19 +427,7 @@ {#if erro}
- - - + {erro}
{/if} diff --git a/apps/web/src/lib/components/ausencias/WizardSolicitacaoAusencia.svelte b/apps/web/src/lib/components/ausencias/WizardSolicitacaoAusencia.svelte index a3a7a67..658edef 100644 --- a/apps/web/src/lib/components/ausencias/WizardSolicitacaoAusencia.svelte +++ b/apps/web/src/lib/components/ausencias/WizardSolicitacaoAusencia.svelte @@ -6,6 +6,7 @@ import { toast } from 'svelte-sonner'; import type { Id } from '@sgse-app/backend/convex/_generated/dataModel'; import { SvelteDate } from 'svelte/reactivity'; + import { Check, ChevronLeft, ChevronRight, Calendar, Info, AlertTriangle, X, CheckCircle } from 'lucide-svelte'; interface Props { funcionarioId: Id<'funcionarios'>; @@ -168,20 +169,7 @@
{#if passoAtual > 1} - - - + {:else} {passoAtual} {/if} @@ -196,20 +184,7 @@
{#if passoAtual > 2} - - - + {:else} 2 {/if} @@ -251,19 +226,7 @@ {#if dataInicio && dataFim}
- - - +

Período selecionado!

@@ -289,20 +252,7 @@

- - - + Resumo do Período

@@ -353,19 +303,7 @@ {#if motivo.trim().length > 0 && motivo.trim().length < 10}
- - - + O motivo deve ter no mínimo 10 caracteres
{/if} @@ -380,20 +318,7 @@ onclick={passoAnterior} disabled={passoAtual === 1 || processando} > - - - + Voltar @@ -405,20 +330,7 @@ disabled={processando} > Próximo - - - + {:else} diff --git a/apps/web/src/lib/components/chamados/TicketForm.svelte b/apps/web/src/lib/components/chamados/TicketForm.svelte index 1c965c5..653dd06 100644 --- a/apps/web/src/lib/components/chamados/TicketForm.svelte +++ b/apps/web/src/lib/components/chamados/TicketForm.svelte @@ -1,6 +1,7 @@
- {@html config.icon} +
diff --git a/apps/web/src/lib/components/ferias/WizardSolicitacaoFerias.svelte b/apps/web/src/lib/components/ferias/WizardSolicitacaoFerias.svelte index 38e2762..f8f9d33 100644 --- a/apps/web/src/lib/components/ferias/WizardSolicitacaoFerias.svelte +++ b/apps/web/src/lib/components/ferias/WizardSolicitacaoFerias.svelte @@ -3,6 +3,7 @@ import { api } from '@sgse-app/backend/convex/_generated/api'; import { toast } from 'svelte-sonner'; import type { Id } from '@sgse-app/backend/convex/_generated/dataModel'; + import { Check, Zap, Clock, Info, AlertTriangle, Calendar, X, Plus, ChevronLeft, ChevronRight, Trash2, CheckCircle } from 'lucide-svelte'; interface Props { funcionarioId: Id<'funcionarios'>; @@ -247,20 +248,7 @@ style:box-shadow={passoAtual === i + 1 ? '0 0 20px rgba(102, 126, 234, 0.5)' : 'none'} > {#if passoAtual > i + 1} - - - + {:else} {i + 1} {/if} @@ -335,19 +323,7 @@
- - - +
Total Direito
{saldo.diasDireito}
@@ -356,19 +332,7 @@
- - - +
Disponível
@@ -379,19 +343,7 @@
- - - +
Usado
{saldo.diasUsados}
@@ -401,19 +353,7 @@
- - - +

{saldo.regimeTrabalho}

@@ -431,19 +371,7 @@ {#if saldo.diasDisponiveis === 0}

- - - + Você não tem saldo disponível para este ano.
{/if} @@ -451,19 +379,7 @@
{:else}
- - - + Nenhum saldo encontrado para este ano.
{/if} @@ -481,19 +397,7 @@
- - - +

Saldo disponível: @@ -554,20 +458,7 @@ onclick={adicionarPeriodo} disabled={!dataInicioPeriodo || !dataFimPeriodo || diasPeriodoAtual <= 0} > - - - + Adicionar Período

@@ -602,20 +493,7 @@ class="btn btn-error btn-sm gap-2" onclick={() => removerPeriodo(index)} > - - - + Remover
@@ -630,36 +508,12 @@
{#if validacao.valido}
- - - + ✅ Períodos válidos! Total: {validacao.totalDias} dias
{:else}
- - - +

Erros encontrados:

    @@ -673,19 +527,7 @@ {#if validacao.avisos.length > 0}
    - - - +

    Avisos:

      @@ -775,20 +617,7 @@
      {#if passoAtual > 1} {:else if onCancelar} @@ -805,20 +634,7 @@ disabled={passoAtual === 1 && (!saldo || saldo.diasDisponiveis === 0)} > Próximo - - - + {:else} diff --git a/apps/web/src/lib/components/ponto/RegistroPonto.svelte b/apps/web/src/lib/components/ponto/RegistroPonto.svelte index 331fcf4..6d23edc 100644 --- a/apps/web/src/lib/components/ponto/RegistroPonto.svelte +++ b/apps/web/src/lib/components/ponto/RegistroPonto.svelte @@ -22,7 +22,10 @@ TrendingUp, TrendingDown, Printer, - Camera + Camera, + AlertTriangle, + Image, + Info } from 'lucide-svelte'; import type { Id } from '@sgse-app/backend/convex/_generated/dataModel'; import jsPDF from 'jspdf'; @@ -1020,19 +1023,7 @@ {#if !temFuncionarioAssociado}
      - - - +

      Funcionário Não Associado

      @@ -1047,19 +1038,7 @@ {#if estaDispensado && motivoDispensa && temFuncionarioAssociado}
      - - - +

      Registro de Ponto Dispensado

      @@ -1760,20 +1739,7 @@
      - - - +

      Foto Capturada

      @@ -1842,19 +1808,7 @@
      - - - +

      Confirme os dados

      diff --git a/apps/web/src/routes/(dashboard)/perfil/+page.svelte b/apps/web/src/routes/(dashboard)/perfil/+page.svelte index 3faf667..f4e5d16 100644 --- a/apps/web/src/routes/(dashboard)/perfil/+page.svelte +++ b/apps/web/src/routes/(dashboard)/perfil/+page.svelte @@ -31,7 +31,9 @@ ListChecks, Info, Fingerprint, - Palette + Palette, + Camera, + Users as UsersIcon } from 'lucide-svelte'; import RegistroPonto from '$lib/components/ponto/RegistroPonto.svelte'; import TicketCard from '$lib/components/chamados/TicketCard.svelte'; @@ -629,7 +631,7 @@
      @@ -664,7 +666,7 @@ class="h-full w-full object-cover" /> {:else} - + {/if}
      @@ -672,29 +674,11 @@
      @@ -708,20 +692,7 @@

      - - - + {funcionario.descricaoCargo}

      {/if} @@ -729,26 +700,13 @@

      - - - + {currentUser.data?.email}

      {currentUser.data?.role?.nome || 'Usuário'}
      @@ -784,7 +742,7 @@
      {:else}
      ✅ Ativo
      @@ -804,7 +762,7 @@
      @@ -980,27 +912,14 @@ {funcionario?.statusFerias === 'em_ferias' ? 'Em Férias' : 'Ativo'}

      - - - +
      @@ -1033,15 +952,15 @@
      - +

      @@ -1058,9 +977,9 @@ class="hover:bg-base-200/60 border-base-300/50 flex items-start gap-3 rounded-lg border p-4 shadow-sm transition-all hover:shadow-md" >
      - +
      - +
      {#if funcionario}
      - +

      @@ -1142,9 +1061,9 @@ class="hover:bg-base-200/60 border-base-300/50 flex items-start gap-3 rounded-lg border p-4 shadow-sm transition-all hover:shadow-md" >
      - +
      - +
      - +
      - +
      -
      +
      Em Férias
      -
      +
      {statsMinhasFerias.emFerias}
      Agora
      @@ -1884,7 +1803,7 @@
      -
      +
      Total
      -
      +
      {statsMinhasAusencias.total}
      Solicitações
      @@ -1986,7 +1905,7 @@

      - +

      @@ -2302,15 +2221,15 @@ {:else if abaAtiva === 'aprovar-ausencias'}
      - +

      @@ -2438,15 +2357,15 @@
      - +

      @@ -2607,7 +2526,7 @@ @@ -1246,120 +1243,42 @@ class="tab gap-2 {abaAtiva === 'dashboard' ? 'tab-active' : ''}" onclick={() => (abaAtiva = 'dashboard')} > - - - + Dashboard

      @@ -1372,20 +1291,7 @@
      - - - +
      Atestados Ativos
      @@ -1395,20 +1301,7 @@
      - - - +
      Licenças Ativas
      @@ -1418,20 +1311,7 @@
      - - - +
      Afastados Hoje
      @@ -1441,20 +1321,7 @@
      - - - +
      Dias no Mês
      @@ -1828,20 +1695,7 @@
      - - - +

      Registrar Atestado Médico

      @@ -1927,20 +1781,7 @@
      @@ -1978,20 +1806,7 @@
      - - - +

      Registrar Declaração de Comparecimento

      @@ -2063,20 +1878,7 @@
      @@ -2114,20 +1903,7 @@
      - - - +

      Registrar Licença Maternidade

      @@ -2241,20 +2017,7 @@
      @@ -2292,20 +2042,7 @@
      - - - +

      Registrar Licença Paternidade

      @@ -2382,20 +2119,7 @@
      @@ -2433,20 +2144,7 @@
      - - - +

      Imprimir Relatórios

      @@ -2590,20 +2288,7 @@ {#if gerandoRelatorio} {:else} - - - + {/if} Imprimir PDF @@ -2615,20 +2300,7 @@ {#if gerandoRelatorio} {:else} - - - + {/if} Exportar Excel diff --git a/apps/web/src/routes/(dashboard)/recursos-humanos/ferias/+page.svelte b/apps/web/src/routes/(dashboard)/recursos-humanos/ferias/+page.svelte index 1e1791f..6527f46 100644 --- a/apps/web/src/routes/(dashboard)/recursos-humanos/ferias/+page.svelte +++ b/apps/web/src/routes/(dashboard)/recursos-humanos/ferias/+page.svelte @@ -19,6 +19,23 @@ import { format } from 'date-fns'; import { ptBR } from 'date-fns/locale'; import { toast } from 'svelte-sonner'; + import { + Calendar, + ArrowLeft, + BarChart3, + FileText, + Printer, + XCircle, + Clock, + CheckCircle, + X, + Download, + Search, + Filter, + Eye, + Edit, + Trash2 + } from 'lucide-svelte'; type CalendarConstructor = typeof import('@fullcalendar/core').Calendar; type CalendarInstance = import('@fullcalendar/core').Calendar; type EventInput = import('@fullcalendar/core').EventInput; @@ -1914,20 +1931,7 @@
      - - - +

      Dashboard de Férias

      @@ -1935,20 +1939,7 @@
      @@ -1960,60 +1951,21 @@ class="tab gap-2 {abaAtiva === 'dashboard' ? 'tab-active' : ''}" onclick={() => (abaAtiva = 'dashboard')} > - - - + Dashboard
      @@ -2021,19 +1973,7 @@ {#if hasError}
      - - - +

      Erro ao carregar dados

      {errorMessage}
      @@ -2048,20 +1988,7 @@
      - - - +

      Dashboard de Férias

      @@ -2086,20 +2013,7 @@ {:else}
      - - - +
      Total
      {stats.total}
      @@ -2108,20 +2022,7 @@
      - - - +
      Aguardando
      {stats.aguardando}
      @@ -2130,20 +2031,7 @@
      - - - +
      Aprovadas
      {stats.aprovadas}
      @@ -2152,17 +2040,8 @@
      - - +
      d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" /> @@ -2194,20 +2073,7 @@
      - - - +

      Filtros

      @@ -2462,20 +2328,7 @@
      - - - +

      Calendário Geral de Férias

      @@ -2513,20 +2366,7 @@
      - - - +

      @@ -2556,20 +2396,7 @@
      - - - +

      Solicitações de Férias

      @@ -2600,20 +2427,7 @@
      - - - +

      Filtros

      @@ -2862,19 +2676,7 @@ {#if solicitacoesFiltradas.length === 0}
      - - - + Nenhuma solicitação encontrada com os filtros aplicados.
      {:else} @@ -2951,26 +2753,7 @@ class="btn btn-primary btn-sm gap-2" onclick={() => selecionarPeriodo(periodo._id)} > - - - - + Alterar Status @@ -2989,20 +2772,7 @@
      - - - +

      Imprimir Relatórios

      @@ -3019,20 +2789,7 @@
      - - - +

      Filtros

      @@ -3232,17 +2989,7 @@
      - - d="M17 17h2a2 2 0 002-2v-5a2 2 0 00-2-2h-2V6a2 2 0 00-2-2H9a2 2 0 00-2 2v2H5a2 2 0 00-2 2v5a2 2 0 002 2h2m10 0v2a2 2 0 01-2 2H9a2 2 0 01-2-2v-2m10 0H7" /> @@ -3268,20 +3015,7 @@ {#if gerandoRelatorio} {:else} - - - + {/if} Imprimir PDF @@ -3295,20 +3029,7 @@ {#if gerandoRelatorio} {:else} - - - + {/if} Exportar Excel diff --git a/apps/web/src/routes/(dashboard)/ti/+page.svelte b/apps/web/src/routes/(dashboard)/ti/+page.svelte index 83283a2..c05b7ff 100644 --- a/apps/web/src/routes/(dashboard)/ti/+page.svelte +++ b/apps/web/src/routes/(dashboard)/ti/+page.svelte @@ -1,5 +1,20 @@
      @@ -8,20 +9,7 @@
      - - - +

      @@ -33,20 +21,7 @@

      - - - + Voltar
      diff --git a/apps/web/src/routes/(dashboard)/ti/notificacoes/+page.svelte b/apps/web/src/routes/(dashboard)/ti/notificacoes/+page.svelte index 9fa17d5..29f6182 100644 --- a/apps/web/src/routes/(dashboard)/ti/notificacoes/+page.svelte +++ b/apps/web/src/routes/(dashboard)/ti/notificacoes/+page.svelte @@ -5,6 +5,26 @@ import { format } from 'date-fns'; import { ptBR } from 'date-fns/locale'; import type { Id, Doc } from '@sgse-app/backend/convex/_generated/dataModel'; + import { + Bell, + CheckCircle, + XCircle, + Info, + Mail, + Send, + MessageSquare, + Calendar, + Clock, + X, + User, + FileText, + Trash2, + Edit, + MoreVertical, + Plus, + AlertTriangle, + Check + } from 'lucide-svelte'; type StatusAgendamento = 'agendado' | 'enviado' | 'cancelado'; @@ -1166,20 +1186,7 @@
      - - - +

      Notificações e Mensagens

      @@ -1213,42 +1220,20 @@ class:alert-error={mensagem.tipo === 'error'} class:alert-info={mensagem.tipo === 'info'} > - - {#if mensagem.tipo === 'success'} - - {:else if mensagem.tipo === 'error'} - - {:else} - - {/if} - + {#if mensagem.tipo === 'success'} + + {:else if mensagem.tipo === 'error'} + + {:else} + + {/if} {mensagem.texto}
      {/if} @@ -1417,19 +1402,7 @@ {#if templateSelecionado}
      - - - +
      {templateSelecionado.titulo}
      {templateSelecionado.corpo}
      @@ -1496,19 +1469,7 @@ {#if getPreviewAgendamento()}
      - - - + {getPreviewAgendamento()}
      {/if} @@ -1532,20 +1493,7 @@ Enviando... {/if} {:else} - - - + {/if} {#if processando} @@ -1569,20 +1517,7 @@
      {#if logsEnvio.length > 0} {/if} @@ -1630,20 +1565,7 @@ class="btn btn-sm btn-outline btn-primary" onclick={() => abrirModalNovoTemplate()} > - - - + Novo Template
      @@ -1687,20 +1609,7 @@ class="btn btn-xs" aria-label="Opções do template" > - - - +
        - - - +

        Nenhum template disponível

        Clique no botão abaixo para criar os templates padrão do sistema. @@ -1749,20 +1645,7 @@ Criando templates... {:else} - - - + Criar Templates Padrão {/if} @@ -1797,20 +1680,7 @@

        - - - +

        Histórico de Agendamentos

        @@ -1843,20 +1713,7 @@ {#if agendamentosFiltrados.length === 0}
        - - - +

        Nenhum agendamento encontrado

        Os agendamentos aparecerão aqui quando você agendar envios. @@ -1886,36 +1743,10 @@

        {#if agendamento.tipo === 'email'} - - - + Email {:else} - - - + Chat {/if}
        @@ -1981,20 +1812,7 @@ class="btn btn-sm btn-error btn-outline" onclick={() => cancelarAgendamento(agendamento)} > - - - + Cancelar {:else} @@ -2013,19 +1831,7 @@
        - - - + Para enviar emails, certifique-se de configurar o SMTP em Configurações de Email.
        @@ -2147,20 +1953,7 @@ Criando... {:else} - - - + Criar Template {/if} diff --git a/apps/web/src/routes/(dashboard)/ti/perfis/+page.svelte b/apps/web/src/routes/(dashboard)/ti/perfis/+page.svelte index f12cd11..46630fb 100644 --- a/apps/web/src/routes/(dashboard)/ti/perfis/+page.svelte +++ b/apps/web/src/routes/(dashboard)/ti/perfis/+page.svelte @@ -7,7 +7,21 @@ 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'; + import { + Users, + Shield, + AlertTriangle, + Info, + Building2, + Filter, + X, + Search, + Smile, + Tag, + Eye, + Calendar, + Settings + } from 'lucide-svelte'; type Role = { _id: Id<'roles'>; @@ -144,20 +158,7 @@
        - - - +

        Gestão de Perfis

        @@ -216,20 +217,7 @@
        - - - +

        Filtros de Busca

        {#if temFiltrosAtivos} @@ -238,20 +226,7 @@ class="btn btn-sm btn-outline btn-error" onclick={limparFiltros} > - - - + Limpar Filtros {/if} @@ -271,20 +246,7 @@ placeholder="Buscar por nome ou descrição..." class="input input-bordered w-full pl-10" /> - - - +
        @@ -338,20 +300,7 @@
        {:else if roles.length === 0}
        - - - +

        Nenhum perfil encontrado

        Não há perfis cadastrados no sistema.

        @@ -359,20 +308,7 @@
        - - - +

        Nenhum perfil encontrado

        Nenhum perfil corresponde aos filtros aplicados. @@ -403,79 +339,27 @@

        - - - +
        - - - + Nome técnico: {role.nome}
        {#if role.setor}
        - - - + Setor: {role.setor}
        {/if}
        - - - + Nível: {role.nivel}
        @@ -489,26 +373,7 @@ abrirDetalhes(role); }} > - - - - + Ver Detalhes
        @@ -526,20 +391,7 @@

        Detalhes do Perfil

        @@ -560,20 +412,7 @@
        - - - +
        @@ -585,20 +424,7 @@
        @@ -612,20 +438,7 @@
        @@ -645,20 +458,7 @@
        @@ -670,19 +470,7 @@
        - - - + {roleSelecionada.nivel === 0 && 'Acesso total irrestrito ao sistema. Pode realizar todas as operações sem restrições.'} @@ -703,20 +491,7 @@
        @@ -728,19 +503,7 @@
        - - - +

        Configuração de Permissões

        @@ -756,26 +519,7 @@

        diff --git a/apps/web/src/routes/(dashboard)/ti/personalizar-permissoes/+page.svelte b/apps/web/src/routes/(dashboard)/ti/personalizar-permissoes/+page.svelte index 0a615fa..4eaf012 100644 --- a/apps/web/src/routes/(dashboard)/ti/personalizar-permissoes/+page.svelte +++ b/apps/web/src/routes/(dashboard)/ti/personalizar-permissoes/+page.svelte @@ -2,6 +2,7 @@ import ProtectedRoute from '$lib/components/ProtectedRoute.svelte'; import { goto } from '$app/navigation'; import { resolve } from '$app/paths'; + import { Home, User, ArrowLeft, Info } from 'lucide-svelte'; @@ -10,20 +11,7 @@
        • - - - + Dashboard
        • @@ -38,20 +26,7 @@
          - - - +

          Funcionalidade descontinuada

          @@ -60,38 +35,13 @@

          - - - + A personalização por usuário foi substituída por permissões por ação por perfil. Utilize o