Merge branch 'dev' of github.com:Tria-plc/emaui into Refactor

Resolved by unifying on the lib/data AdvancedTable (PR #10) as the canonical
table component: kept its API plus teammate i18n/feature work, kept the
folder-per-table structure (index.tsx + columns.tsx + actions.tsx) across all
27 tables, removed the parallel lib/table implementation, and fixed
pre-existing compile breaks in ExamDetailPage/QuestionAssigner/RecordResultModal.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Nati
2026-08-13 11:31:27 +00:00
182 changed files with 14181 additions and 8141 deletions

View File

@@ -1,5 +1,5 @@
import { Badge, Text } from '@mantine/core';
import type { AdvancedTableColumn } from '@ema-platform/ui';
import type { AdvancedColumn } from '@ema-platform/ui';
import {
STATUS_COLORS,
STATUS_LABELS,
@@ -7,27 +7,24 @@ import {
type LicenseStatus,
} from '@ema-platform/api';
export const dashboardQueueColumns: AdvancedTableColumn<LicenseApplication>[] = [
export const dashboardQueueColumns: AdvancedColumn<LicenseApplication>[] = [
{
key: 'applicationNumber',
header: 'Number',
render: (app) => (
cell: ({ row }) => (
<Text size="sm" fw={500}>
{app.applicationNumber}
{row.original.applicationNumber}
</Text>
),
},
{
key: 'companyName',
header: 'Company',
render: (app) => <Text size="sm">{app.companyName ?? '—'}</Text>,
cell: ({ row }) => <Text size="sm">{row.original.companyName ?? '—'}</Text>,
},
{
key: 'status',
header: 'Status',
render: (app) => (
<Badge variant="light" color={STATUS_COLORS[app.status as LicenseStatus]}>
{STATUS_LABELS[app.status as LicenseStatus]}
cell: ({ row }) => (
<Badge variant="light" color={STATUS_COLORS[row.original.status as LicenseStatus]}>
{STATUS_LABELS[row.original.status as LicenseStatus]}
</Badge>
),
},

View File

@@ -11,7 +11,7 @@ import {
} from '@mantine/core';
import { IconChevronRight } from '@tabler/icons-react';
import { useGetAssignedToMeQuery, useGetQueueQuery } from '@ema-platform/api';
import { AdvancedTable } from '@ema-platform/ui';
import { AdvancedTable, useServerTable } from '@ema-platform/ui';
import { dashboardQueueColumns } from './columns';
/**
@@ -25,6 +25,7 @@ export function DashboardPage() {
const navigate = useNavigate();
const queue = useGetQueueQuery();
const mine = useGetAssignedToMeQuery();
const table = useServerTable();
if (queue.isLoading || mine.isLoading) {
return (
@@ -37,6 +38,7 @@ export function DashboardPage() {
const unclaimed = queue.data?.items ?? [];
const inProgress = mine.data?.items ?? [];
const all = [...unclaimed, ...inProgress];
const paged = table.paginate(unclaimed.slice(0, 8));
const stats = [
{ label: 'Awaiting claim', value: unclaimed.length, color: 'blue' },
@@ -90,12 +92,16 @@ export function DashboardPage() {
</Text>
</Group>
<AdvancedTable
tableName="Awaiting claim"
columns={dashboardQueueColumns}
data={unclaimed.slice(0, 8)}
rowKey={(app) => app.id}
data={paged.rows}
itemCount={paged.itemCount}
pageIndex={paged.pageIndex}
onPageChange={table.setPageIndex}
pageSize={table.pageSize}
onRowClick={() => navigate('/licence-review')}
onRefresh={queue.refetch}
emptyTitle="Nothing waiting to be claimed."
refresh={queue.refetch}
emptyText="Nothing waiting to be claimed."
/>
</Card>
</Container>