Polish footer menu, Notes spacing, and Appointments add flow

- User menu: rename "Quick nav" to "Search"; add spacing to the clinic
  submenu so it no longer touches the parent menu (sideOffset).
- Notes: lay the list, title, toolbar, and writing area out as separate
  rounded panels with gaps so they're no longer stuck together.
- Sidebar: shorten the "Appointments & Schedule" label to "Appointments".
- Appointments: replace the oversized patient form with a compact
  "New appointment" dialog — pick a patient via quick search by name/file
  number, set time/type/provider; the entry is added to today's schedule.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Khalid Abdi
2026-06-05 01:28:32 +03:00
parent 346954db3f
commit 67137c722d
6 changed files with 304 additions and 46 deletions
+2 -2
View File
@@ -108,7 +108,7 @@ export function NotesEditor({
});
return (
<div className="flex h-full flex-col gap-3">
<div className="flex h-full flex-col gap-4">
<div className="flex items-center gap-2">
<Input
className="font-medium text-base"
@@ -214,7 +214,7 @@ export function NotesEditor({
</ToolbarGroup>
</Toolbar>
<div className="min-h-0 flex-1 cursor-text overflow-y-auto rounded-xl border bg-card">
<div className="min-h-0 flex-1 cursor-text overflow-y-auto rounded-2xl border bg-card/30">
<EditorContent className="h-full" editor={editor} />
</div>
</div>
+29 -29
View File
@@ -102,9 +102,9 @@ export function NotesView() {
};
return (
<div className="flex h-full w-full">
<div className="flex h-full w-full gap-4 p-4">
{/* Left: note list */}
<aside className="flex w-72 shrink-0 flex-col border-border border-r">
<aside className="flex w-72 shrink-0 flex-col overflow-hidden rounded-2xl border bg-card/30">
<div className="flex items-center justify-between gap-2 border-border border-b px-4 py-3">
<h1 className="font-semibold text-base tracking-tight">Notes</h1>
<Button
@@ -150,34 +150,34 @@ export function NotesView() {
{/* Right: editor or empty state */}
<div className="flex min-w-0 flex-1 flex-col overflow-hidden">
{selected ? (
<div className="flex h-full flex-col p-6">
<NotesEditor
key={selected.id || `draft-${draftKey}`}
note={selected}
onDelete={selected.id ? () => remove(selected.id) : undefined}
onSave={save}
saving={saving}
/>
</div>
<NotesEditor
key={selected.id || `draft-${draftKey}`}
note={selected}
onDelete={selected.id ? () => remove(selected.id) : undefined}
onSave={save}
saving={saving}
/>
) : (
<Empty className="flex-1">
<EmptyHeader>
<EmptyMedia variant="icon">
<NotebookPen />
</EmptyMedia>
<EmptyTitle>No note selected</EmptyTitle>
<EmptyDescription>
Select a note from the list, or create a new one to start
writing.
</EmptyDescription>
</EmptyHeader>
<EmptyContent>
<Button onClick={startNew} type="button">
<Plus className="size-4" />
New note
</Button>
</EmptyContent>
</Empty>
<div className="flex flex-1 items-center justify-center rounded-2xl border bg-card/30">
<Empty>
<EmptyHeader>
<EmptyMedia variant="icon">
<NotebookPen />
</EmptyMedia>
<EmptyTitle>No note selected</EmptyTitle>
<EmptyDescription>
Select a note from the list, or create a new one to start
writing.
</EmptyDescription>
</EmptyHeader>
<EmptyContent>
<Button onClick={startNew} type="button">
<Plus className="size-4" />
New note
</Button>
</EmptyContent>
</Empty>
</div>
)}
</div>
</div>