import { ComponentPropsWithoutRef } from 'react'; import { Alert, Badge, Tooltip } from '@grafana/ui'; import { Trans } from 'app/core/internationalization'; export enum ProvisionedResource { ContactPoint = 'contact point', Template = 'template', MuteTiming = 'mute timing', AlertRule = 'alert rule', RootNotificationPolicy = 'root notification policy', } // we'll omit the props we don't want consumers to overwrite and forward the others to the alert component type ExtraAlertProps = Omit, 'title' | 'severity'>; interface ProvisioningAlertProps extends ExtraAlertProps { resource: ProvisionedResource; } export const ProvisioningAlert = ({ resource, ...rest }: ProvisioningAlertProps) => { return ( This {resource} has been provisioned, that means it was created by config. Please contact your server admin to update this {resource}. ); }; export const ProvisioningBadge = ({ tooltip, provenance, }: { tooltip?: boolean; /** * If provided, will be used within any displayed tooltip to indicate the type of provisioning */ provenance?: string; }) => { const badge = ; if (tooltip) { const provenanceTooltip = ( This resource has been provisioned via {{ provenance }} and cannot be edited through the UI ); const standardTooltip = ( This resource has been provisioned and cannot be edited through the UI ); const tooltipContent = provenance ? provenanceTooltip : standardTooltip; return ( {badge} ); } return badge; };