useCommandPalette.ts raw
1 import * as React from "react";
2
3 export function useCommandPalette() {
4 const [open, setOpen] = React.useState(false);
5
6 React.useEffect(() => {
7 const down = (e: KeyboardEvent) => {
8 if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
9 e.preventDefault();
10 setOpen((open) => !open);
11 }
12 };
13
14 document.addEventListener("keydown", down);
15 return () => document.removeEventListener("keydown", down);
16 }, []);
17
18 return {
19 open,
20 setOpen,
21 };
22 }
23