From 112e4b19cfa89144e72283d461fb984bf8f846c0 Mon Sep 17 00:00:00 2001 From: Modern-artist <90668597+Modern-artist@users.noreply.github.com> Date: Thu, 2 Nov 2023 09:11:20 +0530 Subject: [PATCH 1/5] final commit Signed-off-by: Modern-artist <90668597+Modern-artist@users.noreply.github.com> --- src/assets/images/products/MesheryRange.svg | 89 +++ .../images/products/MesheryRangeDark.svg | 94 +++ src/assets/images/products/Nightawk.svg | 9 + src/assets/images/products/Rectangle.svg | 9 + src/assets/images/products/circle_dark.svg | 57 ++ src/assets/images/products/circle_light.svg | 57 ++ .../images/products/codicon_extensions.svg | 10 + .../images/products/fluent_desktop-mac.svg | 3 + .../images/products/meshery-logo-light.svg | 9 + src/assets/images/products/meshmap.svg | 9 + src/assets/images/products/patterns.svg | 17 + src/pages/products/collapsible-details.js | 87 +++ src/pages/products/icons/collaboration.svg | 27 + src/pages/products/icons/coming-soon.webp | Bin 0 -> 41226 bytes src/pages/products/icons/configuration.svg | 24 + src/pages/products/icons/identity.svg | 23 + src/pages/products/icons/lifecycle.svg | 176 ++++++ src/pages/products/icons/meshmap-icon.svg | 1 + src/pages/products/icons/notification.svg | 21 + src/pages/products/icons/perf.svg | 28 + src/pages/products/icons/support.svg | 52 ++ src/pages/products/index.js | 330 ++++++++++ src/pages/products/pricing.style.js | 573 ++++++++++++++++++ 23 files changed, 1705 insertions(+) create mode 100644 src/assets/images/products/MesheryRange.svg create mode 100644 src/assets/images/products/MesheryRangeDark.svg create mode 100644 src/assets/images/products/Nightawk.svg create mode 100644 src/assets/images/products/Rectangle.svg create mode 100644 src/assets/images/products/circle_dark.svg create mode 100644 src/assets/images/products/circle_light.svg create mode 100644 src/assets/images/products/codicon_extensions.svg create mode 100644 src/assets/images/products/fluent_desktop-mac.svg create mode 100644 src/assets/images/products/meshery-logo-light.svg create mode 100644 src/assets/images/products/meshmap.svg create mode 100644 src/assets/images/products/patterns.svg create mode 100644 src/pages/products/collapsible-details.js create mode 100644 src/pages/products/icons/collaboration.svg create mode 100644 src/pages/products/icons/coming-soon.webp create mode 100644 src/pages/products/icons/configuration.svg create mode 100644 src/pages/products/icons/identity.svg create mode 100644 src/pages/products/icons/lifecycle.svg create mode 100644 src/pages/products/icons/meshmap-icon.svg create mode 100644 src/pages/products/icons/notification.svg create mode 100644 src/pages/products/icons/perf.svg create mode 100644 src/pages/products/icons/support.svg create mode 100644 src/pages/products/index.js create mode 100644 src/pages/products/pricing.style.js diff --git a/src/assets/images/products/MesheryRange.svg b/src/assets/images/products/MesheryRange.svg new file mode 100644 index 000000000000..59c8ad2757e4 --- /dev/null +++ b/src/assets/images/products/MesheryRange.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/products/MesheryRangeDark.svg b/src/assets/images/products/MesheryRangeDark.svg new file mode 100644 index 000000000000..6e3f6435fb26 --- /dev/null +++ b/src/assets/images/products/MesheryRangeDark.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/products/Nightawk.svg b/src/assets/images/products/Nightawk.svg new file mode 100644 index 000000000000..20eb4c551057 --- /dev/null +++ b/src/assets/images/products/Nightawk.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/products/Rectangle.svg b/src/assets/images/products/Rectangle.svg new file mode 100644 index 000000000000..12598c820c17 --- /dev/null +++ b/src/assets/images/products/Rectangle.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/products/circle_dark.svg b/src/assets/images/products/circle_dark.svg new file mode 100644 index 000000000000..66066cf07f00 --- /dev/null +++ b/src/assets/images/products/circle_dark.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/products/circle_light.svg b/src/assets/images/products/circle_light.svg new file mode 100644 index 000000000000..b0dd9fa862fa --- /dev/null +++ b/src/assets/images/products/circle_light.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/products/codicon_extensions.svg b/src/assets/images/products/codicon_extensions.svg new file mode 100644 index 000000000000..004b17101e21 --- /dev/null +++ b/src/assets/images/products/codicon_extensions.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/products/fluent_desktop-mac.svg b/src/assets/images/products/fluent_desktop-mac.svg new file mode 100644 index 000000000000..8fbf4d4bd6b0 --- /dev/null +++ b/src/assets/images/products/fluent_desktop-mac.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/products/meshery-logo-light.svg b/src/assets/images/products/meshery-logo-light.svg new file mode 100644 index 000000000000..1cdab6c7b507 --- /dev/null +++ b/src/assets/images/products/meshery-logo-light.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/products/meshmap.svg b/src/assets/images/products/meshmap.svg new file mode 100644 index 000000000000..12598c820c17 --- /dev/null +++ b/src/assets/images/products/meshmap.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/products/patterns.svg b/src/assets/images/products/patterns.svg new file mode 100644 index 000000000000..97f400de98b4 --- /dev/null +++ b/src/assets/images/products/patterns.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/pages/products/collapsible-details.js b/src/pages/products/collapsible-details.js new file mode 100644 index 000000000000..ad7e7eb8da8f --- /dev/null +++ b/src/pages/products/collapsible-details.js @@ -0,0 +1,87 @@ +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: 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}; + transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); + } +p{ + font-size: 0.9rem; + color: ${props => props.theme.greyC1C1C1ToGreyB3B3B3}; + transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); +} +.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/pages/products/icons/collaboration.svg b/src/pages/products/icons/collaboration.svg new file mode 100644 index 000000000000..683ad1022c70 --- /dev/null +++ b/src/pages/products/icons/collaboration.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + diff --git a/src/pages/products/icons/coming-soon.webp b/src/pages/products/icons/coming-soon.webp new file mode 100644 index 0000000000000000000000000000000000000000..93de1783302d040f8a2c34130bb0a7b64777d307 GIT binary patch literal 41226 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 + + + + + diff --git a/src/pages/products/icons/identity.svg b/src/pages/products/icons/identity.svg new file mode 100644 index 000000000000..59fa766e4b51 --- /dev/null +++ b/src/pages/products/icons/identity.svg @@ -0,0 +1,23 @@ + + + + + + + diff --git a/src/pages/products/icons/lifecycle.svg b/src/pages/products/icons/lifecycle.svg new file mode 100644 index 000000000000..11e82abde6cc --- /dev/null +++ b/src/pages/products/icons/lifecycle.svg @@ -0,0 +1,176 @@ + + +Created by potrace 1.15, written by Peter Selinger 2001-2017 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/pages/products/icons/meshmap-icon.svg b/src/pages/products/icons/meshmap-icon.svg new file mode 100644 index 000000000000..c51b6d9bb9cf --- /dev/null +++ b/src/pages/products/icons/meshmap-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/pages/products/icons/notification.svg b/src/pages/products/icons/notification.svg new file mode 100644 index 000000000000..1d9698647bdf --- /dev/null +++ b/src/pages/products/icons/notification.svg @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/src/pages/products/icons/perf.svg b/src/pages/products/icons/perf.svg new file mode 100644 index 000000000000..8ce05bd61727 --- /dev/null +++ b/src/pages/products/icons/perf.svg @@ -0,0 +1,28 @@ + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + diff --git a/src/pages/products/icons/support.svg b/src/pages/products/icons/support.svg new file mode 100644 index 000000000000..d80be5db0aa0 --- /dev/null +++ b/src/pages/products/icons/support.svg @@ -0,0 +1,52 @@ + + + + + + + + diff --git a/src/pages/products/index.js b/src/pages/products/index.js new file mode 100644 index 000000000000..db91f1a741a8 --- /dev/null +++ b/src/pages/products/index.js @@ -0,0 +1,330 @@ +import React from "react"; +import { Container, Row, Col } from "../../reusecore/Layout"; +import PricingWrapper from "./pricing.style"; +import FeatureDetails from "./collapsible-details"; +import Button from "../../reusecore/Button"; +import darkbgSvg from "../../assets/images/products/circle_dark.svg"; +import lightbgSvg from "../../assets/images/products/circle_light.svg"; +import product_hero_img from "../../assets/images/products/MesheryRangeDark.svg"; +import product_hero_img_light from "../../assets/images/products/MesheryRange.svg"; +import desktop from "../../assets/images/products/fluent_desktop-mac.svg"; +import codicon from "../../assets/images/products/codicon_extensions.svg"; +import mesheryLogo from "../../assets/images/products/meshery-logo-light.svg"; +import meshmap from "../../assets/images/products/meshmap.svg"; +import comingSoon from "./icons/coming-soon.webp"; +import { useStyledDarkMode } from "../../theme/app/useStyledDarkMode"; + +const options = [ + { + tier: "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 cloud native infrastructure changes across any number of Kubernetes clusters.", + }, + { + id: 2, + category: "Cluster Discovery", + description: + "Day 2 support for ongoing synchronization of Kubernetes configuration, workloads and cloud native infrastructure changes.", + }, + { + id: 3, + category: "Microservices Performance", + 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: [ + "Contact Sales", + "https://us15.list-manage.com/contact-form?u=6b50be5aea3dfe1fd4c041d80&form_id=d0ffe17c92d8014ede6b721aa16096e8", + ], + 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, + pricing_coming_soon: , + byline: "Everything in Team, plus:", + button: ["Coming Soon", ""], + summary: [ + { + id: 0, + category: "User-defined Roles", + description: "Customizable roles for specific permission assignments", + }, + { + id: 1, + category: "Authentication: LDAP", + description: + "Access Meshery using your existing accounts and centrally manage repository access.", + }, + { + id: 2, + category: "Authentication: SAML", + description: + "Use an identity provider to manage the identities of Meshery 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.", + }, + ], + }, +]; +const CardsData = [ + { + id: 1, + logo: meshmap, + title: "Meshmap", + icon: [codicon, desktop], + text: "GitOps-infused cloud native visual designer for Kubernetes and cloud native applications. MeshMap works with your Kubernetes clusters so that you design and manage your infrastructure and applications between members of your team.", + //as there is no soluton page. + url: "/cloud-native-management/meshmap" + }, + { + id: 2, + logo: mesheryLogo, + title: "Meshery", + icon: ["",desktop], + text: "A cloud native management plane that enables the operation and management of Kubernetes, any service mesh, and their workloads. it enables operators to deploy WebAssembly filters to Envoy-based data planes.", + url: "https://meshery.io/" + }, +]; + +const index = () => { + const { isDark } = useStyledDarkMode(); + return ( +
+ +
+
+
+

+ Effortless Configuration & Complete Control of Your Cloud Native{" "} + + Infrastructure + + . +

+

+ Unlock your enterprise's capabilities with our innovative cloud + native solutions. Crafted to tackle cloud challenges, our + offerings enhance processes for effectiveness, scalability, and + flexibility, elevating operations to new efficiencies.{" "} +

+
+
+
+
+ +
+
+
+

All Products

+
+ {CardsData.map((card) => ( + <> +
+
+ +
{card.title}
+
+ {/*
*/} + + + {/*
*/} +
+
+
{card.text}
+
+ {/* */} + Learn more + {/* */} +
+ {/*
+
+
+ + ))} +
+
+
+ + +
+

+ Unlock Your Potential with Free Tier Account! +

+

+ Embrace the future of technology and embark on a transformative journey with our comprehensive range of products prepared to meet your needs. Elevate, Innovate, and conquer the cloud with us today! +

+
+
+
+

+ Plans For Every Team Size +

+

+ Choose the ideal plan to propel your infrastructure goals. From startups to seasoned enterprises, we have a plan designed to fit your unique needs. +

+
+ + + {options.map((x) => ( + +
+ {x.featured ? ( +
Free Forever
+ ) : ( + "" + )} +
+ {x.pricing_coming_soon} +
+

{x.tier}

+
{x.byline}
+
+ {x.summary.map((t) => ( +
+ +
+ ))} +
+ +
+ + ))} +
+
+
+

+ Don’t Just Take Our Word For It, Experience It! +

+
+

See how our products can transform your cloud experience today.

+

+ Book to see it in action! Our experts are eager to guide you through the incredible possibilities that Layer5 offers. Take this opportunity to discover what more your infrastructure can do for you! +

+
+
+
+
+
+ ); +}; + +export default index; diff --git a/src/pages/products/pricing.style.js b/src/pages/products/pricing.style.js new file mode 100644 index 000000000000..7b3e6c63fe06 --- /dev/null +++ b/src/pages/products/pricing.style.js @@ -0,0 +1,573 @@ +import styled from "styled-components"; + +const PricingWrapper = styled.section` + .freeCont { + width: 100vw; + overflow: hidden; + } + .headers { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + text-align: center; + gap: 40px; + padding: 0 20px; + transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); + h1 { + color: ${(props) => props.theme.whiteToBlack}; + font-weight: bolder; + } + h1 span { + color: rgb(235, 192, 23); + } + + p { + color: ${(props) => props.theme.whiteToBlack}; + } + + .header-heading { + color: ${(props) => props.theme.whiteToBlack}; + text-align: center; + } + } + .paraInfo { + width: 80vw; + } + .paras{ + display: flex; + flex-direction: column; + align-items: center; + /* justify-content: center; */ + } + + .subscription-duration { + margin-top: 2rem; + margin-bottom: 4rem; + text-align: center; + h2 { + color: ${(props) => props.theme.whiteToBlack}; + transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); + } + @media (min-width: 1400px) { + h2 { + color: ${(props) => props.theme.whiteToBlack}; + transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); + } + } + } + .gap { + padding: 5rem 20px; + } + .bot_gap{ + margin-bottom: 4rem; + } + .freeTry { + position: relative; + display: flex; + justify-content: center; + left: -10vw; + width: 120vw; + margin: 2.5rem 0; + background: ${(props) => props.theme.theme}; + transform: rotate(4deg); + overflow: hidden; + .bgSvgLeft { + position: absolute; + bottom: 0; + right: -240px; + width: 860px; + } + .bgSvgRight { + position: absolute; + top: 0; + left: -240px; + width: 860px; + } + } + .rotate { + transform: rotate(-4deg); + width: 100vw; + } + + .subscriptionButtons { + .button { + margin: 0.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; + transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); + } + } + + .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-color: ${(props) => props.theme.grey212121ToWhite}; + border-top: 3px solid #00b39f; + box-shadow: 0px 2px 16px rgba(0, 0, 0, 0.1); + padding: 2rem; + border-radius: 4px; + transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); + + @media (max-width: 992px) { + margin: 1.5rem 1rem; + } + } + + .featured { + transform: scale(1.05); + background-color: ${(props) => props.theme.grey212121ToWhite}; + box-shadow: 0px 2px 12px 0px rgb(0, 179, 158, 0.7); + transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); + } + .pricing-table:hover { + box-shadow: 0px 1px 10px -4px rgba(0, 0, 0, 0.15); + } + .featured:hover { + box-shadow: 0px 2px 16px rgb(0, 179, 158, 0.9); + } + + .pricing-table { + .pricing-label { + border-radius: 2px; + background-color: rgb(235, 192, 23); + padding: 0.25rem 0.5rem; + display: block; + position: relative; + float: right; + justify-content: flex-end; + align-content: flex-end; + width: fit-content; + font-size: 0.75rem; + font-weight: 500; + margin-top: -1rem; + margin-right: -1rem; + margin-bottom: 1rem; + } + + h2 { + margin-top: 1rem; + color: ${(props) => props.theme.greyDCDCDCToGrey3B3B3B}; + font-size: 24px; + font-weight: 500; + transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); + } + + .byline { + color: ${(props) => props.theme.greyC8C8C8ToGreen3C494F}; + font-size: 16px; + font-weight: 400; + transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); + } + + .pricing-features { + margin-top: 2rem; + } + + .pricing-features .feature { + margin: 0.75rem 0rem; + .details { + display: flex; + margin: 0.5rem 0; + } + h5 { + color: ${(props) => props.theme.greyAAAAAAToGrey7A848E}; + display: block; + font-size: 16px; + font-weight: 400; + /* vertical-align: text-top; */ + transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); + } + .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: 0.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(235, 192, 23); + color: #000; + transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); + } + + .price-tag { + color: ${(props) => props.theme.secondaryColor}; + } + } + + .accordion__item { + .accordion__header { + margin: 0.1rem 0; + } + } + + .pricing_coming_soon { + width: 150px; + position: relative; + float: right; + z-index: 2; + margin-top: -2rem; + margin-right: -5.4rem; + transform: translateY(0%) translateX(0%) rotate(14deg); + -webkit-transform: translateY(0%) translateX(0%) rotate(14deg); + } + + .product_hero { + display: flex; + justify-content:center; + align-items : center; + background: linear-gradient(180deg, rgba(0, 211, 169, 0.10) 0%, rgba(0, 179, 159, 0.00) 100%); + } + .product_hero_text { + flex: 1; + margin: 2rem; + margin-left:10vw; + } + .product_hero_text h1 { + font-family: Qanelas Soft; + font-size: 48px; + font-style: normal; + font-weight: 600; + line-height: normal; + color: ${(props) => props.theme.whiteToBlack}; + } + .product_hero_text h1 span { + color: ${(props) => props.theme.secondaryColor}; + } + .product_hero_text p { + color: #d9d9d9; + font-family: Qanelas Soft; + font-size: 18px; + font-style: normal; + line-height: 32px; + color: ${(props) => props.theme.whiteToBlack}; + margin: 2rem 0; + } + .btn { + display: flex; + gap: 40px; + flex-direction: row; + } + .btn Button { + font-size: 18px; + } + .product_hero_img { + margin:4rem; + } + .heroImg path { + filter: red; + } + .product_cards { + min-height: 100%; + } + .product_cards h2 { + text-align: center; + font-size: 56px; + font-style: normal; + font-weight: 700; + } + .product_cards .card { + width: 540px; +height: 100%; + border-radius: 20px; + background-color: ${(props) => props.theme.grey212121ToGreyF0F0F0}; + padding: 2rem; + margin: 2rem; + } +.cards { + display: flex; + flex-wrap: wrap; + justify-content: center; + } + .card:hover { + transition: 400ms ease-in-out; + box-shadow: 0px 0px 10px ${(props) => props.theme.caribbeanGreenColor}; + } + + .card_head { + display: flex; + align-items: center; + margin-bottom: 20px; + position: relative; + } + + .card_head .title { + padding-left: 1rem; + font-size: 32px; + font-weight: 700; + } + .card .text { + padding-bottom: 2rem; + font-size: 16px; + font-style: normal; + font-weight: 400; + color: ${(props) => props.theme.whiteToBlack}; + } + + .card_bottom { + border-top: 2px solid #2c2c2c; + display: flex; + align-items: flex-end; + justify-content: space-between; + margin:0; + } + .card_bottom .learn { + font-size: 1rem; + margin-bottom: 10px; + text-decoration: underline; + text-decoration-color: ${(props) => props.theme.secondaryColor}; + text-underline-offset: 8px; + cursor: pointer; + color: ${(props) => props.theme.whiteToBlack}; + } + .btns Button { + margin: 20px 0px; + font-size: 16px; + margin-bottom:0; + } + .iconss { + display: flex; + gap: 16px; + position: absolute; + right: 0; + } + /* .iconss img { + width: 28px; + } */ + @media (max-width:1141px){ + .product_hero_img { + margin:1rem; + } + .product_hero_img img{ + height:420px; + } + } + + + @media (max-width: 968px) { + .product_hero { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + margin: auto; + width: 100vw; + } + .product_hero_text { + text-align: center; + margin: 2rem; + margin-top: 4rem; + } + .product_hero_text h1 { + justify-content: center; + align-items: center; + } + .product_hero_img img { + width: 400px; + } + .cards { + flex-direction: column; + justify-content: center; + margin: auto; + align-items: center; + } + .btn { + justify-content: center; + } + + .card_head { + align-items: flex-start; + } + .product_cards { + display: flex; + flex-direction: column; + justify-content: center; + } + .btns { + font-size: 16px; + flex-direction: row; + } + } + @media (max-width: 807px) { + .product_hero_text h1 { + font-size: 34px; + } + .product_hero_text p { + font-size: 17px; + } + .product_cards h2 { + font-size: 40px; + } + } + @media (max-width: 600px){ + .product_cards .card{ + width:440px; + } + } + @media (max-width: 509px) { + .product_cards .card { + width: 400px; + margin: 14px; + } + } + @media (max-width: 494px) { + .card_head .title { + padding: 10px; + font-size: 24px; + } + .product_hero_img img { + width: 100%; + } + /* .btn{ + font-size: 12px; + } */ + } + @media (max-width: 418px) { + .product_hero { + justify-content: center; + margin: auto; + width: 100vw; + } + + .product_hero_text h1 { + font-size: 28px; + text-align: center; + } + .product_hero_text p { + font-size: 16px; + text-align: center; + padding: 10px; + margin-top: 10px; + } + .btn { + flex-direction: column; + justify-content: center; + align-items: center; + } + .product_hero_text { + margin: 2rem 1rem 0rem 1rem; + } + .product_cards .card { + width: 90%; + /* margin: 14px; */ + } + } + @media (max-width: 354px) { + .product_hero_img img { + width: 100%; + } + .product_cards .card { + width:280px; + padding: 16px; + + } + .card_head { + margin: 0; + padding: 0; + } + /* .card_head .title { + padding: 0; + margin: 4px; + font-size: 16px; + } */ + .btns{ + scale: 0.8; + } + .card .text { + font-size: 14px; + } + .iconss img { + width: 20px; + } + } +`; + +export default PricingWrapper; From fc0792be18c3e8296cfaf626b2fa43c81ac6a4bd Mon Sep 17 00:00:00 2001 From: Modern-artist <90668597+Modern-artist@users.noreply.github.com> Date: Mon, 6 Nov 2023 10:00:22 +0530 Subject: [PATCH 2/5] final commit Signed-off-by: Modern-artist <90668597+Modern-artist@users.noreply.github.com> --- src/pages/products/index.js | 8 +++++--- src/pages/products/pricing.style.js | 4 ---- src/sections/General/Navigation/index.js | 2 -- src/sections/General/Navigation/utility/menu-items.js | 2 +- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/pages/products/index.js b/src/pages/products/index.js index db91f1a741a8..58435b92ba06 100644 --- a/src/pages/products/index.js +++ b/src/pages/products/index.js @@ -171,7 +171,7 @@ const CardsData = [ title: "Meshery", icon: ["",desktop], text: "A cloud native management plane that enables the operation and management of Kubernetes, any service mesh, and their workloads. it enables operators to deploy WebAssembly filters to Envoy-based data planes.", - url: "https://meshery.io/" + url: "/cloud-native-management/meshery" }, ]; @@ -187,7 +187,7 @@ const index = () => { Effortless Configuration & Complete Control of Your Cloud Native{" "} Infrastructure @@ -311,7 +311,9 @@ const index = () => {

- Don’t Just Take Our Word For It, Experience It! + Don’t Just Take Our Word For It, Experience It!

See how our products can transform your cloud experience today.

diff --git a/src/pages/products/pricing.style.js b/src/pages/products/pricing.style.js index 7b3e6c63fe06..3f8755e2e2cc 100644 --- a/src/pages/products/pricing.style.js +++ b/src/pages/products/pricing.style.js @@ -16,10 +16,6 @@ const PricingWrapper = styled.section` transition: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); h1 { color: ${(props) => props.theme.whiteToBlack}; - font-weight: bolder; - } - h1 span { - color: rgb(235, 192, 23); } p { diff --git a/src/sections/General/Navigation/index.js b/src/sections/General/Navigation/index.js index d52bd19510ce..680296455fb0 100644 --- a/src/sections/General/Navigation/index.js +++ b/src/sections/General/Navigation/index.js @@ -226,8 +226,6 @@ const Navigation = () => {
    {Data.menuItems.map((menu, index) => ( - -
  • Date: Mon, 6 Nov 2023 16:05:27 +0530 Subject: [PATCH 3/5] Update menu-items.js Signed-off-by: Prem kumar <90668597+Modern-artist@users.noreply.github.com> --- src/sections/General/Navigation/utility/menu-items.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/sections/General/Navigation/utility/menu-items.js b/src/sections/General/Navigation/utility/menu-items.js index 26c8af4f68f6..1a70fefdbab4 100644 --- a/src/sections/General/Navigation/utility/menu-items.js +++ b/src/sections/General/Navigation/utility/menu-items.js @@ -80,7 +80,6 @@ const Data = { // } }, { - allProducts name: "Products", path: "/products", subItems: [ From c003016c2c59414f4ca3168b6413fb32653b3675 Mon Sep 17 00:00:00 2001 From: Lee Calcote Date: Fri, 10 Nov 2023 21:36:35 -0600 Subject: [PATCH 4/5] overhaul Signed-off-by: Lee Calcote --- src/assets/images/products/MesheryRange.svg | 89 -- .../images/products/MesheryRangeDark.svg | 94 -- src/assets/images/products/Nightawk.svg | 9 - .../images/products/meshery-logo-light.svg | 9 - src/assets/images/products/meshmap.svg | 9 - src/assets/images/products/patterns.svg | 17 - src/pages/products/icons/meshmap-icon.svg | 1 - src/pages/products/icons/perf.svg | 28 - src/pages/products/index.js | 339 +------- .../Products}/collapsible-details.js | 2 - .../Products}/icons/collaboration.svg | 0 .../Products}/icons/coming-soon.webp | Bin .../Products}/icons/configuration.svg | 0 .../Products}/icons/identity.svg | 0 .../Products}/icons/lifecycle.svg | 0 .../Products}/icons/notification.svg | 0 .../Products}/icons/support.svg | 0 .../Products/images}/Rectangle.svg | 0 .../Products/images}/circle_dark.svg | 0 .../Products/images}/circle_light.svg | 0 .../Products/images}/codicon_extensions.svg | 0 .../Products/images}/fluent_desktop-mac.svg | 0 .../images/layer5-products-overview-dark.svg | 1 + .../images/layer5-products-overview.svg | 801 ++++++++++++++++++ src/sections/Products/index.js | 331 ++++++++ .../Products/products.style.js} | 15 +- 26 files changed, 1157 insertions(+), 588 deletions(-) delete mode 100644 src/assets/images/products/MesheryRange.svg delete mode 100644 src/assets/images/products/MesheryRangeDark.svg delete mode 100644 src/assets/images/products/Nightawk.svg delete mode 100644 src/assets/images/products/meshery-logo-light.svg delete mode 100644 src/assets/images/products/meshmap.svg delete mode 100644 src/assets/images/products/patterns.svg delete mode 100644 src/pages/products/icons/meshmap-icon.svg delete mode 100644 src/pages/products/icons/perf.svg rename src/{pages/products => sections/Products}/collapsible-details.js (99%) rename src/{pages/products => sections/Products}/icons/collaboration.svg (100%) rename src/{pages/products => sections/Products}/icons/coming-soon.webp (100%) rename src/{pages/products => sections/Products}/icons/configuration.svg (100%) rename src/{pages/products => sections/Products}/icons/identity.svg (100%) rename src/{pages/products => sections/Products}/icons/lifecycle.svg (100%) rename src/{pages/products => sections/Products}/icons/notification.svg (100%) rename src/{pages/products => sections/Products}/icons/support.svg (100%) rename src/{assets/images/products => sections/Products/images}/Rectangle.svg (100%) rename src/{assets/images/products => sections/Products/images}/circle_dark.svg (100%) rename src/{assets/images/products => sections/Products/images}/circle_light.svg (100%) rename src/{assets/images/products => sections/Products/images}/codicon_extensions.svg (100%) rename src/{assets/images/products => sections/Products/images}/fluent_desktop-mac.svg (100%) create mode 100644 src/sections/Products/images/layer5-products-overview-dark.svg create mode 100644 src/sections/Products/images/layer5-products-overview.svg create mode 100644 src/sections/Products/index.js rename src/{pages/products/pricing.style.js => sections/Products/products.style.js} (98%) diff --git a/src/assets/images/products/MesheryRange.svg b/src/assets/images/products/MesheryRange.svg deleted file mode 100644 index 59c8ad2757e4..000000000000 --- a/src/assets/images/products/MesheryRange.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/images/products/MesheryRangeDark.svg b/src/assets/images/products/MesheryRangeDark.svg deleted file mode 100644 index 6e3f6435fb26..000000000000 --- a/src/assets/images/products/MesheryRangeDark.svg +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/images/products/Nightawk.svg b/src/assets/images/products/Nightawk.svg deleted file mode 100644 index 20eb4c551057..000000000000 --- a/src/assets/images/products/Nightawk.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/assets/images/products/meshery-logo-light.svg b/src/assets/images/products/meshery-logo-light.svg deleted file mode 100644 index 1cdab6c7b507..000000000000 --- a/src/assets/images/products/meshery-logo-light.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/assets/images/products/meshmap.svg b/src/assets/images/products/meshmap.svg deleted file mode 100644 index 12598c820c17..000000000000 --- a/src/assets/images/products/meshmap.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/assets/images/products/patterns.svg b/src/assets/images/products/patterns.svg deleted file mode 100644 index 97f400de98b4..000000000000 --- a/src/assets/images/products/patterns.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/pages/products/icons/meshmap-icon.svg b/src/pages/products/icons/meshmap-icon.svg deleted file mode 100644 index c51b6d9bb9cf..000000000000 --- a/src/pages/products/icons/meshmap-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/products/icons/perf.svg b/src/pages/products/icons/perf.svg deleted file mode 100644 index 8ce05bd61727..000000000000 --- a/src/pages/products/icons/perf.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - -Created by potrace 1.16, written by Peter Selinger 2001-2019 - - - - - - - - diff --git a/src/pages/products/index.js b/src/pages/products/index.js index 58435b92ba06..764904b97e41 100644 --- a/src/pages/products/index.js +++ b/src/pages/products/index.js @@ -1,332 +1,17 @@ import React from "react"; -import { Container, Row, Col } from "../../reusecore/Layout"; -import PricingWrapper from "./pricing.style"; -import FeatureDetails from "./collapsible-details"; -import Button from "../../reusecore/Button"; -import darkbgSvg from "../../assets/images/products/circle_dark.svg"; -import lightbgSvg from "../../assets/images/products/circle_light.svg"; -import product_hero_img from "../../assets/images/products/MesheryRangeDark.svg"; -import product_hero_img_light from "../../assets/images/products/MesheryRange.svg"; -import desktop from "../../assets/images/products/fluent_desktop-mac.svg"; -import codicon from "../../assets/images/products/codicon_extensions.svg"; -import mesheryLogo from "../../assets/images/products/meshery-logo-light.svg"; -import meshmap from "../../assets/images/products/meshmap.svg"; -import comingSoon from "./icons/coming-soon.webp"; -import { useStyledDarkMode } from "../../theme/app/useStyledDarkMode"; +import SEO from "../../components/seo"; +import ProductPage from "../../sections/Products"; -const options = [ - { - tier: "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 cloud native infrastructure changes across any number of Kubernetes clusters.", - }, - { - id: 2, - category: "Cluster Discovery", - description: - "Day 2 support for ongoing synchronization of Kubernetes configuration, workloads and cloud native infrastructure changes.", - }, - { - id: 3, - category: "Microservices Performance", - 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: [ - "Contact Sales", - "https://us15.list-manage.com/contact-form?u=6b50be5aea3dfe1fd4c041d80&form_id=d0ffe17c92d8014ede6b721aa16096e8", - ], - 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, - pricing_coming_soon: , - byline: "Everything in Team, plus:", - button: ["Coming Soon", ""], - summary: [ - { - id: 0, - category: "User-defined Roles", - description: "Customizable roles for specific permission assignments", - }, - { - id: 1, - category: "Authentication: LDAP", - description: - "Access Meshery using your existing accounts and centrally manage repository access.", - }, - { - id: 2, - category: "Authentication: SAML", - description: - "Use an identity provider to manage the identities of Meshery 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.", - }, - ], - }, -]; -const CardsData = [ - { - id: 1, - logo: meshmap, - title: "Meshmap", - icon: [codicon, desktop], - text: "GitOps-infused cloud native visual designer for Kubernetes and cloud native applications. MeshMap works with your Kubernetes clusters so that you design and manage your infrastructure and applications between members of your team.", - //as there is no soluton page. - url: "/cloud-native-management/meshmap" - }, - { - id: 2, - logo: mesheryLogo, - title: "Meshery", - icon: ["",desktop], - text: "A cloud native management plane that enables the operation and management of Kubernetes, any service mesh, and their workloads. it enables operators to deploy WebAssembly filters to Envoy-based data planes.", - url: "/cloud-native-management/meshery" - }, -]; - -const index = () => { - const { isDark } = useStyledDarkMode(); +const Products = () => { return ( -
    - -
    -
    -
    -

    - Effortless Configuration & Complete Control of Your Cloud Native{" "} - - Infrastructure - - . -

    -

    - Unlock your enterprise's capabilities with our innovative cloud - native solutions. Crafted to tackle cloud challenges, our - offerings enhance processes for effectiveness, scalability, and - flexibility, elevating operations to new efficiencies.{" "} -

    -
    -
    -
    -
    - -
    -
    -
    -

    All Products

    -
    - {CardsData.map((card) => ( - <> -
    -
    - -
    {card.title}
    -
    - {/*
    */} - - - {/*
    */} -
    -
    -
    {card.text}
    -
    - {/* */} - Learn more - {/* */} -
    - {/*
    -
    -
    - - ))} -
    -
    -
    - - -
    -

    - Unlock Your Potential with Free Tier Account! -

    -

    - Embrace the future of technology and embark on a transformative journey with our comprehensive range of products prepared to meet your needs. Elevate, Innovate, and conquer the cloud with us today! -

    -
    -
    -
    -

    - Plans For Every Team Size -

    -

    - Choose the ideal plan to propel your infrastructure goals. From startups to seasoned enterprises, we have a plan designed to fit your unique needs. -

    -
    - - - {options.map((x) => ( - -
    - {x.featured ? ( -
    Free Forever
    - ) : ( - "" - )} -
    - {x.pricing_coming_soon} -
    -

    {x.tier}

    -
    {x.byline}
    -
    - {x.summary.map((t) => ( -
    - -
    - ))} -
    - -
    - - ))} -
    -
    -
    -

    - Don’t Just Take Our Word For It, Experience It! -

    -
    -

    See how our products can transform your cloud experience today.

    -

    - Book to see it in action! Our experts are eager to guide you through the incredible possibilities that Layer5 offers. Take this opportunity to discover what more your infrastructure can do for you! -

    -
    -
    -
    -
    -
    + <> + + ); }; - -export default index; +export default Products; +export const Head = () => { + return ; +}; diff --git a/src/pages/products/collapsible-details.js b/src/sections/Products/collapsible-details.js similarity index 99% rename from src/pages/products/collapsible-details.js rename to src/sections/Products/collapsible-details.js index ad7e7eb8da8f..e1cf0d9e15e9 100644 --- a/src/pages/products/collapsible-details.js +++ b/src/sections/Products/collapsible-details.js @@ -39,12 +39,10 @@ p{ .open{ visibility:visible; } - h5{ display: inline-block; vertical-align: middle; } - `; const FeatureDetails = (props) => { diff --git a/src/pages/products/icons/collaboration.svg b/src/sections/Products/icons/collaboration.svg similarity index 100% rename from src/pages/products/icons/collaboration.svg rename to src/sections/Products/icons/collaboration.svg diff --git a/src/pages/products/icons/coming-soon.webp b/src/sections/Products/icons/coming-soon.webp similarity index 100% rename from src/pages/products/icons/coming-soon.webp rename to src/sections/Products/icons/coming-soon.webp diff --git a/src/pages/products/icons/configuration.svg b/src/sections/Products/icons/configuration.svg similarity index 100% rename from src/pages/products/icons/configuration.svg rename to src/sections/Products/icons/configuration.svg diff --git a/src/pages/products/icons/identity.svg b/src/sections/Products/icons/identity.svg similarity index 100% rename from src/pages/products/icons/identity.svg rename to src/sections/Products/icons/identity.svg diff --git a/src/pages/products/icons/lifecycle.svg b/src/sections/Products/icons/lifecycle.svg similarity index 100% rename from src/pages/products/icons/lifecycle.svg rename to src/sections/Products/icons/lifecycle.svg diff --git a/src/pages/products/icons/notification.svg b/src/sections/Products/icons/notification.svg similarity index 100% rename from src/pages/products/icons/notification.svg rename to src/sections/Products/icons/notification.svg diff --git a/src/pages/products/icons/support.svg b/src/sections/Products/icons/support.svg similarity index 100% rename from src/pages/products/icons/support.svg rename to src/sections/Products/icons/support.svg diff --git a/src/assets/images/products/Rectangle.svg b/src/sections/Products/images/Rectangle.svg similarity index 100% rename from src/assets/images/products/Rectangle.svg rename to src/sections/Products/images/Rectangle.svg diff --git a/src/assets/images/products/circle_dark.svg b/src/sections/Products/images/circle_dark.svg similarity index 100% rename from src/assets/images/products/circle_dark.svg rename to src/sections/Products/images/circle_dark.svg diff --git a/src/assets/images/products/circle_light.svg b/src/sections/Products/images/circle_light.svg similarity index 100% rename from src/assets/images/products/circle_light.svg rename to src/sections/Products/images/circle_light.svg diff --git a/src/assets/images/products/codicon_extensions.svg b/src/sections/Products/images/codicon_extensions.svg similarity index 100% rename from src/assets/images/products/codicon_extensions.svg rename to src/sections/Products/images/codicon_extensions.svg diff --git a/src/assets/images/products/fluent_desktop-mac.svg b/src/sections/Products/images/fluent_desktop-mac.svg similarity index 100% rename from src/assets/images/products/fluent_desktop-mac.svg rename to src/sections/Products/images/fluent_desktop-mac.svg diff --git a/src/sections/Products/images/layer5-products-overview-dark.svg b/src/sections/Products/images/layer5-products-overview-dark.svg new file mode 100644 index 000000000000..d00fb50c066a --- /dev/null +++ b/src/sections/Products/images/layer5-products-overview-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/sections/Products/images/layer5-products-overview.svg b/src/sections/Products/images/layer5-products-overview.svg new file mode 100644 index 000000000000..67cb2939d6cb --- /dev/null +++ b/src/sections/Products/images/layer5-products-overview.svg @@ -0,0 +1,801 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/sections/Products/index.js b/src/sections/Products/index.js new file mode 100644 index 000000000000..481031eb0e09 --- /dev/null +++ b/src/sections/Products/index.js @@ -0,0 +1,331 @@ +import React from "react"; +import { Container, Row, Col } from "../../reusecore/Layout"; +import ProductsWrapper from "./products.style"; +import FeatureDetails from "./collapsible-details"; +import Button from "../../reusecore/Button"; +import darkbgSvg from "./images/circle_dark.svg"; +import lightbgSvg from "./images/circle_light.svg"; +import product_hero_img from "./images/layer5-products-overview.svg"; +import product_hero_img_light from "./images/layer5-products-overview-dark.svg"; +import desktop from "./images/fluent_desktop-mac.svg"; +import codicon from "./images/codicon_extensions.svg"; +import mesheryLogo from "../../assets/images/meshery/icon-only/meshery-logo-light.svg"; +import meshmap from "../../assets/images/meshmap/icon-only/meshmap-icon.svg"; +import comingSoon from "./icons/coming-soon.webp"; +import { useStyledDarkMode } from "../../theme/app/useStyledDarkMode"; + +const options = [ + { + tier: "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 cloud native infrastructure changes across any number of Kubernetes clusters.", + }, + { + id: 2, + category: "Cluster Discovery", + description: + "Day 2 support for ongoing synchronization of Kubernetes configuration, workloads and cloud native infrastructure changes.", + }, + { + id: 3, + category: "Microservices Performance", + 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: [ + "Contact Sales", + "https://us15.list-manage.com/contact-form?u=6b50be5aea3dfe1fd4c041d80&form_id=d0ffe17c92d8014ede6b721aa16096e8", + ], + 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, + pricing_coming_soon: , + byline: "Everything in Team, plus:", + button: ["Coming Soon", ""], + summary: [ + { + id: 0, + category: "User-defined Roles", + description: "Customizable roles for specific permission assignments", + }, + { + id: 1, + category: "Authentication: LDAP", + description: + "Access Meshery using your existing accounts and centrally manage repository access.", + }, + { + id: 2, + category: "Authentication: SAML", + description: + "Use an identity provider to manage the identities of Meshery 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.", + }, + ], + }, +]; +const CardsData = [ + { + id: 1, + logo: meshmap, + title: "MeshMap", + icon: [codicon, desktop], + text: "GitOps-infused cloud native visual designer for Kubernetes and cloud native infrastucture.", + //as there is no soluton page. + url: "/cloud-native-management/meshmap" + }, + { + id: 2, + logo: mesheryLogo, + title: "Meshery", + icon: ["",desktop], + text: "As a self-service engineering platform, Meshery enables collaborative design and operation of cloud native infrastructure.", + url: "/cloud-native-management/meshery" + }, +]; + +const index = () => { + const { isDark } = useStyledDarkMode(); + return ( +
    + +
    +
    +
    +

    + Effortless Configuration & Complete Control of Your Cloud Native{" "} + + Infrastructure + + . +

    +

    + Unlock your enterprise's capabilities with our innovative cloud + native solutions. Crafted to tackle cloud challenges, our + offerings enhance processes for effectiveness, scalability, and + flexibility, elevating operations to new efficiencies.{" "} +

    +
    +
    +
    +
    + +
    +
    +
    + {/*

    All Products

    */} +
    + {CardsData.map((card) => ( + <> +
    +
    + +
    {card.title}
    +
    + {/*
    */} + + + {/*
    */} +
    +
    +
    {card.text}
    +
    + {/* */} + Learn more + {/* */} +
    + {/*
    +
    +
    + + ))} +
    +
    +
    + + +
    +

    + Unlock Your Potential with Free Tier Account! +

    +

    + Embrace the future of technology and embark on a transformative journey with our comprehensive range of products prepared to meet your needs. Elevate, Innovate, and conquer the cloud with us today! +

    +
    +
    +
    +

    + Plans For Every Team Size +

    +

    + Choose the ideal plan to propel your infrastructure goals. From startups to seasoned enterprises, we have a plan designed to fit your unique needs. +

    +
    + + + {options.map((x) => ( + +
    + {x.featured ? ( +
    Free Forever
    + ) : ( + "" + )} +
    + {x.pricing_coming_soon} +
    +

    {x.tier}

    +
    {x.byline}
    +
    + {x.summary.map((t) => ( +
    + +
    + ))} +
    + +
    + + ))} +
    +
    +
    +

    + Don’t Just Take Our Word For It, Experience It! +

    +
    +

    See how our products can transform your cloud experience today.

    +

    + Book to see it in action! Our experts are eager to guide you through the incredible possibilities that Layer5 offers. Take this opportunity to discover what more your infrastructure can do for you! +

    +
    +
    +
    +
    +
    + ); +}; + +export default index; \ No newline at end of file diff --git a/src/pages/products/pricing.style.js b/src/sections/Products/products.style.js similarity index 98% rename from src/pages/products/pricing.style.js rename to src/sections/Products/products.style.js index 3f8755e2e2cc..b9f31c25d88f 100644 --- a/src/pages/products/pricing.style.js +++ b/src/sections/Products/products.style.js @@ -1,6 +1,6 @@ import styled from "styled-components"; -const PricingWrapper = styled.section` +const ProductWrapper = styled.section` .freeCont { width: 100vw; overflow: hidden; @@ -336,7 +336,13 @@ const PricingWrapper = styled.section` font-size: 18px; } .product_hero_img { - margin:4rem; + margin:1rem; + > img { + width: 35rem; + height: 35rem; + position: relative; + + } } .heroImg path { filter: red; @@ -358,6 +364,9 @@ height: 100%; padding: 2rem; margin: 2rem; } +.logo { + max-height: 3rem; +} .cards { display: flex; flex-wrap: wrap; @@ -566,4 +575,4 @@ height: 100%; } `; -export default PricingWrapper; +export default ProductWrapper; From 449a447c555edb9f62ff1de5bc669a0911cf0738 Mon Sep 17 00:00:00 2001 From: Lee Calcote Date: Fri, 10 Nov 2023 21:37:22 -0600 Subject: [PATCH 5/5] demo Signed-off-by: Lee Calcote --- src/sections/Products/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sections/Products/index.js b/src/sections/Products/index.js index 481031eb0e09..70778b9a4cec 100644 --- a/src/sections/Products/index.js +++ b/src/sections/Products/index.js @@ -320,7 +320,7 @@ const index = () => { Book to see it in action! Our experts are eager to guide you through the incredible possibilities that Layer5 offers. Take this opportunity to discover what more your infrastructure can do for you!

-