+
Details
+
+ {field('Name', c.name)}
+ {field('Code', c.code, true)}
+ {c.gstin !== undefined && c.gstin !== '' && field('GSTIN', c.gstin, true)}
+ {field('Status', {c.status})}
+ {field('State', c.stateCode)}
+
+
+ {c.address !== '' && (
+
+
Address
+
{c.address}
+
+ )}
+
+ {c.contacts.length > 0 && (
+ <>
+
+
Contacts
+
+ {c.contacts.map((ct, i) => (
+
+
{contactRoleLabel(ct.role)}
+ {ct.name !== undefined && ct.name !== '' &&
{ct.name}}
+ {ct.email !== undefined && ct.email !== '' &&
{ct.email}}
+ {ct.phone !== undefined && ct.phone !== '' &&
{ct.phone}}
+ {(ct.name === undefined || ct.name === '') && (ct.email === undefined || ct.email === '')
+ && (ct.phone === undefined || ct.phone === '') &&
—}
+
+ ))}
+
+ >
+ )}
+
+ )
+}
+
/**
* Support-access card (D18 WS-F): the fields the old APEX book carried on every
* client row — AnyDesk id (44× referenced there), OS, district/sector — plus the
diff --git a/apps/hq-web/src/pages/Clients.tsx b/apps/hq-web/src/pages/Clients.tsx
index f1e538f..3c69a5d 100644
--- a/apps/hq-web/src/pages/Clients.tsx
+++ b/apps/hq-web/src/pages/Clients.tsx
@@ -1,7 +1,7 @@
import { useEffect, useRef, useState } from 'react'
import { useNavigate, useSearchParams } from 'react-router-dom'
-import { Badge, Button, DataTable, EmptyState, ErrorState, FilterChips, PageHeader, Skeleton, Toolbar } from '@sims/ui'
-import { getClients, CLIENT_STATUSES, type ClientStatus, type DocStatus } from '../api'
+import { Badge, Button, DataTable, EmptyState, ErrorState, FilterChips, PageHeader, Skeleton, Toolbar, type BadgeTone } from '@sims/ui'
+import { getClients, CLIENT_STATUSES, type ClientStatus, type DocStatus, type DocType } from '../api'
import { ClientFormDialog } from '../components/ClientFormDialog'
/**
@@ -58,9 +58,27 @@ export const CLIENT_TONE: Record