diff --git a/.vscode/settings.json b/.vscode/settings.json index 5f21e24fb..278c412c5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,5 +4,5 @@ "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.codeActionsOnSave": { "source.fixAll.format": "never" - } + }, } diff --git a/next.config.js b/next.config.js index 77288aee4..4c398e613 100644 --- a/next.config.js +++ b/next.config.js @@ -1,4 +1,5 @@ const zestyConfig = require('./zesty.config.json'); +const { docsRedirects } = require('./src/config/redirects'); module.exports = { trailingSlash: true, @@ -14,4 +15,8 @@ module.exports = { ], }, swcMinify: true, + + async redirects() { + return [...docsRedirects]; + }, }; diff --git a/src/components/accounts/dashboard/ui/ZInstancesContainer.js b/src/components/accounts/dashboard/ui/ZInstancesContainer.js index 48f358685..63ec39ff3 100644 --- a/src/components/accounts/dashboard/ui/ZInstancesContainer.js +++ b/src/components/accounts/dashboard/ui/ZInstancesContainer.js @@ -12,11 +12,9 @@ const ZInstancesContainer = ({ }) => { const dayTime = () => { const hour = new Date().getHours(); - if (hour >= 5 && hour <= 12) return 'Good Morning, '; + if (hour >= 0 && hour <= 12) return 'Good Morning, '; else if (hour > 12 && hour <= 17) return 'Good Afternoon, '; - else if (hour > 17 && hour <= 21) return 'Good Evening, '; - else if ((hour > 21 && hour <= 23) || (hour >= 0 && hour <= 4)) - return 'Good Night, '; + else if (hour > 17 && hour <= 23) return 'Good Evening, '; }; return ( <> diff --git a/src/config/redirects.js b/src/config/redirects.js new file mode 100644 index 000000000..3fea22eee --- /dev/null +++ b/src/config/redirects.js @@ -0,0 +1,49 @@ +const docsRedirects = [ + { + source: '/docs/instances/api-reference/:path*', + destination: 'https://docs.zesty.io/reference/instances-api-reference', + permanent: true, + }, + { + source: '/docs/authentication/api-reference/:path*', + destination: 'https://docs.zesty.io/reference/authentication-api-reference', + permanent: true, + }, + { + source: '/docs/accounts/api-reference/:path*', + destination: 'https://docs.zesty.io/reference/accounts-api-reference', + permanent: true, + }, + { + source: '/docs/parsley/api-reference/:path*', + destination: 'https://docs.zesty.io/docs/parsley', + permanent: true, + }, + { + source: '/docs/media/api-reference/manager/:path*', + destination: 'https://docs.zesty.io/reference/media-manager-api-reference', + permanent: true, + }, + { + source: '/docs/media/api-reference/storage/:path*', + destination: 'https://docs.zesty.io/reference/media-storage-api-reference', + permanent: true, + }, + { + source: '/docs/media/api-reference/modify/:path*', + destination: 'https://docs.zesty.io/reference/media-modify-api-reference', + permanent: true, + }, + { + source: '/docs/media/api-reference/resolver/:path*', + destination: 'https://docs.zesty.io/reference/media-resolver-api-reference', + permanent: true, + }, + { + source: '/docs/media/api-reference/:path*', + destination: 'https://docs.zesty.io/reference/media-api-reference', + permanent: true, + }, +]; + +module.exports = { docsRedirects }; diff --git a/src/layouts/Main/Main.js b/src/layouts/Main/Main.js index adccd8689..a151737de 100644 --- a/src/layouts/Main/Main.js +++ b/src/layouts/Main/Main.js @@ -191,6 +191,7 @@ const Main = ({ isAuthenticated={isLoggedIn} userInfo={userInfo?.data} loading={loading} + cta={'Contact Sales'} /> )} diff --git a/src/lib/ZestyView.js b/src/lib/ZestyView.js index d2c07f1bb..9ea1a4bdb 100644 --- a/src/lib/ZestyView.js +++ b/src/lib/ZestyView.js @@ -46,7 +46,7 @@ export function ZestyView(props) { props.content.meta.layout?.json['layout:root:column:0']?.children, ) === '{}' ) { - return true; + return false; } // return only true if the layout is active and has components diff --git a/src/pages/docs/index.js b/src/pages/docs/index.js index 76b6c95f5..4dfa00c8c 100644 --- a/src/pages/docs/index.js +++ b/src/pages/docs/index.js @@ -165,19 +165,19 @@ const cardData = [ title: 'Instances API', description: 'A collection of available REST endpoints scoped to your unique instance.', - link: '/docs/instances/api-reference/', + link: 'https://docs.zesty.io/reference/instances-api-reference', }, { title: 'Authentication API', description: 'Auth API is used to authenticate users with Zesty.io, which returns a token that grants to access services like Instances API, Accounts API, and Media API. Auth was setup as a stand alone service so it can connect to many services in our infrastructure.', - link: '/docs/authentication/api-reference/', + link: 'https://docs.zesty.io/reference/authentication-api-reference', }, { title: 'Accounts API', description: 'API used to control management of users, roles, instances, and teams.', - link: '/docs/accounts/api-reference/', + link: 'https://docs.zesty.io/reference/accounts-api-reference', }, { title: 'Guides', diff --git a/src/pages/login/index.js b/src/pages/login/index.js index 365518cd2..62d5cab91 100644 --- a/src/pages/login/index.js +++ b/src/pages/login/index.js @@ -15,7 +15,15 @@ const site = 'https://www.zesty.io'; const Login = (props) => { const router = useRouter(); - const content = props.data.data[0].content; + const content = + props.data.data + .sort( + (a, b) => + new Date(b.content.start_date_and_time) - + new Date(a.content.start_date_and_time), + ) + .map((item) => item.content)[0] || null; + const loginContent = props.loginData.data[0].content; const ogimage = content?.feature_image?.data[0]?.url; diff --git a/src/revamp/ui/GetDemoSection/index.js b/src/revamp/ui/GetDemoSection/index.js index c2394a33d..98644fc75 100644 --- a/src/revamp/ui/GetDemoSection/index.js +++ b/src/revamp/ui/GetDemoSection/index.js @@ -19,11 +19,7 @@ import useGetDynamicData from './useGetDynamicData'; import { useRouter } from 'next/router'; import ZestyImage from 'blocks/Image/ZestyImage'; -const acorns = - 'https://storage.googleapis.com/assets.zesty.io/website/images/assets/demo/Acorns%20Logo.svg', - bjs = `https://storage.googleapis.com/assets.zesty.io/website/images/assets/demo/BJ's%20Logo.svg`, - rocketLeague = `https://storage.googleapis.com/assets.zesty.io/website/images/assets/demo/Horizontal_Text.svg`, - cornershop = `https://storage.googleapis.com/assets.zesty.io/website/images/assets/demo/Logo_de_Cornershop%201.svg`, +const rocketLeague = `https://storage.googleapis.com/assets.zesty.io/website/images/assets/demo/Horizontal_Text.svg`, phoenixSuns = `https://storage.googleapis.com/assets.zesty.io/website/images/assets/demo/Phoenix%20Suns.svg`, singlife = `https://storage.googleapis.com/assets.zesty.io/website/images/assets/demo/Singlife%20Logo.svg`, sony = `https://storage.googleapis.com/assets.zesty.io/website/images/assets/demo/Sony%20Logo.svg`, @@ -118,7 +114,7 @@ const GetDemoSection = ({ })} > @@ -138,13 +134,13 @@ const GetDemoSection = ({ p: { component: Typography, props: { - mt: 1, + mt: 2, component: 'p', variant: 'h6', whiteSpace: 'pre-line', color: 'grey.300', fontSize: '18px', - lineHeight: '28px', + lineHeight: '24px', }, }, }, @@ -282,6 +278,9 @@ const GetDemoSection = ({ )} + + + @@ -294,7 +293,7 @@ export default GetDemoSection; function Testimonial({ review }) { return ( - + {review?.review} @@ -320,9 +319,6 @@ function TrustLogos() { return ( - - - ); } @@ -369,14 +365,6 @@ export function Logos({ invert = false, alignLeft }) { height="32px" alt={generateAlt('Singlife')} /> - {generateAlt('Acorns')} {generateAlt('Wattpad')} - {generateAlt('Corner - {generateAlt('Bjs')} ); diff --git a/src/revamp/ui/HeroV2/index.js b/src/revamp/ui/HeroV2/index.js index 94e7b05fb..ba466aca5 100644 --- a/src/revamp/ui/HeroV2/index.js +++ b/src/revamp/ui/HeroV2/index.js @@ -9,8 +9,6 @@ import Logos from './Logos'; const media = 'https://kfg6bckb.media.zestyio.com/Zesty-io-2023-Homepage-Graphic.webp', - acorns = 'https://kfg6bckb.media.zestyio.com/acornsHero.svg', - bjs = 'https://kfg6bckb.media.zestyio.com/bjsHero.svg', phoenixSuns = 'https://kfg6bckb.media.zestyio.com/phoenixSunsHero.svg', rocketLeague = 'https://kfg6bckb.media.zestyio.com/rocketLeagueHero.svg', singlife = 'https://kfg6bckb.media.zestyio.com/singlifeHero.svg', @@ -38,20 +36,6 @@ const logos = [ title: 'Singlife', alt: generateAlt('Singlife'), }, - { - src: acorns, - width: 94, - height: 32, - title: 'Acorns', - alt: generateAlt('Acorns'), - }, - { - src: bjs, - width: 36.48, - height: 32, - title: 'Bjs', - alt: generateAlt('Bjs'), - }, { src: phoenixSuns, width: 31.59, diff --git a/src/views/zesty/Article.js b/src/views/zesty/Article.js index 40dcaf1e1..3c08d10c5 100644 --- a/src/views/zesty/Article.js +++ b/src/views/zesty/Article.js @@ -89,6 +89,26 @@ function Article({ content }) { // Define a regular expression pattern to match [_CTA_] let regexPattern = /\[CALL TO ACTION (\d+)\]/g; + useEffect(() => { + const removeSpansInHeadings = (html) => { + let tempDiv = document.createElement('div'); + tempDiv.innerHTML = html; + + let headings = tempDiv.querySelectorAll('h1, h2, h3, h4, h5, h6'); + + headings.forEach((heading) => { + let spans = heading.querySelectorAll('span'); + spans.forEach((span) => { + span.replaceWith(...span.childNodes); + }); + }); + + return tempDiv.innerHTML; + }; + + setNewContent(removeSpansInHeadings(newContent)); + }, [newContent]); + useEffect(() => { const validateWysiwyg = () => { if (newContent?.includes('Error hydrating')) { @@ -209,7 +229,10 @@ function Article({ content }) { ? `:is(span, p, h1, h2, h3, h4, h5, h6) :is(img) { width: auto; max-width: 100%; -}` + } + :h1 span, :h2 span { + color: black; + }` : ``; // Match CTA component sort order id from array to return its props diff --git a/src/views/zesty/Homepage/EnterpriseGrowth.js b/src/views/zesty/Homepage/EnterpriseGrowth.js index 59f20d63c..b35efe140 100644 --- a/src/views/zesty/Homepage/EnterpriseGrowth.js +++ b/src/views/zesty/Homepage/EnterpriseGrowth.js @@ -6,12 +6,12 @@ const Child = dynamic(() => import('revamp/ui/EnterpriseGrowth'), { loading: Placeholder, }); -const Index = () => { +const Index = (props) => { const { ref, inView } = useInView({ triggerOnce: true, threshold: 0, }); - return
{inView && }
; + return
{inView && }
; }; export default Index; diff --git a/src/views/zesty/Pricing.js b/src/views/zesty/Pricing.js index 13a65bfc4..83541f4b5 100644 --- a/src/views/zesty/Pricing.js +++ b/src/views/zesty/Pricing.js @@ -32,79 +32,130 @@ */ // Mui Imports -import React from 'react'; +import React, { useEffect, useState } from 'react'; +import { useTheme } from '@mui/material/styles'; +import Box from '@mui/material/Box'; // Components Import -import PricingHero from '../../blocks/pricing/revamp/PricingHero'; +import SimpleCardLogo from 'blocks/zesty/LogoGrid/SimpleCardLogo'; +// import Container from 'components/Container'; +import Container from 'blocks/container/Container'; +import PricingHero from '../../blocks/pricing/PricingHero/PricingHero'; +import SupportBanner from '../../blocks/pricing/SupportBanner/SupportBanner'; +import Faq from '../../blocks/pricing/Faq/Faq'; import useFetch from 'components/hooks/useFetch'; import FillerContent from 'components/globals/FillerContent'; -import { PricingTierCards } from 'blocks/pricing/revamp/PricingTierCards'; -import PricingTable from 'blocks/pricing/revamp/PricingTable'; -import AdditionalFeatures from 'blocks/pricing/revamp/AdditionalFeatures'; -import Testimonial from 'blocks/pricing/revamp/Testimonial'; -import FAQs from 'blocks/pricing/revamp/FAQs'; -import Brands from 'blocks/pricing/revamp/Brands'; - -const filterAdditionalFeatures = (features) => { - return features.filter((feature) => feature.classification[0] === "Add-on's"); -}; +function onlyUnique(value, index, self) { + return self.indexOf(value) === index; +} function Pricing({ content }) { - const { data: levers } = useFetch( - `/-/pricing-levers-revamp.json`, - content.zestyProductionMode, - ); - - const { data: leverClassification } = useFetch( - `/-/pricing-levers-classification.json`, - content.zestyProductionMode, - ); - + const theme = useTheme(); const heroProps = { title: content.title, subtitle: content.instance_definition, tiers: content.tiers.data, }; - const faqsProps = { - faqs: content?.related_faqs?.data, - title: content?.faqs_title, - subtitle: content?.faqs_subtitle, - }; - - const additionalFeaturesProps = { - features: filterAdditionalFeatures(levers), - title: content.additional_features_title, - }; + const [, setCategories] = useState([]); - const pricingTableProps = { - levers: levers, - classification: leverClassification, - tiers: content.pricing_tiers_revamp.data, - }; + const { data: pricingData } = useFetch( + `/-/pricing-levers.json`, + content.zestyProductionMode, + ); - const testimonialProps = { - testimonials: content.testimonials.data, - title: content.testimonial_title, - }; + useEffect(() => { + let leverCategories = []; + pricingData.forEach((item) => { + leverCategories.push(item.classification); + }); + leverCategories.filter(onlyUnique); + let cats = [...new Set(leverCategories)]; + setCategories(cats); + }, [pricingData]); return ( <> - - - - - - + + {/* {Pricing Comparison Table} */} + {/* + + + + {content?.comparison_heading} + + + + {active && ( + + {categories.map((cat, idx) => ( + + ))} + + )} + + */} + + + + + + {/* */} + {/* + + */} + + + + + ); }