refactor: enhance licitacoes page layout and add contratos permissions

- Improved the layout of the licitacoes page for better readability and user experience.
- Added new permissions for contratos, including listar, criar, editar, excluir, and ver actions.
- Introduced a new schema for contratos with relevant fields and indexes to support contract management.
This commit is contained in:
2025-11-18 23:11:40 -03:00
parent b844260399
commit b8506b6d45
8 changed files with 1336 additions and 69 deletions

View File

@@ -1,78 +1,79 @@
<script lang="ts">
import { FileText, ClipboardCopy, Building2 } from "lucide-svelte";
import { resolve } from "$app/paths";
import ProtectedRoute from "$lib/components/ProtectedRoute.svelte";
import { FileText, ClipboardCopy, Building2 } from 'lucide-svelte';
import { resolve } from '$app/paths';
import ProtectedRoute from '$lib/components/ProtectedRoute.svelte';
</script>
<ProtectedRoute>
<main class="container mx-auto px-4 py-4">
<!-- Breadcrumb -->
<div class="text-sm breadcrumbs mb-4">
<ul>
<li><a href={resolve('/')} class="text-primary hover:underline">Dashboard</a></li>
<li>Licitações</li>
</ul>
</div>
<main class="container mx-auto px-4 py-4">
<!-- Breadcrumb -->
<div class="breadcrumbs mb-4 text-sm">
<ul>
<li>
<a href={resolve('/')} class="text-primary hover:underline">Dashboard</a>
</li>
<li>Licitações</li>
</ul>
</div>
<!-- Cabeçalho -->
<div class="mb-6">
<div class="flex items-center gap-4 mb-2">
<div class="p-3 bg-orange-500/20 rounded-xl">
<FileText class="h-8 w-8 text-orange-600" strokeWidth={2} />
</div>
<div>
<h1 class="text-3xl font-bold text-primary">Licitações</h1>
<p class="text-base-content/70">Gestão de processos licitatórios</p>
</div>
</div>
</div>
<div class="grid gap-4 md:grid-cols-3">
<a
href={resolve('/licitacoes/empresas')}
class="card bg-base-100 border-base-200 hover:border-primary border shadow-md transition-shadow hover:shadow-lg"
>
<div class="card-body">
<div class="mb-2 flex items-center gap-3">
<div class="bg-primary/10 rounded-lg p-2">
<Building2 class="text-primary h-6 w-6" strokeWidth={2} />
</div>
<h4 class="font-semibold">Empresas</h4>
</div>
<p class="text-base-content/70 text-sm">
Cadastro, listagem e edição de empresas e seus contatos.
</p>
</div>
</a>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
<a
href={resolve('/licitacoes/empresas')}
class="card bg-base-100 shadow-md hover:shadow-lg transition-shadow border border-base-200 hover:border-primary"
>
<div class="card-body">
<div class="flex items-center gap-3 mb-2">
<div class="p-2 bg-primary/10 rounded-lg">
<Building2 class="h-6 w-6 text-primary" strokeWidth={2} />
</div>
<h4 class="font-semibold">Empresas</h4>
</div>
<p class="text-sm text-base-content/70">
Cadastro, listagem e edição de empresas e seus contatos.
</p>
</div>
</a>
<a
href={resolve('/licitacoes/contratos')}
class="card bg-base-100 border-base-200 hover:border-primary border shadow-md transition-shadow hover:shadow-lg"
>
<div class="card-body">
<div class="mb-2 flex items-center gap-3">
<div class="bg-primary/10 rounded-lg p-2">
<FileText class="text-primary h-6 w-6" strokeWidth={2} />
</div>
<h4 class="font-semibold">Contratos</h4>
</div>
<p class="text-base-content/70 text-sm">Gestão de contratos, vigências e situações.</p>
</div>
</a>
<div class="card bg-base-100 shadow-md opacity-70">
<div class="card-body">
<div class="flex items-center gap-3 mb-2">
<div class="p-2 bg-base-200 rounded-lg">
<ClipboardCopy class="h-6 w-6 text-base-content/50" strokeWidth={2} />
</div>
<h4 class="font-semibold text-base-content/70">Processos Licitatórios</h4>
</div>
<p class="text-sm text-base-content/60">
Em breve: cadastro e acompanhamento de licitações.
</p>
</div>
</div>
<div class="card bg-base-100 opacity-70 shadow-md">
<div class="card-body">
<div class="mb-2 flex items-center gap-3">
<div class="bg-base-200 rounded-lg p-2">
<ClipboardCopy class="text-base-content/50 h-6 w-6" strokeWidth={2} />
</div>
<h4 class="text-base-content/70 font-semibold">Processos Licitatórios</h4>
</div>
<p class="text-base-content/60 text-sm">
Em breve: cadastro e acompanhamento de licitações.
</p>
</div>
</div>
<div class="card bg-base-100 shadow-md opacity-70">
<div class="card-body">
<div class="flex items-center gap-3 mb-2">
<div class="p-2 bg-base-200 rounded-lg">
<FileText class="h-6 w-6 text-base-content/50" strokeWidth={2} />
</div>
<h4 class="font-semibold text-base-content/70">Documentação</h4>
</div>
<p class="text-sm text-base-content/60">
Em breve: gestão de documentos e editais.
</p>
</div>
</div>
</div>
</main>
<div class="card bg-base-100 opacity-70 shadow-md">
<div class="card-body">
<div class="mb-2 flex items-center gap-3">
<div class="bg-base-200 rounded-lg p-2">
<FileText class="text-base-content/50 h-6 w-6" strokeWidth={2} />
</div>
<h4 class="text-base-content/70 font-semibold">Documentação</h4>
</div>
<p class="text-base-content/60 text-sm">Em breve: gestão de documentos e editais.</p>
</div>
</div>
</div>
</main>
</ProtectedRoute>