Openstatus
www.openstatus.dev
1import { Code, Copy, CopyPlus, Pencil, Trash2 } from "lucide-react";
2
3export const actions = [
4 {
5 id: "edit",
6 label: "Edit",
7 icon: Pencil,
8 variant: "default" as const,
9 },
10 {
11 id: "copy-id",
12 label: "Copy ID",
13 icon: Copy,
14 variant: "default" as const,
15 },
16 {
17 id: "clone",
18 label: "Clone",
19 icon: CopyPlus,
20 variant: "default" as const,
21 },
22 {
23 id: "export",
24 label: "Export Code",
25 icon: Code,
26 variant: "default" as const,
27 },
28 {
29 id: "delete",
30 label: "Delete",
31 icon: Trash2,
32 variant: "destructive" as const,
33 },
34] as const;
35
36export type MonitorAction = (typeof actions)[number];
37
38export const getActions = (
39 props: Partial<Record<MonitorAction["id"], () => Promise<void> | void>>,
40): (MonitorAction & { onClick?: () => Promise<void> | void })[] => {
41 return actions.map((action) => ({
42 ...action,
43 onClick: props[action.id as keyof typeof props],
44 }));
45};