gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/search-command/command-items.tsx · v0.5.5
Source
1 68f084a Mardin 2y ago // CommandItems.tsx
2 68f084a Mardin 2y ago import React, { FC } from "react";
3 68f084a Mardin 2y ago import {
4 68f084a Mardin 2y ago CommandGroup,
5 68f084a Mardin 2y ago CommandItem,
6 68f084a Mardin 2y ago CommandSeparator,
7 68f084a Mardin 2y ago } from "@marzneshin/components";
8 68f084a Mardin 2y ago import { useNavigate } from "@tanstack/react-router";
9 68f084a Mardin 2y ago import { useTranslation } from "react-i18next";
10 68f084a Mardin 2y ago import { CommandGroupConfig, CommandItemConfig } from "./commands";
11 68f084a Mardin 2y ago
12 68f084a Mardin 2y ago interface CommandItemsProps {
13 68f084a Mardin 2y ago items: CommandGroupConfig[];
14 68f084a Mardin 2y ago isSudo: () => boolean;
15 68f084a Mardin 2y ago setOpen: (open: boolean) => void;
16 68f084a Mardin 2y ago }
17 68f084a Mardin 2y ago
18 68f084a Mardin 2y ago export const CommandItems: FC<CommandItemsProps> = ({ items, isSudo, setOpen }) => {
19 68f084a Mardin 2y ago const navigate = useNavigate();
20 68f084a Mardin 2y ago const { t } = useTranslation();
21 68f084a Mardin 2y ago
22 68f084a Mardin 2y ago return (
23 68f084a Mardin 2y ago <>
24 68f084a Mardin 2y ago {items.map((group: CommandGroupConfig, groupIndex: number) => (
25 68f084a Mardin 2y ago <React.Fragment key={group.group}>
26 68f084a Mardin 2y ago <CommandGroup heading={group.group}>
27 68f084a Mardin 2y ago {group.items.map((item: CommandItemConfig) => (
28 68f084a Mardin 2y ago (!item.sudo || isSudo()) && (
29 68f084a Mardin 2y ago <CommandItem
30 68f084a Mardin 2y ago key={item.label}
31 68f084a Mardin 2y ago onSelect={() => {
32 68f084a Mardin 2y ago navigate({ to: item.path });
33 68f084a Mardin 2y ago setOpen(false);
34 68f084a Mardin 2y ago }}
35 68f084a Mardin 2y ago >
36 68f084a Mardin 2y ago <item.icon className="mr-2 size-4" />
37 68f084a Mardin 2y ago <span>{t(item.label)}</span>
38 68f084a Mardin 2y ago </CommandItem>
39 68f084a Mardin 2y ago )
40 68f084a Mardin 2y ago ))}
41 68f084a Mardin 2y ago </CommandGroup>
42 68f084a Mardin 2y ago {groupIndex < items.length - 1 && <CommandSeparator />}
43 68f084a Mardin 2y ago </React.Fragment>
44 68f084a Mardin 2y ago ))}
45 68f084a Mardin 2y ago </>
46 68f084a Mardin 2y ago );
47 68f084a Mardin 2y ago };