diff --git a/src/assets/data/faq/index.js b/src/assets/data/faq/index.js
index 1c6b650260c3..dd7057b1c555 100644
--- a/src/assets/data/faq/index.js
+++ b/src/assets/data/faq/index.js
@@ -240,6 +240,92 @@ const data = {
"Many interns become open source maintainers, and have ongoing responsibility to steward Layer5 and CNCF projects.",
],
},
+
+ {
+ question: "How can I upgrade, downgrade, or cancel my plan?",
+ category: "Pricing",
+ answer: [
+ "Upgrade as needed. Downgrade or cancel at anytime. To make changes to your plan, please get in touch with sales.",
+ ],
+ },
+ {
+ question: "Do I need to enter my credit card details to sign up to a free plan?",
+ category: "Pricing",
+ answer: [
+ "No. The Free plan does not require a credit card. It is free and will forever be free. A credit card is required only if you want to upgrade to a more fully-featured plan.",
+ ],
+ },
+ {
+ question: "What is the refund policy?",
+ category: "Pricing",
+ answer: [
+ "Users can cancel or downgrade at anytime.",
+ "Your next billing statement will be prorated based on your date of cancelation or downgrade.",
+ ],
+ },
+ {
+ question: "Can I start with Free and upgrade later?",
+ category: "Pricing",
+ answer: [
+ "Yes! You are more than welcome to try the Free version.",
+ "If you and your team want to collaborate or need more advanced capabilities, then try the Enterprise Edition. To upgrade to Enterprise, please get in touch with us.",
+ ],
+ },
+ {
+ question: "What happens if I accidentally don't renew or forget to renew my subscription?",
+ category: "Pricing",
+ answer: [
+ "Continuity of your infrastructure and applicaiton management is important to us as it is to you. Meshery will continue to operate under the Free tier features and usage limits. Your historical data will continue to be available to you. You can renew your subscription to have higher-level plan features reenabled at any time.",
+ ],
+ },
+ {
+ question: "Are there other pricing options?",
+ category: "Pricing",
+ answer: [
+ "Annual and monthly plans are available. We can customize billing plans to meet your needs. For a detailed explanation of billing, please see our Billing FAQ",
+ ],
+ },
+ {
+ question: "What payment methods do you support?",
+ category: "Billing",
+ answer: [
+ "You can pay for Layer5 Team and Enterprise with a credit card or debit card. If you pay by credit card, billing receipts are available to Administrators for previous months under Billing History. For copies of your invoice, email Layer5 billing.",
+ "Layer5 also offers invoicing (ACH or wire). If you pay by ACH or wire, invoices are emailed to the billing email addresses near the 10th business day of each month. If you need an additional copy, email Layer5 billing. Details on where to remit payment can be found on the invoice. To change your payment method, contact your Customer Success Manager."
+ ],
+ linktext: "Contact Layer5 Billing",
+ link: "mailto:support@layer5.io"
+ },
+ {
+ question: "When does the billing cycle start and stop?",
+ category: "Billing",
+ answer: [
+ "The billing cycle begins the first of the month regardless of when you sign up. Your first month is prorated based on your actual sign-up date. Layer5 meters the count of elements under management on a daily basis. The billable count of elements under management is calculated at the end of the month using the maximum count (high water mark) of the lower 99 percent of usage for those days. Layer5 excludes the top 1% to reduce the impact of spikes in usage on your bill. The billable count of elements under management is based on the average number of elements for the month. See your Usage in Meshery Cloud. Billing pages are only accessible to users with the Meshery Admin Role.",
+ ],
+ },
+ {
+ question: "How do I view and manage my subscription?",
+ category: "Billing",
+ answer: [
+ "You can view your account's subscription, your other paid features and products, and your next billing date in your account's billing settings",
+ ],
+ },
+ {
+ question: "What happens if payment fails?",
+ category: "Billing",
+ answer: [
+ "After an initial failed payment, we apply a 14 day grace period on your account and attempt to process a payment each week. After three failed payments, paid features are locked.",
+ ],
+ },
+ {
+ question: "How can I unlock my account after several failed transactions?",
+ category: "Billing",
+ answer: [
+ "You can unlock the paid features on your account and trigger a new payment attempt by updating the payment method on your account. To learn more about how to manage your payments, visit the Billing section of your Meshery Cloud account.",
+ ],
+ },
],
};
export default data;
+
+
+
diff --git a/src/collections/news/2022/2022-05-18-meshmark-the-cloud-native-value-measurement/meshmark-the-cloud-native-value-measurement.md b/src/collections/news/2022/2022-05-18-meshmark-the-cloud-native-value-measurement/meshmark-the-cloud-native-value-measurement.md
index 871abb51e8a4..8d8c94f39022 100644
--- a/src/collections/news/2022/2022-05-18-meshmark-the-cloud-native-value-measurement/meshmark-the-cloud-native-value-measurement.md
+++ b/src/collections/news/2022/2022-05-18-meshmark-the-cloud-native-value-measurement/meshmark-the-cloud-native-value-measurement.md
@@ -62,7 +62,7 @@ With project maintainers from Layer5, Intel, HashiCorp, and Red Hat, and collabo
diff --git a/src/pages/company/faq.js b/src/pages/company/faq.js
index 134ff946f8e0..cabb10efea25 100644
--- a/src/pages/company/faq.js
+++ b/src/pages/company/faq.js
@@ -7,6 +7,7 @@ import SEO from "../../components/seo";
import Navigation from "../../sections/General/Navigation";
import FAQ from "../../sections/General/Faq";
import Footer from "../../sections/General/Footer";
+import DiscussCallout from "../../sections/Discuss-Callout";
import { GlobalStyle } from "../../sections/app.style";
import theme from "../../theme/app/themeStyles";
@@ -18,6 +19,7 @@ const FAQPage = () => (
+
diff --git a/src/pages/pricing.js b/src/pages/pricing.js
new file mode 100644
index 000000000000..c233090dd51f
--- /dev/null
+++ b/src/pages/pricing.js
@@ -0,0 +1,23 @@
+import React from "react";
+import { ThemeProvider } from "styled-components";
+import theme from "../theme/app/themeStyles";
+import { GlobalStyle } from "../sections/app.style";
+
+import SEO from "../components/seo";
+import Navigation from "../sections/General/Navigation";
+import Footer from "../sections/General/Footer";
+import Layout from "../components/layout";
+import PricingPage from "../sections/Pricing";
+
+const Pricing = () => (
+
+
+
+
+
+
+
+
+
+);
+export default Pricing;
diff --git a/src/reusecore/Blockquote/Blockquote-image/blockquote-image.style.js b/src/reusecore/Blockquote/Blockquote-image/blockquote-image.style.js
new file mode 100644
index 000000000000..fb12652e8479
--- /dev/null
+++ b/src/reusecore/Blockquote/Blockquote-image/blockquote-image.style.js
@@ -0,0 +1,316 @@
+import styled from "styled-components";
+
+const CustomersWrapper = styled.div`
+
+
+blockquote {
+ padding: 0;
+ margin: 0;
+}
+
+section.bq-section {
+ padding: 30px;
+ margin-bottom: 60px;
+}
+
+.type-one-wrapper.type-one-wrapper-boxed {
+ max-width: 576px;
+ margin: 0 auto;
+}
+
+.type-one-wrapper.type-one-wrapper-fullwidth {
+ max-width: 100%;
+}
+.links{
+ .type-one-quote-base, .type-two-quote-base {
+ color: ${props => props.theme.tertiaryColor};
+ }
+}
+
+
+
+/* ========== Type One ========== */
+
+.type-one-quote {
+ position: relative;
+ display: flex;
+ flex-direction: row;
+ min-height: 250px;
+ box-shadow: 2px 2px 25px #cecece;
+ border-radius: 10px;
+}
+
+.type-one-quote .type-one-quote-pattern {
+ flex-basis: 80px;
+ background: linear-gradient(180deg,rgba(71,126,150,1) 0%,rgba(0,179,159,1) 35%,rgba(60,73,79,1) 100%);
+ border-radius: 10px 0 0 10px;
+}
+
+.type-one-quote .type-one-quote-base {
+ flex-basis: calc(100% - 80px);
+ background: #ffffff;
+ padding: 40px 30px 50px 80px;
+ font-size: 11pt;
+ line-height: 1.62em;
+ border-radius: 0 10px 10px 0;
+}
+
+.type-one-quote .type-one-quote-qmark {
+ position: absolute;
+ top: 50px;
+ left: 105px;
+ font-family: Garamond, Georgia, "Times New Roman", serif;
+ font-size: 42pt;
+ color: #999999;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+}
+
+.type-one-quote .type-one-quote-userpic {
+ position: absolute;
+ top: 80px;
+ left: 45px;
+ width: 90px;
+ height: 90px;
+ img{
+ border-radius: 50%;
+ }
+}
+
+.type-one-quote .type-one-quote-meta {
+ margin-top: 30px;
+ padding-top: 10px;
+ border-top: 2px dotted #777777;
+}
+
+.type-one-quote .type-one-quote-meta .type-one-author,
+.type-one-quote .type-one-quote-meta .type-one-source {
+ color: #777777;
+}
+
+.type-one-quote .type-one-quote-meta .type-one-author {
+ font-style: normal;
+ text-transform: uppercase;
+ letter-spacing: 0.03em;
+ font-size: 10pt;
+ font-weight: bold;
+}
+
+.type-one-quote .type-one-quote-meta .type-one-author cite {
+ font-style: normal;
+}
+
+.type-one-quote .type-one-quote-meta .type-one-source {
+ font-size: 9pt;
+}
+
+@media screen and (max-width: 768px) {
+
+ .type-one-quote .type-one-quote-pattern {
+ flex-basis: 20px;
+ }
+
+ .type-one-quote .type-one-quote-base {
+ flex-basis: calc(100% - 20px);
+ padding: 100px 30px 50px 30px;
+ }
+
+ .type-one-quote .type-one-quote-userpic {
+ width: 50px;
+ height: 50px;
+ left: 40px;
+ top: 20px;
+ }
+
+ .type-one-quote .type-one-quote-qmark {
+ left: 100px;
+ top: 45px;
+ }
+}
+
+
+
+
+
+
+/* ========== Type Two ========== */
+
+.type-two-quote {
+ position: relative;
+ box-shadow: 2px 2px 25px #cecece;
+ border-radius: 10px;
+}
+
+.type-two-quote .type-two-quote-pattern {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ height: 80px;
+ align-items: center;
+ justify-content: flex-start;
+ background: linear-gradient(250deg,rgba(71,126,150,1) 0%,rgba(0,179,159,1) 35%,rgba(60,73,79,1) 100%);
+ border-radius: 10px 10px 0 0;
+}
+
+.type-two-quote .type-two-quote-pattern .type-two-quote-qmark {
+ flex-basis: 100px;
+ font-family: Garamond, Georgia, "Times New Roman", serif;
+ font-size: 60pt;
+ color: #ffffff;
+ text-align: center;
+ height: 80px;
+ line-height: 90pt;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+}
+
+.type-two-quote .type-two-quote-userpic {
+ position: absolute;
+ top: 45px;
+ left: calc(50% - 35px);
+ width: 90px;
+ height: 90px;
+ img{
+ border-radius: 50%;
+ }
+}
+
+.type-two-quote .type-two-quote-base {
+ flex-basis: calc(100% - 80px);
+ background: #ffffff;
+ padding: 60px 30px 50px 100px;
+ font-size: 11pt;
+ line-height: 1.62em;
+ border-radius: 0 0 10px 10px;
+}
+
+.type-two-quote .type-two-quote-meta {
+ margin-top: 30px;
+ padding-top: 10px;
+ border-top: 2px dotted #777777;
+ text-align: center;
+}
+
+.type-two-quote .type-two-quote-meta .type-two-quote-author,
+.type-two-quote .type-two-quote-meta .type-two-quote-source {
+ color: #777777;
+}
+
+.type-two-quote .type-two-quote-meta .type-two-quote-author {
+ font-style: normal;
+ text-transform: uppercase;
+ letter-spacing: 0.03em;
+ font-size: 10pt;
+ font-weight: bold;
+}
+
+.type-two-quote .type-two-quote-meta .type-two-quote-author cite {
+ font-style: normal;
+}
+
+.type-two-quote .type-two-quote-meta .type-two-quote-source {
+ font-size: 9pt;
+}
+
+@media screen and (max-width: 768px) {
+
+ .type-two-quote .type-two-quote-base {
+ padding-left: 30px;
+ }
+}
+
+
+
+
+
+
+
+
+/* ========== Type Three ========== */
+
+.type-three-quote {
+ position: relative;
+ min-height: 250px;
+ border-radius: 10px;
+ box-shadow: 2px 2px 25px #cecece;
+}
+
+.type-three-quote .type-three-quote-base {
+ background: linear-gradient(250deg,rgba(71,126,150,1) 0%,rgba(0,179,159,1) 35%,rgba(60,73,79,1) 100%);
+ color: #ffffff;
+ font-weight: bold;
+ padding: 60px;
+ border-radius: 10px;
+}
+
+.type-three-quote .type-three-quote-meta {
+ display: flex;
+ flex-direction: row;
+ margin-top: 30px;
+ padding-top: 20px;
+ border-top: 2px dotted #ffffff;
+}
+
+.type-three-quote .type-three-quote-meta .type-three-quote-author {
+ font-style: normal;
+ text-transform: uppercase;
+ letter-spacing: 0.03em;
+ font-size: 10pt;
+ font-weight: bold;
+}
+
+.type-three-quote .type-three-quote-meta .type-three-quote-author cite {
+ font-style: normal;
+}
+
+.type-three-quote .type-three-quote-meta .type-three-quote-source {
+ font-size: 10pt;
+}
+
+.type-three-quote .type-three-quote-qmark {
+ position: absolute;
+ top: 140px;
+ right: 5px;
+ font-size: 280pt;
+ color: #ffffff;
+ opacity: 0.18;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+}
+
+.type-three-quote .type-three-quote-userpic {
+ width: 90px;
+ height: 90px;
+ img{
+ border-radius: 50%;
+ }
+ margin-right: 20px;
+}
+
+@media screen and (max-width: 768px) {
+
+ .type-three-quote .type-three-quote-base {
+ padding-left: 40px;
+ padding-right: 40px;
+ }
+
+ .type-three-quote .type-three-quote-meta {
+ flex-direction: column;
+ text-align: center;
+ }
+
+ .type-three-quote .type-three-quote-meta .type-three-quote-userpic {
+ margin: 0 auto;
+ margin-bottom: 10px;
+ }
+
+}
+`;
+
+export default CustomersWrapper;
diff --git a/src/reusecore/Blockquote/Blockquote-image/index.js b/src/reusecore/Blockquote/Blockquote-image/index.js
new file mode 100644
index 000000000000..4da87b19afb1
--- /dev/null
+++ b/src/reusecore/Blockquote/Blockquote-image/index.js
@@ -0,0 +1,92 @@
+import React from "react";
+import CustomersWrapper from "./blockquote-image.style";
+
+const Customers = (props) => {
+ return (
+
+
+ {props.type === "1" ?
+
+
+
+
+
+
+ ❝
+
+
+
+
+
+ {props.quote}
+
+
+
+
{props.person ? props.person : ""}
+
{props.title ? props.title : ""}
+
+
+
+
+
+
+ :
+ props.type === "2" ?
+
+
+
+
+
+
+
+
+
+ {props.quote}
+
+
+
+
{props.person ? props.person : ""}
+
{props.title ? props.title : ""}
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+ ❞
+
+
+
+
+ {props.quote}
+
+
+
+
+
{props.person ? props.person : ""}
+
{props.title ? props.title : ""}
+
+
+
+
+
+
+ }
+
+
+ );
+};
+
+export default Customers;
diff --git a/src/sections/General/Faq/index.js b/src/sections/General/Faq/index.js
index 621939bf422d..fcc21dd6378e 100644
--- a/src/sections/General/Faq/index.js
+++ b/src/sections/General/Faq/index.js
@@ -1,6 +1,6 @@
import React from "react";
-import { Container} from "../../../reusecore/Layout";
+import { Container } from "../../../reusecore/Layout";
import SectionTitle from "../../../reusecore/SectionTitle";
// import { FiSearch } from "@react-icons/all-files/fi/FiSearch";
import Button from "../../../reusecore/Button";
@@ -21,7 +21,6 @@ import data from "../../../assets/data/faq";
import FaqSectionWrapper from "./faqSection.style";
import ContactFormModal from "../../../components/Contact-Modal";
-import DiscussCallout from "../../../sections/Discuss-Callout";
const Faq = (props) => {
@@ -31,11 +30,11 @@ const Faq = (props) => {
faqs_data = data.faqs;
else {
props.category.forEach(item => {
- if(item === "all")
+ if (item === "all")
faqs_data = data.faqs;
else {
data.faqs.forEach(faq => {
- if(faq.category.toString() === item){
+ if (faq.category.toString() === item) {
faqs_data.push(faq);
}
});
@@ -87,7 +86,7 @@ const Faq = (props) => {
{
- faq.answer.length >=1 ? {faq.answer.map((ans, id) => ({ans}
))} :
+ faq.answer.length >= 1 ? {faq.answer.map((ans, id) => ({ans}
))} :
}
{faq.link &&
}
@@ -100,10 +99,9 @@ const Faq = (props) => {
Didn't find an answer to your question?
-
+
-
);
};
diff --git a/src/sections/Pricing/collapsible-details.js b/src/sections/Pricing/collapsible-details.js
new file mode 100644
index 000000000000..67f3e70121fa
--- /dev/null
+++ b/src/sections/Pricing/collapsible-details.js
@@ -0,0 +1,85 @@
+import React from "react";
+import styled from "styled-components";
+import { MdExpandMore} from "@react-icons/all-files/md/MdExpandMore";
+import { RiArrowRightSLine } from "@react-icons/all-files/ri/RiArrowRightSLine";
+
+const FeatureDetailsWrapper = styled.div`
+display: inline;
+cursor: pointer;
+.open{
+ margin-top: 0rem;
+ list-style: none;
+ height:auto !important;
+ opacity:1 !important;
+ margin-bottom: 2rem;
+ transition:all .4s !important;
+ }
+ .toggle-icon{
+ width: 1.2rem;
+ height: 1.2rem;
+ fill: ${props => props.theme.primaryColor};
+ }
+p{
+ font-size: 0.9rem;
+ color: ${props => props.theme.primaryLightColor};
+}
+.toggle-btn{
+ display:inline-block;
+ float: left;
+ vertical-align: middle;;
+ }
+ .closed{
+ opacity:1;
+ height:0;
+ transition:none;
+ visibility:hidden;
+ }
+ .open{
+ visibility:visible;
+ }
+
+ h5{
+ display: inline-block;
+ vertical-align: middle;
+ }
+
+`;
+
+const FeatureDetails = (props) => {
+ const [expand, setExpand] = React.useState(false);
+
+ return (
+
+
+ {props.description ?
+
+ {expand ? (
+
+ ) : (
+
+ )}
+
: "" }
+
{props.category}
+
+
+ {props.description}
+
+
+
+
+ );
+};
+
+export default FeatureDetails;
diff --git a/src/sections/Pricing/comparison.js b/src/sections/Pricing/comparison.js
new file mode 100644
index 000000000000..83f49d289428
--- /dev/null
+++ b/src/sections/Pricing/comparison.js
@@ -0,0 +1,197 @@
+import React from "react";
+import styled from "styled-components";
+import {details} from "./data";
+import { Container} from "../../reusecore/Layout";
+import FeatureDetails from "./collapsible-details";
+
+
+const ComparisonWrapper = styled.div`
+margin: 6rem auto;
+
+h2, h5{
+ text-align: center;
+}
+
+.main {
+ box-shadow: 0 0 24px rgba(0, 0, 0, 0.15);
+ margin: 2rem auto;
+ display: block;
+ overflow-x: scroll;
+ overflow-y:hidden;
+}
+.price-table {
+ width: 100%;
+ border-collapse: collapse;
+ border: 0 none;
+}
+.price-table tr:not(:last-child) {
+ border-bottom: 1px solid rgba(0, 0, 0, 0.03);
+}
+.price-table tr td {
+ border-left: 1px solid rgba(0, 0, 0, 0.05);
+ padding: 0rem 2rem;
+ font-size: 1rem;
+ vertical-align: middle;
+ h5{
+ display: inline-block;
+ padding-top: 1rem;
+ font-size: 1.2rem;
+ }
+}
+.price-table tr td:first-child {
+ border-left: 0 none;
+ width: 45%;
+}
+.price-table tr td:not(:first-child) {
+ text-align: center;
+}
+.price-table tr:nth-child(even) {
+ background-color: #FFFFFF;
+}
+
+.price-table tr:hover {
+ background-color: ${props => props.theme.secondaryLightColor};
+}
+.price-table .fa-check {
+ color: #5336ca;
+}
+.price-table .fa-times {
+ color: #D8D6E3;
+}
+
+/* Highlighted column */
+
+.price-table tr td:nth-child(2) {
+ background: rgba(0,179,159,0.1);
+ padding: 8px 48px;
+}
+
+.price-table tr.price-table-head td {
+ font-size: 16px;
+ font-weight: 600;
+ text-transform: uppercase;
+}
+.price-table tr.price-table-head {
+ background-color: #00b39f;
+ color: #FFFFFF;
+ td{
+ padding: 1rem 0;
+ }
+}
+.price-table td.price {
+ padding: 16px 24px;
+ font-size: 20px;
+ font-weight: 600;
+}
+.price-table td.price .button {
+ padding: 1rem 1.5rem;
+ margin-top: 16px;
+ font-size: 12px;
+ font-weight: 600;
+ text-transform: uppercase;
+ display: inline-block;
+ border-radius: 64px;
+}
+.price-table td.price-table-popular {
+ border-top: 3px solid #00b39f;
+ color: #00b39f;
+ text-transform: uppercase;
+ font-size: 12px;
+ padding: 12px 48px;
+ font-weight: 700;
+}
+.price-table .price-blank {
+ background-color: #fafafa;
+ border: 0 none;
+}
+
+.category{
+ display: inline-block;
+ margin: 0 1rem;
+}
+
+.icon{
+ height: 4rem;
+ width: auto;
+ fill: #00b39f;
+ display: inline-block;
+}
+.no-icon{
+ height: 1.5rem;
+ width: auto;
+ fill: red;
+}
+.yes-icon{
+ height: 1.5rem;
+ width: auto;
+ fill: #00b39f;
+}
+.toggle-btn{
+ margin-top: 1rem;
+}
+.details{
+ p{
+ color: #7A848E;
+ margin-left: 1.1rem;
+ }
+}
+.category-icon{
+ margin: 1rem auto 0;
+}
+
+
+`;
+
+const Comparison = () => {
+ return (
+
+ Compare All Features
+ Choose a plan that’s right for you
+
+
+
+
+
+
+ Most popular
+
+
+
+
+
+ Free
+ Team
+ Enterprise
+
+
+ {details.map((x) => (
+ <>
+
+
+
+ {x.category}
+
+
+
+
+ {x.features.map((f) => (
+
+
+ {f.free}
+ {f.team}
+ {f.enterprise}
+
+ ))}
+ >
+ ))}
+
+
+
+
+
+
+
+ );
+};
+
+export default Comparison;
diff --git a/src/sections/Pricing/data.js b/src/sections/Pricing/data.js
new file mode 100644
index 000000000000..15b94ec1a029
--- /dev/null
+++ b/src/sections/Pricing/data.js
@@ -0,0 +1,386 @@
+import React from "react";
+import { GiCheckMark } from "@react-icons/all-files/gi/GiCheckMark";
+import {MdClose} from "@react-icons/all-files/md/MdClose";
+import MeshMap from "./icons/meshmap-icon.svg";
+import Support from "./icons/support.svg";
+import Collab from "./icons/collab.svg";
+import Lifecycle from "./icons/lifecycle.svg";
+import Identity from "./icons/identity.svg";
+import Notification from "./icons/notifications.svg";
+import Configuration from "./icons/configuration.svg";
+import Perforamance from "./icons/perf.svg";
+
+export const details = [
+ {
+ id: 0,
+ category: "Configuration Management",
+ icon: Configuration,
+ features: [
+ {
+ feature: "Cloud Native Design Patterns",
+ description: "Import and export your designs using your local filesystem or remote URL.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Patterns",
+ description: "Connect your favorite git provider and version your designs",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Dry-run",
+ description: "Test and verify configuration changes in a separate environment.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ ],
+ },
+ {
+ id: 1,
+ category: "Collaboration",
+ icon: Collab,
+ features: [
+ {
+ feature: "Collaborators for public designs",
+ description: "Invite any Meshery Cloud user, or all Meshery users, to work with you on a public design that control – including making changes and releasing new versions.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Collaborators for private designs",
+ description: "Invite any Meshery Cloud user to work with you on a private design that control – including making changes and releasing new versions.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Team Chat",
+ description: "Message in real-time, unattached to a specific design. Control who can pariticpate in the discussion.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Design Reviews",
+ description: "Discuss any design by leaving review comments or notes on a specific design. Control who has access, notify discussion participants with updates, and link from anywhere.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Organization and Team Management",
+ description: "Manage access to designs on a team-by-team, or individual user, basis.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Collaborative Design",
+ description: "Create and collaborate in online designs in real-time.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Add-ons",
+ description: "Access a variety of third-party applications, right from MeshMap. Send a message to Slack, identify an on-duty team to page, or raise an alarm in Datadog.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ ],
+ },
+ {
+ id: 2,
+ category: "Lifecycle Management",
+ icon: Lifecycle,
+ features: [
+ {
+ feature: "Configure and deploy any service mesh",
+ description: "Meshery adapters provision, configure, and manage 10 different service meshes.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Cluster discovery",
+ description: "Day 2 support for ongoing synchronization of Kubernetes configuration, workloads and service mesh changes.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Multiple Kubernetes Clusters",
+ description: "Ongoing synchronization of Kubernetes configuration, workloads and service mesh changes across any number of Kubernetes clusters.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ ],
+ },
+ {
+ id: 3,
+ category: "MeshMap",
+ icon: MeshMap,
+ features: [
+ {
+ feature: "Timeline (DVR)",
+ description: "Playback service transactions. Scrub over the history of changes to your deployments. ",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Service Performance",
+ description: "Continuous visibility across all of your clusters and workloads.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Application Import",
+ description: "Import your existing Kubernetes, Helm, or Docker Compose applications.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Visual Design",
+ description: "Drag-n-drop cloud native infrastructure designer to configure, model, and deploy your workloads",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ ],
+ },
+ {
+ id: 4,
+ category: "Performance Management",
+ icon: Perforamance,
+ features: [
+ {
+ feature: "Load Generation",
+ description: "Single Load Generator: Support testing multiple endpoints simultaneously.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Load Generation",
+ description: "Distributed Load Generator: Support multiple Meshery clients generating load, collecting and coalescing results into a single report.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Performance Profiles",
+ description: "Define, name, and save performance profiles.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Performance Profiles",
+ description: "Share performance profiles and test results with individual users or teams.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "MeshMark",
+ description: "Identify the cost of a specific network function.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ ],
+ },
+ {
+ id: 5,
+ category: "Identity & Access Management",
+ icon: Identity,
+ features: [
+ {
+ feature: "Single User",
+ description: "Implicit user; implicit role (admin)",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Multiple Users",
+ description: "Multi-tenancy",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Individual User",
+ description: "Preferences Allows preferences to be set per user.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Built-in Roles",
+ description: "Static - out of the box",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "User-defined Roles",
+ description: "Customizable roles for specific permission assignments",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Authentication: LDAP",
+ description: "Access Meshery Server using your existing accounts and centrally manage repository access.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Authentication: SAML",
+ description: "Use an identity provider to manage the identities of GitHub users and applications.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Authorization",
+ description: "Own and control the user accounts of your enterprise members through your identity provider (IdP).",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ ],
+ },
+ {
+ id: 6,
+ category: "Incident Management",
+ icon: Notification,
+ features: [
+ {
+ feature: "Notification Center",
+ description: "Events: Reporting of asynchronous events.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Traffic Replay",
+ description: "Visual event replay in MeshMap",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ ],
+ },
+ {
+ id: 7,
+ category: "Support and Deployment",
+ icon: Support,
+ features: [
+ {
+ feature: "Community Support",
+ description: "Get help with most of your Meshery questions and issues in our Community Forum.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Standard Support",
+ description: "Layer5 Support can help you troubleshoot issues you run into while using Meshery. Get support via the web.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Premium and Premium Plus Support",
+ description: "With Premium, get a 30-minute SLA and 24/7 web and phone support. With Premium Plus, get everything in Premium plus your own Support Account Manager and more.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Self-hosted Deployment",
+ description: "Self-hosted Meshery Cloud for on-prem appliances or self-managed cloud tenants.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Phone Support",
+ description: "Layer5 Support can help you troubleshoot issues you run into while using Meshery. Get support via phone.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ {
+ feature: "Invoice Billing",
+ description: "Pay bills via invoice, rather than using your credit card.",
+ free:
,
+ team:
,
+ enterprise:
,
+ },
+ ],
+ },
+];
+
+export const options = [
+ {
+ tier: "Free (Personal)",
+ featured: true,
+ monthlyprice: 0,
+ yearlyprice: 0,
+ byline: "Open Source features, plus:",
+ button: ["Join for Free", "https://meshery.layer5.io"],
+ summary: [
+ { id: 0, category: "Cloud Native Design Patterns", description: "Import and export your designs using your local filesystem or remote URL." },
+ { id: 1, category: "Multiple Kubernetes Clusters", description: "Ongoing synchronization of Kubernetes configuration, workloads and service mesh changes across any number of Kubernetes clusters." },
+ { id: 2, category: "Cluster Discovery", description: "Day 2 support for ongoing synchronization of Kubernetes configuration, workloads and service mesh changes."},
+ { id: 3, category: "Service Perforamance", description: "Continuous visibility across all of your clusters and workloads."},
+ { id: 4, category: "Load Generation", description: "Single Load Generator: Support testing multiple endpoints simultaneously." },
+ { id: 5, category: "MeshMark", description: "Identify the cost of a specific network function."}]
+ },
+
+ {
+ tier: "Team",
+ featured: false,
+ monthlyprice: 9.99,
+ yearlyprice: 100,
+ byline: "Everything in Free, plus:",
+ button: ["Coming Soon", ""],
+ summary: [
+ { id: 0, category: "Dry-run", description: "Test and verify configuration changes in a separate environment." },
+ { id: 1, category: "Design Reviews", description: "Discuss any design by leaving review comments or notes on a specific design. Control who has access, notify discussion participants with updates, and link from anywhere." },
+ { id: 2, category: "Visual Design", description: "Drag-n-drop cloud native infrastructure designer to configure, model, and deploy your workloads"},
+ { id: 3, category: "Performance Profiles", description: "Share performance profiles and test results with individual users or teams."},
+ { id: 4, category: "Built-in Roles", description: "Static - out of the box" },
+ { id: 5, category: "Standard Support", description: "Layer5 Support can help you troubleshoot issues you run into while using Meshery. Get support via the web."}]
+ },
+ {
+ tier: "Enterprise",
+ featured: false,
+ monthlyprice: 15.99,
+ yearlyprice: 180,
+ byline: "Everything in Team, plus:",
+ button: ["Contact Sales", "https://us15.list-manage.com/contact-form?u=6b50be5aea3dfe1fd4c041d80&form_id=d0ffe17c92d8014ede6b721aa16096e8"],
+ summary: [
+ { id: 0, category: "User-defined Roles", description: "Customizable roles for specific permission assignments" },
+ { id: 1, category: "Authentication: LDAP", description: "Access Meshery Server using your existing accounts and centrally manage repository access." },
+ { id: 2, category: "Authentication: SAML", description: "Use an identity provider to manage the identities of GitHub users and applications."},
+ { id: 3, category: "Self-hosted Deployment", description: "Self-hosted Meshery Cloud for on-prem appliances or self-managed cloud tenants."},
+ { id: 4, category: "Traffic Replay", description: "Visual event replay in MeshMap" },
+ { id: 5, category: "Phone Support", description: "Layer5 Support can help you troubleshoot issues you run into while using Meshery. Get support via phone."}]
+ },
+];
+
diff --git a/src/sections/Pricing/icons/collab.svg b/src/sections/Pricing/icons/collab.svg
new file mode 100644
index 000000000000..e3da89ce6330
--- /dev/null
+++ b/src/sections/Pricing/icons/collab.svg
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/sections/Pricing/icons/configuration.svg b/src/sections/Pricing/icons/configuration.svg
new file mode 100644
index 000000000000..696ed5572da3
--- /dev/null
+++ b/src/sections/Pricing/icons/configuration.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
diff --git a/src/sections/Pricing/icons/identity.svg b/src/sections/Pricing/icons/identity.svg
new file mode 100644
index 000000000000..a1dd7991e888
--- /dev/null
+++ b/src/sections/Pricing/icons/identity.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/sections/Pricing/icons/lifecycle.svg b/src/sections/Pricing/icons/lifecycle.svg
new file mode 100644
index 000000000000..11e82abde6cc
--- /dev/null
+++ b/src/sections/Pricing/icons/lifecycle.svg
@@ -0,0 +1,176 @@
+
+
+Created by potrace 1.15, written by Peter Selinger 2001-2017
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/sections/Pricing/icons/meshmap-icon.svg b/src/sections/Pricing/icons/meshmap-icon.svg
new file mode 100644
index 000000000000..c51b6d9bb9cf
--- /dev/null
+++ b/src/sections/Pricing/icons/meshmap-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/sections/Pricing/icons/notifications.svg b/src/sections/Pricing/icons/notifications.svg
new file mode 100644
index 000000000000..f5070282c02f
--- /dev/null
+++ b/src/sections/Pricing/icons/notifications.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
diff --git a/src/sections/Pricing/icons/perf.svg b/src/sections/Pricing/icons/perf.svg
new file mode 100644
index 000000000000..8ce05bd61727
--- /dev/null
+++ b/src/sections/Pricing/icons/perf.svg
@@ -0,0 +1,28 @@
+
+
+
+Created by potrace 1.16, written by Peter Selinger 2001-2019
+
+
+
+
+
+
+
+
diff --git a/src/sections/Pricing/icons/support.svg b/src/sections/Pricing/icons/support.svg
new file mode 100644
index 000000000000..d80be5db0aa0
--- /dev/null
+++ b/src/sections/Pricing/icons/support.svg
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
diff --git a/src/sections/Pricing/index.js b/src/sections/Pricing/index.js
new file mode 100644
index 000000000000..4fd8341ac46d
--- /dev/null
+++ b/src/sections/Pricing/index.js
@@ -0,0 +1,86 @@
+import React, { useState } from "react";
+import { Container, Row, Col } from "../../reusecore/Layout";
+import PricingWrapper from "./pricing.style";
+import Comparison from "./comparison";
+import FAQ from "../General/Faq";
+import Reviews from "./review-slider";
+import Button from "../../reusecore/Button";
+import { options } from "./data";
+import { FiCheck } from "@react-icons/all-files/fi/FiCheck";
+import FeatureDetails from "./collapsible-details";
+
+const Pricing = () => {
+
+ const[monthly, setMonthly] = useState(false);
+
+ return (
+
+
+
+
Plans For Every Team Size
+
+ {/*
+
+
+ */}
+
+
+
+
+
+
+
+
How often do you want to pay?
+
+ setMonthly(true)}
+ >
+ Monthly
+
+ setMonthly(false)} >
+ Yearly
+
+
+
+
+
+
+ {options.map((x) => (
+
+
+ {x.featured ?
Start Here
: ""}
+
{x.tier}
+
{x.byline}
+
+ {x.summary.map((t) => (
+
+ ))}
+
+ {/*
+
+ $
+ {monthly? x.monthlyprice : x.yearlyprice}
+ /user{monthly? "/month" : "/year"}
+
*/}
+
+
{x.button[0]}
+
+
+ ))}
+
+
+
+
+
+
+
+ );
+};
+
+
+export default Pricing;
diff --git a/src/sections/Pricing/pricing.style.js b/src/sections/Pricing/pricing.style.js
new file mode 100644
index 000000000000..00403c7dfbba
--- /dev/null
+++ b/src/sections/Pricing/pricing.style.js
@@ -0,0 +1,227 @@
+import styled from "styled-components";
+import background from "../Home/Projects-home/images/background.svg";
+
+const PricingWrapper = styled.section`
+
+.headers {
+ background: rgb(255,255,255);
+ background: linear-gradient(0deg, rgba(255,255,255,1) 12%, rgba(0,211,169,1) 43%, rgba(0,179,159,1) 60%, rgba(71,126,150,1) 100%);
+ /* background: linear-gradient(180deg, rgba(6,6,6,1) 12%, rgba(0,179,159,1) 52%, rgba(0,179,159,1) 53%, rgba(0,179,159,1) 53%, rgba(255,255,255,1) 79%); position: relative; */
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ height: 22rem;
+ @media (min-width: 1400px) {
+ height: 25rem;
+ }
+ @media (min-width: 2048px) {
+ height: 30rem;
+ }
+ h1{
+ margin-top: -2rem;
+ }
+
+ .header-svg {
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ height: 12vw;
+ }
+ .header-heading {
+ color: white;
+ text-align: center;
+ }
+}
+
+.subscription-duration {
+ margin-top: 2rem;
+ margin-bottom: 4rem;
+ text-align: center;
+}
+
+.subscriptionButtons {
+ .button {
+ margin:.5rem 0rem 0rem 0rem;
+ font-weight:400;
+ color: white;
+ }
+ @media (min-width: 434px) {
+ .button:first-child{
+ border-top-right-radius: 0rem;
+ border-bottom-right-radius: 0rem;
+ }
+ .button:last-child{
+ border-top-left-radius: 0rem;
+ border-bottom-left-radius: 0rem;
+ }
+ }
+.active {
+ border-left: 1px solid ${props => props.theme.caribbeanGreenColor};
+ border-right: 1px solid ${props => props.theme.caribbeanGreenColor};
+ background-color: ${props => props.theme.caribbeanGreenColor};
+ padding: 0.3rem;
+ }
+
+.inactive {
+ background-color: ${props => props.theme.primaryLightColor};
+ padding: 0.2rem;
+ }
+}
+
+.wrapper{
+ max-width: 1090px;
+ position: relative;
+ width: 100%;
+ padding: 0 2rem;
+ margin: -2rem auto;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ @media (min-width: 1400px) {
+ margin: -8rem auto 0;
+ }
+ @media (min-width: 2048px) {
+ margin: -10rem auto;
+ }
+}
+
+
+.pricing-table {
+ background: #fff;
+ border-top: 3px solid #00b39f;
+ box-shadow: 0px 2px 16px rgba(0, 0, 0, 0.1);
+ padding: 2rem;
+ border-radius: 4px;
+ transition: .3s;
+ @media (max-width: 768px) {
+ margin: 1.5rem 1rem;
+ }
+}
+
+.featured{
+ transform: scale(1.05);
+ box-shadow: 0px 2px 12px 0px rgb(0, 179, 158, 0.7);
+ }
+.pricing-table:hover {
+ box-shadow: 0px 1px 10px -4px rgba(0, 0, 0, .15);
+ }
+.featured:hover{
+ box-shadow: 0px 2px 16px rgb(0, 179, 158, 0.9);
+ }
+
+.pricing-table{
+
+ .pricing-label {
+ border-radius: 2px;
+ padding: .25rem .5rem;
+ display: inline-block;
+ font-size: 12px;
+ font-weight: 500;
+ margin-left: 60%;
+ }
+
+ h2 {
+ margin-top: 1rem;
+ color: #3b3b3b;
+ font-size: 24px;
+ font-weight: 500;
+ }
+
+ .byline {
+ color: ${props => props.theme.primaryLightColor};
+ font-size: 16px;
+ font-weight: 400;
+ }
+
+ .pricing-features {
+ margin-top: 2rem;
+ }
+
+ .pricing-features .feature {
+ margin: .5rem 0rem;
+ h5{
+ color: #7A848E;
+ font-size: 16px;
+ font-weight: 400;
+ vertical-align: text-top;
+ }
+ .check{
+ padding-right: 0.2rem;
+ vertical-align: middle;
+ color: ${props => props.theme.secondaryColor};
+ }
+ }
+
+
+ .price-tag {
+ margin-top: 2rem;
+ text-align: center;
+ font-weight: 500;
+ }
+
+ .price-tag .symbol {
+ font-size: 24px;
+ }
+
+ .price-tag .amount {
+ letter-spacing: -2px;
+ font-size: 3rem;
+ @media screen and (max-width: 992px) and (min-width: 768px) {
+ font-size: 1.5rem;
+ }
+ @media screen and (max-width: 400px) {
+ font-size: 2rem;
+ }
+ }
+
+ .price-tag .free {
+ font-size: 40px;
+ }
+
+ .price-tag .after {
+ color: #3b3b3b;
+ font-weight: 500;
+ }
+
+ .price-button-disabled, .price-button-link {
+ color: #fff;
+ display: block;
+ margin: 2rem auto 0;
+ padding: 1rem 2rem;
+ width: 100%;
+ text-align: center;
+ font-weight: 500;
+ transition: .3s;
+ background: ${props => props.theme.secondaryColor};
+ }
+
+ .price-button-disabled{
+ background: rgb(0, 179, 158, 0.6);
+ }
+ .price-button-disabled:hover{
+ cursor: default;
+ box-shadow: none;
+ }
+
+ .pricing-label {
+ background: rgb(0, 179, 158, 0.3);
+ color: ${props => props.theme.secondaryColor};
+ }
+
+ .price-tag {
+ color: ${props => props.theme.secondaryColor};
+ }
+}
+
+.accordion__item {
+ .accordion__header {
+ margin: 0.1rem 0;
+ }
+}
+
+
+`;
+
+export default PricingWrapper;
diff --git a/src/sections/Pricing/review-slider.js b/src/sections/Pricing/review-slider.js
new file mode 100644
index 000000000000..1c972061243e
--- /dev/null
+++ b/src/sections/Pricing/review-slider.js
@@ -0,0 +1,129 @@
+import React from "react";
+import styled from "styled-components";
+import Customers from "../../reusecore/Blockquote/Blockquote-image";
+import Slider from "react-slick";
+import Maxi from "../../collections/members/maximiliano-churichi/Maximiliano-Churichi.jpg";
+import Otto from "../../collections/members/otto-van-der-schaaf/otto-van-der-schaaf.jpg";
+import Nic from "../../collections/members/nicholas-jackson/nic-jackson.jpg";
+import William from "./reviews/william-morgan.png";
+import Ken from "./reviews/ken-owens.png";
+
+
+const settings = {
+ dots: false,
+ infinite: true,
+ speed: 400,
+ slidesToShow: 3,
+ slidesToScroll: 0.5,
+ autoplay: true,
+ autoplaySpeed: 1500,
+
+ responsive: [
+ {
+ breakpoint: 1300,
+ settings: {
+ slidesToShow: 2.5,
+ }
+ },
+ {
+ breakpoint: 1024,
+ settings: {
+ slidesToShow: 2,
+ }
+ },
+ {
+ breakpoint: 800,
+ settings: {
+ slidesToShow: 1.5,
+ slidesToScroll: 0.5,
+ }
+ },
+ {
+ breakpoint: 600,
+ settings: {
+ slidesToShow: 1,
+ slidesToScroll: 1,
+ autoplaySpeed: 2000,
+ }
+ }
+ ]
+};
+
+const ReviewsWrapper = styled.div`
+.slider{
+ padding: 2rem 0 0.5rem;
+ background: ${props => props.theme.secondaryLightColor};
+ h2{
+ text-align: center;
+ padding: 0 0 2rem;
+ }
+ .type-one-wrapper{
+ margin: 0 1rem;
+ }
+}
+
+`;
+
+
+const Reviews = () => {
+ return (
+
+
+
Hear what other users have to say...
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Reviews;
diff --git a/src/sections/Pricing/reviews/ken-owens.png b/src/sections/Pricing/reviews/ken-owens.png
new file mode 100644
index 000000000000..6be74007de05
Binary files /dev/null and b/src/sections/Pricing/reviews/ken-owens.png differ
diff --git a/src/sections/Pricing/reviews/william-morgan.png b/src/sections/Pricing/reviews/william-morgan.png
new file mode 100644
index 000000000000..bcb0b9863e9f
Binary files /dev/null and b/src/sections/Pricing/reviews/william-morgan.png differ
diff --git a/src/theme/app/themeStyles.js b/src/theme/app/themeStyles.js
index 0e06eadcde35..eb782fc7db08 100644
--- a/src/theme/app/themeStyles.js
+++ b/src/theme/app/themeStyles.js
@@ -27,6 +27,8 @@ const theme = {
// Teal Blue
tertiaryColorTwo: "#477E96",
+ tealColor: "#477E96",
+ tealLightColor: "#66B6D9",
headingColor: "#111111",