Openstatus www.openstatus.dev
at main 71 lines 1.2 kB view raw
1import { 2 Cog, 3 Copy, 4 CopyPlus, 5 Globe, 6 Network, 7 Server, 8 Trash2, 9} from "lucide-react"; 10 11export const monitorTypes = [ 12 { 13 id: "http", 14 label: "HTTP", 15 icon: Globe, 16 }, 17 { 18 id: "tcp", 19 label: "TCP", 20 icon: Network, 21 }, 22 { 23 id: "dns", 24 label: "DNS", 25 icon: Server, 26 }, 27] as const; 28 29export const actions = [ 30 { 31 id: "edit", 32 label: "Settings", 33 icon: Cog, 34 variant: "default" as const, 35 }, 36 { 37 id: "copy-id", 38 label: "Copy ID", 39 icon: Copy, 40 variant: "default" as const, 41 }, 42 { 43 id: "clone", 44 label: "Clone", 45 icon: CopyPlus, 46 variant: "default" as const, 47 }, 48 // { 49 // id: "export", 50 // label: "Export Code", 51 // icon: Code, 52 // variant: "default" as const, 53 // }, 54 { 55 id: "delete", 56 label: "Delete", 57 icon: Trash2, 58 variant: "destructive" as const, 59 }, 60] as const; 61 62export type MonitorAction = (typeof actions)[number]; 63 64export const getActions = ( 65 props: Partial<Record<MonitorAction["id"], () => Promise<void> | void>>, 66): (MonitorAction & { onClick?: () => Promise<void> | void })[] => { 67 return actions.map((action) => ({ 68 ...action, 69 onClick: props[action.id as keyof typeof props], 70 })); 71};