Updated Liencese Page (#1170)

This commit is contained in:
Daniel Valdivia
2021-10-29 18:57:50 -07:00
committed by GitHub
parent 2191a1561a
commit ad2cdd73be
4 changed files with 456 additions and 337 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -37,6 +37,7 @@ interface IFormSwitch {
index?: number; index?: number;
checked: boolean; checked: boolean;
switchOnly?: boolean; switchOnly?: boolean;
indicatorLabels?: string[];
} }
const styles = (theme: Theme) => const styles = (theme: Theme) =>
@@ -179,6 +180,7 @@ const FormSwitchWrapper = ({
tooltip = "", tooltip = "",
description = "", description = "",
classes, classes,
indicatorLabels,
}: IFormSwitch) => { }: IFormSwitch) => {
const switchComponent = ( const switchComponent = (
<React.Fragment> <React.Fragment>
@@ -188,7 +190,9 @@ const FormSwitchWrapper = ({
[classes.indicatorLabelOn]: !checked, [classes.indicatorLabelOn]: !checked,
})} })}
> >
OFF {indicatorLabels && indicatorLabels.length > 1
? indicatorLabels[1]
: "OFF"}
</span> </span>
)} )}
<StyledSwitch <StyledSwitch
@@ -209,7 +213,7 @@ const FormSwitchWrapper = ({
[classes.indicatorLabelOn]: checked, [classes.indicatorLabelOn]: checked,
})} })}
> >
ON {indicatorLabels ? indicatorLabels[0] : "ON"}
</span> </span>
)} )}
</React.Fragment> </React.Fragment>

View File

@@ -37,6 +37,7 @@ import PageHeader from "../Common/PageHeader/PageHeader";
import ActivationModal from "./ActivationModal"; import ActivationModal from "./ActivationModal";
import LicenseModal from "./LicenseModal"; import LicenseModal from "./LicenseModal";
import api from "../../../common/api"; import api from "../../../common/api";
import { TenantsIcon } from "../../../icons";
const mapState = (state: AppState) => ({ const mapState = (state: AppState) => ({
operatorMode: state.system.operatorMode, operatorMode: state.system.operatorMode,
@@ -47,9 +48,38 @@ const connector = connect(mapState, null);
const styles = (theme: Theme) => const styles = (theme: Theme) =>
createStyles({ createStyles({
pageTitle: { pageTitle: {
fontSize: 18, backgroundColor: "rgb(250,250,252)",
marginTop: 40,
border: "1px solid #EAEDEE",
padding: 25,
fontSize: 16,
fontWeight: "bold",
"& ul": {
listStyleType: "square",
// listStyleType: "none",
"& li": {
float: "left",
fontSize: 14,
marginRight: 40,
},
"& li::before": {
color: "red",
content: "•",
},
},
},
licDet: {
fontSize: 11,
color: "#5E5E5E",
},
linkMore: {
marginTop: 10,
marginBottom: 20, marginBottom: 20,
}, },
chooseFlavorText: {
color: "#000000",
fontSize: 14,
},
paper: { paper: {
padding: "20px 52px 20px 28px", padding: "20px 52px 20px 28px",
backgroundColor: "#FFFFFF", backgroundColor: "#FFFFFF",
@@ -59,10 +89,9 @@ const styles = (theme: Theme) =>
flexWrap: "wrap", flexWrap: "wrap",
flexDirection: "row", flexDirection: "row",
padding: "30px 30px 0px 30px", padding: "30px 30px 0px 30px",
background: "#032F51", border: "1px solid #EAEDEE",
boxShadow: "0px 3px 7px #00000014",
"& h2": { "& h2": {
color: "#FFF", // color: "#FFF",
flexDirection: "row", flexDirection: "row",
}, },
"& a": { "& a": {
@@ -70,14 +99,18 @@ const styles = (theme: Theme) =>
flexDirection: "row", flexDirection: "row",
}, },
"& h3": { "& h3": {
color: "#FFFFFF", // color: "#FFFFFF",
marginBottom: "30px", marginBottom: "30px",
fontWeight: "bold", fontWeight: "bold",
}, },
"& h6": { "& h6": {
color: "#FFFFFF !important", // color: "#FFFFFF !important",
}, },
}, },
link: {
textDecoration: "underline !important",
color: theme.palette.info.main,
},
tableContainer: { tableContainer: {
marginLeft: 28, marginLeft: 28,
}, },
@@ -85,13 +118,10 @@ const styles = (theme: Theme) =>
textAlign: "center", textAlign: "center",
paddingBottom: 12, paddingBottom: 12,
borderRadius: "3px 3px 0 0", borderRadius: "3px 3px 0 0",
marginLeft: 8,
maxWidth: "calc(25% - 8px)", maxWidth: "calc(25% - 8px)",
}, },
detailsContainerBorder: { detailsContainerBorder: {
border: "1px solid #e2e2e2", borderLeft: "1px solid #e2e2e2",
borderBottom: 0,
borderRadius: "4px 4px 0px 0px",
}, },
detailsContainerBorderHighlighted: { detailsContainerBorderHighlighted: {
border: "1px solid #B5B5B5", border: "1px solid #B5B5B5",
@@ -103,6 +133,11 @@ const styles = (theme: Theme) =>
marginBottom: 26, marginBottom: 26,
paddingTop: 18, paddingTop: 18,
}, },
currPlan: {
color: "white",
backgroundColor: "#4CCB92",
padding: 4,
},
activePlanHeader: { activePlanHeader: {
fontWeight: 700, fontWeight: 700,
background: "#D5DDE5", background: "#D5DDE5",
@@ -133,33 +168,35 @@ const styles = (theme: Theme) =>
detailsCapacityMin: { detailsCapacityMin: {
fontSize: 10, fontSize: 10,
}, },
itemContainer: { itemContainer: {
height: 36, height: 36,
"& .item:last-child": {
borderRight: "1px solid #e5e5e5",
},
}, },
itemContainerDetail: { itemContainerDetail: {
height: 48, height: 48,
}, },
item: { item: {
height: "100%", height: "100%",
borderLeft: "1px solid #e2e2e2", borderLeft: "1px solid #e5e5e5",
borderRight: "1px solid #e2e2e2",
textAlign: "center", textAlign: "center",
fontSize: 10, fontSize: 10,
fontWeight: 700, fontWeight: 700,
display: "flex", display: "flex",
alignItems: "center", alignItems: "center",
alignContent: "center", alignContent: "center",
marginLeft: 8,
maxWidth: "calc(25% - 8px)", maxWidth: "calc(25% - 8px)",
borderTop: "1px solid #e5e5e5", borderTop: "1px solid #e5e5e5",
}, },
itemFirst: { itemFirst: {
borderLeft: 0, borderLeft: 0,
borderRight: 0, borderRight: 0,
}, },
itemHighlighted: { itemHighlighted: {
borderLeft: "1px solid #B5B5B5", borderLeft: "1px solid #e5e5e5",
borderRight: "1px solid #B5B5B5",
}, },
field: { field: {
textAlign: "left", textAlign: "left",
@@ -167,9 +204,8 @@ const styles = (theme: Theme) =>
fontSize: 12, fontSize: 12,
}, },
checkIcon: { checkIcon: {
height: 12, fontSize: 15,
color: color: "#385973",
"transparent linear-gradient(90deg, #073052 0%, #081c42 100%) 0% 0% no-repeat padding-box",
}, },
buttonContainer: { buttonContainer: {
paddingTop: 8, paddingTop: 8,
@@ -177,17 +213,13 @@ const styles = (theme: Theme) =>
height: "100%", height: "100%",
display: "flex", display: "flex",
justifyContent: "center", justifyContent: "center",
borderRadius: "0 0 3px 3px", borderLeft: "1px solid #e2e2e2",
border: "1px solid #e2e2e2",
borderTop: 0,
marginLeft: 8,
maxWidth: "calc(25% - 8px)", maxWidth: "calc(25% - 8px)",
}, },
buttonContainerBlank: { buttonContainerBlank: {
border: 0, border: 0,
}, },
buttonContainerHighlighted: { buttonContainerHighlighted: {
border: "1px solid #B5B5B5",
borderTop: 0, borderTop: 0,
}, },
button: { button: {
@@ -259,9 +291,14 @@ const styles = (theme: Theme) =>
}, },
}, },
planItemsPadding: { planItemsPadding: {
padding: "23px 0px", border: "1px solid #EAEDEE",
borderTop: 0,
maxWidth: 1180, maxWidth: 1180,
}, },
planItemsBorder: {
height: 7,
backgroundColor: "#07193E",
},
subnetSubTitle: { subnetSubTitle: {
fontSize: 12, fontSize: 12,
}, },
@@ -277,13 +314,23 @@ const styles = (theme: Theme) =>
clickableBlock: { clickableBlock: {
cursor: "pointer", cursor: "pointer",
}, },
agplFlavorText: {
color: "white",
},
chooseFlavorText: {
color: "#777777",
},
...containerForHeader(theme.spacing(4)), ...containerForHeader(theme.spacing(4)),
mainContainer: {
border: "1px solid #EAEDEE",
padding: 40,
margin: 40,
},
icon: {
color: theme.palette.primary.main,
fontSize: 16,
fontWeight: "bold",
marginBottom: 20,
"& .MuiSvgIcon-root": {
fontSize: 44,
marginRight: 15,
},
},
}); });
interface ILicenseProps { interface ILicenseProps {
@@ -365,269 +412,297 @@ const License = ({ classes, operatorMode }: ILicenseProps) => {
<Fragment> <Fragment>
<Fragment> <Fragment>
<PageHeader label="License" /> <PageHeader label="License" />
<Grid container className={classes.container}> <div className={clsx(classes.container, classes.mainContainer)}>
<Grid item xs={12}> <Grid container>
<Grid container> <Grid xs={12} className={classes.icon}>
<Grid <TenantsIcon />
item GNU Affero General Public License
xs={12} </Grid>
lg={12} <Grid item xs={12}>
className={`${classes.licenseContainer}`} <Grid container>
> <Grid
{licenseInfo ? ( item
<Fragment> xs={12}
<Grid container className={classes.licenseInfo}> lg={12}
<Grid item xs={6}> className={`${classes.licenseContainer}`}
<Typography >
variant="button" {licenseInfo ? (
display="block" <Fragment>
gutterBottom <Grid container className={classes.licenseInfo}>
className={classes.licenseInfoTitle} <Grid item xs={6}>
> <Typography
License variant="button"
</Typography> display="block"
<Typography gutterBottom
variant="overline" className={classes.licenseInfoTitle}
display="block" >
gutterBottom License
className={classes.licenseInfoValue} </Typography>
> <Typography
Commercial License variant="overline"
</Typography> display="block"
<Typography gutterBottom
variant="button" className={classes.licenseInfoValue}
display="block" >
gutterBottom Commercial License
className={classes.licenseInfoTitle} </Typography>
> <Typography
Organization variant="button"
</Typography> display="block"
<Typography gutterBottom
variant="overline" className={classes.licenseInfoTitle}
display="block" >
gutterBottom Organization
className={classes.licenseInfoValue} </Typography>
> <Typography
{licenseInfo.organization} variant="overline"
</Typography> display="block"
<Typography gutterBottom
variant="button" className={classes.licenseInfoValue}
display="block" >
gutterBottom {licenseInfo.organization}
className={classes.licenseInfoTitle} </Typography>
> <Typography
Registered Capacity variant="button"
</Typography> display="block"
<Typography gutterBottom
variant="overline" className={classes.licenseInfoTitle}
display="block" >
gutterBottom Registered Capacity
className={classes.licenseInfoValue} </Typography>
> <Typography
{niceBytes( variant="overline"
(licenseInfo.storage_capacity * 1099511627776) // 1 Terabyte = 1099511627776 Bytes display="block"
.toString(10) gutterBottom
)} className={classes.licenseInfoValue}
</Typography> >
<Typography {niceBytes(
variant="button" (licenseInfo.storage_capacity * 1099511627776) // 1 Terabyte = 1099511627776 Bytes
display="block" .toString(10)
gutterBottom )}
className={classes.licenseInfoTitle} </Typography>
> <Typography
Expiry Date variant="button"
</Typography> display="block"
<Typography gutterBottom
variant="overline" className={classes.licenseInfoTitle}
display="block" >
gutterBottom Expiry Date
className={classes.licenseInfoValue} </Typography>
> <Typography
<Moment format="YYYY-MM-DD"> variant="overline"
{licenseInfo.expires_at} display="block"
</Moment> gutterBottom
</Typography> className={classes.licenseInfoValue}
>
<Moment format="YYYY-MM-DD">
{licenseInfo.expires_at}
</Moment>
</Typography>
</Grid>
<Grid item xs={6}>
<Typography
variant="button"
display="block"
gutterBottom
className={classes.licenseInfoTitle}
>
Subscription Plan
</Typography>
<Typography
variant="overline"
display="block"
gutterBottom
className={classes.licenseInfoValue}
>
{licenseInfo.plan}
</Typography>
<Typography
variant="button"
display="block"
gutterBottom
className={classes.licenseInfoTitle}
>
Requester
</Typography>
<Typography
variant="overline"
display="block"
gutterBottom
className={classes.licenseInfoValue}
>
{licenseInfo.email}
</Typography>
</Grid>
<img
className={classes.verifiedIcon}
src={"/verified.svg"}
alt="verified"
/>
</Grid> </Grid>
<Grid item xs={6}> </Fragment>
<Typography ) : (
variant="button" <Fragment>
display="block" <LicenseModal
gutterBottom open={licenseModal}
className={classes.licenseInfoTitle} closeModal={() => setLicenseModal(false)}
>
Subscription Plan
</Typography>
<Typography
variant="overline"
display="block"
gutterBottom
className={classes.licenseInfoValue}
>
{licenseInfo.plan}
</Typography>
<Typography
variant="button"
display="block"
gutterBottom
className={classes.licenseInfoTitle}
>
Requester
</Typography>
<Typography
variant="overline"
display="block"
gutterBottom
className={classes.licenseInfoValue}
>
{licenseInfo.email}
</Typography>
</Grid>
<img
className={classes.verifiedIcon}
src={"/verified.svg"}
alt="verified"
/> />
</Grid> <Grid container justifyContent={"space-between"}>
</Fragment> <Grid item>
) : ( <img src="/agpl-logo.svg" height={40} alt="agpl" />{" "}
<Fragment> </Grid>
<LicenseModal <Grid item className={classes.licDet}>
open={licenseModal} <b>Version 3.</b> 19 November 2007{" "}
closeModal={() => setLicenseModal(false)} </Grid>
/> </Grid>
<Grid container>
<img src="/agpl.svg" height={40} alt="agpl" /> <Grid container>
</Grid> <Typography>
<Grid container>
<Typography component="h2" variant="h6">
GNU Affero General Public License
</Typography>
</Grid>
<Grid container className={classes.licenseDescription}>
<div
onClick={() => setLicenseModal(true)}
className={classes.clickableBlock}
>
<Typography component="h3">Version 3</Typography>
<Typography className={classes.agplFlavorText}>
The GNU Affero General Public License is a free, The GNU Affero General Public License is a free,
copyleft license for software and other kinds of copyleft license for software and other kinds of
works, specifically designed to ensure cooperation works, specifically designed to ensure cooperation
with the Community in the case of network server with the Community in the case of network server
software. software.
</Typography> </Typography>
</div>
</Grid>
</Fragment>
)}
</Grid>
<Grid item xs={12} lg={12} className={`${classes.paper}`}>
{licenseInfo ? (
<Fragment>
<Typography
component="h2"
variant="h6"
className={classes.pageTitle}
>
Login to MinIO SUBNET !
</Typography>
<Typography
component="h6"
className={classes.subnetSubTitle}
>
It combines a commercial license with a support experience
unlike any other.
</Typography>
<br />
<Button
variant="contained"
color="primary"
className={classes.button}
target="_blank"
rel="noopener noreferrer"
href={`https://subnet.min.io/support/?ref=${
operatorMode ? "op" : "con"
}`}
>
Login to SUBNET
</Button>
{operatorMode && (
<Fragment>
{" "}
<br /> <br />
<br /> <Typography>
<button The licenses for most software and other practical
className={classes.subnetRefreshLicenseLink} works are designed to take away your freedom to share
onClick={(e) => { and change the works. By contrast, our General Public
e.preventDefault(); Licenses are intended to guarantee your freedom to
refreshLicense(); share and change all versions of a program--to make
}} sure it remains free software for all its users.
> </Typography>
Refresh Licence <div className={classes.linkMore}>
</button> <a
{loadingRefreshLicense && ( className={clsx(classes.link)}
<CircularProgress onClick={() => setLicenseModal(true)}
size={16} >
className={classes.loadingLoginStrategy} Read more
/> </a>
)} </div>
</Fragment> </Grid>
)} </Fragment>
</Fragment> )}
) : ( </Grid>
<Fragment> <Grid item xs={12} lg={12}>
<Typography {licenseInfo ? (
component="h2" <Fragment>
variant="h6" <Typography
className={classes.pageTitle} component="h2"
> variant="h6"
Choosing between GNU AGPL v3 and Commercial License className={classes.pageTitle}
</Typography> >
<Typography className={classes.chooseFlavorText}> Login to MinIO SUBNET !
If you are building proprietary applications, you may want </Typography>
to choose the commercial license included as part of the <Typography
Standard and Enterprise subscription plans. Applications component="h6"
must otherwise comply with all the GNU AGPLv3 License & className={classes.subnetSubTitle}
Trademark obligations. Follow the links below to learn >
more about the compliance policy. It combines a commercial license with a support
</Typography> experience unlike any other.
<br /> </Typography>
<ul> <br />
<li> <Button
<a variant="contained"
href={`https://min.io/compliance?ref=${ color="primary"
operatorMode ? "op" : "con" className={classes.button}
}`} target="_blank"
className={classes.openSourcePolicy} rel="noopener noreferrer"
target="_blank" href={`https://subnet.min.io/support/?ref=${
rel="nofollow noopener noreferrer" operatorMode ? "op" : "con"
> }`}
Learn more about GNU AGPL v3 >
</a> Login to SUBNET
</li> </Button>
<li> {operatorMode && (
<a <Fragment>
href={`https://min.io/logo?ref=${ {" "}
operatorMode ? "op" : "con" <br />
}`} <br />
className={classes.openSourcePolicy} <button
target="_blank" className={classes.subnetRefreshLicenseLink}
rel="nofollow noopener noreferrer" onClick={(e) => {
> e.preventDefault();
MinIO Trademark Compliance refreshLicense();
</a> }}
</li> >
</ul> Refresh Licence
</Fragment> </button>
)} {loadingRefreshLicense && (
<CircularProgress
size={16}
className={classes.loadingLoginStrategy}
/>
)}
</Fragment>
)}
</Fragment>
) : (
<div className={classes.pageTitle}>
<Typography component="h2" variant="h6">
Choosing between GNU AGPL v3 and Commercial License
</Typography>
<br />
<Typography className={classes.chooseFlavorText}>
If you are building proprietary applications, you may
want to choose the commercial license included as part
of the Standard and Enterprise subscription plans.
Applications must otherwise comply with all the GNU
AGPLv3 License & Trademark obligations. Follow the links
below to learn more about the compliance policy.
</Typography>
<ul>
<li>
<a
href={`https://min.io/compliance?ref=${
operatorMode ? "op" : "con"
}`}
className={classes.openSourcePolicy}
target="_blank"
rel="nofollow noopener noreferrer"
>
Learn more about GNU AGPL v3
</a>
</li>
<li>
<a
href={`https://min.io/logo?ref=${
operatorMode ? "op" : "con"
}`}
className={classes.openSourcePolicy}
target="_blank"
rel="nofollow noopener noreferrer"
>
MinIO Trademark Compliance
</a>
</li>
</ul>
<div style={{ clear: "both" }} />
</div>
)}
</Grid>
</Grid> </Grid>
</Grid> </Grid>
</Grid> <Grid item xs={12}>
<Grid item xs={12} className={clsx(classes.planItemsPadding)}> <br />
<Paper </Grid>
className={classes.paper} <Grid item xs={12}>
style={{ borderRadius: "0px 0px 3px 3px" }} <b>Pricing</b>
> </Grid>
<Grid item xs={12}>
The MinIO Subscription Network provides exclusive benefits across
licensing, operations and support. See the pricing table below for
more information.
</Grid>
<Grid item xs={12}>
<br />
</Grid>
<Grid item xs={12}>
<div className={classes.planItemsBorder} />
</Grid>
<Grid item xs={12} className={clsx(classes.planItemsPadding)}>
<Grid container> <Grid container>
{operatorMode ? ( {operatorMode ? (
<ActivationModal <ActivationModal
@@ -652,30 +727,25 @@ const License = ({ classes, operatorMode }: ILicenseProps) => {
xs={3} xs={3}
className={clsx( className={clsx(
classes.detailsContainer, classes.detailsContainer,
classes.detailsContainerBorder, classes.detailsContainerBorder
{
[classes.detailsContainerBorderHighlighted]:
details.title !== "Community",
},
currentPlan ? classes.currentPlanBG : ""
)} )}
> >
<Grid <Grid
item item
xs={12} xs={12}
className={ className={classes.planHeader}
currentPlan ></Grid>
? classes.activePlanHeader
: classes.planHeader
}
>
{currentPlan ? "Current Plan" : "\u00A0"}
</Grid>
<Grid item xs={12} className={classes.detailsTitle}> <Grid item xs={12} className={classes.detailsTitle}>
{details.title} {details.title}
</Grid> </Grid>
<Grid item xs={12} className={classes.detailsPrice}> <Grid item xs={12} className={classes.detailsPrice}>
{details.price} {currentPlan ? (
<span className={classes.currPlan}>
CURRENT PLAN
</span>
) : (
details.price
)}
</Grid> </Grid>
<Grid <Grid
item item
@@ -715,10 +785,7 @@ const License = ({ classes, operatorMode }: ILicenseProps) => {
container container
item item
xs={3} xs={3}
className={clsx( className={clsx(classes.item)}
classes.item,
currentPlanID === 0 ? classes.currentPlanBG : ""
)}
> >
<Grid item xs={12}> <Grid item xs={12}>
{item.community === "N/A" ? ( {item.community === "N/A" ? (
@@ -726,7 +793,19 @@ const License = ({ classes, operatorMode }: ILicenseProps) => {
) : item.community === "Yes" ? ( ) : item.community === "Yes" ? (
<CheckCircleIcon className={classes.checkIcon} /> <CheckCircleIcon className={classes.checkIcon} />
) : ( ) : (
item.community <Fragment>
{item.communityLink !== undefined &&
item.communityLink ? (
<a
className={classes.link}
onClick={() => setLicenseModal(true)}
>
{item.community}
</a>
) : (
item.community
)}
</Fragment>
)} )}
</Grid> </Grid>
{item.communityDetail !== undefined && ( {item.communityDetail !== undefined && (
@@ -754,6 +833,11 @@ const License = ({ classes, operatorMode }: ILicenseProps) => {
item.standard item.standard
)} )}
</Grid> </Grid>
{item.standardDetail !== undefined && (
<Grid item xs={12}>
{item.standardDetail}
</Grid>
)}
</Grid> </Grid>
<Grid <Grid
container container
@@ -774,6 +858,11 @@ const License = ({ classes, operatorMode }: ILicenseProps) => {
item.enterprise item.enterprise
)} )}
</Grid> </Grid>
{item.enterpriseDetail !== undefined && (
<Grid item xs={12}>
{item.enterpriseDetail}
</Grid>
)}
</Grid> </Grid>
</Grid> </Grid>
); );
@@ -795,27 +884,20 @@ const License = ({ classes, operatorMode }: ILicenseProps) => {
item item
xs={3} xs={3}
style={{ textAlign: "center" }} style={{ textAlign: "center" }}
className={clsx( className={clsx(classes.buttonContainer, {
classes.buttonContainer, [classes.buttonContainerHighlighted]:
currentPlanID === index button.text === "Subscribe",
? classes.currentPlanBG })}
: "",
{
[classes.buttonContainerHighlighted]:
button.text === "Subscribe",
}
)}
> >
<Grid item xs={12}> <Grid item xs={12}>
<Button <Button
variant="contained" variant={
button.text === "Join Slack"
? "outlined"
: "contained"
}
color="primary" color="primary"
className={clsx( className={clsx(classes.button)}
classes.button,
currentPlanID === index
? classes.currentPlanButton
: ""
)}
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
href="#" href="#"
@@ -864,9 +946,9 @@ const License = ({ classes, operatorMode }: ILicenseProps) => {
</Grid> </Grid>
</Grid> </Grid>
</Grid> </Grid>
</Paper> </Grid>
</Grid> </Grid>
</Grid> </div>
</Fragment> </Fragment>
</Fragment> </Fragment>
); );

View File

@@ -18,21 +18,21 @@ export const planDetails = [
{ {
id: 0, id: 0,
title: "Community", title: "Community",
price: "Open Source", price: "FREE",
capacityMin: "", capacityMax: "Open Source",
}, },
{ {
id: 1, id: 1,
title: "Standard", title: "Standard",
price: "$10/TB/month", price: "$10 per TB",
capacityMax: "Up to 10PB. No additional charges for capacity over 10PB", capacityMax: "(Minimum of 100TB)",
capacityMin: "", capacityMin: "",
}, },
{ {
id: 2, id: 2,
title: "Enterprise", title: "Enterprise",
price: "$20/TB/month", price: "$20 per TB",
capacityMax: "Up to 5PB. No additional charges for capacity over 5PB", capacityMax: "(Minimum of 100TB)",
capacityMin: "", capacityMin: "",
}, },
]; ];
@@ -42,6 +42,7 @@ export const planItems = [
id: 0, id: 0,
field: "License", field: "License",
community: "GNU AGPL v3", community: "GNU AGPL v3",
communityLink: true,
communityDetail: "", communityDetail: "",
standard: "Commercial License", standard: "Commercial License",
standardDetail: "", standardDetail: "",
@@ -51,7 +52,7 @@ export const planItems = [
{ {
id: 1, id: 1,
field: "Software Release", field: "Software Release",
community: "Update to latest", community: "Upstream",
standard: "1 Year Long Term Support", standard: "1 Year Long Term Support",
enterprise: "5 Years Long Term Support", enterprise: "5 Years Long Term Support",
}, },
@@ -59,7 +60,7 @@ export const planItems = [
id: 2, id: 2,
field: "SLA", field: "SLA",
community: "No SLA", community: "No SLA",
standard: "<24 hours", standard: "<48 Hours (Local Business Hours)",
enterprise: "<1 hour", enterprise: "<1 hour",
}, },
{ {
@@ -67,17 +68,17 @@ export const planItems = [
field: "Support", field: "Support",
community: "Community:", community: "Community:",
communityDetail: "Public Slack Channel + Github Issues", communityDetail: "Public Slack Channel + Github Issues",
standard: "24x7 L4 direct engineering", standard: "L4 Direct Engineering",
standardDetail: "Support via SUBNET", standardDetail: " support via SUBNET",
enterprise: "24x7 L4 direct engineering", enterprise: "L4 Direct Engineering",
enterpriseDetail: "Support via SUBNET", enterpriseDetail: "support via SUBNET",
}, },
{ {
id: 4, id: 4,
field: "Security Updates & Critical Bugs", field: "Security Updates & Critical Bugs",
community: "Self Update", community: "Self Update",
standard: "Guided Update", standard: "Continuous Scan and Alert",
enterprise: "Guided Update", enterprise: "Continuous Scan and Alert",
}, },
{ {
id: 5, id: 5,
@@ -86,6 +87,13 @@ export const planItems = [
standard: "1 per year", standard: "1 per year",
enterprise: "Unlimited", enterprise: "Unlimited",
}, },
{
id: 6,
field: "Health Diagnostics",
community: "N/A",
standard: "24/7/365",
enterprise: "24/7/365",
},
{ {
id: 6, id: 6,
field: "Annual Architecture Review", field: "Annual Architecture Review",