Per-section reminder editing
- Replace the wizard-redirect edit shell with four focused single-form
pages: /reminders/[id]/edit/{account,message,when,groups}.
- Each click on a section card on the detail page goes straight to the
matching focused editor — no stepper, no other sections, no
wizard chrome. Save returns to the detail page.
- New form components live under components/reminder-edit/:
EditMessageForm, EditWhenForm (full recurrence builder reused),
EditGroupsForm, EditAccountForm. All submit via updateReminderAction
with the existing values for untouched fields. Switching account
clears group targets (groups are scoped per account; the form warns
and the user re-picks groups afterwards).
Activity tab
- New "Activity" item in the bottom nav + sidebar (between Reminders
and Settings).
- /activity page: full run history (last 200), filter tabs (All /
Success / Partial / Failed / Skipped), clickable rows that open the
underlying reminder, and a Clear history dialog. Mirrors the
dashboard's Recent Activity widget but with deeper data and its own
empty-state messaging.
Tests (+20 — 80 passing total)
- qr-dedupe.test.ts: 14 tests covering the makeQrDedupe factory (per-
account, fresh QRs always emit, reset/scope) and countdownRender
(the QR-expired timer logic — danger threshold, expired flag,
clamping). The dedupe + countdown logic is now used by pair-handler
and pair-live.
- reminder-edit/edit-message-form.test.tsx: 6 tests verifying the form
pre-fills, hides/shows the caption based on attachment, renders the
Save (not "Schedule reminder") action, and the action receives the
expected payload shape for both text-only and media-attached paths.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
18 lines
647 B
TypeScript
18 lines
647 B
TypeScript
import { Home, Smartphone, Calendar, Activity, Settings } from "lucide-react";
|
|
import type { LucideIcon } from "lucide-react";
|
|
|
|
export interface NavItem {
|
|
key: string;
|
|
href: string;
|
|
label: string;
|
|
icon: LucideIcon;
|
|
}
|
|
|
|
export const NAV_ITEMS: NavItem[] = [
|
|
{ key: "dashboard", href: "/", label: "Dashboard", icon: Home },
|
|
{ key: "accounts", href: "/accounts", label: "Accounts", icon: Smartphone },
|
|
{ key: "reminders", href: "/reminders", label: "Reminders", icon: Calendar },
|
|
{ key: "activity", href: "/activity", label: "Activity", icon: Activity },
|
|
{ key: "settings", href: "/settings", label: "Settings", icon: Settings },
|
|
];
|