Files
grafana/public/app/features/alerting/unified/components/rules/NoRulesCTA.tsx
Alex Khomenko 25779bb6e5 Stack: Use the component from grafana/ui (#77543)
* 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
2023-11-06 18:15:52 +02:00

58 lines
1.8 KiB
TypeScript

import { css } from '@emotion/css';
import React from 'react';
import { GrafanaTheme2 } from '@grafana/data/src/themes';
import { CallToActionCard, useStyles2, Stack } from '@grafana/ui';
import EmptyListCTA from 'app/core/components/EmptyListCTA/EmptyListCTA';
import { logInfo, LogMessages } from '../../Analytics';
import { useRulesAccess } from '../../utils/accessControlHooks';
export const NoRulesSplash = () => {
const { canCreateGrafanaRules, canCreateCloudRules } = useRulesAccess();
const styles = useStyles2(getStyles);
if (canCreateGrafanaRules || canCreateCloudRules) {
return (
<div>
<p>{"You haven't created any alert rules yet"}</p>
<Stack gap={1}>
<div className={styles.newRuleCard}>
<EmptyListCTA
title=""
buttonIcon="bell"
buttonLink={'alerting/new/alerting'}
buttonTitle="New alert rule"
proTip="you can also create alert rules from existing panels and queries."
proTipLink="https://grafana.com/docs/"
proTipLinkTitle="Learn more"
proTipTarget="_blank"
onClick={() => logInfo(LogMessages.alertRuleFromScratch)}
/>
</div>
<div className={styles.newRuleCard}>
<EmptyListCTA
title=""
buttonIcon="plus"
buttonLink={'alerting/new/recording'}
buttonTitle="New recording rule"
onClick={() => logInfo(LogMessages.recordingRuleFromScratch)}
/>
</div>
</Stack>
</div>
);
}
return <CallToActionCard message="No rules exist yet." callToActionElement={<div />} />;
};
const getStyles = (theme: GrafanaTheme2) => ({
newRuleCard: css`
width: calc(50% - ${theme.spacing(1)});
> div {
height: 100%;
}
`,
});