mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* grafana/ui: Move Stack out of unstable * grafana/ui: Replace imports * Replace the import from experimental * Cleanup * Remove invalid prop * Add flexGrow * Remove Stack used in Field * Remove import
60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import { css } from '@emotion/css';
|
|
import React from 'react';
|
|
|
|
import { GrafanaTheme2 } from '@grafana/data';
|
|
import { Icon, Text, Toggletip, useStyles2, Stack } from '@grafana/ui';
|
|
|
|
interface NeedHelpInfoProps {
|
|
contentText: string | JSX.Element;
|
|
externalLink?: string;
|
|
linkText?: string;
|
|
title: string;
|
|
}
|
|
export function NeedHelpInfo({ contentText, externalLink, linkText, title }: NeedHelpInfoProps) {
|
|
const styles = useStyles2(getStyles);
|
|
return (
|
|
<Toggletip
|
|
content={<div className={styles.mutedText}>{contentText}</div>}
|
|
title={
|
|
<Stack gap={1} direction="row">
|
|
<Icon name="question-circle" />
|
|
{title}
|
|
</Stack>
|
|
}
|
|
footer={
|
|
externalLink ? (
|
|
<a href={externalLink} target="_blank" rel="noreferrer">
|
|
<Stack direction="row" gap={0.5} alignItems="center">
|
|
<Text color="link">
|
|
{linkText} <Icon size="sm" name="external-link-alt" />
|
|
</Text>
|
|
</Stack>
|
|
</a>
|
|
) : undefined
|
|
}
|
|
closeButton={true}
|
|
placement="bottom-start"
|
|
>
|
|
<div className={styles.helpInfo}>
|
|
<Stack direction="row" alignItems="center" gap={0.5}>
|
|
<Icon name="question-circle" size="sm" />
|
|
<Text variant="bodySmall" color="primary">
|
|
Need help?
|
|
</Text>
|
|
</Stack>
|
|
</div>
|
|
</Toggletip>
|
|
);
|
|
}
|
|
|
|
const getStyles = (theme: GrafanaTheme2) => ({
|
|
mutedText: css`
|
|
color: ${theme.colors.text.secondary};
|
|
font-size: ${theme.typography.size.sm};
|
|
`,
|
|
helpInfo: css`
|
|
cursor: pointer;
|
|
text-decoration: underline;
|
|
`,
|
|
});
|