diff --git a/src/app/(protected)/(cadastros)/cadastros/(t_censecnaturezalitigio)/censec-natureza-litigio/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(t_censecnaturezalitigio)/censec-natureza-litigio/page.tsx new file mode 100644 index 0000000..f0cf8f2 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/(t_censecnaturezalitigio)/censec-natureza-litigio/page.tsx @@ -0,0 +1,131 @@ +'use client'; + +import { useEffect, useState, useCallback } from "react"; +import { Card, CardContent } from "@/components/ui/card"; +import { useConfirmDialog } from "@/app/_components/confirm_dialog/useConfirmDialog"; + +import Header from "@/app/_components/structure/Header"; +import ConfirmDialog from "@/app/_components/confirm_dialog/ConfirmDialog"; +import Loading from "@/app/_components/loading/loading"; + +import TCensecNaturezaLitigioTable from "../../_components/t_censecnaturezalitigio/TCensecNaturezaLitigioTable"; +import TCensecNaturezaLitigioForm from "../../_components/t_censecnaturezalitigio/TCensecNaturezaLitigioForm"; + +import { useTCensecNaturezaLitigioReadHook } from "../../_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioReadHook"; +import { useTCensecNaturezaLitigioSaveHook } from "../../_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioSaveHook"; +import { useTCensecNaturezaLitigioRemoveHook } from "../../_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioRemoveHook"; + +import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface"; + +const initialCensecNaturezaLitigio: TCensecNaturezaLitigioInterface = { + censec_naturezaltigio_id: 0, + descricao: "", + situacao: 'A' +} + +export default function TCensecNaturezaLitigioPage() { + + // Hooks + const { tCensecNaturezaLitigio, fetchTCensecNaturezaLitigio } = useTCensecNaturezaLitigioReadHook(); + const { saveTCensecNaturezaLitigio } = useTCensecNaturezaLitigioSaveHook(); + const { removeTCensecNaturezaLitigio } = useTCensecNaturezaLitigioRemoveHook(); + + // Estados + const [selectedItem, setSelectedItem] = useState(null); + const [isFormOpen, setIsFormOpen] = useState(false); + const [itemToDelete, setItemToDelete] = useState(null); + + // Modal de confirmação + const { + isOpen: isConfirmOpen, + openDialog: openConfirmDialog, + handleConfirm, + handleCancel, + } = useConfirmDialog(); + + // Abrir formulário (criação ou edição) + const handleOpenForm = useCallback((item: TCensecNaturezaLitigioInterface | null) => { + setSelectedItem(item); + setIsFormOpen(true); + }, []); + + // Fechar formulário + const handleCloseForm = useCallback(() => { + setSelectedItem(null); + setIsFormOpen(false); + }, []); + + // Salvar item + const handleSave = useCallback(async (formData: TCensecNaturezaLitigioInterface) => { + await saveTCensecNaturezaLitigio(formData); + await fetchTCensecNaturezaLitigio(); + }, [saveTCensecNaturezaLitigio, fetchTCensecNaturezaLitigio]); + + // Confirmar remoção + const handleConfirmDelete = useCallback((item: TCensecNaturezaLitigioInterface) => { + setItemToDelete(item); + openConfirmDialog(); + }, [openConfirmDialog]); + + // Executar remoção + const handleDelete = useCallback(async () => { + if (!itemToDelete) return; + await removeTCensecNaturezaLitigio(itemToDelete); + await fetchTCensecNaturezaLitigio(); + setItemToDelete(null); + handleCancel(); + }, [itemToDelete, removeTCensecNaturezaLitigio, fetchTCensecNaturezaLitigio, handleCancel]); + + // Fetch inicial + useEffect(() => { + fetchTCensecNaturezaLitigio(); + }, []); + + // Loading enquanto carrega + if (!tCensecNaturezaLitigio) { + return ; + } + + return ( +
+ {/* Cabeçalho */} +
handleOpenForm(data = initialCensecNaturezaLitigio)} + /> + + {/* Tabela */} + + + + + + + {/* Modal de confirmação */} + + + {/* Formulário */} + +
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/t_censecnaturezalitigio/TCensecNaturezaLitigioForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/t_censecnaturezalitigio/TCensecNaturezaLitigioForm.tsx new file mode 100644 index 0000000..171c27f --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/t_censecnaturezalitigio/TCensecNaturezaLitigioForm.tsx @@ -0,0 +1,129 @@ +'use client'; + +import z from 'zod'; +import { useEffect } from 'react'; +import { useForm, Controller } from 'react-hook-form'; +import { zodResolver } from '@hookform/resolvers/zod'; + +import { Button } from '@/components/ui/button'; +import { Checkbox } from '@/components/ui/checkbox'; +import { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle +} from '@/components/ui/dialog'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage +} from '@/components/ui/form'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; + +import { TCensecNaturezaLitigioSchema } from '../../_schemas/TCensecNaturezaLitigioSchema'; +import { TCensecNaturezaLitigioInterface } from '../../_interfaces/TCensecNaturezaLitigioInterface'; + +type FormValues = z.infer; + +interface TCensecNaturezaLitigioFormProps { + isOpen: boolean; + data: FormValues | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: FormValues) => void; +} + +export default function TCensecNaturezaLitigioForm({ + isOpen, + data, + onClose, + onSave +}: TCensecNaturezaLitigioFormProps) { + const form = useForm({ + resolver: zodResolver(TCensecNaturezaLitigioSchema), + defaultValues: { + censec_naturezaltigio_id: 0, + descricao: "", + situacao: "A" + } + }); + + useEffect(() => { + if (data) form.reset(data); + }, [data, form]); + + return ( + { + if (!open) onClose(null, false); + }} + > + + + Natureza do Litígio + + Crie ou edite uma natureza do litígio + + + +
+ + + {/* Descrição */} + ( + + Descrição + + + + + + )} + /> + + {/* Situação */} + ( +
+ field.onChange(checked ? "A" : "I")} + /> + +
+ )} + /> + + + {/* Rodapé */} + + + + + + + + {/* Campo oculto */} + + + +
+
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/t_censecnaturezalitigio/TCensecNaturezaLitigioTable.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/t_censecnaturezalitigio/TCensecNaturezaLitigioTable.tsx new file mode 100644 index 0000000..9b6edaf --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/t_censecnaturezalitigio/TCensecNaturezaLitigioTable.tsx @@ -0,0 +1,123 @@ +'use client'; + +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger +} from "@/components/ui/dropdown-menu"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow +} from "@/components/ui/table"; +import { EllipsisIcon, PencilIcon, Trash2Icon } from "lucide-react"; +import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface"; + +interface TCensecNaturezaLitigioTableProps { + data: TCensecNaturezaLitigioInterface[]; + onEdit: (item: TCensecNaturezaLitigioInterface, isEditingFormStatus: boolean) => void; + onDelete: (item: TCensecNaturezaLitigioInterface, isEditingFormStatus: boolean) => void; +} + +/** + * Renderiza o badge de situação + */ +function StatusBadge({ situacao }: { situacao: 'A' | 'I' }) { + const isActive = situacao === 'A'; + + const baseClasses = + "text-xs font-medium px-2.5 py-0.5 rounded-sm me-2"; + + const activeClasses = + "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300"; + + const inactiveClasses = + "bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-300"; + + return ( + + {isActive ? "Ativo" : "Inativo"} + + ); +} + +export default function TCensecNaturezaLitigioTable({ + data, + onEdit, + onDelete +}: TCensecNaturezaLitigioTableProps) { + return ( + + + + # + Situação + Descrição + Ações + + + + + {data.map((item) => ( + + + {item.censec_naturezaltigio_id} + + + + + + + {item.descricao} + + + + + + + + + + onEdit(item, true)} + > + + Editar + + + + + onDelete(item, true)} + > + + Remover + + + + + + + ))} + +
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioIndexData.ts new file mode 100644 index 0000000..96d722f --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioIndexData.ts @@ -0,0 +1,24 @@ +import API from "@/services/api/Api"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; +import CensecNaturezaLitigioMockDeDados from "./mockCensecNaturezaLitigio"; + +const useMock = true + +export default async function TCensecNaturezaLitigioIndexData() { + if (useMock) { + return await CensecNaturezaLitigioMockDeDados(); + } + + const api = new API(); + try { + const dados = await api.send({ + method: Methods.GET, + endpoint: `administrativo/t_censec_natureza_litigio/` + }); + return dados + } catch (error) { + console.log(error) + return error + } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioRemoveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioRemoveData.ts new file mode 100644 index 0000000..b8dfa54 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioRemoveData.ts @@ -0,0 +1,14 @@ +import API from "@/services/api/Api"; +import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; + +export default async function TCensecNaturezaLitigioRemoveData(data: TCensecNaturezaLitigioInterface) { + + const api = new API(); + + return await api.send({ + method: Methods.DELETE, + endpoint: `administrativo/t_censec_natureza_litigio/${data.censec_naturezaltigio_id}` + }); + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioSaveData.ts new file mode 100644 index 0000000..0f33808 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioSaveData.ts @@ -0,0 +1,17 @@ +import API from "@/services/api/Api"; +import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; + +export default async function TCensecNaturezaLitigioTipoSaveData(data: TCensecNaturezaLitigioInterface) { + + const isUpdate = Boolean(data.censec_naturezaltigio_id); + + const api = new API(); + + return await api.send({ + method: isUpdate ? Methods.PUT : Methods.POST, + endpoint: `administrativo/t_censec_natureza_litigio/${data.censec_naturezaltigio_id || ''}`, + body: data + }); + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/mockCensecNaturezaLitigio.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/mockCensecNaturezaLitigio.ts new file mode 100644 index 0000000..93c6c7c --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/mockCensecNaturezaLitigio.ts @@ -0,0 +1,113 @@ +export default async function CensecNaturezaLitigioMockDeDados() { + return Promise.resolve({ + status: 200, + message: 'Dados localizados', + data: [ + { + censec_naturezaltigio_id: 1.00, + descricao: "Bancário", + situacao: "A" + }, + { + censec_naturezaltigio_id: 2.00, + descricao: "Concessionária de Água", + situacao: "A" + }, + { + censec_naturezaltigio_id: 3.00, + descricao: "Concessionária de Gás", + situacao: "A" + }, + { + censec_naturezaltigio_id: 4.00, + descricao: "Concessionária de Luz", + situacao: "A" + }, + { + censec_naturezaltigio_id: 5.00, + descricao: "Consumidor", + situacao: "A" + }, + { + censec_naturezaltigio_id: 6.00, + descricao: "Contrato", + situacao: "A" + }, + { + censec_naturezaltigio_id: 7.00, + descricao: "Empresarial", + situacao: "A" + }, + { + censec_naturezaltigio_id: 8.00, + descricao: "Família", + situacao: "A" + }, + { + censec_naturezaltigio_id: 9.00, + descricao: "Locação", + situacao: "A" + }, + { + censec_naturezaltigio_id: 10.00, + descricao: "Mobiliário", + situacao: "A" + }, + { + censec_naturezaltigio_id: 11.00, + descricao: "Previdência", + situacao: "A" + }, + { + censec_naturezaltigio_id: 12.00, + descricao: "Saúde", + situacao: "A" + }, + { + censec_naturezaltigio_id: 13.00, + descricao: "Seguro", + situacao: "A" + }, + { + censec_naturezaltigio_id: 14.00, + descricao: "Serviço Público", + situacao: "A" + }, + { + censec_naturezaltigio_id: 15.00, + descricao: "Sucessões", + situacao: "A" + }, + { + censec_naturezaltigio_id: 16.00, + descricao: "Telefonia", + situacao: "A" + }, + { + censec_naturezaltigio_id: 17.00, + descricao: "Transporte", + situacao: "A" + }, + { + censec_naturezaltigio_id: 18.00, + descricao: "Transporte - Avião", + situacao: "A" + }, + { + censec_naturezaltigio_id: 19.00, + descricao: "Transporte - Barco", + situacao: "A" + }, + { + censec_naturezaltigio_id: 20.00, + descricao: "Transporte Metrô", + situacao: "A" + }, + { + censec_naturezaltigio_id: 21.00, + descricao: "Transporte - Ônibus", + situacao: "A" + } +] + }); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioReadHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioReadHook.ts new file mode 100644 index 0000000..3e59dfa --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioReadHook.ts @@ -0,0 +1,27 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { useState } from "react"; +import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface"; +import TCensecNaturezaLitigioIndexService from "../../_services/t_censecnaturezalitigio/TCensecNaturezaLitigioIndexService"; + +export const useTCensecNaturezaLitigioReadHook = () => { + + const { setResponse } = useResponse(); + const [tCensecNaturezaLitigio, setTCensecNaturezaLitigio] = useState([]); + + const fetchTCensecNaturezaLitigio = async () => { + + try { + const response = await TCensecNaturezaLitigioIndexService(); + + setTCensecNaturezaLitigio(response.data); + + setResponse(response); + } catch (error) { + console.log(error) + } + + } + + return { tCensecNaturezaLitigio, fetchTCensecNaturezaLitigio } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioRemoveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioRemoveHook.ts new file mode 100644 index 0000000..a350a84 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioRemoveHook.ts @@ -0,0 +1,19 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface"; +import TCensecNaturezaLitigioRemoveService from "../../_services/t_censecnaturezalitigio/TCensecNaturezaLitigioRemoveService"; + +export const useTCensecNaturezaLitigioRemoveHook = () => { + + const { setResponse } = useResponse(); + + const removeTCensecNaturezaLitigio = async (data: TCensecNaturezaLitigioInterface) => { + + const response = await TCensecNaturezaLitigioRemoveService(data); + + setResponse(response); + + } + + return { removeTCensecNaturezaLitigio } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioSaveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioSaveHook.ts new file mode 100644 index 0000000..9ba939b --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioSaveHook.ts @@ -0,0 +1,31 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { useState } from "react"; +import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface"; +import TCensecNaturezaLitigioSaveService from "../../_services/t_censecnaturezalitigio/TCensecNaturezaLitigioSaveService"; + +export const useTCensecNaturezaLitigioSaveHook = () => { + + const { setResponse } = useResponse(); + const [TCensecNaturezaLitigio, setTCensecNaturezaLitigio] = useState(null); + // controla se o formulário está aberto ou fechado + const [isOpen, setIsOpen] = useState(false); + + const saveTCensecNaturezaLitigio = async (data: TCensecNaturezaLitigioInterface) => { + + const response = await TCensecNaturezaLitigioSaveService(data); + + setTCensecNaturezaLitigio(response.data); + + setResponse(response); + + // Fecha o formulário automaticamente após salvar + setIsOpen(false); + + // Retorna os dados imediatamente + return response; + + } + + return { TCensecNaturezaLitigio, saveTCensecNaturezaLitigio } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_interfaces/TCensecNaturezaLitigioInterface.ts b/src/app/(protected)/(cadastros)/cadastros/_interfaces/TCensecNaturezaLitigioInterface.ts new file mode 100644 index 0000000..d3f471c --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_interfaces/TCensecNaturezaLitigioInterface.ts @@ -0,0 +1,5 @@ +export interface TCensecNaturezaLitigioInterface { + censec_naturezaltigio_id: number; + descricao: string; + situacao: 'A' | 'I'; +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_schemas/TCensecNaturezaLitigioSchema.ts b/src/app/(protected)/(cadastros)/cadastros/_schemas/TCensecNaturezaLitigioSchema.ts new file mode 100644 index 0000000..8815d19 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_schemas/TCensecNaturezaLitigioSchema.ts @@ -0,0 +1,7 @@ +import { z } from 'zod'; + +export const TCensecNaturezaLitigioSchema = z.object({ + censec_naturezaltigio_id: z.number(), + descricao: z.string(), + situacao: z.enum(['A', 'I']), +}); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioIndexService.ts new file mode 100644 index 0000000..2b6bacc --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioIndexService.ts @@ -0,0 +1,12 @@ +import TCensecNaturezaLitigioIndexData from "../../_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioIndexData"; + +export default async function TCensecNaturezaLitigioIndexService() { + + try { + const response = await TCensecNaturezaLitigioIndexData(); + return response; + } catch (error) { + console.log(error) + return error + } +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioRemoveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioRemoveService.ts new file mode 100644 index 0000000..9530497 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioRemoveService.ts @@ -0,0 +1,10 @@ +import TCensecNaturezaLitigioRemoveData from "../../_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioRemoveData"; +import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface"; + +export default async function TCensecNaturezaLitigioRemoveService(data: TCensecNaturezaLitigioInterface) { + + const response = await TCensecNaturezaLitigioRemoveData(data); + + return response; + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioSaveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioSaveService.ts new file mode 100644 index 0000000..1f063c2 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioSaveService.ts @@ -0,0 +1,10 @@ +import TCensecNaturezaLitigioSaveData from "../../_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioSaveData"; +import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface"; + +export default async function TCensecNaturezaLitigioSaveService(data: TCensecNaturezaLitigioInterface) { + + const response = await TCensecNaturezaLitigioSaveData(data); + + return response; + +} \ No newline at end of file diff --git a/src/components/app-sidebar.tsx b/src/components/app-sidebar.tsx index aa0bd20..dede44c 100644 --- a/src/components/app-sidebar.tsx +++ b/src/components/app-sidebar.tsx @@ -112,6 +112,10 @@ const data = { { title: "Tipo de Medida", url: "/cadastros/medida-tipo" + }, + { + title: "Natureza Litígio (Censec)", + url: "/cadastros/censec-natureza-litigio" } ], },