import { css } from '@emotion/css'; import React from 'react'; import { GrafanaTheme2, renderMarkdown } from '@grafana/data'; import { useStyles2 } from '@grafana/ui'; export interface Props { title?: React.ReactNode; children?: React.ReactNode; markdown?: string; stepNumber?: number; } export function OperationExplainedBox({ title, stepNumber, markdown, children }: Props) { const styles = useStyles2(getStyles); return (
{stepNumber !== undefined &&
{stepNumber}
}
{title && (
{title}
)}
{markdown &&
} {children}
); } const getStyles = (theme: GrafanaTheme2) => { return { box: css({ background: theme.colors.background.secondary, padding: theme.spacing(1), borderRadius: theme.shape.borderRadius(), position: 'relative', }), boxInner: css({ marginLeft: theme.spacing(4), }), stepNumber: css({ fontWeight: theme.typography.fontWeightMedium, background: theme.colors.secondary.main, width: '20px', height: '20px', borderRadius: '50%', display: 'flex', alignItems: 'center', justifyContent: 'center', position: 'absolute', top: '10px', left: '11px', fontSize: theme.typography.bodySmall.fontSize, }), header: css({ paddingBottom: theme.spacing(0.5), display: 'flex', alignItems: 'center', fontFamily: theme.typography.fontFamilyMonospace, }), body: css({ color: theme.colors.text.secondary, 'p:last-child': { margin: 0, }, a: { color: theme.colors.text.link, textDecoration: 'underline', }, }), }; };