/opt/mawid/apps/dashboard/app/(app)/patients
Edit: /opt/mawid/apps/dashboard/app/(app)/patients/page.tsx (2159B)
'use client';
import { useEffect, useState } from 'react';
import Link from 'next/link';
import { api } from '@/lib/api';
import { useLang } from '@/lib/i18n';
import { Badge, Card, Input, Spinner } from '@/components/ui';
interface PatientRow {
id: string;
name: string | null;
waPhone: string;
language: string;
tags: string[];
lastVisitAt: string | null;
}
export default function PatientsPage() {
const { t, lang } = useLang();
const [search, setSearch] = useState('');
const [patients, setPatients] = useState
(null);
useEffect(() => {
const handle = setTimeout(() => {
api(`/patients?search=${encodeURIComponent(search)}`).then(setPatients);
}, 250);
return () => clearTimeout(handle);
}, [search]);
return (
setSearch(e.target.value)} />
{patients === null ? (
) : patients.length === 0 ? (
{t('noResults')}
) : (
{patients.map((p) => (
{p.name ?? '—'}
{p.waPhone}
{p.tags.map((tag) => (
{tag}
))}
{p.language}
{p.lastVisitAt && (
{new Date(p.lastVisitAt).toLocaleDateString(lang === 'ar' ? 'ar' : lang)}
)}
))}
)}
);
}