Openstatus www.openstatus.dev
at main 45 lines 947 B view raw
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};