diff --git a/src/pages/clients/Clients.tsx b/src/pages/clients/Clients.tsx index ac67e33..86de92e 100644 --- a/src/pages/clients/Clients.tsx +++ b/src/pages/clients/Clients.tsx @@ -218,40 +218,109 @@ const Clients = () => { - {filtered.map((c: ClientRow) => ( - c.id && navigate(`/clients/${c.id}/general`)} - className="cursor-pointer hover:bg-zinc-100 dark:hover:bg-zinc-700 transition-colors text-base" - > - - {c.displayName ?? '—'} - - - {c.accountNumber ?? '—'} - - - {c.externalId ?? '—'} - - - {c?.status?.id === 300 && ( - - )} - {c?.status?.id === 200 && ( - - )} - - - {c.officeName ?? '—'} - - - ))} + {(() => { + const hasSearch = searchTerm.trim() !== '' + + return rows.length === 0 && !hasSearch ? ( + navigate('/clients/create') : undefined + } + onKeyDown={e => { + if (hasSearch) return + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault() + navigate('/clients/create') + } + }} + > + + {t('empty.noClients', 'No clients available')} + + + ) : rows.length === 0 && hasSearch ? ( + + + {t('empty.noResults', 'No matching clients found')} + + + ) : filtered.length === 0 ? ( + + + {t('empty.noResults', 'No matching clients found')} + + + ) : ( + filtered.map((c: ClientRow) => { + const canNavigate = typeof c.id === 'number' + + return ( + navigate(`/clients/${c.id}/general`) + : undefined + } + onKeyDown={e => { + if (!canNavigate) return + + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault() + navigate(`/clients/${c.id}/general`) + } + }} + className={`${ + canNavigate + ? 'cursor-pointer hover:bg-zinc-100 dark:hover:bg-zinc-700' + : '' + } transition-colors text-base`} + > + + {c.displayName ?? '—'} + + + {c.accountNumber ?? '—'} + + + {c.externalId ?? '—'} + + + {c?.status?.id === 300 && ( + + )} + {c?.status?.id === 200 && ( + + )} + + + {c.officeName ?? '—'} + + + ) + }) + ) + })()}