+
+
- {/* Header */}
-
+
Customers
-
+
Manage and monitor your customer records.
-
+
- {/* Stats */}
- {/* Customer Table */}
-
-
+
+
-
- Customer List
-
-
+ Customer List
+
Recent customer activities and records.
-
+
-
+
+
-
-
-
-
- | Customer |
- Company |
- Email |
- Status |
- Actions |
-
-
-
-
- {paginated.map((customer) => (
-
-
-
-
-
-
-
-
-
- {customer.name}
-
-
- ID #{customer.id}
-
-
-
- |
-
-
- {customer.company}
- |
-
-
- {customer.email}
- |
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
- ))}
-
-
-
-
-
{
- setPageSize(size);
- setPage(1);
- }}
- />
-
-
-
- );
-}
-
-function Pagination({
- page,
- pageSize,
- total,
- totalPages,
- start,
- end,
- onPageChange,
- onPageSizeChange,
-}: {
- page: number;
- pageSize: number;
- total: number;
- totalPages: number;
- start: number;
- end: number;
- onPageChange: (page: number) => void;
- onPageSizeChange: (size: number) => void;
-}) {
- const showingFrom = total === 0 ? 0 : start + 1;
-
- return (
-
-
-
-
-
- Showing {showingFrom}–{end} of {total}
-
-
-
-
- onPageChange(page - 1)}
- disabled={page <= 1}
- className="inline-flex h-9 items-center gap-1 rounded-xl border border-slate-200 px-3 text-sm font-medium text-slate-700 transition hover:border-[#33578D]/30 hover:bg-[#33578D]/10 hover:text-[#33578D] disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent disabled:hover:text-slate-700"
- >
-
- Prev
-
-
- {Array.from({ length: totalPages }, (_, i) => i + 1).map((p) => {
- const isActive = p === page;
- return (
- onPageChange(p)}
- aria-current={isActive ? "page" : undefined}
- className={
- isActive
- ? "h-9 w-9 rounded-xl bg-[#33578D] text-sm font-medium text-white"
- : "h-9 w-9 rounded-xl border border-slate-200 text-sm font-medium text-slate-700 transition hover:border-[#33578D]/30 hover:bg-[#33578D]/10 hover:text-[#33578D]"
- }
- >
- {p}
-
- );
- })}
-
- onPageChange(page + 1)}
- disabled={page >= totalPages}
- className="inline-flex h-9 items-center gap-1 rounded-xl border border-slate-200 px-3 text-sm font-medium text-slate-700 transition hover:border-[#33578D]/30 hover:bg-[#33578D]/10 hover:text-[#33578D] disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent disabled:hover:text-slate-700"
- >
- Next
-
-
+
+ { }}
+ pagination={{
+ pageIndex: pagination.pageIndex,
+ pageSize: pagination.pageSize,
+ pageCount: pageCount,
+ totalCount: total,
+ }}
+ tableOptions={{
+ state: { pagination },
+ onPaginationChange: setPagination,
+ }}
+ containerClassName="border-b shadow-none"
+ footer={DataTableFooter}
+ />
+
+
);
@@ -325,8 +236,8 @@ function StatCard({
icon: React.ReactNode;
}) {
return (
-
-
+
+
{title}
{value}
@@ -335,8 +246,8 @@ function StatCard({
{icon}
-
-
+
+
);
}
diff --git a/apps/edr-freight-web/portal/src/pages/customers/DeleteCustomerDialog.tsx b/apps/edr-freight-web/portal/src/pages/customers/DeleteCustomerDialog.tsx
index b75effc64..d0d766c0c 100644
--- a/apps/edr-freight-web/portal/src/pages/customers/DeleteCustomerDialog.tsx
+++ b/apps/edr-freight-web/portal/src/pages/customers/DeleteCustomerDialog.tsx
@@ -9,9 +9,9 @@ import {
DialogHeader,
DialogTitle,
DialogTrigger,
-} from "@/components/ui/dialog";
+} from "@edr/ui-common";
-import { Button } from "@/components/ui/button";
+import { Button } from "@edr/ui-common";
export interface DeleteCustomerDialogProps {
customerName: string;