import { css } from '@emotion/css'; import React from 'react'; import { useEffectOnce } from 'react-use'; import { GrafanaTheme2 } from '@grafana/data'; import { config } from '@grafana/runtime'; import { Alert, useStyles2 } from '@grafana/ui'; import { AppNotification, timeoutMap } from 'app/types'; interface Props { appNotification: AppNotification; onClearNotification: (id: string) => void; } export default function AppNotificationItem({ appNotification, onClearNotification }: Props) { const styles = useStyles2(getStyles); useEffectOnce(() => { setTimeout(() => { onClearNotification(appNotification.id); }, timeoutMap[appNotification.severity]); }); const showTraceId = config.featureToggles.tracing && appNotification.traceId; return ( onClearNotification(appNotification.id)} elevated >
{appNotification.component || appNotification.text} {showTraceId && Trace ID: {appNotification.traceId}}
); } function getStyles(theme: GrafanaTheme2) { return { wrapper: css({ display: 'flex', flexDirection: 'column', }), trace: css({ fontSize: theme.typography.pxToRem(10), }), }; }