Implement quick-add registry (task 21)

- Add url field to QuickAddAction; make action optional
- Add getQuickAdds() + SerializedQuickAddItem to registry so quick-add
  data can cross the server→client RSC boundary without serializing fns
- Update calendar/lists/notes manifests with navigation URLs
- QuickAddProvider wraps root layout: holds sheet/palette open state and
  global cmd/ctrl+k shortcut
- QuickAddSheet: bottom drawer on mobile, right-side popover on desktop,
  actions grouped by module
- CommandPalette: cmdk-powered modal with fuzzy filter and full keyboard
  nav (arrows + enter + esc)
- QuickAddFab: client button replacing the plain + stub in the dashboard
- Add .claude/** to ESLint ignores to prevent stale worktree artifacts
  from failing lint

All 4 E2E specs pass; typecheck, lint, and build clean.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ginnoir
2026-05-06 13:44:33 -05:00
co-authored by Claude Sonnet 4.6
parent b9d3cce73a
commit 1133fa8aac
17 changed files with 845 additions and 25 deletions
+2 -7
View File
@@ -6,6 +6,7 @@ import { getCurrentSession } from "@/lib/session";
import { getWidget } from "@/modules/_core";
import { users } from "@/modules/_core/schema";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { QuickAddFab } from "@/components/quick-add-fab";
// Static lookup ensures Tailwind sees all sm:col-span-* classes at build time.
const smColSpan: Record<number, string> = {
@@ -43,13 +44,7 @@ export default async function DashboardPage() {
<div className="p-4 sm:p-6">
<div className="mb-6 flex items-center justify-between">
<h1 className="text-2xl font-bold">Dashboard</h1>
{/* Quick-add FAB — wired up in task 21 */}
<button
aria-label="Quick add"
className="flex h-10 w-10 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-md transition-opacity hover:opacity-90"
>
<span className="text-xl leading-none">+</span>
</button>
<QuickAddFab />
</div>
<div className="grid grid-cols-1 gap-4 sm:grid-cols-12">