Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
3.3 kB ยท 131 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132import { Notification, Settings, Email, Chat, Delete, Webhook,} from "@openstatus/icons";import { DiscordIcon, GoogleIcon, GrafanaIcon, MicrosoftTeamsIcon, TelegramIcon, WhatsappIcon,} from "@openstatus/icons/brand";import { OpsGenieIcon } from "@openstatus/icons/brand";import { PagerDutyIcon } from "@openstatus/icons/brand";import { SlackIcon } from "@openstatus/icons/brand";
import { FormDiscord } from "@/components/forms/notifications/form-discord";import { FormEmail } from "@/components/forms/notifications/form-email";import { FormGoogleChat } from "@/components/forms/notifications/form-google-chat";import { FormGrafanaOncall } from "@/components/forms/notifications/form-grafana-oncall";import { FormMsTeams } from "@/components/forms/notifications/form-ms-teams";import { FormNtfy } from "@/components/forms/notifications/form-ntfy";import { FormOpsGenie } from "@/components/forms/notifications/form-opsgenie";import { FormPagerDuty } from "@/components/forms/notifications/form-pagerduty";import { FormSlack } from "@/components/forms/notifications/form-slack";import { FormSms } from "@/components/forms/notifications/form-sms";import { FormTelegram } from "@/components/forms/notifications/form-telegram";import { FormWebhook } from "@/components/forms/notifications/form-webhook";import { FormWhatsApp } from "@/components/forms/notifications/form-whatsapp";
export const actions = [ { id: "edit", label: "Settings", icon: Settings, variant: "default" as const, }, { id: "delete", label: "Delete", icon: Delete, variant: "destructive" as const, },] as const;
export type NotifierAction = (typeof actions)[number];
export const getActions = ( props: Partial<Record<NotifierAction["id"], () => Promise<void> | void>>,): (NotifierAction & { onClick?: () => Promise<void> | void })[] => { return actions.map((action) => ({ ...action, onClick: props[action.id as keyof typeof props], }));};
// List of the notifiers
export const config = { slack: { icon: SlackIcon, label: "Slack", form: FormSlack, }, "ms-teams": { icon: MicrosoftTeamsIcon, label: "Microsoft Teams", form: FormMsTeams, }, discord: { icon: DiscordIcon, label: "Discord", form: FormDiscord, }, email: { icon: Email, label: "Email", form: FormEmail, }, sms: { icon: Chat, label: "SMS", form: FormSms, }, webhook: { icon: Webhook, label: "Webhook", form: FormWebhook, }, opsgenie: { icon: OpsGenieIcon, label: "OpsGenie", form: FormOpsGenie, }, "google-chat": { icon: GoogleIcon, label: "Google Chat", form: FormGoogleChat, }, "grafana-oncall": { icon: GrafanaIcon, label: "Grafana OnCall", form: FormGrafanaOncall, }, pagerduty: { icon: PagerDutyIcon, label: "PagerDuty", form: FormPagerDuty, }, ntfy: { icon: Notification, // TODO: add svg icon label: "Ntfy", form: FormNtfy, }, telegram: { icon: TelegramIcon, label: "Telegram", form: FormTelegram, }, whatsapp: { icon: WhatsappIcon, label: "WhatsApp", form: FormWhatsApp, },};
export type NotifierProvider = keyof typeof config;