update: move file into more manageable folder

This commit is contained in:
yosaphatprs 2025-11-25 16:44:11 +07:00
parent 433e6889cd
commit f7bffa86d5
16 changed files with 169 additions and 162 deletions

View File

@ -3,23 +3,23 @@ import { createRouter, createWebHistory } from "vue-router";
import DashboardView from "../views/dashboard/DashboardView.vue";
import Login from "../views/auth/Login.vue";
import NotFoundView from "../views/NotFoundView.vue";
import RekamMedisView from "../views/dashboard/RekamMedisView.vue";
import ObatView from "../views/dashboard/ObatView.vue";
import TindakanView from "../views/dashboard/TindakanView.vue";
import UsersView from "../views/dashboard/UsersView.vue";
import RekamMedisDetailsView from "../views/dashboard/RekamMedisDetailsView.vue";
import PemberianObatDetailView from "../views/dashboard/PemberianObatDetailView.vue";
import PemberianObatEditView from "../views/dashboard/PemberianObatEditView.vue";
import CreateRekamMedisView from "../views/dashboard/CreateRekamMedisView.vue";
import RekamMedisEditView from "../views/dashboard/RekamMedisEditView.vue";
import CreateObatView from "../views/dashboard/CreateObatView.vue";
import CreateTindakanDokterView from "../views/dashboard/CreateTindakanDokterView.vue";
import TindakanDokterEditView from "../views/dashboard/TindakanDokterEditView.vue";
import TindakanDokterDetailsView from "../views/dashboard/TindakanDokterDetailsView.vue";
import AuditTrailView from "../views/dashboard/AuditTrailView.vue";
import RekamMedisView from "../views/dashboard/rekam-medis/RekamMedisView.vue";
import ObatView from "../views/dashboard/obat/ObatView.vue";
import TindakanView from "../views/dashboard/pemberian-tindakan/TindakanView.vue";
import UsersView from "../views/dashboard/users/UsersView.vue";
import RekamMedisDetailsView from "../views/dashboard/rekam-medis/DetailRekamMedisView.vue";
import PemberianObatDetailView from "../views/dashboard/obat/DetailObatView.vue";
import PemberianObatEditView from "../views/dashboard/obat/UpdateObatView.vue";
import CreateRekamMedisView from "../views/dashboard/rekam-medis/CreateRekamMedisView.vue";
import RekamMedisEditView from "../views/dashboard/rekam-medis/UpdateRekamMedisView.vue";
import CreateObatView from "../views/dashboard/obat/CreateObatView.vue";
import CreateTindakanDokterView from "../views/dashboard/pemberian-tindakan/CreateTindakanDokterView.vue";
import TindakanDokterEditView from "../views/dashboard/pemberian-tindakan/TindakanDokterEditView.vue";
import TindakanDokterDetailsView from "../views/dashboard/pemberian-tindakan/DetailTindakanDokterView.vue";
import ValidasiView from "../views/dashboard/validasi/ValidasiView.vue";
import ReviewValidasiView from "../views/dashboard/validasi/ReviewValidasiView.vue";
import CreateUserView from "../views/dashboard/users/CreateUserView.vue";
import AuditTrailView from "../views/dashboard/audit-trail/AuditTrailView.vue";
const routes = [
{

View File

@ -293,17 +293,19 @@ onMounted(() => {
</div>
</div>
<div class="flex gap-x-4 w-full">
<div class="flex-2 mt-4 bg-white p-4 rounded-lg shadow-md min-w-0">
<h5 class="text-lg font-semibold mb-2 text-center">
<div
class="flex flex-col flex-2 mt-4 bg-white p-4 rounded-lg shadow-md min-w-0"
>
<h5 class="flex-1 text-lg font-semibold text-center">
Jumlah Rekam Medis Baru 7 Hari Terakhir
</h5>
<div class="w-full">
<div class="flex-5 w-full">
<Line
:data="rekamMedisCountLineChartData"
:options="rekamMedisLineChartOptions"
/>
</div>
<div class="flex justify-center mt-4">
<div class="flex flex-1 justify-center mt-4">
<RouterLink
to="/rekam-medis"
class="text-sm hover:opacity-75 transition-all"

View File

@ -1,24 +1,27 @@
<script setup lang="ts">
import { onBeforeUnmount, onMounted, ref, watch } from "vue";
import { useRoute, useRouter } from "vue-router";
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import SearchInput from "../../components/dashboard/SearchInput.vue";
import DataTable from "../../components/dashboard/DataTable.vue";
import { useApi } from "../../composables/useApi";
import { usePagination } from "../../composables/usePagination";
import { useDebounce } from "../../composables/useDebounce";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import SearchInput from "../../../components/dashboard/SearchInput.vue";
import DataTable from "../../../components/dashboard/DataTable.vue";
import { useApi } from "../../../composables/useApi";
import { usePagination } from "../../../composables/usePagination";
import { useDebounce } from "../../../composables/useDebounce";
import {
DEFAULT_PAGE_SIZE,
DEBOUNCE_DELAY,
ITEMS_PER_PAGE_OPTIONS,
AUDIT_TABLE_COLUMNS,
} from "../../constants/pagination";
import ButtonDark from "../../components/dashboard/ButtonDark.vue";
import DialogConfirm from "../../components/DialogConfirm.vue";
import PaginationControls from "../../components/dashboard/PaginationControls.vue";
import type { AuditLogEntry, AuditLogType } from "../../constants/interfaces";
} from "../../../constants/pagination";
import ButtonDark from "../../../components/dashboard/ButtonDark.vue";
import DialogConfirm from "../../../components/DialogConfirm.vue";
import PaginationControls from "../../../components/dashboard/PaginationControls.vue";
import type {
AuditLogEntry,
AuditLogType,
} from "../../../constants/interfaces";
import { io, Socket } from "socket.io-client";
interface AuditLogResponse {

View File

@ -1,13 +1,13 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import FieldInput from "../../components/dashboard/FieldInput.vue";
import ButtonDark from "../../components/dashboard/ButtonDark.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import FieldInput from "../../../components/dashboard/FieldInput.vue";
import ButtonDark from "../../../components/dashboard/ButtonDark.vue";
import { onMounted, ref, watch } from "vue";
import { useApi, type ApiError } from "../../composables/useApi";
import { useDebounce } from "../../composables/useDebounce";
import { DEBOUNCE_DELAY } from "../../constants/pagination";
import { useApi, type ApiError } from "../../../composables/useApi";
import { useDebounce } from "../../../composables/useDebounce";
import { DEBOUNCE_DELAY } from "../../../constants/pagination";
interface CreateObatFormData {
id_visit: string;

View File

@ -1,13 +1,13 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import { onMounted, ref } from "vue";
import { useRoute } from "vue-router";
import type { BlockchainLog, Obat } from "../../constants/interfaces";
import { useApi } from "../../composables/useApi";
import DataTable from "../../components/dashboard/DataTable.vue";
import { LOG_TABLE_COLUMNS } from "../../constants/pagination";
import type { BlockchainLog, Obat } from "../../../constants/interfaces";
import { useApi } from "../../../composables/useApi";
import DataTable from "../../../components/dashboard/DataTable.vue";
import { LOG_TABLE_COLUMNS } from "../../../constants/pagination";
const data = ref<Obat>();
const dataLog = ref<BlockchainLog[]>([]);

View File

@ -1,22 +1,22 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import SearchInput from "../../components/dashboard/SearchInput.vue";
import SortDropdown from "../../components/dashboard/SortDropdown.vue";
import DataTable from "../../components/dashboard/DataTable.vue";
import PaginationControls from "../../components/dashboard/PaginationControls.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import SearchInput from "../../../components/dashboard/SearchInput.vue";
import SortDropdown from "../../../components/dashboard/SortDropdown.vue";
import DataTable from "../../../components/dashboard/DataTable.vue";
import PaginationControls from "../../../components/dashboard/PaginationControls.vue";
import { onMounted, ref, watch } from "vue";
import { useRoute, useRouter } from "vue-router";
import { usePagination } from "../../composables/usePagination";
import { useDebounce } from "../../composables/useDebounce";
import { useApi } from "../../composables/useApi";
import { usePagination } from "../../../composables/usePagination";
import { useDebounce } from "../../../composables/useDebounce";
import { useApi } from "../../../composables/useApi";
import {
DEFAULT_PAGE_SIZE,
DEBOUNCE_DELAY,
ITEMS_PER_PAGE_OPTIONS,
SORT_OPTIONS,
} from "../../constants/pagination";
} from "../../../constants/pagination";
interface ObatData {
id: number;

View File

@ -1,15 +1,15 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import { onMounted, ref } from "vue";
import { useRoute } from "vue-router";
import type { BlockchainLog, Obat } from "../../constants/interfaces";
import { useApi } from "../../composables/useApi";
import DataTable from "../../components/dashboard/DataTable.vue";
import { LOG_TABLE_COLUMNS } from "../../constants/pagination";
import FieldInput from "../../components/dashboard/FieldInput.vue";
import ButtonDark from "../../components/dashboard/ButtonDark.vue";
import type { BlockchainLog, Obat } from "../../../constants/interfaces";
import { useApi } from "../../../composables/useApi";
import DataTable from "../../../components/dashboard/DataTable.vue";
import { LOG_TABLE_COLUMNS } from "../../../constants/pagination";
import FieldInput from "../../../components/dashboard/FieldInput.vue";
import ButtonDark from "../../../components/dashboard/ButtonDark.vue";
interface PostObat {
obat: string;

View File

@ -1,18 +1,18 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import FieldInput from "../../components/dashboard/FieldInput.vue";
import ButtonDark from "../../components/dashboard/ButtonDark.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import FieldInput from "../../../components/dashboard/FieldInput.vue";
import ButtonDark from "../../../components/dashboard/ButtonDark.vue";
import { onMounted, ref, watch } from "vue";
import { useApi, type ApiError } from "../../composables/useApi";
import { useDebounce } from "../../composables/useDebounce";
import { DEBOUNCE_DELAY, FILTER } from "../../constants/pagination";
import { useApi, type ApiError } from "../../../composables/useApi";
import { useDebounce } from "../../../composables/useDebounce";
import { DEBOUNCE_DELAY, FILTER } from "../../../constants/pagination";
import {
validateTindakanForm,
type TindakanFormInput,
type TindakanFormErrors,
} from "../../validation/tindakan";
} from "../../../validation/tindakan";
type CreateTindakanFormErrors = Partial<TindakanFormErrors>;

View File

@ -1,13 +1,16 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import DataTable from "../../components/dashboard/DataTable.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import DataTable from "../../../components/dashboard/DataTable.vue";
import { onMounted, ref } from "vue";
import { useRoute } from "vue-router";
import type { BlockchainLog, TindakanDokter } from "../../constants/interfaces";
import { useApi } from "../../composables/useApi";
import { LOG_TABLE_COLUMNS } from "../../constants/pagination";
import type {
BlockchainLog,
TindakanDokter,
} from "../../../constants/interfaces";
import { useApi } from "../../../composables/useApi";
import { LOG_TABLE_COLUMNS } from "../../../constants/pagination";
// Prevent TypeScript false positives for template-only usage.
const componentsInTemplate = { Sidebar, Footer, PageHeader, DataTable };

View File

@ -1,25 +1,28 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import FieldInput from "../../components/dashboard/FieldInput.vue";
import ButtonDark from "../../components/dashboard/ButtonDark.vue";
import DataTable from "../../components/dashboard/DataTable.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import FieldInput from "../../../components/dashboard/FieldInput.vue";
import ButtonDark from "../../../components/dashboard/ButtonDark.vue";
import DataTable from "../../../components/dashboard/DataTable.vue";
import { onMounted, ref, watch } from "vue";
import { useRoute } from "vue-router";
import { useApi, type ApiError } from "../../composables/useApi";
import { useDebounce } from "../../composables/useDebounce";
import { useApi, type ApiError } from "../../../composables/useApi";
import { useDebounce } from "../../../composables/useDebounce";
import {
DEBOUNCE_DELAY,
FILTER,
LOG_TABLE_COLUMNS,
} from "../../constants/pagination";
import type { BlockchainLog, TindakanDokter } from "../../constants/interfaces";
} from "../../../constants/pagination";
import type {
BlockchainLog,
TindakanDokter,
} from "../../../constants/interfaces";
import {
validateTindakanForm,
type TindakanFormErrors,
type TindakanFormInput,
} from "../../validation/tindakan";
} from "../../../validation/tindakan";
// Prevent TypeScript false positives for template-only usage.
const componentsInTemplate = {

View File

@ -1,16 +1,16 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import SearchInput from "../../components/dashboard/SearchInput.vue";
import SortDropdown from "../../components/dashboard/SortDropdown.vue";
import DataTable from "../../components/dashboard/DataTable.vue";
import PaginationControls from "../../components/dashboard/PaginationControls.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import SearchInput from "../../../components/dashboard/SearchInput.vue";
import SortDropdown from "../../../components/dashboard/SortDropdown.vue";
import DataTable from "../../../components/dashboard/DataTable.vue";
import PaginationControls from "../../../components/dashboard/PaginationControls.vue";
import { onMounted, ref, watch } from "vue";
import { useRoute, useRouter } from "vue-router";
import { usePagination } from "../../composables/usePagination";
import { useDebounce } from "../../composables/useDebounce";
import { useApi } from "../../composables/useApi";
import { usePagination } from "../../../composables/usePagination";
import { useDebounce } from "../../../composables/useDebounce";
import { useApi } from "../../../composables/useApi";
import {
DEFAULT_PAGE_SIZE,
DEBOUNCE_DELAY,
@ -18,8 +18,8 @@ import {
SORT_OPTIONS,
TINDAKAN_TABLE_COLUMNS,
FILTER,
} from "../../constants/pagination";
import type { TindakanDokter } from "../../constants/interfaces";
} from "../../../constants/pagination";
import type { TindakanDokter } from "../../../constants/interfaces";
interface ApiResponse {
data: TindakanDokter[];

View File

@ -1,16 +1,16 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import { onMounted, ref, watch } from "vue";
import { useRoute } from "vue-router";
import FieldInput from "../../components/dashboard/FieldInput.vue";
import { FILTER } from "../../constants/pagination";
import FieldInput from "../../../components/dashboard/FieldInput.vue";
import { FILTER } from "../../../constants/pagination";
import {
validateRekamMedisForm,
type RekamMedisFormErrors,
} from "../../validation/rekamMedis";
import { useApi } from "../../composables/useApi";
} from "../../../validation/rekamMedis";
import { useApi } from "../../../composables/useApi";
const route = useRoute();
const api = useApi();

View File

@ -1,13 +1,13 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import { onMounted, ref } from "vue";
import { useRoute } from "vue-router";
import type { BlockchainLog, RekamMedis } from "../../constants/interfaces";
import { useApi } from "../../composables/useApi";
import DataTable from "../../components/dashboard/DataTable.vue";
import { LOG_TABLE_COLUMNS } from "../../constants/pagination";
import type { BlockchainLog, RekamMedis } from "../../../constants/interfaces";
import { useApi } from "../../../composables/useApi";
import DataTable from "../../../components/dashboard/DataTable.vue";
import { LOG_TABLE_COLUMNS } from "../../../constants/pagination";
const data = ref<RekamMedis>();
const dataLog = ref<BlockchainLog[]>([]);
@ -21,7 +21,7 @@ const fetchData = async () => {
const result = await api.get<RekamMedis>(`/rekammedis/${route.params.id}`);
data.value = result;
} catch (error) {
console.error("Error fetching obat data:", error);
console.error("Error fetching rekam medis data:", error);
data.value = undefined;
}
};

View File

@ -1,16 +1,16 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import SearchInput from "../../components/dashboard/SearchInput.vue";
import SortDropdown from "../../components/dashboard/SortDropdown.vue";
import DataTable from "../../components/dashboard/DataTable.vue";
import PaginationControls from "../../components/dashboard/PaginationControls.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import SearchInput from "../../../components/dashboard/SearchInput.vue";
import SortDropdown from "../../../components/dashboard/SortDropdown.vue";
import DataTable from "../../../components/dashboard/DataTable.vue";
import PaginationControls from "../../../components/dashboard/PaginationControls.vue";
import { onBeforeUnmount, onMounted, ref, watch } from "vue";
import { useRoute, useRouter } from "vue-router";
import { usePagination } from "../../composables/usePagination";
import { useDebounce } from "../../composables/useDebounce";
import { useApi } from "../../composables/useApi";
import { usePagination } from "../../../composables/usePagination";
import { useDebounce } from "../../../composables/useDebounce";
import { useApi } from "../../../composables/useApi";
import {
DEFAULT_PAGE_SIZE,
DEBOUNCE_DELAY,
@ -18,11 +18,11 @@ import {
SORT_OPTIONS,
FILTER,
REKAM_MEDIS_TABLE_COLUMNS,
} from "../../constants/pagination";
} from "../../../constants/pagination";
import "cally";
import noUiSlider from "nouislider";
import "nouislider/dist/nouislider.css";
import type { RekamMedis } from "../../constants/interfaces";
import type { RekamMedis } from "../../../constants/interfaces";
interface ApiResponse {
data: RekamMedis[];
@ -274,9 +274,6 @@ const handleUpdate = (item: RekamMedis) => {
};
const handleDelete = async (item: RekamMedis) => {
if (
confirm(`Apakah Anda yakin ingin menghapus rekam medis "${item.id_visit}"?`)
) {
try {
await api.delete(`/rekammedis/${item.id_visit}`);
await fetchData();
@ -284,7 +281,6 @@ const handleDelete = async (item: RekamMedis) => {
console.error("Error deleting rekam medis:", error);
alert("Gagal menghapus data rekam medis");
}
}
};
watch([() => pagination.page.value], () => {

View File

@ -1,17 +1,17 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import { onMounted, ref, watch } from "vue";
import { useRoute } from "vue-router";
import FieldInput from "../../components/dashboard/FieldInput.vue";
import { FILTER } from "../../constants/pagination";
import type { RekamMedis } from "../../constants/interfaces";
import FieldInput from "../../../components/dashboard/FieldInput.vue";
import { FILTER } from "../../../constants/pagination";
import type { RekamMedis } from "../../../constants/interfaces";
import {
validateRekamMedisForm,
type RekamMedisFormErrors,
} from "../../validation/rekamMedis";
import { useApi } from "../../composables/useApi";
} from "../../../validation/rekamMedis";
import { useApi } from "../../../composables/useApi";
const route = useRoute();
const api = useApi();

View File

@ -1,24 +1,24 @@
<script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue";
import SearchInput from "../../components/dashboard/SearchInput.vue";
import SortDropdown from "../../components/dashboard/SortDropdown.vue";
import DataTable from "../../components/dashboard/DataTable.vue";
import PaginationControls from "../../components/dashboard/PaginationControls.vue";
import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../../components/dashboard/PageHeader.vue";
import SearchInput from "../../../components/dashboard/SearchInput.vue";
import SortDropdown from "../../../components/dashboard/SortDropdown.vue";
import DataTable from "../../../components/dashboard/DataTable.vue";
import PaginationControls from "../../../components/dashboard/PaginationControls.vue";
import { onMounted, ref, watch } from "vue";
import { useRoute, useRouter } from "vue-router";
import { usePagination } from "../../composables/usePagination";
import { useDebounce } from "../../composables/useDebounce";
import { useApi } from "../../composables/useApi";
import { usePagination } from "../../../composables/usePagination";
import { useDebounce } from "../../../composables/useDebounce";
import { useApi } from "../../../composables/useApi";
import {
DEFAULT_PAGE_SIZE,
DEBOUNCE_DELAY,
ITEMS_PER_PAGE_OPTIONS,
SORT_OPTIONS,
USERS_TABLE_COLUMNS,
} from "../../constants/pagination";
import type { Users } from "../../constants/interfaces";
} from "../../../constants/pagination";
import type { Users } from "../../../constants/interfaces";
interface ApiResponse {
data: Users[];