frontend: keyboard combobox for appointments + clickable edit sheet

- new reusable <Combobox> (Base UI Autocomplete): arrow-key + Enter navigation
- New Appointment dialog: patient search and provider are now searchable
  comboboxes (provider sourced from /api/staff/providers) instead of a hand-
  rolled dropdown and a free-text input
- appointment rows are clickable and open an <AppointmentDetailSheet> to edit
  date/time/type/provider/status or delete; "Added by AI" badge shown on rows
  and in the sheet for source="ai" records

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Khalid Abdi
2026-06-14 19:38:26 +03:00
parent 929bec8f31
commit 91fbe4129f
5 changed files with 543 additions and 74 deletions
@@ -238,6 +238,7 @@
"change": "Change",
"searchPlaceholder": "Search name or file number",
"noPatients": "No patients found.",
"noProviders": "No doctors found.",
"date": "Date",
"time": "Time",
"type": "Type",
@@ -249,6 +250,25 @@
"pickPatientBody": "Search and select a patient first.",
"addedTitle": "Appointment added"
},
"sheet": {
"title": "Appointment",
"editHint": "Click any appointment to edit — this is enabled.",
"date": "Date",
"time": "Time",
"type": "Type",
"provider": "Provider",
"status": "Status",
"save": "Save changes",
"saving": "Saving…",
"delete": "Delete",
"savedTitle": "Appointment updated",
"savedBody": "Your changes were saved.",
"saveFailedTitle": "Couldn't save",
"saveFailedBody": "Please try again.",
"deletedTitle": "Appointment deleted",
"deleteFailedTitle": "Couldn't delete",
"deleteFailedBody": "Please try again."
},
"calendarDialog": {
"today": "Today",
"appointmentCount_one": "{{count}} appointment",