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 (
{title}
{children}
); }; const mapStateToProps = (state: StoreState) => ({ navModel: getNavModel(state.navIndex, 'upgrading'), }); export default connect(mapStateToProps)(UpgradePage);