"use client"; import { useEffect, useRef } from "react"; import { useRouter } from "next/navigation"; import { Sparkles, X } from "lucide-react"; import { useQuickAdd } from "./quick-add-provider"; import { NavIcon } from "./nav-icon"; import type { SerializedQuickAddItem } from "@/modules/_core"; function groupByModule( actions: SerializedQuickAddItem[], ): Map { const map = new Map(); for (const action of actions) { if (!map.has(action.moduleId)) { map.set(action.moduleId, { name: action.moduleName, items: [] }); } map.get(action.moduleId)!.items.push(action); } return map; } const QUICK_ADD_ICON: Record = { "calendar-plus": "calendar", "calendar-days": "calendar", "shopping-cart": "cart", "list-checks": "check-square", "list-plus": "list", "file-plus": "note", }; function useShortcutLabel() { if (typeof navigator === "undefined") return "⌘K"; return /Mac|iPhone|iPad|iPod/.test(navigator.platform) ? "⌘K" : "Ctrl+K"; } export function QuickAddSheet() { const { sheetOpen, closeSheet, actions } = useQuickAdd(); const shortcut = useShortcutLabel(); const router = useRouter(); const backdropRef = useRef(null); useEffect(() => { if (!sheetOpen) return; function onKey(e: KeyboardEvent) { if (e.key === "Escape") closeSheet(); } document.addEventListener("keydown", onKey); return () => document.removeEventListener("keydown", onKey); }, [sheetOpen, closeSheet]); if (!sheetOpen) return null; const groups = groupByModule(actions); function handleAction(url: string) { closeSheet(); router.push(url); } return ( <>