diff --git a/frontend/src/components/EmailRow.jsx b/frontend/src/components/EmailRow.jsx index eb00ca8..868d0da 100644 --- a/frontend/src/components/EmailRow.jsx +++ b/frontend/src/components/EmailRow.jsx @@ -1,5 +1,6 @@ import { useState } from 'react'; import { EmailApi } from '../api/client.js'; +import { Checkbox } from './ui/checkbox.jsx'; const fmtDate = (iso) => { const d = new Date(iso); @@ -16,7 +17,7 @@ const fmtSize = (b) => { return `${(b / 1048576).toFixed(1)} MB`; }; -export default function EmailRow({ email: initial, onRemove, selected, onToggleSelect, focused }) { +export default function EmailRow({ email: initial, onRemove, selected, onToggleSelect, focused, onOpen }) { const [email, setEmail] = useState(initial); const [acting, setActing] = useState(false); @@ -69,12 +70,16 @@ export default function EmailRow({ email: initial, onRemove, selected, onToggleS return ( onOpen ? onOpen(email) : openInGmail()} + title={onOpen ? 'Open' : 'Open in Gmail'} > {onToggleSelect && ( e.stopPropagation()}> - onToggleSelect(email.id)} /> + onToggleSelect(email.id)} + aria-label={selected ? 'Deselect email' : 'Select email'} + /> )} {email.isUnread && } @@ -83,7 +88,7 @@ export default function EmailRow({ email: initial, onRemove, selected, onToggleS {email.subject || '(no subject)'} - {email.snippet && — {email.snippet}} + {email.snippet && {email.snippet}} {email.hasAttachments && 📎} @@ -113,6 +118,11 @@ export default function EmailRow({ email: initial, onRemove, selected, onToggleS disabled={email._unsubDone} >{email._unsubDone ? '✓' : '✉✕'} )} +