frontend: block past dates in appointment/invoice pickers; drop stale Settings Features

- Appointment date picker disables days before today.
- Invoice issue-date picker disables past days by default, with an opt-in
  "Back-date" checkbox for recording older invoices (edit mode keeps past
  dates). Added invoices.dialog.backdate to all locales.
- Removed the inert, outdated "Features" section (patient-owned storage /
  require signed toggles) from Settings and its now-unused i18n keys.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Khalid Abdi
2026-07-09 20:41:58 +03:00
parent 143ffc39f1
commit 35f07c508d
35 changed files with 4028 additions and 157 deletions
@@ -51,6 +51,14 @@ const TYPES = [
const controlClass =
"h-9 w-full rounded-3xl border border-transparent bg-input/50 px-3 text-sm text-foreground outline-none transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/30";
// Local start-of-day so the calendar can disable days strictly before today
// (appointments can't be scheduled in the past).
const startOfToday = () => {
const d = new Date();
d.setHours(0, 0, 0, 0);
return d;
};
function Field({ label, children }: { label: string; children: ReactNode }) {
return (
<label className="flex flex-col gap-1.5">
@@ -251,6 +259,7 @@ export function AddAppointmentDialog({
/>
<PopoverPopup>
<Calendar
disabled={{ before: startOfToday() }}
mode="single"
onSelect={(d) => {
if (d) {