import { XIcon } from "lucide-react" import { useState, useEffect, useRef } from "react" import { motion, AnimatePresence } from "framer-motion" import { showHotkeyPanelAtom } from "@/store/sidebar" import { useAtom } from "jotai/react" export default function SlidingMenu() { const [isOpen, setIsOpen] = useAtom(showHotkeyPanelAtom) const panelRef = useRef(null) const [shortcuts] = useState<{ name: string; shortcut: string[] }[]>([ // TODO: change to better keybind // TODO: windows users don't understand these symbols, figure out better way to show keybinds { name: "New Todo", shortcut: ["⌘", "⌃", "n"] }, { name: "CMD Palette", shortcut: ["⌘", "k"] } // TODO: add // { name: "Global Search", shortcut: ["."] }, // { name: "(/pages)", shortcut: [".", "."] } ]) useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (panelRef.current && !panelRef.current.contains(event.target as Node)) { setIsOpen(false) } } if (isOpen) { document.addEventListener("mousedown", handleClickOutside) } return () => { document.removeEventListener("mousedown", handleClickOutside) } }, [isOpen, setIsOpen]) return ( {isOpen && ( <> setIsOpen(false)} />
Shortcuts
{shortcuts.map((shortcut, index) => (
{shortcut.name}
{shortcut.shortcut.join(" ")}
))}
)}
) }