import { css } from '@emotion/css';
import * as React from 'react';
import { connect } from 'react-redux';
import { GrafanaTheme2, NavModel } from '@grafana/data';
import { Trans, t } from '@grafana/i18n';
import { LinkButton, useStyles2 } from '@grafana/ui';
import { Page } from 'app/core/components/Page/Page';
import { StoreState } from 'app/types/store';
import checkmarkSvg from 'img/licensing/checkmark.svg';
import customerSupportSvg from 'img/licensing/customer_support.svg';
import handinhandSupportSvg from 'img/licensing/handinhand_support.svg';
import pluginEnterpriseSvg from 'img/licensing/plugin_enterprise.svg';
import slaSvg from 'img/licensing/sla.svg';
import { getNavModel } from '../../core/selectors/navModel';
import { LicenseChrome } from './LicenseChrome';
import { ServerStats } from './ServerStats';
interface Props {
navModel: NavModel;
}
export function UpgradePage({ navModel }: Props) {
return (
);
}
const titleStyles = { fontWeight: 500, fontSize: '26px', lineHeight: '123%' };
interface UpgradeInfoProps {
editionNotice?: string;
}
export const UpgradeInfo = ({ editionNotice }: UpgradeInfoProps) => {
const styles = useStyles2(getStyles);
return (
<>
Enterprise license
>
);
};
const getStyles = (theme: GrafanaTheme2) => {
return {
column: css({
display: 'grid',
gridTemplateColumns: '100%',
columnGap: '20px',
rowGap: '40px',
'@media (min-width: 1050px)': {
gridTemplateColumns: '50% 50%',
},
}),
title: css({
margin: theme.spacing(4, 0),
}),
};
};
const GetEnterprise = () => {
return (
Get Grafana Enterprise
You can use the trial version for free for 30 days. We will remind you about it five days before the trial
period ends.
);
};
const CallToAction = () => {
return (
Contact us and get a free trial
);
};
const ServiceInfo = () => {
return (
At your service
-
24 × 7 × 365 support via
Also included:
Indemnification, working with Grafana Labs on future prioritization, and training from the core Grafana team.
);
};
const FeatureInfo = () => {
return (
Enhanced functionality
);
};
const FeatureListing = () => {
return (
-
LDAP, GitHub OAuth, Auth Proxy, Okta
-
-
{/* eslint-disable @grafana/i18n/no-untranslated-strings */}
{/* eslint-enable @grafana/i18n/no-untranslated-strings */}
);
};
interface ListProps {
nested?: boolean;
}
const List = ({ children, nested }: React.PropsWithChildren) => {
const listStyle = css({
display: 'flex',
flexDirection: 'column',
paddingTop: '8px',
'> div': {
marginBottom: `${nested ? 0 : 8}px`,
},
});
return {children}
;
};
interface ItemProps {
title: string;
image?: string;
}
const Item = ({ children, title, image }: React.PropsWithChildren) => {
const imageUrl = image ? image : checkmarkSvg;
const itemStyle = css({
display: 'flex',
'> img': {
display: 'block',
height: '22px',
flexGrow: 0,
paddingRight: '12px',
},
});
const titleStyle = css({
fontWeight: 500,
lineHeight: 1.7,
});
return (
);
};
const mapStateToProps = (state: StoreState) => ({
navModel: getNavModel(state.navIndex, 'upgrading'),
});
export default connect(mapStateToProps)(UpgradePage);