gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/search-command/command-box.tsx · v0.5.6
Source
1 3d1a4b1 Mrdn 2y ago import { useState, useEffect } from "react";
2 3d1a4b1 Mrdn 2y ago import {
3 9ddfbc8 Mardin 2y ago CommandDialog,
4 9ddfbc8 Mardin 2y ago CommandEmpty,
5 9ddfbc8 Mardin 2y ago CommandInput,
6 9ddfbc8 Mardin 2y ago CommandList,
7 68f084a Mardin 2y ago ScrollArea,
8 3d1a4b1 Mrdn 2y ago } from "@marzneshin/components";
9 3d1a4b1 Mrdn 2y ago import { SearchBox } from "./search-box";
10 9ddfbc8 Mardin 2y ago import { useAuth } from "@marzneshin/features/auth";
11 68f084a Mardin 2y ago import { CommandItems } from "./command-items";
12 68f084a Mardin 2y ago import { commandItems } from "./commands";
13 3d1a4b1 Mrdn 2y ago
14 3d1a4b1 Mrdn 2y ago export function CommandBox() {
15 9ddfbc8 Mardin 2y ago const [open, setOpen] = useState(false);
16 68f084a Mardin 2y ago const { isSudo } = useAuth();
17 3d1a4b1 Mrdn 2y ago
18 9ddfbc8 Mardin 2y ago useEffect(() => {
19 9ddfbc8 Mardin 2y ago const down = (e: KeyboardEvent) => {
20 9ddfbc8 Mardin 2y ago if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
21 9ddfbc8 Mardin 2y ago e.preventDefault();
22 9ddfbc8 Mardin 2y ago setOpen((open) => !open);
23 9ddfbc8 Mardin 2y ago }
24 9ddfbc8 Mardin 2y ago };
25 9ddfbc8 Mardin 2y ago document.addEventListener("keydown", down);
26 9ddfbc8 Mardin 2y ago return () => document.removeEventListener("keydown", down);
27 9ddfbc8 Mardin 2y ago }, []);
28 3d1a4b1 Mrdn 2y ago
29 9ddfbc8 Mardin 2y ago return (
30 9ddfbc8 Mardin 2y ago <>
31 9ddfbc8 Mardin 2y ago <SearchBox onClick={() => setOpen(true)} />
32 9ddfbc8 Mardin 2y ago <CommandDialog open={open} onOpenChange={setOpen}>
33 9ddfbc8 Mardin 2y ago <CommandInput
34 9ddfbc8 Mardin 2y ago placeholder="Type a command or search..."
35 9ddfbc8 Mardin 2y ago className="focus:ring-0 ring-0 m-1 border-none"
36 9ddfbc8 Mardin 2y ago />
37 68f084a Mardin 2y ago <ScrollArea className="max-h-100">
38 68f084a Mardin 2y ago <CommandList>
39 68f084a Mardin 2y ago <CommandEmpty>No results found.</CommandEmpty>
40 68f084a Mardin 2y ago <CommandItems items={commandItems} isSudo={isSudo} setOpen={setOpen} />
41 68f084a Mardin 2y ago </CommandList>
42 68f084a Mardin 2y ago </ScrollArea>
43 9ddfbc8 Mardin 2y ago </CommandDialog>
44 9ddfbc8 Mardin 2y ago </>
45 9ddfbc8 Mardin 2y ago );
46 3d1a4b1 Mrdn 2y ago }
47 68f084a Mardin 2y ago
48 68f084a Mardin 2y ago