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