+ Go to page
+
+
+ No page matched. Try another word.
+ {groups.map((group, i) => (
+
+ {i > 0 ? : null}
+
+ {grouped.get(group)?.map((item) => {
+ const Icon = item.icon;
+ return (
+ {
+ navigate(item.path);
+ setOpen(false);
+ }}
+ >
+
+
+
+ {item.title}
+
+
+ {item.description}
+
+
+
+ );
+ })}
+
+
+ ))}
+
+
+ Navigate:{" "}
+ ↑{" "}
+ ↓{" "}
+ to move ·{" "}
+ ↵ to
+ open · Esc to close
+
+
+ >
+ );
+}
diff --git a/src/components/ui/command.tsx b/src/components/ui/command.tsx
new file mode 100644
index 0000000..5d60b36
--- /dev/null
+++ b/src/components/ui/command.tsx
@@ -0,0 +1,134 @@
+import * as React from "react"
+import type { ComponentProps } from "react"
+import { Command as CommandPrimitive } from "cmdk"
+import { Search } from "lucide-react"
+
+import { cn } from "@/lib/utils"
+import { Dialog, DialogContent } from "@/components/ui/dialog"
+
+const Command = React.forwardRef<
+ React.ElementRef