From 2ce071771f4a6cb7f7d43ce870fda45cec75c574 Mon Sep 17 00:00:00 2001
From: diDroid
Date: Fri, 10 Nov 2023 14:16:33 +0530
Subject: [PATCH 01/64] top bar header changes for editor screen
---
.../Button/ButtonDark/stylesheet.scss | 8 ++-
.../components/SiteGenEditorHeader/index.js | 69 ++++++++++++++++++
.../step-navigation-center.js | 51 ++++++++++++++
.../step-navigation-left.js | 70 +++++++++++++++++++
.../step-navigation-right.js | 61 ++++++++++++++++
.../Header/components/SiteGenHeader/index.js | 29 +++++++-
.../LivePreview/BlockPreview/stylesheet.scss | 11 +++
src/OnboardingSPA/static/icons/equalizer.svg | 6 ++
.../steps/SiteGen/Editor/index.js | 10 ++-
src/constants.js | 1 +
10 files changed, 310 insertions(+), 6 deletions(-)
create mode 100644 src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js
create mode 100644 src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js
create mode 100644 src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js
create mode 100644 src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js
create mode 100644 src/OnboardingSPA/static/icons/equalizer.svg
diff --git a/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss b/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss
index 1f886eac0..b987e5f12 100644
--- a/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss
+++ b/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss
@@ -1,11 +1,15 @@
.nfd-onboarding-button {
-
&--dark {
background-color: var(--nfd-onboarding-navigation-back-background);
- width: 74px;
+ // width: 74px;
height: 36px;
color: var(--nfd-onboarding-primary);
border-radius: 8px;
padding: 0, 13px, 0 13px;
+
+ &:hover {
+ background-color: #ffffff;
+ color: #272d30;
+ }
}
}
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js
new file mode 100644
index 000000000..fec0682ce
--- /dev/null
+++ b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js
@@ -0,0 +1,69 @@
+import { memo } from '@wordpress/element';
+import AdminBar from '../../../AdminBar';
+import ProgressBar from '../../../ProgressBar';
+
+import { Fill } from '@wordpress/components';
+import {
+ HEADER_CENTER,
+ HEADER_SITEGEN,
+ HEADER_START,
+ HEADER_END,
+ HEADER_TOP,
+} from '../../../../../constants';
+
+import { useSelect } from '@wordpress/data';
+import { store as nfdOnboardingStore } from '../../../../store';
+import StepNavigationLeft from './step-navigation-left';
+import StepNavigationCenter from './step-navigation-center';
+import StepNavigationRight from './step-navigation-right';
+
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { findIndex } from 'lodash';
+
+/**
+ * Interface header rendered into header render prop in .
+ *
+ * @return {WPComponent} Header
+ */
+const SiteGenEditorHeader = () => {
+ const { isHeaderNavigationEnabled, currentStep, allSteps } = useSelect(
+ ( select ) => {
+ return {
+ currentStep: select( nfdOnboardingStore ).getCurrentStep(),
+ isHeaderNavigationEnabled:
+ select( nfdOnboardingStore ).isHeaderNavigationEnabled(),
+ allSteps: select( nfdOnboardingStore ).getAllSteps(),
+ };
+ }
+ );
+
+ const currentStepIndex = findIndex( allSteps, {
+ path: currentStep.path,
+ } );
+ const progress = ( currentStepIndex / allSteps.length ) * 100;
+
+ return (
+ <>
+
+ <>
+
+ { isHeaderNavigationEnabled && (
+
+ ) }
+ >
+
+
+ <>{ isHeaderNavigationEnabled && }>
+
+
+ <>{ isHeaderNavigationEnabled && }>
+
+
+ <>{ isHeaderNavigationEnabled && }>
+
+ { currentStep?.header && }
+ >
+ );
+};
+
+export default memo( SiteGenEditorHeader );
\ No newline at end of file
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js
new file mode 100644
index 000000000..8d6f66f17
--- /dev/null
+++ b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js
@@ -0,0 +1,51 @@
+import { useSelect } from '@wordpress/data';
+import { Icon, chevronDown } from '@wordpress/icons';
+import { __ } from '@wordpress/i18n';
+
+import { store as nfdOnboardingStore } from '../../../../store';
+import ButtonDark from '../../../Button/ButtonDark';
+import {ReactComponent as Wishlist} from '../../../../static/icons/site-features/wishlist.svg'
+
+/**
+ * Back step Navigation button.
+ *
+ * @param {*} param0
+ *
+ * @return {WPComponent} Back Component
+ */
+const VersionDropDown = ( ) => {
+ const version = () => {
+ };
+ return (
+
+
+ { __( 'Version 1', 'wp-module-onboarding' ) }
+
+
+ );
+};
+
+/**
+ * Step buttons presented in Header.
+ *
+ * @return {WPComponent} StepNavigation Component
+ */
+const StepNavigationCenter = () => {
+ const { previousStep, showErrorDialog } = useSelect( ( select ) => {
+ return {
+ previousStep: select( nfdOnboardingStore ).getPreviousStep(),
+ showErrorDialog: select( nfdOnboardingStore ).getShowErrorDialog(),
+ };
+ }, [] );
+
+ return (
+
+
+
+ );
+};
+
+export default StepNavigationCenter;
\ No newline at end of file
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js
new file mode 100644
index 000000000..ccb864f52
--- /dev/null
+++ b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js
@@ -0,0 +1,70 @@
+import { useSelect, useDispatch } from '@wordpress/data';
+import { useNavigate } from 'react-router-dom';
+import { Icon, chevronLeft, reusableBlock } from '@wordpress/icons';
+import { __ } from '@wordpress/i18n';
+
+import { store as nfdOnboardingStore } from '../../../../store';
+import ButtonDark from '../../../Button/ButtonDark';
+
+/**
+ * Back step Navigation button.
+ *
+ * @param {*} param0
+ *
+ * @return {WPComponent} Back Component
+ */
+const Back = ( { path, showErrorDialog } ) => {
+ const { setNavErrorContinuePath } = useDispatch( nfdOnboardingStore );
+ const navigate = useNavigate();
+ const navigateBack = () => {
+ if ( showErrorDialog !== false ) {
+ setNavErrorContinuePath( path );
+ } else {
+ navigate( path, { state: { origin: 'header' } } );
+ }
+ };
+ return (
+
+
+ { __( 'Back', 'wp-module-onboarding' ) }
+
+ );
+};
+
+const Regenerate = () => {
+ const regenerate = () => {
+ alert('regenerate');
+ };
+ return (
+
+
+ { __( 'Regenerate', 'wp-module-onboarding' ) }
+
+ );
+};
+
+/**
+ * Step buttons presented in Header.
+ *
+ * @return {WPComponent} StepNavigation Component
+ */
+const StepNavigationLeft = () => {
+ const { previousStep, showErrorDialog } = useSelect( ( select ) => {
+ return {
+ previousStep: select( nfdOnboardingStore ).getPreviousStep(),
+ showErrorDialog: select( nfdOnboardingStore ).getShowErrorDialog(),
+ };
+ }, [] );
+
+ return (
+
+
+
+
+ );
+};
+
+export default StepNavigationLeft;
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js
new file mode 100644
index 000000000..62eee3034
--- /dev/null
+++ b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js
@@ -0,0 +1,61 @@
+import { useSelect } from '@wordpress/data';
+import { Icon, chevronRight, settings } from '@wordpress/icons';
+import { __ } from '@wordpress/i18n';
+
+import { store as nfdOnboardingStore } from '../../../../store';
+import ButtonDark from '../../../Button/ButtonDark';
+// import {ReactComponent as Equalizer} from '../../../../static/icons/equalizer.svg'
+
+/**
+ * Back step Navigation button.
+ *
+ * @param {*} param0
+ *
+ * @return {WPComponent} Back Component
+ */
+const Customize = ( ) => {
+ const customize = () => {
+ alert('customize');
+ };
+ return (
+
+
+ { __( 'Customize', 'wp-module-onboarding' ) }
+
+ );
+};
+
+const Save = () => {
+ const save = () => {
+ alert('save');
+ };
+ return (
+
+ { __( 'Save & Continue', 'wp-module-onboarding' ) }
+
+
+ );
+};
+
+/**
+ * Step buttons presented in Header.
+ *
+ * @return {WPComponent} StepNavigation Component
+ */
+const StepNavigationRight = () => {
+ const { previousStep, showErrorDialog } = useSelect( ( select ) => {
+ return {
+ previousStep: select( nfdOnboardingStore ).getPreviousStep(),
+ showErrorDialog: select( nfdOnboardingStore ).getShowErrorDialog(),
+ };
+ }, [] );
+
+ return (
+
+
+
+
+ );
+};
+
+export default StepNavigationRight;
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
index 2f0027111..4d2d8f44b 100644
--- a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
+++ b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
@@ -7,11 +7,16 @@ import {
HEADER_SITEGEN,
HEADER_START,
HEADER_TOP,
+ HEADER_CENTER,
+ HEADER_END
} from '../../../../../constants';
import { useSelect } from '@wordpress/data';
import { store as nfdOnboardingStore } from '../../../../store';
import StepNavigation from './step-navigation';
+import StepNavigationLeft from '../SiteGenEditorHeader/step-navigation-left';
+import StepNavigationCenter from '../SiteGenEditorHeader/step-navigation-center';
+import StepNavigationRight from '../SiteGenEditorHeader/step-navigation-right';
// eslint-disable-next-line import/no-extraneous-dependencies
import { findIndex } from 'lodash';
@@ -38,6 +43,9 @@ const SiteGenHeader = () => {
} );
const progress = ( currentStepIndex / allSteps.length ) * 100;
+ const isEditor = currentStep.path === '/sitegen/step/editor';
+ console.log(isEditor);
+
return (
<>
@@ -48,9 +56,24 @@ const SiteGenHeader = () => {
) }
>
-
- <>{ isHeaderNavigationEnabled && }>
-
+ { !isEditor ? (
+
+ <>{ isHeaderNavigationEnabled && }>
+
+ ) : (
+ <>
+
+ <>{ isHeaderNavigationEnabled && }>
+
+
+ <>{ isHeaderNavigationEnabled && }>
+
+
+ <>{ isHeaderNavigationEnabled && }>
+
+ >
+ )}
+
{ currentStep?.header && }
>
);
diff --git a/src/OnboardingSPA/components/LivePreview/BlockPreview/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/BlockPreview/stylesheet.scss
index 1ee2b924e..d89588a41 100644
--- a/src/OnboardingSPA/components/LivePreview/BlockPreview/stylesheet.scss
+++ b/src/OnboardingSPA/components/LivePreview/BlockPreview/stylesheet.scss
@@ -27,6 +27,17 @@ $main-color-grey-other: #e2e2e2;
}
}
+ &-full {
+ width: 100%;
+ min-height: 90vh;
+ overflow: hidden;
+ position: relative;
+ align-items: center;
+ border: 1px solid #e3dfdf;
+ border-top: 0;
+ margin-bottom: 30px;
+ }
+
&--is-skeleton {
z-index: 1;
width: 100%;
diff --git a/src/OnboardingSPA/static/icons/equalizer.svg b/src/OnboardingSPA/static/icons/equalizer.svg
new file mode 100644
index 000000000..171f55051
--- /dev/null
+++ b/src/OnboardingSPA/static/icons/equalizer.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/index.js
index 05fc7fee6..ef558ab32 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/index.js
@@ -7,6 +7,9 @@ import { store as nfdOnboardingStore } from '../../../store';
import { HEADER_SITEGEN } from '../../../../constants';
import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
+import { LivePreview } from '../../../components/LivePreview';
+
+const pattern = "\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We're meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the \"Settings\" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency's Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n";
const StepSiteGenEditor = () => {
const {
@@ -27,7 +30,12 @@ const StepSiteGenEditor = () => {
isCentered
className="nfd-onboarding-step--site-gen__editor"
>
-
+ {/* */}
+
);
};
diff --git a/src/constants.js b/src/constants.js
index 238d3911b..0adb76d2e 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -40,6 +40,7 @@ export const SIDEBAR_MENU_SLOTFILL_PREFIX = 'HeaderMenu';
export const SIDEBAR_LEARN_MORE = 'LearnMore';
export const HEADER_SITEBUILD = 'HeaderSiteBuild';
export const HEADER_SITEGEN = 'HeaderSiteGen';
+export const HEADER_SITEGEN_EDITOR = 'HeaderSiteGenEditor';
export const HEADER_TOP = 'HeaderTop';
export const HEADER_START = 'HeaderStart';
export const HEADER_CENTER = 'HeaderCenter';
From 4308945fb043a773535b0eadedd4d41183fe7c62 Mon Sep 17 00:00:00 2001
From: diDroid
Date: Fri, 10 Nov 2023 21:03:51 +0530
Subject: [PATCH 02/64] sitegenheader changes moved to step
---
.../components/SiteGenEditorHeader/index.js | 69 -------------------
.../Header/components/SiteGenHeader/index.js | 34 +++------
.../Editor/SiteGenEditorHeader/index.js | 35 ++++++++++
.../step-navigation-center.js | 2 +-
.../step-navigation-left.js | 2 +-
.../step-navigation-right.js | 2 +-
.../steps/SiteGen/Editor/step.js | 2 +
7 files changed, 48 insertions(+), 98 deletions(-)
delete mode 100644 src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js
create mode 100644 src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js
rename src/OnboardingSPA/{components/Header/components => steps/SiteGen/Editor}/SiteGenEditorHeader/step-navigation-center.js (94%)
rename src/OnboardingSPA/{components/Header/components => steps/SiteGen/Editor}/SiteGenEditorHeader/step-navigation-left.js (96%)
rename src/OnboardingSPA/{components/Header/components => steps/SiteGen/Editor}/SiteGenEditorHeader/step-navigation-right.js (95%)
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js
deleted file mode 100644
index fec0682ce..000000000
--- a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/index.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import { memo } from '@wordpress/element';
-import AdminBar from '../../../AdminBar';
-import ProgressBar from '../../../ProgressBar';
-
-import { Fill } from '@wordpress/components';
-import {
- HEADER_CENTER,
- HEADER_SITEGEN,
- HEADER_START,
- HEADER_END,
- HEADER_TOP,
-} from '../../../../../constants';
-
-import { useSelect } from '@wordpress/data';
-import { store as nfdOnboardingStore } from '../../../../store';
-import StepNavigationLeft from './step-navigation-left';
-import StepNavigationCenter from './step-navigation-center';
-import StepNavigationRight from './step-navigation-right';
-
-// eslint-disable-next-line import/no-extraneous-dependencies
-import { findIndex } from 'lodash';
-
-/**
- * Interface header rendered into header render prop in .
- *
- * @return {WPComponent} Header
- */
-const SiteGenEditorHeader = () => {
- const { isHeaderNavigationEnabled, currentStep, allSteps } = useSelect(
- ( select ) => {
- return {
- currentStep: select( nfdOnboardingStore ).getCurrentStep(),
- isHeaderNavigationEnabled:
- select( nfdOnboardingStore ).isHeaderNavigationEnabled(),
- allSteps: select( nfdOnboardingStore ).getAllSteps(),
- };
- }
- );
-
- const currentStepIndex = findIndex( allSteps, {
- path: currentStep.path,
- } );
- const progress = ( currentStepIndex / allSteps.length ) * 100;
-
- return (
- <>
-
- <>
-
- { isHeaderNavigationEnabled && (
-
- ) }
- >
-
-
- <>{ isHeaderNavigationEnabled && }>
-
-
- <>{ isHeaderNavigationEnabled && }>
-
-
- <>{ isHeaderNavigationEnabled && }>
-
- { currentStep?.header && }
- >
- );
-};
-
-export default memo( SiteGenEditorHeader );
\ No newline at end of file
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
index 4d2d8f44b..0e80a320e 100644
--- a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
+++ b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
@@ -7,16 +7,11 @@ import {
HEADER_SITEGEN,
HEADER_START,
HEADER_TOP,
- HEADER_CENTER,
- HEADER_END
} from '../../../../../constants';
import { useSelect } from '@wordpress/data';
import { store as nfdOnboardingStore } from '../../../../store';
import StepNavigation from './step-navigation';
-import StepNavigationLeft from '../SiteGenEditorHeader/step-navigation-left';
-import StepNavigationCenter from '../SiteGenEditorHeader/step-navigation-center';
-import StepNavigationRight from '../SiteGenEditorHeader/step-navigation-right';
// eslint-disable-next-line import/no-extraneous-dependencies
import { findIndex } from 'lodash';
@@ -42,9 +37,6 @@ const SiteGenHeader = () => {
path: currentStep.path,
} );
const progress = ( currentStepIndex / allSteps.length ) * 100;
-
- const isEditor = currentStep.path === '/sitegen/step/editor';
- console.log(isEditor);
return (
<>
@@ -56,25 +48,15 @@ const SiteGenHeader = () => {
) }
>
- { !isEditor ? (
-
- <>{ isHeaderNavigationEnabled && }>
-
- ) : (
- <>
-
- <>{ isHeaderNavigationEnabled && }>
-
-
- <>{ isHeaderNavigationEnabled && }>
-
-
- <>{ isHeaderNavigationEnabled && }>
-
- >
- )}
- { currentStep?.header && }
+ { currentStep?.header
+ ? isHeaderNavigationEnabled && ( )
+ : isHeaderNavigationEnabled && (
+
+
+
+ )
+ }
>
);
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js
new file mode 100644
index 000000000..05b772015
--- /dev/null
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js
@@ -0,0 +1,35 @@
+import { memo } from '@wordpress/element';
+import { Fill } from '@wordpress/components';
+import {
+ HEADER_CENTER,
+ HEADER_SITEGEN,
+ HEADER_START,
+ HEADER_END,
+} from '../../../../../constants';
+
+import StepNavigationLeft from './step-navigation-left';
+import StepNavigationCenter from './step-navigation-center';
+import StepNavigationRight from './step-navigation-right';
+
+/**
+ * Interface header rendered into header render prop in .
+ *
+ * @return {WPComponent} Header
+ */
+const SiteGenEditorHeader = () => {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+
+export default memo( SiteGenEditorHeader );
\ No newline at end of file
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-center.js
similarity index 94%
rename from src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js
rename to src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-center.js
index 8d6f66f17..275f1cb42 100644
--- a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-center.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-center.js
@@ -3,7 +3,7 @@ import { Icon, chevronDown } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
import { store as nfdOnboardingStore } from '../../../../store';
-import ButtonDark from '../../../Button/ButtonDark';
+import ButtonDark from '../../../../components/Button/ButtonDark';
import {ReactComponent as Wishlist} from '../../../../static/icons/site-features/wishlist.svg'
/**
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-left.js
similarity index 96%
rename from src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js
rename to src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-left.js
index ccb864f52..51b29e292 100644
--- a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-left.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-left.js
@@ -4,7 +4,7 @@ import { Icon, chevronLeft, reusableBlock } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
import { store as nfdOnboardingStore } from '../../../../store';
-import ButtonDark from '../../../Button/ButtonDark';
+import ButtonDark from '../../../../components/Button/ButtonDark';
/**
* Back step Navigation button.
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-right.js
similarity index 95%
rename from src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js
rename to src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-right.js
index 62eee3034..eca41012c 100644
--- a/src/OnboardingSPA/components/Header/components/SiteGenEditorHeader/step-navigation-right.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-right.js
@@ -3,7 +3,7 @@ import { Icon, chevronRight, settings } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
import { store as nfdOnboardingStore } from '../../../../store';
-import ButtonDark from '../../../Button/ButtonDark';
+import ButtonDark from '../../../../components/Button/ButtonDark';
// import {ReactComponent as Equalizer} from '../../../../static/icons/equalizer.svg'
/**
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/step.js b/src/OnboardingSPA/steps/SiteGen/Editor/step.js
index ab25039d9..255034dd2 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/step.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/step.js
@@ -2,6 +2,7 @@ import { copy } from '@wordpress/icons';
import { lazy } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import { Step } from '../../../data/models/Step';
+import SiteGenEditorHeader from './SiteGenEditorHeader';
const StepSiteGenEditor = lazy( () => import( './index' ) );
@@ -10,6 +11,7 @@ export const stepSiteGenEditor = new Step( {
title: __( 'Page Layouts', 'wp-module-onboarding' ),
Component: StepSiteGenEditor,
icon: copy,
+ header: SiteGenEditorHeader,
sidebars: {
LearnMore: {
SidebarComponents: [],
From 2ae37690d6c454da9eb6d20872c0917aa1e113e3 Mon Sep 17 00:00:00 2001
From: diDroid
Date: Fri, 10 Nov 2023 21:07:09 +0530
Subject: [PATCH 03/64] sitegenheader changes moved to step
---
.../SiteGen/Editor/{SiteGenEditorHeader => Header}/index.js | 4 ++--
.../{SiteGenEditorHeader => Header}/step-navigation-center.js | 0
.../{SiteGenEditorHeader => Header}/step-navigation-left.js | 0
.../{SiteGenEditorHeader => Header}/step-navigation-right.js | 0
src/OnboardingSPA/steps/SiteGen/Editor/step.js | 4 ++--
5 files changed, 4 insertions(+), 4 deletions(-)
rename src/OnboardingSPA/steps/SiteGen/Editor/{SiteGenEditorHeader => Header}/index.js (91%)
rename src/OnboardingSPA/steps/SiteGen/Editor/{SiteGenEditorHeader => Header}/step-navigation-center.js (100%)
rename src/OnboardingSPA/steps/SiteGen/Editor/{SiteGenEditorHeader => Header}/step-navigation-left.js (100%)
rename src/OnboardingSPA/steps/SiteGen/Editor/{SiteGenEditorHeader => Header}/step-navigation-right.js (100%)
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/index.js
similarity index 91%
rename from src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js
rename to src/OnboardingSPA/steps/SiteGen/Editor/Header/index.js
index 05b772015..9cb35873e 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/index.js
@@ -16,7 +16,7 @@ import StepNavigationRight from './step-navigation-right';
*
* @return {WPComponent} Header
*/
-const SiteGenEditorHeader = () => {
+const Header = () => {
return (
<>
@@ -32,4 +32,4 @@ const SiteGenEditorHeader = () => {
);
};
-export default memo( SiteGenEditorHeader );
\ No newline at end of file
+export default memo( Header );
\ No newline at end of file
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
similarity index 100%
rename from src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-center.js
rename to src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-left.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
similarity index 100%
rename from src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-left.js
rename to src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-right.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
similarity index 100%
rename from src/OnboardingSPA/steps/SiteGen/Editor/SiteGenEditorHeader/step-navigation-right.js
rename to src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/step.js b/src/OnboardingSPA/steps/SiteGen/Editor/step.js
index 255034dd2..dc1524253 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/step.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/step.js
@@ -2,7 +2,7 @@ import { copy } from '@wordpress/icons';
import { lazy } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import { Step } from '../../../data/models/Step';
-import SiteGenEditorHeader from './SiteGenEditorHeader';
+import Header from './Header';
const StepSiteGenEditor = lazy( () => import( './index' ) );
@@ -11,7 +11,7 @@ export const stepSiteGenEditor = new Step( {
title: __( 'Page Layouts', 'wp-module-onboarding' ),
Component: StepSiteGenEditor,
icon: copy,
- header: SiteGenEditorHeader,
+ header: Header,
sidebars: {
LearnMore: {
SidebarComponents: [],
From 749584cc0e5db1767a045b395c5b7c94e7a81442 Mon Sep 17 00:00:00 2001
From: diDroid
Date: Sun, 12 Nov 2023 16:31:37 +0530
Subject: [PATCH 04/64] step editor drop down wip
---
.../components/Header/stylesheet.scss | 17 ++++
.../SiteGen/Editor/Header/TextInput/index.js | 0
.../Editor/Header/step-navigation-center.js | 79 +++++++++++++------
3 files changed, 72 insertions(+), 24 deletions(-)
create mode 100644 src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js
diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss
index 0d0b9da26..ef1f35d65 100644
--- a/src/OnboardingSPA/components/Header/stylesheet.scss
+++ b/src/OnboardingSPA/components/Header/stylesheet.scss
@@ -48,6 +48,23 @@
svg {
margin-right: $grid-unit-10;
}
+
+ &-dropdown-item {
+ padding: 2px 2px;
+ text-decoration: none;
+ display: block;
+ width: 80px !important;
+ text-align: center;
+ }
+
+ &-input {
+ max-width: 80px;
+ text-align: center;
+ border: none !important;
+ color: var(--nfd-onboarding-header-contrast) !important;
+ background-color: var(--nfd-onboarding-header-base) !important;
+
+ }
}
&__end {
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
index 275f1cb42..103874ad7 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
@@ -1,49 +1,80 @@
-import { useSelect } from '@wordpress/data';
import { Icon, chevronDown } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
-import { store as nfdOnboardingStore } from '../../../../store';
import ButtonDark from '../../../../components/Button/ButtonDark';
import {ReactComponent as Wishlist} from '../../../../static/icons/site-features/wishlist.svg'
+import { Button, Dropdown } from '@wordpress/components';
+import { useState } from '@wordpress/element';
+
+const onTextChange = ( e ) => {
+ e.preventDefault();
+ setCustomerInput( e.target.value );
+};
+
+
+const TextInput = ( { customerInput, isDisabled } ) => {
+ return (
+ onTextChange( e ) }
+ />
+ );
+};
/**
- * Back step Navigation button.
- *
- * @param {*} param0
+ * Version step Navigation button.
*
- * @return {WPComponent} Back Component
+ * @return {WPComponent} VersionButton Component
*/
const VersionDropDown = ( ) => {
- const version = () => {
- };
return (
-
-
- { __( 'Version 1', 'wp-module-onboarding' ) }
-
-
+
+ Rename
+ View All
+
+ );
+};
+
+/**
+ * Version step Navigation button.
+ *
+ * @return {WPComponent} VersionButton Component
+ */
+const VersionButton = ( {isInputDisabled} ) => {
+ return (
+ (
+
+
+ {/* { __( 'Version 1', 'wp-module-onboarding' ) } */}
+
+
+
+ ) }
+ renderContent={ () =>
+ }
+ />
);
};
/**
- * Step buttons presented in Header.
+ * Centre Step buttons presented in Header.
*
* @return {WPComponent} StepNavigation Component
*/
const StepNavigationCenter = () => {
- const { previousStep, showErrorDialog } = useSelect( ( select ) => {
- return {
- previousStep: select( nfdOnboardingStore ).getPreviousStep(),
- showErrorDialog: select( nfdOnboardingStore ).getShowErrorDialog(),
- };
- }, [] );
+ const [isInputDisabled, setIsInputDisabled] = useState(true);
return (
-
+
);
};
From 8fb7dc063107fc93b2db4a01fef3e3741f78c853 Mon Sep 17 00:00:00 2001
From: diDroid
Date: Mon, 13 Nov 2023 17:03:20 +0530
Subject: [PATCH 05/64] changes for live preview wip
---
.../steps/SiteGen/Preview/index.js | 46 ++++++++++++++++--
.../steps/SiteGen/Preview/stylesheet.scss | 48 +++++++++++++++++++
src/OnboardingSPA/styles/app.scss | 1 +
3 files changed, 92 insertions(+), 3 deletions(-)
create mode 100644 src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index f16ba778e..7c2dad3f4 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -6,7 +6,10 @@ import { useDispatch } from '@wordpress/data';
import { store as nfdOnboardingStore } from '../../../store';
import { HEADER_SITEGEN } from '../../../../constants';
-import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
+import { LivePreview, LivePreviewSelectableCard } from '../../../components/LivePreview';
+// import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
+
+const pattern = "\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We're meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the \"Settings\" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency's Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n";
const SiteGenPreview = () => {
const {
@@ -24,10 +27,47 @@ const SiteGenPreview = () => {
} );
return (
-
+ {/* */}
+
+
+
+ {/* { content.heading } */}
+ Presto, here are 3 versions
+
+
+
+
+ {/* { content.subHeading } */}
+ We've created 3 unique website designs for you to start with, preview, click around or start over.
+
+
+ {/*
*/}
+
+
);
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
new file mode 100644
index 000000000..2ca1ab13f
--- /dev/null
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
@@ -0,0 +1,48 @@
+.nfd-onboarding-step--site-gen__preview__container {
+ display: flex;
+ justify-content: center;
+ flex-wrap: wrap;
+ // width: 1300px;
+ // flex-direction: row;
+ // align-items: center;
+
+ &__heading {
+ display: flex;
+ flex-direction: row;
+ width: 100%;
+ padding: 0;
+ justify-content: center;
+ align-items: center;
+
+ &__text {
+ color: var(--nfd-onboarding-primary);
+ font-size: clamp(0.875rem, 0.6818rem + 0.9659vw, 3rem);
+ margin-left: 15px;
+ white-space: normal;
+ line-height: 1;
+ }
+ }
+
+ &__sub-heading {
+ width: 100%;
+ margin: 10px;
+ padding: 0;
+
+ &__text {
+ text-align: center;
+ color: var(--nfd-onboarding-primary);
+ font-size: clamp(0.875rem, 0.7727rem + 0.5114vw, 2rem);
+ margin: 0;
+ padding: 0;
+ }
+ }
+
+ &__options {
+ flex: 1;
+ min-width: 310px;
+ height: 143px;
+ text-align: center;
+ margin: 10px;
+ border-radius: 16px;
+ }
+}
\ No newline at end of file
diff --git a/src/OnboardingSPA/styles/app.scss b/src/OnboardingSPA/styles/app.scss
index 992bea2af..2d747da94 100644
--- a/src/OnboardingSPA/styles/app.scss
+++ b/src/OnboardingSPA/styles/app.scss
@@ -62,6 +62,7 @@
@import "../steps/DesignHeaderMenu/stylesheet";
@import "../steps/SiteFeatures/stylesheet";
@import "../steps/TheFork/stylesheet";
+@import "../steps/SiteGen/Preview/stylesheet";
.nfd-onboarding-container {
display: flex;
From ff1f10cbb6b2549258e56aae60116296118a017e Mon Sep 17 00:00:00 2001
From: diDroid
Date: Tue, 14 Nov 2023 14:38:45 +0530
Subject: [PATCH 06/64] screen design previws wip
---
.../SiteGenPreviewSelectableCard/index.js | 75 ++++++++++++++++++
.../stylesheet.scss | 71 +++++++++++++++++
.../components/LivePreview/index.js | 1 +
.../components/LivePreview/stylesheet.scss | 1 +
.../steps/SiteGen/Preview/contents.js | 16 ++++
.../steps/SiteGen/Preview/index.js | 78 ++++++++++++-------
.../steps/SiteGen/Preview/stylesheet.scss | 5 +-
7 files changed, 216 insertions(+), 31 deletions(-)
create mode 100644 src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
create mode 100644 src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
create mode 100644 src/OnboardingSPA/steps/SiteGen/Preview/contents.js
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
new file mode 100644
index 000000000..f1c841b5e
--- /dev/null
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -0,0 +1,75 @@
+import { search, Icon, reusableBlock } from '@wordpress/icons';
+import { useState } from '@wordpress/element';
+
+import { LivePreview } from '..';
+import ButtonDark from '../../../components/Button/ButtonDark';
+import {ReactComponent as Wishlist} from '../../../static/icons/site-features/wishlist.svg'
+import { __ } from '@wordpress/i18n';
+
+const SiteGenPreviewSelectableCard = ( {
+ className = 'live-preview-sitegen--selectable-card',
+ blockGrammer,
+ viewportWidth = 1500,
+ styling = 'large',
+ previewSettings,
+ overlay = false,
+ onClick = false,
+ onWishlistClick = false,
+ onRegenerateClick = false,
+ skeletonLoadingTime = 2500,
+} ) => {
+ const [ loadingParent, setIsLoadingParent ] = useState( true );
+
+ return (
+ {
+ if ( ! loadingParent && typeof onClick === 'function' ) {
+ onClick();
+ }
+ } }
+ onKeyDown={ () => {
+ if ( ! loadingParent && typeof onClick === 'function' ) {
+ onClick();
+ }
+ } }
+ >
+
+
+ { overlay && ! loadingParent && (
+
+
+
+ ) }
+
+
+
+ { __( 'Version 1', 'wp-module-onboarding' ) }
+
+
+
+ { __( 'Regenerate', 'wp-module-onboarding' ) }
+
+
+
+
+
+ );
+};
+
+export default SiteGenPreviewSelectableCard;
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
new file mode 100644
index 000000000..496ce7401
--- /dev/null
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
@@ -0,0 +1,71 @@
+
+.live-preview-sitegen--selectable-card {
+ flex: 1;
+ width: 100%;
+ margin: 24px;
+ display: flex;
+ overflow: hidden;
+ align-items: center;
+ flex-direction: column;
+ justify-content: center;
+
+ &__live-preview-container {
+ position: relative;
+ width: 90%;
+ overflow: hidden;
+ align-items: center;
+ border-radius: 8px;
+
+ .live-preview {
+
+ &__container {
+
+ &-custom {
+ width: 100%;
+ overflow: hidden;
+ height: 300px;
+ }
+ }
+ }
+
+ &__overlay {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ height: 100%;
+ z-index: 2;
+ width: 100%;
+ opacity: 0;
+ transition: 0.5s ease;
+ background-color:
+ rgb(var(--wp-admin-theme-color-darker-10--rgb))
+
+ &__icon{
+ fill: var(--nfd-onboarding-white);
+ font-size: 20px;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ -webkit-transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ text-align: center;
+ }
+
+ &:hover {
+ cursor: pointer;
+ opacity: 0.74;
+ }
+ }
+
+ &-buttons {
+ padding-top: 20px;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ height: 40px;
+ }
+ }
+}
diff --git a/src/OnboardingSPA/components/LivePreview/index.js b/src/OnboardingSPA/components/LivePreview/index.js
index e7cebd4a1..bba7e3cda 100644
--- a/src/OnboardingSPA/components/LivePreview/index.js
+++ b/src/OnboardingSPA/components/LivePreview/index.js
@@ -3,3 +3,4 @@ export { default as LivePreviewSkeleton } from './LivePreviewSkeleton';
export { default as LivePreviewSelectableCard } from './SelectableCard';
export { default as LivePreviewSelectableCardWithInfo } from './SelectableCardWithInfo';
export { default as GlobalStylesProvider } from './GlobalStylesProvider';
+export { default as SiteGenLivePreview } from './SiteGenPreviewSelectableCard';
diff --git a/src/OnboardingSPA/components/LivePreview/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/stylesheet.scss
index f1a74565d..8e43ab671 100644
--- a/src/OnboardingSPA/components/LivePreview/stylesheet.scss
+++ b/src/OnboardingSPA/components/LivePreview/stylesheet.scss
@@ -1,3 +1,4 @@
@import "./BlockPreview/stylesheet";
@import "./SelectableCard/stylesheet";
@import "./SelectableCardWithInfo/stylesheet";
+@import "./SiteGenPreviewSelectableCard/stylesheet";
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/contents.js b/src/OnboardingSPA/steps/SiteGen/Preview/contents.js
new file mode 100644
index 000000000..c2ba1447a
--- /dev/null
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/contents.js
@@ -0,0 +1,16 @@
+import { __ } from '@wordpress/i18n';
+
+const getContents = () => {
+ return {
+ heading: __(
+ 'Presto, here are 3 versions',
+ 'wp-module-onboarding'
+ ),
+ subheading: __(
+ "We've created 3 unique website designs for you to start with, preview, click around or start over.",
+ 'wp-module-onboarding'
+ ),
+ };
+};
+
+export default getContents;
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 7c2dad3f4..d00d7b85a 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -1,13 +1,16 @@
import CommonLayout from '../../../components/Layouts/Common';
import { useEffect } from '@wordpress/element';
+import { useNavigate } from 'react-router-dom';
+import { useSelect } from '@wordpress/data';
import { useDispatch } from '@wordpress/data';
import { store as nfdOnboardingStore } from '../../../store';
import { HEADER_SITEGEN } from '../../../../constants';
-import { LivePreview, LivePreviewSelectableCard } from '../../../components/LivePreview';
-// import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
+import { SiteGenLivePreview, LivePreviewSelectableCard } from '../../../components/LivePreview';
+import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
+import getContents from './contents';
const pattern = "\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We're meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the \"Settings\" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency's Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n";
@@ -25,6 +28,45 @@ const SiteGenPreview = () => {
setHeaderActiveView( HEADER_SITEGEN );
setDrawerActiveView( false );
} );
+
+ const onWishlistClick = () => {
+ alert('wishlist');
+ };
+
+ const onRegenerateClick = () => {
+ alert('regenerate');
+ };
+
+ const buildPreviews = () => {
+ const designs = [pattern, pattern, pattern];
+
+ const navigate = useNavigate();
+ const { nextStep } = useSelect( ( select ) => {
+ return {
+ nextStep: select( nfdOnboardingStore ).getNextStep(),
+ };
+ } );
+
+ return designs.map( ( design, idx ) => {
+ return (
+
+ {
+ navigate( nextStep.path );
+ } }
+ onWishlistClick = { onWishlistClick }
+ onRegenerateClick = { onRegenerateClick }
+ />
+
+ );
+ } );
+ };
+
+ const content = getContents();
+
return (
{
- {/* { content.heading } */}
- Presto, here are 3 versions
+ { content.heading }
- {/* { content.subHeading } */}
- We've created 3 unique website designs for you to start with, preview, click around or start over.
+ { content.subheading }
- {/*
*/}
-
+ { buildPreviews() }
+
);
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
index 2ca1ab13f..97829d1b9 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
@@ -2,6 +2,7 @@
display: flex;
justify-content: center;
flex-wrap: wrap;
+ min-width: 400 px;
// width: 1300px;
// flex-direction: row;
// align-items: center;
@@ -39,10 +40,12 @@
&__options {
flex: 1;
- min-width: 310px;
+ min-width: 130px;
+ width: 400px;
height: 143px;
text-align: center;
margin: 10px;
border-radius: 16px;
+ // flex-direction: row !important;
}
}
\ No newline at end of file
From 8640b3c340fb606d6b8f674f3a842b29d41e2154 Mon Sep 17 00:00:00 2001
From: diDroid
Date: Tue, 14 Nov 2023 15:33:46 +0530
Subject: [PATCH 07/64] design previews. respinsiveness remaining
---
.../steps/SiteGen/Preview/index.js | 27 +++----
.../steps/SiteGen/Preview/stylesheet.scss | 74 ++++++++++---------
2 files changed, 55 insertions(+), 46 deletions(-)
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index d00d7b85a..7295fdfbb 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -49,18 +49,16 @@ const SiteGenPreview = () => {
return designs.map( ( design, idx ) => {
return (
-
- {
- navigate( nextStep.path );
- } }
- onWishlistClick = { onWishlistClick }
- onRegenerateClick = { onRegenerateClick }
- />
-
+ {
+ navigate( nextStep.path );
+ } }
+ onWishlistClick = { onWishlistClick }
+ onRegenerateClick = { onRegenerateClick }
+ />
);
} );
};
@@ -83,8 +81,11 @@ const SiteGenPreview = () => {
{ content.subheading }
- { buildPreviews() }
+
+ { buildPreviews() }
+
+
);
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
index 97829d1b9..b8e7eac87 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
@@ -1,51 +1,59 @@
-.nfd-onboarding-step--site-gen__preview__container {
- display: flex;
- justify-content: center;
- flex-wrap: wrap;
- min-width: 400 px;
+.nfd-onboarding-step--site-gen__preview {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
// width: 1300px;
- // flex-direction: row;
- // align-items: center;
-
- &__heading {
+
+ &__container {
display: flex;
- flex-direction: row;
- width: 100%;
- padding: 0;
justify-content: center;
- align-items: center;
+ flex-wrap: wrap;
+ max-width: 500px;
+ padding-top: 50px;
- &__text {
- color: var(--nfd-onboarding-primary);
- font-size: clamp(0.875rem, 0.6818rem + 0.9659vw, 3rem);
- margin-left: 15px;
- white-space: normal;
- line-height: 1;
- }
- }
+ &__heading {
+ display: flex;
+ flex-direction: row;
+ width: 100%;
+ padding: 0;
+ justify-content: center;
+ align-items: center;
- &__sub-heading {
- width: 100%;
- margin: 10px;
- padding: 0;
+ &__text {
+ color: var(--nfd-onboarding-primary);
+ font-size: clamp(0.875rem, 0.6818rem + 0.9659vw, 3rem);
+ margin-left: 15px;
+ white-space: normal;
+ line-height: 1;
+ }
+ }
- &__text {
- text-align: center;
- color: var(--nfd-onboarding-primary);
- font-size: clamp(0.875rem, 0.7727rem + 0.5114vw, 2rem);
- margin: 0;
+ &__sub-heading {
+ width: 100%;
+ margin: 10px;
padding: 0;
+ // max-width: 500px;
+
+ &__text {
+ text-align: center;
+ color: var(--nfd-onboarding-primary);
+ font-size: clamp(0.875rem, 0.7727rem + 0.5114vw, 2rem);
+ margin: 0;
+ padding: 0;
+ }
}
}
&__options {
flex: 1;
+ display: flex;
+ flex-direction: row;
min-width: 130px;
- width: 400px;
- height: 143px;
+ width: 100%;
+ height: 400px;
text-align: center;
margin: 10px;
border-radius: 16px;
- // flex-direction: row !important;
+
}
}
\ No newline at end of file
From ea4c1a10d4affc447b292614fb95723b0cded79e Mon Sep 17 00:00:00 2001
From: diDroid
Date: Tue, 14 Nov 2023 15:55:42 +0530
Subject: [PATCH 08/64] added overlay for previews
---
.../LivePreview/SiteGenPreviewSelectableCard/index.js | 10 +++++-----
.../SiteGenPreviewSelectableCard/stylesheet.scss | 9 ++++++---
src/OnboardingSPA/steps/SiteGen/Preview/index.js | 2 +-
3 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index f1c841b5e..eb4c4aafd 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -5,6 +5,7 @@ import { LivePreview } from '..';
import ButtonDark from '../../../components/Button/ButtonDark';
import {ReactComponent as Wishlist} from '../../../static/icons/site-features/wishlist.svg'
import { __ } from '@wordpress/i18n';
+import ButtonWhite from '../../Button/ButtonWhite';
const SiteGenPreviewSelectableCard = ( {
className = 'live-preview-sitegen--selectable-card',
@@ -49,11 +50,10 @@ const SiteGenPreviewSelectableCard = ( {
-
+
+
+ Preview Version
+
) }
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
index 496ce7401..ca1a59db0 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
@@ -30,6 +30,9 @@
&__overlay {
position: absolute;
+ display: flex;
+ justify-content: center;
+ align-items: center;
top: 0;
bottom: 0;
left: 0;
@@ -40,9 +43,9 @@
opacity: 0;
transition: 0.5s ease;
background-color:
- rgb(var(--wp-admin-theme-color-darker-10--rgb))
-
- &__icon{
+ rgb(var(--wp-admin-theme-color-darker-10--rgb));
+
+ &__button {
fill: var(--nfd-onboarding-white);
font-size: 20px;
position: absolute;
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 7295fdfbb..1deaaad56 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -52,7 +52,7 @@ const SiteGenPreview = () => {
{
navigate( nextStep.path );
} }
From d0436d08af1ae4945d3c62f97c24ef5db80c8041 Mon Sep 17 00:00:00 2001
From: diDroid
Date: Wed, 15 Nov 2023 16:41:50 +0530
Subject: [PATCH 09/64] minor fix
---
.../LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss | 3 ++-
src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss | 3 +--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
index ca1a59db0..825e36707 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
@@ -24,6 +24,7 @@
width: 100%;
overflow: hidden;
height: 300px;
+ border-radius: 16px;
}
}
}
@@ -37,7 +38,7 @@
bottom: 0;
left: 0;
right: 0;
- height: 100%;
+ height: 300px;
z-index: 2;
width: 100%;
opacity: 0;
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
index b8e7eac87..2db212cd6 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
@@ -53,7 +53,6 @@
height: 400px;
text-align: center;
margin: 10px;
- border-radius: 16px;
-
+ // border-radius: 16px;
}
}
\ No newline at end of file
From 9e48d8d54340eb149fcd28fdcf376ae7289cc764 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Thu, 23 Nov 2023 02:52:36 +0530
Subject: [PATCH 10/64] PRESS2-1262
---
.../SiteGenPreviewSelectableCard/index.js | 22 +++++-----
.../steps/SiteGen/Preview/index.js | 43 ++++++++++---------
.../steps/SiteGen/Preview/pattern.js | 3 ++
3 files changed, 38 insertions(+), 30 deletions(-)
create mode 100644 src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index eb4c4aafd..371ba25db 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -3,9 +3,8 @@ import { useState } from '@wordpress/element';
import { LivePreview } from '..';
import ButtonDark from '../../../components/Button/ButtonDark';
-import {ReactComponent as Wishlist} from '../../../static/icons/site-features/wishlist.svg'
+import { ReactComponent as Wishlist } from '../../../static/icons/site-features/wishlist.svg';
import { __ } from '@wordpress/i18n';
-import ButtonWhite from '../../Button/ButtonWhite';
const SiteGenPreviewSelectableCard = ( {
className = 'live-preview-sitegen--selectable-card',
@@ -50,24 +49,27 @@ const SiteGenPreviewSelectableCard = ( {
-
+
Preview Version
) }
-
-
+
+
- { __( 'Version 1', 'wp-module-onboarding' ) }
+ { __( 'Version 1', 'wp-module-onboarding' ) }
-
-
- { __( 'Regenerate', 'wp-module-onboarding' ) }
+
+
+ { __( 'Regenerate', 'wp-module-onboarding' ) }
-
);
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 1deaaad56..e6399f0aa 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -1,18 +1,17 @@
+/* eslint-disable react-hooks/rules-of-hooks */
+/* eslint-disable no-alert */
import CommonLayout from '../../../components/Layouts/Common';
import { useEffect } from '@wordpress/element';
import { useNavigate } from 'react-router-dom';
-import { useSelect } from '@wordpress/data';
-
-import { useDispatch } from '@wordpress/data';
+import { useSelect, useDispatch } from '@wordpress/data';
import { store as nfdOnboardingStore } from '../../../store';
import { HEADER_SITEGEN } from '../../../../constants';
-import { SiteGenLivePreview, LivePreviewSelectableCard } from '../../../components/LivePreview';
+import { SiteGenLivePreview } from '../../../components/LivePreview';
import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
import getContents from './contents';
-
-const pattern = "\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We're meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the \"Settings\" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency's Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n";
+import { pattern } from './pattern';
const SiteGenPreview = () => {
const {
@@ -30,15 +29,15 @@ const SiteGenPreview = () => {
} );
const onWishlistClick = () => {
- alert('wishlist');
+ alert( 'wishlist' );
};
const onRegenerateClick = () => {
- alert('regenerate');
+ alert( 'regenerate' );
};
const buildPreviews = () => {
- const designs = [pattern, pattern, pattern];
+ const designs = [ pattern, pattern, pattern ];
const navigate = useNavigate();
const { nextStep } = useSelect( ( select ) => {
@@ -46,18 +45,26 @@ const SiteGenPreview = () => {
nextStep: select( nfdOnboardingStore ).getNextStep(),
};
} );
-
+
return designs.map( ( design, idx ) => {
return (
{
+ onClick={ () => {
navigate( nextStep.path );
} }
- onWishlistClick = { onWishlistClick }
- onRegenerateClick = { onRegenerateClick }
+ onKeyDown={ ( event ) => {
+ if ( event.key === 'Enter' ) {
+ navigate( nextStep.path );
+ }
+ } }
+ onWishlistClick={ onWishlistClick }
+ onRegenerateClick={ onRegenerateClick }
+ tabIndex="0"
+ role="button"
/>
);
} );
@@ -66,10 +73,8 @@ const SiteGenPreview = () => {
const content = getContents();
return (
-
- {/* */}
+
+ { /* */ }
@@ -83,10 +88,8 @@ const SiteGenPreview = () => {
- { buildPreviews() }
+ { buildPreviews() }
-
-
);
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
new file mode 100644
index 000000000..9aabfff9d
--- /dev/null
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
@@ -0,0 +1,3 @@
+const pattern = "\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We're meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the \"Settings\" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency's Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n";
+
+export { pattern };
From 64ef752cd9dc7a41154f3e1760134796c319c52e Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Thu, 23 Nov 2023 18:25:45 +0530
Subject: [PATCH 11/64] PRESS-1262 | fixed CSS
---
.../stylesheet.scss | 20 ++--
.../steps/SiteGen/Preview/stylesheet.scss | 112 +++++++++---------
2 files changed, 67 insertions(+), 65 deletions(-)
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
index 825e36707..598ddee24 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
@@ -1,18 +1,22 @@
.live-preview-sitegen--selectable-card {
flex: 1;
- width: 100%;
- margin: 24px;
+ width: 420px;
+ padding: 20px;
display: flex;
overflow: hidden;
align-items: center;
flex-direction: column;
justify-content: center;
+ @media (min-width: #{ ($break-xlarge) }) and (max-width: #{ ($break-wide) }) {
+ width: 340px;
+ padding: 15px;
+ }
+
&__live-preview-container {
position: relative;
- width: 90%;
- overflow: hidden;
+ width: 100%;
align-items: center;
border-radius: 8px;
@@ -23,7 +27,7 @@
&-custom {
width: 100%;
overflow: hidden;
- height: 300px;
+ height: 315px;
border-radius: 16px;
}
}
@@ -38,13 +42,13 @@
bottom: 0;
left: 0;
right: 0;
- height: 300px;
+ height: 315px;
z-index: 2;
width: 100%;
opacity: 0;
transition: 0.5s ease;
- background-color:
- rgb(var(--wp-admin-theme-color-darker-10--rgb));
+ background-color: rgb(var(--wp-admin-theme-color-darker-10--rgb));
+ border-radius: 8px;
&__button {
fill: var(--nfd-onboarding-white);
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
index 2db212cd6..94325c422 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
@@ -1,58 +1,56 @@
.nfd-onboarding-step--site-gen__preview {
- display: flex;
- flex-direction: column;
- align-items: center;
- // width: 1300px;
-
- &__container {
- display: flex;
- justify-content: center;
- flex-wrap: wrap;
- max-width: 500px;
- padding-top: 50px;
-
- &__heading {
- display: flex;
- flex-direction: row;
- width: 100%;
- padding: 0;
- justify-content: center;
- align-items: center;
-
- &__text {
- color: var(--nfd-onboarding-primary);
- font-size: clamp(0.875rem, 0.6818rem + 0.9659vw, 3rem);
- margin-left: 15px;
- white-space: normal;
- line-height: 1;
- }
- }
-
- &__sub-heading {
- width: 100%;
- margin: 10px;
- padding: 0;
- // max-width: 500px;
-
- &__text {
- text-align: center;
- color: var(--nfd-onboarding-primary);
- font-size: clamp(0.875rem, 0.7727rem + 0.5114vw, 2rem);
- margin: 0;
- padding: 0;
- }
- }
- }
-
- &__options {
- flex: 1;
- display: flex;
- flex-direction: row;
- min-width: 130px;
- width: 100%;
- height: 400px;
- text-align: center;
- margin: 10px;
- // border-radius: 16px;
- }
-}
\ No newline at end of file
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+
+ &__container {
+ display: flex;
+ justify-content: center;
+ flex-wrap: wrap;
+ max-width: 500px;
+ padding-top: 50px;
+
+ &__heading {
+ display: flex;
+ flex-direction: row;
+ width: 100%;
+ padding: 0;
+ justify-content: center;
+ align-items: center;
+
+ &__text {
+ color: var(--nfd-onboarding-primary);
+ font-size: clamp(0.875rem, 0.6818rem + 0.9659vw, 3rem);
+ margin-left: 15px;
+ white-space: normal;
+ line-height: 1;
+ }
+ }
+
+ &__sub-heading {
+ width: 100%;
+ margin: 10px;
+ padding: 0;
+
+ &__text {
+ text-align: center;
+ color: var(--nfd-onboarding-primary);
+ font-size: clamp(0.875rem, 0.7727rem + 0.5114vw, 2rem);
+ margin: 0;
+ padding: 0;
+ }
+ }
+ }
+
+ &__options {
+
+ @media (max-width: #{ ($break-xlarge) }) {
+ flex-direction: column;
+ }
+
+ display: flex;
+ flex-direction: row;
+ text-align: center;
+ margin: 10px;
+ }
+}
From 0d556b2600bbf92b7a6d641b51079f3e0b17184f Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Fri, 24 Nov 2023 16:58:58 +0530
Subject: [PATCH 12/64] PRESS-1262 | note
---
.../SiteGenPreviewSelectableCard/index.js | 34 +++++++++++++++----
.../stylesheet.scss | 18 +++++++++-
.../static/icons/sitegen/heart-stroked.svg | 3 ++
.../steps/SiteGen/Preview/contents.js | 9 ++---
.../steps/SiteGen/Preview/index.js | 7 +++-
.../steps/SiteGen/Preview/stylesheet.scss | 15 ++++++++
6 files changed, 74 insertions(+), 12 deletions(-)
create mode 100644 src/OnboardingSPA/static/icons/sitegen/heart-stroked.svg
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index 371ba25db..232c8c09e 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -3,7 +3,7 @@ import { useState } from '@wordpress/element';
import { LivePreview } from '..';
import ButtonDark from '../../../components/Button/ButtonDark';
-import { ReactComponent as Wishlist } from '../../../static/icons/site-features/wishlist.svg';
+import { ReactComponent as FavouriteIcon } from '../../../static/icons/sitegen/heart-stroked.svg';
import { __ } from '@wordpress/i18n';
const SiteGenPreviewSelectableCard = ( {
@@ -60,14 +60,36 @@ const SiteGenPreviewSelectableCard = ( {
-
-
+ {
+ if ( event.key === 'Enter' ) {
+ onWishlistClick();
+ }
+ } }
+ aria-label="Add to Wishlist"
+ className={ `${ className }__live-preview-container-buttons__button` }
+ >
+
{ __( 'Version 1', 'wp-module-onboarding' ) }
-
-
+
+ {
+ if ( event.key === 'Enter' ) {
+ onRegenerateClick();
+ }
+ } }
+ aria-label="Regenerate Content"
+ className={ `${ className }__live-preview-container-buttons__button` }
+ >
{ __( 'Regenerate', 'wp-module-onboarding' ) }
-
+
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
index 598ddee24..f28e46b93 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
@@ -9,11 +9,16 @@
flex-direction: column;
justify-content: center;
- @media (min-width: #{ ($break-xlarge) }) and (max-width: #{ ($break-wide) }) {
+ @media (min-width: #{ ($break-mobile) }) and (max-width: #{ ($break-wide) }) {
width: 340px;
padding: 15px;
}
+ @media (max-width: #{ ($break-mobile) }) {
+ width: 300px;
+ padding: 10px;
+ }
+
&__live-preview-container {
position: relative;
width: 100%;
@@ -74,6 +79,17 @@
flex-direction: row;
justify-content: space-between;
height: 40px;
+
+ &__button {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ color: var(--nfd-onboarding-primary);
+ gap: 8px;
+ font-size: 16px;
+ fill: var(--nfd-onboarding-primary);
+ cursor: pointer;
+ }
}
}
}
diff --git a/src/OnboardingSPA/static/icons/sitegen/heart-stroked.svg b/src/OnboardingSPA/static/icons/sitegen/heart-stroked.svg
new file mode 100644
index 000000000..b9cfca95c
--- /dev/null
+++ b/src/OnboardingSPA/static/icons/sitegen/heart-stroked.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/contents.js b/src/OnboardingSPA/steps/SiteGen/Preview/contents.js
index c2ba1447a..d93e97ad2 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/contents.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/contents.js
@@ -2,14 +2,15 @@ import { __ } from '@wordpress/i18n';
const getContents = () => {
return {
- heading: __(
- 'Presto, here are 3 versions',
- 'wp-module-onboarding'
- ),
+ heading: __( 'Presto, here are 3 versions', 'wp-module-onboarding' ),
subheading: __(
"We've created 3 unique website designs for you to start with, preview, click around or start over.",
'wp-module-onboarding'
),
+ favouriteNote: __(
+ 'Favorite a generated version to find and use again in the future.',
+ 'wp-module-onboarding'
+ ),
};
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index e6399f0aa..d46b1b95c 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -9,9 +9,10 @@ import { store as nfdOnboardingStore } from '../../../store';
import { HEADER_SITEGEN } from '../../../../constants';
import { SiteGenLivePreview } from '../../../components/LivePreview';
-import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
+//import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
import getContents from './contents';
import { pattern } from './pattern';
+import { ReactComponent as FavouriteIcon } from '../../../static/icons/sitegen/heart-stroked.svg';
const SiteGenPreview = () => {
const {
@@ -90,6 +91,10 @@ const SiteGenPreview = () => {
{ buildPreviews() }
+
+
+ { content.favouriteNote }
+
);
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
index 94325c422..2f21c8d27 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
@@ -53,4 +53,19 @@
text-align: center;
margin: 10px;
}
+
+ &__note {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ background: var(--nfd-onboarding-card-background);
+ color: var(--nfd-onboarding-primary);
+ gap: 18px;
+ padding: 16px;
+ font-size: 16px;
+ line-height: 22px;
+ text-align: center;
+ border-radius: 12px;
+ }
}
From 323b0ea905cdf949b4b11ac3c001d4feb48e7208 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Fri, 24 Nov 2023 19:34:39 +0530
Subject: [PATCH 13/64] PRESS-1262 | hide wp admin bar
---
.../components/NewfoldInterfaceSkeleton/style.scss | 6 ++++++
src/OnboardingSPA/styles/_interface.scss | 4 ++++
2 files changed, 10 insertions(+)
diff --git a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss
index 6e0dc17d4..090d26c24 100644
--- a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss
+++ b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss
@@ -31,6 +31,12 @@ html.nfd-interface-interface-skeleton__html-container {
top: 0;
}
}
+
+ &.nfd-onboarding-skeleton--sitegen{
+ .is-fullscreen-mode & {
+ top: 0;
+ }
+ }
}
.nfd-interface-interface-skeleton__editor {
diff --git a/src/OnboardingSPA/styles/_interface.scss b/src/OnboardingSPA/styles/_interface.scss
index 98b81f65e..13b42dec5 100644
--- a/src/OnboardingSPA/styles/_interface.scss
+++ b/src/OnboardingSPA/styles/_interface.scss
@@ -14,6 +14,10 @@ body {
&.is-fullscreen-mode {
opacity: 1;
transition: opacity ease-in 500ms;
+
+ #wpadminbar {
+ display: none;
+ }
}
&.dashboard_page_nfd-onboarding {
From f2fa7854b653b0d169589d9acde4f249b8ce2bb3 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Sun, 26 Nov 2023 04:05:09 +0530
Subject: [PATCH 14/64] PRESS-1262
---
includes/RestApi/SiteGenController.php | 89 ++++++++++++++++++-
.../components/Loaders/SiteGenLoader/index.js | 6 +-
.../NewfoldInterfaceSkeleton/SiteGen/index.js | 4 +-
.../steps/SiteGen/Preview/index.js | 19 +++-
src/OnboardingSPA/utils/api/siteGen.js | 17 ++++
5 files changed, 125 insertions(+), 10 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index f83eed0b2..514767bb4 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -36,7 +36,7 @@ public function register_routes() {
array(
'methods' => \WP_REST_Server::READABLE,
'callback' => array( $this, 'get_valid_identifiers' ),
- 'permission_callback' => array( Permissions::class, 'rest_is_authorized_admin' ),
+ 'permission_callback' => '__return_true',
)
);
\register_rest_route(
@@ -45,10 +45,20 @@ public function register_routes() {
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this, 'generate_sitegen_meta' ),
- 'permission_callback' => array( Permissions::class, 'rest_is_authorized_admin' ),
+ 'permission_callback' => '__return_true',
'args' => $this->sitegen_meta_args(),
)
);
+ \register_rest_route(
+ $this->namespace,
+ $this->rest_base . '/get-homepages',
+ array(
+ 'methods' => \WP_REST_Server::READABLE,
+ 'callback' => array( $this, 'get_homepages' ),
+ 'permission_callback' => '__return_true',
+ 'args' => $this->get_homepages_args(),
+ )
+ );
}
/**
@@ -73,6 +83,33 @@ public function sitegen_meta_args() {
);
}
+ /**
+ * Gets the arguments for the 'get-homepages' endpoint.
+ *
+ * @return array The array of arguments.
+ */
+ public function get_homepages_args() {
+ return array(
+ 'site_description' => array(
+ 'required' => false,
+ 'validate_callback' => function($param, $request, $key) {
+ return is_string($param);
+ },
+ 'sanitize_callback' => 'sanitize_text_field'
+ ),
+ 'regenerate' => array(
+ 'required' => false,
+ 'validate_callback' => function($param, $request, $key) {
+ return is_bool($param) || is_null($param);
+ },
+ 'sanitize_callback' => function($param, $request, $key) {
+ return is_null($param) ? $param : (bool)$param;
+ }
+ ),
+ // Add other parameters here as needed.
+ );
+ }
+
/**
* Gets all the valid Identifiers
*
@@ -95,7 +132,11 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) {
$identifier = $request->get_param( 'identifier' );
$skip_cache = $request->get_param( 'skip_cache' );
- if ( SiteGenService::is_enabled() ) {
+ /* if ( SiteGenService::is_enabled() ) {
+ // TODO Implement the main function and do computations if required.
+ return SiteGenService::instantiate_site_meta( $site_info, $identifier, $skip_cache );
+ } */
+ if ( true ) {
// TODO Implement the main function and do computations if required.
return SiteGenService::instantiate_site_meta( $site_info, $identifier, $skip_cache );
}
@@ -106,4 +147,46 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) {
array( 'status' => 404 )
);
}
+
+ /**
+ * Gets the preview homepages and fetches required parameters from the WordPress database.
+ *
+ * @param \WP_REST_Request $request Request object containing parameters from the front end.
+ * @return WP_REST_Response
+ */
+ public function get_homepages( \WP_REST_Request $request ) {
+ // Fetch parameters provided by the front end.
+ $site_description = $request->get_param( 'site_description' );
+ $regenerate = $request->get_param( 'regenerate' );
+
+ // Set default values if not provided.
+ $site_description = $site_description ?: 'default description';
+ $regenerate = is_null($regenerate) ? true : (bool)$regenerate;
+
+ // Retrieve $content_style and $target_audience from the database or previous API call.
+ $content_style = get_option( 'contentstructure' ); // Replace with actual option name.
+ $target_audience = get_option( 'targetaudience' ); // Replace with actual option name.
+
+ // Ensure that $content_style and $target_audience have valid values.
+ if (!$content_style || !$target_audience) {
+ return new \WP_REST_Response(
+ array(
+ 'message' => 'Missing required parameters from the database.',
+ ),
+ 400
+ );
+ }
+
+ // Call the static method from SiteGenService with all parameters.
+ $home_pages = SiteGenService::get_home_pages(
+ $site_description,
+ $content_style,
+ $target_audience,
+ $regenerate
+ );
+
+ // Return the result as a REST response.
+ return new \WP_REST_Response($home_pages, 200);
+ }
+
}
diff --git a/src/OnboardingSPA/components/Loaders/SiteGenLoader/index.js b/src/OnboardingSPA/components/Loaders/SiteGenLoader/index.js
index 8b93d2d58..bf48ab4fb 100644
--- a/src/OnboardingSPA/components/Loaders/SiteGenLoader/index.js
+++ b/src/OnboardingSPA/components/Loaders/SiteGenLoader/index.js
@@ -32,11 +32,11 @@ const SiteGenLoader = ( { autoNavigate = false } ) => {
useEffect( () => {
const percentageValue =
- ( currentData.sitegen.siteGenMetaStatus.currentStatus /
- currentData.sitegen.siteGenMetaStatus.totalCount ) *
+ ( currentData?.sitegen?.siteGenMetaStatus?.currentStatus /
+ currentData?.sitegen?.siteGenMetaStatus?.totalCount ) *
100;
setPercentage( percentageValue );
- }, [ currentData.sitegen.siteGenMetaStatus.currentStatus ] );
+ }, [ currentData?.sitegen?.siteGenMetaStatus?.currentStatus ] );
useEffect( () => {
if ( percentage === 100 ) {
diff --git a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/SiteGen/index.js b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/SiteGen/index.js
index 0e16ea38d..8c3aa99b8 100644
--- a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/SiteGen/index.js
+++ b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/SiteGen/index.js
@@ -55,8 +55,8 @@ const SiteGen = () => {
// If the calls are already made then skip doing that again.
if (
- currentData.sitegen.siteGenMetaStatus.currentStatus >=
- currentData.sitegen.siteGenMetaStatus.totalCount
+ currentData.sitegen?.siteGenMetaStatus?.currentStatus >=
+ currentData.sitegen?.siteGenMetaStatus?.totalCount
) {
return;
}
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index d46b1b95c..d16a8f254 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -14,6 +14,8 @@ import getContents from './contents';
import { pattern } from './pattern';
import { ReactComponent as FavouriteIcon } from '../../../static/icons/sitegen/heart-stroked.svg';
+import { getHomePagePreviews } from '../../../utils/api/siteGen';
+
const SiteGenPreview = () => {
const {
setIsHeaderEnabled,
@@ -22,19 +24,32 @@ const SiteGenPreview = () => {
setDrawerActiveView,
} = useDispatch( nfdOnboardingStore );
+ const { currentData } = useSelect( ( select ) => {
+ return {
+ currentData:
+ select( nfdOnboardingStore ).getCurrentOnboardingData(),
+ };
+ } );
+
useEffect( () => {
+ if ( currentData.sitegen.siteDetails?.prompt !== '' ) {
+ getHomePagePreviews(
+ currentData.sitegen.siteDetails.prompt,
+ false
+ );
+ }
setIsHeaderEnabled( true );
setSidebarActiveView( false );
setHeaderActiveView( HEADER_SITEGEN );
setDrawerActiveView( false );
- } );
+ }, [ currentData ] );
const onWishlistClick = () => {
alert( 'wishlist' );
};
const onRegenerateClick = () => {
- alert( 'regenerate' );
+ // alert( 'regenerate' );
};
const buildPreviews = () => {
diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js
index b41fdc75f..5d0134ba9 100644
--- a/src/OnboardingSPA/utils/api/siteGen.js
+++ b/src/OnboardingSPA/utils/api/siteGen.js
@@ -28,3 +28,20 @@ export async function generateSiteGenMeta(
} ).then()
);
}
+
+/* export async function getHomePagePreviews() {
+ return await resolve(
+ apiFetch( {
+ url: onboardingRestURL( 'sitegen/get-homepages' ),
+ } ).then()
+ );
+} */
+export async function getHomePagePreviews( siteDescription, regenerate ) {
+ // eslint-disable-next-line no-debugger
+ debugger;
+ return await apiFetch( {
+ path: onboardingRestURL( 'sitegen/get-homepages' ),
+ method: 'GET',
+ data: { site_description: siteDescription, regenerate },
+ } );
+}
From 7a751ecba349d4d4f24f339524c90395946ed70d Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Sun, 26 Nov 2023 08:45:45 +0530
Subject: [PATCH 15/64] PRESS2-1262 | fixed changes
---
includes/RestApi/SiteGenController.php | 47 +++++++----------
src/OnboardingSPA/utils/api/siteGen.js | 72 +++++++++++++++++++++-----
2 files changed, 78 insertions(+), 41 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index 514767bb4..1dd862dd6 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -3,6 +3,7 @@
namespace NewfoldLabs\WP\Module\Onboarding\RestApi;
use NewfoldLabs\WP\Module\Onboarding\Permissions;
+use NewfoldLabs\WP\Module\AI\SiteGen\SiteGen;
use NewfoldLabs\WP\Module\Onboarding\Data\Services\SiteGenService;
/**
@@ -99,12 +100,6 @@ public function get_homepages_args() {
),
'regenerate' => array(
'required' => false,
- 'validate_callback' => function($param, $request, $key) {
- return is_bool($param) || is_null($param);
- },
- 'sanitize_callback' => function($param, $request, $key) {
- return is_null($param) ? $param : (bool)$param;
- }
),
// Add other parameters here as needed.
);
@@ -149,44 +144,40 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) {
}
/**
- * Gets the preview homepages and fetches required parameters from the WordPress database.
+ * Gets the preview homepages
*
- * @param \WP_REST_Request $request Request object containing parameters from the front end.
- * @return WP_REST_Response
+ * @return array
*/
public function get_homepages( \WP_REST_Request $request ) {
// Fetch parameters provided by the front end.
$site_description = $request->get_param( 'site_description' );
$regenerate = $request->get_param( 'regenerate' );
- // Set default values if not provided.
- $site_description = $site_description ?: 'default description';
- $regenerate = is_null($regenerate) ? true : (bool)$regenerate;
-
- // Retrieve $content_style and $target_audience from the database or previous API call.
- $content_style = get_option( 'contentstructure' ); // Replace with actual option name.
- $target_audience = get_option( 'targetaudience' ); // Replace with actual option name.
-
- // Ensure that $content_style and $target_audience have valid values.
- if (!$content_style || !$target_audience) {
+ $nfd_ai_site_gen_option = get_option('nfd-ai-site-gen');
+ //$nfd_ai_site_gen = maybe_unserialize($nfd_ai_site_gen_option);
+
+ // Extract the 'targetaudience' and 'contentstructure' values.
+ $target_audience = isset($nfd_ai_site_gen_option['targetaudience']) ? $nfd_ai_site_gen_option['targetaudience'] : null;
+ $content_style = isset($nfd_ai_site_gen_option['contentstructure']) ? $nfd_ai_site_gen_option['contentstructure'] : null;
+
+ // Ensure that the required data is available.
+ if (!$target_audience || !$content_style) {
return new \WP_REST_Response(
- array(
- 'message' => 'Missing required parameters from the database.',
- ),
- 400
+ array('message' => 'Required data is missing.'),
+ 400 // Bad Request
);
}
-
+
// Call the static method from SiteGenService with all parameters.
- $home_pages = SiteGenService::get_home_pages(
+ $home_pages = SiteGen::get_home_pages(
$site_description,
$content_style,
$target_audience,
$regenerate
);
-
+
// Return the result as a REST response.
- return new \WP_REST_Response($home_pages, 200);
+ return new \WP_REST_Response($home_pages, 200); // OK
}
-
+
}
diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js
index 5d0134ba9..d87aecd49 100644
--- a/src/OnboardingSPA/utils/api/siteGen.js
+++ b/src/OnboardingSPA/utils/api/siteGen.js
@@ -1,4 +1,5 @@
import apiFetch from '@wordpress/api-fetch';
+// import { addQueryArgs } from '@wordpress/url';
import { resolve } from './resolve.js';
import { onboardingRestURL } from './common';
@@ -29,19 +30,64 @@ export async function generateSiteGenMeta(
);
}
-/* export async function getHomePagePreviews() {
- return await resolve(
- apiFetch( {
- url: onboardingRestURL( 'sitegen/get-homepages' ),
- } ).then()
+/* export async function getHomePagePreviews( siteDescription, regenerate ) {
+ // Construct the query parameters
+ const queryParams = {};
+ if ( siteDescription !== undefined ) {
+ queryParams.site_description = siteDescription;
+ }
+ if ( regenerate !== undefined ) {
+ queryParams.regenerate = regenerate;
+ }
+
+ // Create the URL with query parameters
+ const url = addQueryArgs(
+ onboardingRestURL( 'sitegen/get-homepages' ),
+ queryParams
);
-} */
+
+ // Make the apiFetch call
+ try {
+ const homePagePreviews = await apiFetch( { path: url } );
+ console.log( 'HomePage Previews:', homePagePreviews );
+ return homePagePreviews;
+ } catch ( error ) {
+ console.error( 'Error fetching home page previews:', error );
+ throw error;
+ }
+}
+ */
+
export async function getHomePagePreviews( siteDescription, regenerate ) {
- // eslint-disable-next-line no-debugger
- debugger;
- return await apiFetch( {
- path: onboardingRestURL( 'sitegen/get-homepages' ),
- method: 'GET',
- data: { site_description: siteDescription, regenerate },
- } );
+ // Construct the base URL
+ const baseUrl = onboardingRestURL( 'sitegen/get-homepages' );
+
+ // Construct query parameters
+ const queryParams = new URLSearchParams();
+ if ( siteDescription !== undefined ) {
+ queryParams.append( 'site_description', siteDescription );
+ }
+ if ( regenerate !== undefined ) {
+ queryParams.append( 'regenerate', regenerate );
+ }
+
+ // Create the full URL with query parameters
+ const url = `${ baseUrl }&${ queryParams }`;
+
+ // Log the URL to the console for verification
+ console.log( 'Fetching URL:', url );
+
+ // Make the fetch call and return the JSON response
+ try {
+ const response = await fetch( url );
+ if ( ! response.ok ) {
+ throw new Error( `HTTP error! status: ${ response.status }` );
+ }
+ const data = await response.json();
+ console.log( 'HomePage Previews:', data );
+ return data;
+ } catch ( error ) {
+ console.error( 'Error fetching home page previews:', error );
+ throw error;
+ }
}
From d9209c0925d7077e5a52acd0e6955f8b01dfb5da Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Mon, 27 Nov 2023 09:35:19 +0530
Subject: [PATCH 16/64] PRESS2-1262 | removed comments
---
includes/RestApi/SiteGenController.php | 8 +++-----
src/OnboardingSPA/utils/api/siteGen.js | 6 +-----
2 files changed, 4 insertions(+), 10 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index 1dd862dd6..1c7f5224c 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -149,14 +149,13 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) {
* @return array
*/
public function get_homepages( \WP_REST_Request $request ) {
- // Fetch parameters provided by the front end.
+ // Fetching parameters provided by the front end.
$site_description = $request->get_param( 'site_description' );
$regenerate = $request->get_param( 'regenerate' );
$nfd_ai_site_gen_option = get_option('nfd-ai-site-gen');
- //$nfd_ai_site_gen = maybe_unserialize($nfd_ai_site_gen_option);
- // Extract the 'targetaudience' and 'contentstructure' values.
+ // Extracting the 'targetaudience' and 'contentstructure' values.
$target_audience = isset($nfd_ai_site_gen_option['targetaudience']) ? $nfd_ai_site_gen_option['targetaudience'] : null;
$content_style = isset($nfd_ai_site_gen_option['contentstructure']) ? $nfd_ai_site_gen_option['contentstructure'] : null;
@@ -168,7 +167,7 @@ public function get_homepages( \WP_REST_Request $request ) {
);
}
- // Call the static method from SiteGenService with all parameters.
+ // Call the static method from SiteGen with all parameters.
$home_pages = SiteGen::get_home_pages(
$site_description,
$content_style,
@@ -176,7 +175,6 @@ public function get_homepages( \WP_REST_Request $request ) {
$regenerate
);
- // Return the result as a REST response.
return new \WP_REST_Response($home_pages, 200); // OK
}
diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js
index d87aecd49..cf07c3a12 100644
--- a/src/OnboardingSPA/utils/api/siteGen.js
+++ b/src/OnboardingSPA/utils/api/siteGen.js
@@ -59,10 +59,8 @@ export async function generateSiteGenMeta(
*/
export async function getHomePagePreviews( siteDescription, regenerate ) {
- // Construct the base URL
const baseUrl = onboardingRestURL( 'sitegen/get-homepages' );
- // Construct query parameters
const queryParams = new URLSearchParams();
if ( siteDescription !== undefined ) {
queryParams.append( 'site_description', siteDescription );
@@ -71,13 +69,11 @@ export async function getHomePagePreviews( siteDescription, regenerate ) {
queryParams.append( 'regenerate', regenerate );
}
- // Create the full URL with query parameters
+ // Creating the full URL with query parameters
const url = `${ baseUrl }&${ queryParams }`;
- // Log the URL to the console for verification
console.log( 'Fetching URL:', url );
- // Make the fetch call and return the JSON response
try {
const response = await fetch( url );
if ( ! response.ok ) {
From 43213d0aac8989d65ac1d452a33f72373e32e87d Mon Sep 17 00:00:00 2001
From: diDroid
Date: Mon, 27 Nov 2023 16:04:54 +0530
Subject: [PATCH 17/64] mobile changes
---
.../components/Header/stylesheet.scss | 56 +++++++++++++++----
.../Editor/Header/step-navigation-center.js | 14 ++++-
.../Editor/Header/step-navigation-left.js | 32 +++++++++--
.../Editor/Header/step-navigation-right.js | 35 +++++++++---
4 files changed, 112 insertions(+), 25 deletions(-)
diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss
index ef1f35d65..6a20c1173 100644
--- a/src/OnboardingSPA/components/Header/stylesheet.scss
+++ b/src/OnboardingSPA/components/Header/stylesheet.scss
@@ -22,6 +22,10 @@
transition-delay: 80ms;
@include reduce-motion("transition");
+
+ @media (max-width: #{ ($break-xlarge) }) {
+ padding-left: 4px;
+ }
}
&__start,
@@ -38,22 +42,13 @@
display: flex;
align-items: center;
height: 100%;
- flex-grow: 1;
- justify-content: center;
- min-width: 5px;
- font-weight: 600;
font-size: 20px;
line-height: $grid-unit-30;
- svg {
- margin-right: $grid-unit-10;
- }
-
&-dropdown-item {
padding: 2px 2px;
text-decoration: none;
display: block;
- width: 80px !important;
text-align: center;
}
@@ -63,7 +58,6 @@
border: none !important;
color: var(--nfd-onboarding-header-contrast) !important;
background-color: var(--nfd-onboarding-header-base) !important;
-
}
}
@@ -126,4 +120,46 @@
font-size: 13px;
padding: 15px 10px !important;
}
+
+ &-editor {
+ padding: 0 13px 0 13px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 8px;
+ cursor: pointer;
+ height: 36px;
+ background-color: var(--nfd-onboarding-navigation-back-background);
+ color: var(--nfd-onboarding-primary);
+ fill: var(--nfd-onboarding-primary);
+ border-radius: 6px;
+
+ &:hover {
+ background-color: #ffffff;
+ color: #272d30;
+ fill: #272d30;
+ }
+
+ &__regenerate {
+ @media (max-width: #{ ($break-xlarge) }) {
+ display: none;
+ }
+ }
+
+ &__customize {
+ @media (max-width: #{ ($break-xlarge) }) {
+ display: none;
+ }
+ }
+
+ &__continue {
+ @media (max-width: #{ ($break-xlarge) }) {
+ content: 'Next';
+ }
+
+ @media (min-width: #{ ($break-xlarge) }) {
+ content: 'Save & Continue';
+ }
+ }
+ }
}
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
index 103874ad7..0c5a3990c 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
@@ -48,15 +48,23 @@ const VersionButton = ( {isInputDisabled} ) => {
(
- {
+ if ( event.key === 'Enter' ) {
+ onToggle();
+ }
+ } }
aria-expanded={ isOpen }
+ aria-label="Regenerate"
+ className='navigation-buttons-editor'
>
- {/* { __( 'Version 1', 'wp-module-onboarding' ) } */}
-
+
) }
renderContent={ () =>
}
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
index 51b29e292..e05119c0f 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
@@ -4,7 +4,7 @@ import { Icon, chevronLeft, reusableBlock } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
import { store as nfdOnboardingStore } from '../../../../store';
-import ButtonDark from '../../../../components/Button/ButtonDark';
+import classNames from 'classnames';
/**
* Back step Navigation button.
@@ -24,10 +24,21 @@ const Back = ( { path, showErrorDialog } ) => {
}
};
return (
-
+ {
+ if ( event.key === 'Enter' ) {
+ navigateBack();
+ }
+ } }
+ aria-label="Back"
+ className={ classNames('navigation-buttons-editor_back', 'navigation-buttons-editor') }
+ >
{ __( 'Back', 'wp-module-onboarding' ) }
-
+
);
};
@@ -36,10 +47,21 @@ const Regenerate = () => {
alert('regenerate');
};
return (
-
+ {
+ if ( event.key === 'Enter' ) {
+ regenerate();
+ }
+ } }
+ aria-label="Regenerate"
+ className={ classNames('navigation-buttons-editor__regenerate', 'navigation-buttons-editor') }
+ >
{ __( 'Regenerate', 'wp-module-onboarding' ) }
-
+
);
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
index eca41012c..4858564d1 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
@@ -3,8 +3,7 @@ import { Icon, chevronRight, settings } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
import { store as nfdOnboardingStore } from '../../../../store';
-import ButtonDark from '../../../../components/Button/ButtonDark';
-// import {ReactComponent as Equalizer} from '../../../../static/icons/equalizer.svg'
+import classNames from 'classnames';
/**
* Back step Navigation button.
@@ -18,10 +17,21 @@ const Customize = ( ) => {
alert('customize');
};
return (
-
+ {
+ if ( event.key === 'Enter' ) {
+ customize();
+ }
+ } }
+ aria-label="Customize"
+ className={ classNames('navigation-buttons-editor__customize', 'navigation-buttons-editor') }
+ >
{ __( 'Customize', 'wp-module-onboarding' ) }
-
+
);
};
@@ -30,10 +40,21 @@ const Save = () => {
alert('save');
};
return (
-
- { __( 'Save & Continue', 'wp-module-onboarding' ) }
+ {
+ if ( event.key === 'Enter' ) {
+ save();
+ }
+ } }
+ aria-label="Save"
+ className={ classNames('navigation-buttons-editor__continue', 'navigation-buttons-editor') }
+ >
+ { __( 'Save & Continue', 'wp-module-onboarding' ) }
-
+
);
};
From 492f947a925581e823b36e892f60d145c613e6f2 Mon Sep 17 00:00:00 2001
From: diDroid
Date: Mon, 27 Nov 2023 17:35:43 +0530
Subject: [PATCH 18/64] have to change header background to dynamic
---
.../components/Header/stylesheet.scss | 14 +++++++-------
.../Editor/Header/step-navigation-center.js | 19 ++++++++++---------
.../Editor/Header/step-navigation-right.js | 6 ++++--
3 files changed, 21 insertions(+), 18 deletions(-)
diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss
index 6a20c1173..c38be9cfa 100644
--- a/src/OnboardingSPA/components/Header/stylesheet.scss
+++ b/src/OnboardingSPA/components/Header/stylesheet.scss
@@ -1,6 +1,6 @@
.nfd-onboarding-header {
align-items: center;
- background-color: var(--nfd-onboarding-header-base);
+ background-color: var(--nfd-onboarding-admin-bar-background);
color: var(--nfd-onboarding-header-contrast);
h2,
@@ -151,15 +151,15 @@
display: none;
}
}
-
&__continue {
- @media (max-width: #{ ($break-xlarge) }) {
- content: 'Next';
- }
-
- @media (min-width: #{ ($break-xlarge) }) {
+ &:before {
content: 'Save & Continue';
}
+ @media (max-width: #{ ($break-xlarge) }) {
+ &:before {
+ content: 'Next';
+ }
+ }
}
}
}
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
index 0c5a3990c..bf8a4235d 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
@@ -1,8 +1,8 @@
import { Icon, chevronDown } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
-import ButtonDark from '../../../../components/Button/ButtonDark';
import {ReactComponent as Wishlist} from '../../../../static/icons/site-features/wishlist.svg'
+import { ReactComponent as FavouriteIcon } from '../../../../static/icons/sitegen/heart-stroked.svg';
import { Button, Dropdown } from '@wordpress/components';
import { useState } from '@wordpress/element';
@@ -51,19 +51,20 @@ const VersionButton = ( {isInputDisabled} ) => {
{
- if ( event.key === 'Enter' ) {
- onToggle();
- }
- } }
aria-expanded={ isOpen }
aria-label="Regenerate"
className='navigation-buttons-editor'
>
-
+
-
+ {
+ if ( event.key === 'Enter' ) {
+ onToggle();
+ }
+ } }
+ />
) }
renderContent={ () =>
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
index 4858564d1..c7aba43c6 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
@@ -50,9 +50,11 @@ const Save = () => {
}
} }
aria-label="Save"
- className={ classNames('navigation-buttons-editor__continue', 'navigation-buttons-editor') }
+ className={ classNames('navigation-buttons-editor') }
>
- { __( 'Save & Continue', 'wp-module-onboarding' ) }
+
+ {/* { __( 'Save & Continue', 'wp-module-onboarding' ) } */}
+
);
From 515fac75a8a953f4e79d0d796518d09fd41d0592 Mon Sep 17 00:00:00 2001
From: diDroid
Date: Mon, 27 Nov 2023 18:02:27 +0530
Subject: [PATCH 19/64] have to change header background to dynamic
---
src/OnboardingSPA/components/Header/stylesheet.scss | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss
index c38be9cfa..3dcaa513f 100644
--- a/src/OnboardingSPA/components/Header/stylesheet.scss
+++ b/src/OnboardingSPA/components/Header/stylesheet.scss
@@ -1,6 +1,6 @@
.nfd-onboarding-header {
align-items: center;
- background-color: var(--nfd-onboarding-admin-bar-background);
+ background-color: var(--nfd-onboarding-header-base);
color: var(--nfd-onboarding-header-contrast);
h2,
From 012ffd6f013a0c87ee674e5672427ae19ed8e3b9 Mon Sep 17 00:00:00 2001
From: diDroid
Date: Tue, 28 Nov 2023 15:41:33 +0530
Subject: [PATCH 20/64] mobile responsiveness
---
.../components/Header/stylesheet.scss | 22 ---
.../Editor/Header/step-navigation-center.js | 139 +++++++++---------
.../Editor/Header/step-navigation-left.js | 122 +++++++--------
.../Editor/Header/step-navigation-right.js | 115 ++++++++-------
4 files changed, 193 insertions(+), 205 deletions(-)
diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss
index 3dcaa513f..d5e9611af 100644
--- a/src/OnboardingSPA/components/Header/stylesheet.scss
+++ b/src/OnboardingSPA/components/Header/stylesheet.scss
@@ -139,27 +139,5 @@
color: #272d30;
fill: #272d30;
}
-
- &__regenerate {
- @media (max-width: #{ ($break-xlarge) }) {
- display: none;
- }
- }
-
- &__customize {
- @media (max-width: #{ ($break-xlarge) }) {
- display: none;
- }
- }
- &__continue {
- &:before {
- content: 'Save & Continue';
- }
- @media (max-width: #{ ($break-xlarge) }) {
- &:before {
- content: 'Next';
- }
- }
- }
}
}
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
index bf8a4235d..6aac3e83a 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
@@ -1,78 +1,11 @@
import { Icon, chevronDown } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
-import {ReactComponent as Wishlist} from '../../../../static/icons/site-features/wishlist.svg'
+import { useViewportMatch } from '@wordpress/compose';
import { ReactComponent as FavouriteIcon } from '../../../../static/icons/sitegen/heart-stroked.svg';
import { Button, Dropdown } from '@wordpress/components';
import { useState } from '@wordpress/element';
-const onTextChange = ( e ) => {
- e.preventDefault();
- setCustomerInput( e.target.value );
-};
-
-
-const TextInput = ( { customerInput, isDisabled } ) => {
- return (
- onTextChange( e ) }
- />
- );
-};
-
-/**
- * Version step Navigation button.
- *
- * @return {WPComponent} VersionButton Component
- */
-const VersionDropDown = ( ) => {
- return (
-
- Rename
- View All
-
- );
-};
-
-/**
- * Version step Navigation button.
- *
- * @return {WPComponent} VersionButton Component
- */
-const VersionButton = ( {isInputDisabled} ) => {
- return (
- (
-
-
-
- {
- if ( event.key === 'Enter' ) {
- onToggle();
- }
- } }
- />
-
- ) }
- renderContent={ () =>
- }
- />
- );
-};
-
/**
* Centre Step buttons presented in Header.
*
@@ -81,6 +14,76 @@ const VersionButton = ( {isInputDisabled} ) => {
const StepNavigationCenter = () => {
const [isInputDisabled, setIsInputDisabled] = useState(true);
+ const isLargeViewport = useViewportMatch( 'medium' );
+
+ const onTextChange = ( e ) => {
+ e.preventDefault();
+ setCustomerInput( e.target.value );
+ };
+
+
+ const TextInput = ( { customerInput, isDisabled } ) => {
+ return (
+ onTextChange( e ) }
+ />
+ );
+ };
+
+ /**
+ * Version step Navigation button.
+ *
+ * @return {WPComponent} VersionButton Component
+ */
+ const VersionDropDown = ( ) => {
+ return (
+
+ { !isLargeViewport ? <>Regenerate Customize >: '' }
+ Rename
+ View All
+
+ );
+ };
+
+ /**
+ * Version step Navigation button.
+ *
+ * @return {WPComponent} VersionButton Component
+ */
+ const VersionButton = ( {isInputDisabled} ) => {
+ return (
+ (
+
+
+
+ {
+ if ( event.key === 'Enter' ) {
+ onToggle();
+ }
+ } }
+ />
+
+ ) }
+ renderContent={ () =>
+ }
+ />
+ );
+ };
+
return (
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
index e05119c0f..01541bfb2 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
@@ -2,68 +2,11 @@ import { useSelect, useDispatch } from '@wordpress/data';
import { useNavigate } from 'react-router-dom';
import { Icon, chevronLeft, reusableBlock } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
+import { useViewportMatch } from '@wordpress/compose';
import { store as nfdOnboardingStore } from '../../../../store';
import classNames from 'classnames';
-/**
- * Back step Navigation button.
- *
- * @param {*} param0
- *
- * @return {WPComponent} Back Component
- */
-const Back = ( { path, showErrorDialog } ) => {
- const { setNavErrorContinuePath } = useDispatch( nfdOnboardingStore );
- const navigate = useNavigate();
- const navigateBack = () => {
- if ( showErrorDialog !== false ) {
- setNavErrorContinuePath( path );
- } else {
- navigate( path, { state: { origin: 'header' } } );
- }
- };
- return (
- {
- if ( event.key === 'Enter' ) {
- navigateBack();
- }
- } }
- aria-label="Back"
- className={ classNames('navigation-buttons-editor_back', 'navigation-buttons-editor') }
- >
-
- { __( 'Back', 'wp-module-onboarding' ) }
-
- );
-};
-
-const Regenerate = () => {
- const regenerate = () => {
- alert('regenerate');
- };
- return (
- {
- if ( event.key === 'Enter' ) {
- regenerate();
- }
- } }
- aria-label="Regenerate"
- className={ classNames('navigation-buttons-editor__regenerate', 'navigation-buttons-editor') }
- >
-
- { __( 'Regenerate', 'wp-module-onboarding' ) }
-
- );
-};
/**
* Step buttons presented in Header.
@@ -77,6 +20,67 @@ const StepNavigationLeft = () => {
showErrorDialog: select( nfdOnboardingStore ).getShowErrorDialog(),
};
}, [] );
+
+ const isLargeViewport = useViewportMatch( 'medium' );
+
+ /**
+ * Back step Navigation button.
+ *
+ * @param {*} param0
+ *
+ * @return {WPComponent} Back Component
+ */
+ const Back = ( { path, showErrorDialog } ) => {
+ const { setNavErrorContinuePath } = useDispatch( nfdOnboardingStore );
+ const navigate = useNavigate();
+ const navigateBack = () => {
+ if ( showErrorDialog !== false ) {
+ setNavErrorContinuePath( path );
+ } else {
+ navigate( path, { state: { origin: 'header' } } );
+ }
+ };
+ return (
+ {
+ if ( event.key === 'Enter' ) {
+ navigateBack();
+ }
+ } }
+ aria-label="Back"
+ className='navigation-buttons-editor'
+ >
+
+ { __( 'Back', 'wp-module-onboarding' ) }
+
+ );
+ };
+
+ const Regenerate = () => {
+ const regenerate = () => {
+ alert('regenerate');
+ };
+ return (
+ {
+ if ( event.key === 'Enter' ) {
+ regenerate();
+ }
+ } }
+ aria-label="Regenerate"
+ className='navigation-buttons-editor'
+ >
+
+ { __( 'Regenerate', 'wp-module-onboarding' ) }
+
+ );
+ };
return (
@@ -84,7 +88,7 @@ const StepNavigationLeft = () => {
path={ previousStep.path }
showErrorDialog={ showErrorDialog }
/>
-
+ { isLargeViewport ? : '' }
);
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
index c7aba43c6..25713e896 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
@@ -1,65 +1,11 @@
import { useSelect } from '@wordpress/data';
import { Icon, chevronRight, settings } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
+import { useViewportMatch } from '@wordpress/compose';
import { store as nfdOnboardingStore } from '../../../../store';
import classNames from 'classnames';
-/**
- * Back step Navigation button.
- *
- * @param {*} param0
- *
- * @return {WPComponent} Back Component
- */
-const Customize = ( ) => {
- const customize = () => {
- alert('customize');
- };
- return (
- {
- if ( event.key === 'Enter' ) {
- customize();
- }
- } }
- aria-label="Customize"
- className={ classNames('navigation-buttons-editor__customize', 'navigation-buttons-editor') }
- >
-
- { __( 'Customize', 'wp-module-onboarding' ) }
-
- );
-};
-
-const Save = () => {
- const save = () => {
- alert('save');
- };
- return (
- {
- if ( event.key === 'Enter' ) {
- save();
- }
- } }
- aria-label="Save"
- className={ classNames('navigation-buttons-editor') }
- >
-
- {/* { __( 'Save & Continue', 'wp-module-onboarding' ) } */}
-
-
-
- );
-};
-
/**
* Step buttons presented in Header.
*
@@ -72,10 +18,67 @@ const StepNavigationRight = () => {
showErrorDialog: select( nfdOnboardingStore ).getShowErrorDialog(),
};
}, [] );
+
+ const isLargeViewport = useViewportMatch( 'medium' );
+
+ /**
+ * Back step Navigation button.
+ *
+ * @param {*} param0
+ *
+ * @return {WPComponent} Back Component
+ */
+ const Customize = ( ) => {
+ const customize = () => {
+ alert('customize');
+ };
+ return (
+ {
+ if ( event.key === 'Enter' ) {
+ customize();
+ }
+ } }
+ aria-label="Customize"
+ className='navigation-buttons-editor'
+ >
+
+ { __( 'Customize', 'wp-module-onboarding' ) }
+
+ );
+ };
+
+ const Save = () => {
+ const save = () => {
+ alert('save');
+ };
+ return (
+ {
+ if ( event.key === 'Enter' ) {
+ save();
+ }
+ } }
+ aria-label="Save"
+ className='navigation-buttons-editor'
+ >
+ { isLargeViewport ?
+ __( 'Save & Continue', 'wp-module-onboarding' )
+ : __( 'Next', 'wp-module-onboarding' ) }
+
+
+ );
+ };
return (
-
+ { isLargeViewport ? : '' }
);
From 238ae548477a6cfe03eb85750b14bf3eb048b781 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Wed, 29 Nov 2023 16:37:23 +0530
Subject: [PATCH 21/64] PRESS-1262 | updated controller
---
src/OnboardingSPA/utils/api/siteGen.js | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js
index cf07c3a12..04b461e56 100644
--- a/src/OnboardingSPA/utils/api/siteGen.js
+++ b/src/OnboardingSPA/utils/api/siteGen.js
@@ -1,5 +1,5 @@
import apiFetch from '@wordpress/api-fetch';
-// import { addQueryArgs } from '@wordpress/url';
+import { addQueryArgs } from '@wordpress/url';
import { resolve } from './resolve.js';
import { onboardingRestURL } from './common';
@@ -30,7 +30,7 @@ export async function generateSiteGenMeta(
);
}
-/* export async function getHomePagePreviews( siteDescription, regenerate ) {
+ /* export async function getHomePagePreviews( siteDescription, regenerate ) {
// Construct the query parameters
const queryParams = {};
if ( siteDescription !== undefined ) {
@@ -57,8 +57,23 @@ export async function generateSiteGenMeta(
}
}
*/
+export async function getHomePagePreviews(
+ siteDescription,
+ regenerate = false
+) {
+ return await resolve(
+ apiFetch( {
+ url: onboardingRestURL( 'sitegen/get-homepages' ),
+ method: 'POST',
+ data: {
+ site_description: siteDescription,
+ regenerate,
+ },
+ } ).then()
+ );
+}
-export async function getHomePagePreviews( siteDescription, regenerate ) {
+/* export async function getHomePagePreviews( siteDescription, regenerate ) {
const baseUrl = onboardingRestURL( 'sitegen/get-homepages' );
const queryParams = new URLSearchParams();
@@ -86,4 +101,4 @@ export async function getHomePagePreviews( siteDescription, regenerate ) {
console.error( 'Error fetching home page previews:', error );
throw error;
}
-}
+} */
From 4c87a363f0391c238220cbb5fca8fb0c2ad4dd76 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Wed, 29 Nov 2023 20:18:44 +0530
Subject: [PATCH 22/64] PRESS-1262 | fixed overlay button
---
src/OnboardingSPA/components/Button/index.js | 12 +++----
.../SelectableCard/stylesheet.scss | 5 ++-
.../SiteGenPreviewSelectableCard/index.js | 6 ++--
.../stylesheet.scss | 32 +++++++++----------
src/OnboardingSPA/styles/_branding.scss | 2 ++
5 files changed, 29 insertions(+), 28 deletions(-)
diff --git a/src/OnboardingSPA/components/Button/index.js b/src/OnboardingSPA/components/Button/index.js
index 86e7812d7..56d9a6ba5 100644
--- a/src/OnboardingSPA/components/Button/index.js
+++ b/src/OnboardingSPA/components/Button/index.js
@@ -2,10 +2,10 @@
* Common Button Component
* Different variants can be added later based on our requirements
*
- * @returns Button
+ * @return Button
*/
-const Button = ({ text, handleClick, disabled, className }) => {
+const Button = ( { children, handleClick, disabled, className } ) => {
const handleBtnClick = () => {
handleClick();
};
@@ -13,11 +13,11 @@ const Button = ({ text, handleClick, disabled, className }) => {
return (
- {text}
+ { children }
);
};
diff --git a/src/OnboardingSPA/components/LivePreview/SelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SelectableCard/stylesheet.scss
index 2ee21e2b1..3a2b5c701 100644
--- a/src/OnboardingSPA/components/LivePreview/SelectableCard/stylesheet.scss
+++ b/src/OnboardingSPA/components/LivePreview/SelectableCard/stylesheet.scss
@@ -86,10 +86,9 @@
width: 100%;
opacity: 0;
transition: 0.5s ease;
- background-color:
- rgb(var(--wp-admin-theme-color-darker-10--rgb))
+ background-color: rgb(var(--wp-admin-theme-color-darker-10--rgb));
- &__icon{
+ &__icon {
fill: var(--nfd-onboarding-white);
font-size: 20px;
position: absolute;
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index 232c8c09e..e2e26e2ae 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -2,7 +2,7 @@ import { search, Icon, reusableBlock } from '@wordpress/icons';
import { useState } from '@wordpress/element';
import { LivePreview } from '..';
-import ButtonDark from '../../../components/Button/ButtonDark';
+import Button from '../../../components/Button';
import { ReactComponent as FavouriteIcon } from '../../../static/icons/sitegen/heart-stroked.svg';
import { __ } from '@wordpress/i18n';
@@ -49,12 +49,12 @@ const SiteGenPreviewSelectableCard = ( {
-
Preview Version
-
+
) }
Date: Thu, 30 Nov 2023 12:11:04 +0530
Subject: [PATCH 23/64] PRESS-1262 | comments removed
---
includes/RestApi/SiteGenController.php | 6 +--
src/OnboardingSPA/utils/api/siteGen.js | 57 --------------------------
2 files changed, 1 insertion(+), 62 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index 1c7f5224c..7c49ab5c6 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -127,11 +127,7 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) {
$identifier = $request->get_param( 'identifier' );
$skip_cache = $request->get_param( 'skip_cache' );
- /* if ( SiteGenService::is_enabled() ) {
- // TODO Implement the main function and do computations if required.
- return SiteGenService::instantiate_site_meta( $site_info, $identifier, $skip_cache );
- } */
- if ( true ) {
+ if ( SiteGenService::is_enabled() ) {
// TODO Implement the main function and do computations if required.
return SiteGenService::instantiate_site_meta( $site_info, $identifier, $skip_cache );
}
diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js
index 04b461e56..5e6d875c4 100644
--- a/src/OnboardingSPA/utils/api/siteGen.js
+++ b/src/OnboardingSPA/utils/api/siteGen.js
@@ -1,5 +1,4 @@
import apiFetch from '@wordpress/api-fetch';
-import { addQueryArgs } from '@wordpress/url';
import { resolve } from './resolve.js';
import { onboardingRestURL } from './common';
@@ -30,33 +29,6 @@ export async function generateSiteGenMeta(
);
}
- /* export async function getHomePagePreviews( siteDescription, regenerate ) {
- // Construct the query parameters
- const queryParams = {};
- if ( siteDescription !== undefined ) {
- queryParams.site_description = siteDescription;
- }
- if ( regenerate !== undefined ) {
- queryParams.regenerate = regenerate;
- }
-
- // Create the URL with query parameters
- const url = addQueryArgs(
- onboardingRestURL( 'sitegen/get-homepages' ),
- queryParams
- );
-
- // Make the apiFetch call
- try {
- const homePagePreviews = await apiFetch( { path: url } );
- console.log( 'HomePage Previews:', homePagePreviews );
- return homePagePreviews;
- } catch ( error ) {
- console.error( 'Error fetching home page previews:', error );
- throw error;
- }
-}
- */
export async function getHomePagePreviews(
siteDescription,
regenerate = false
@@ -73,32 +45,3 @@ export async function getHomePagePreviews(
);
}
-/* export async function getHomePagePreviews( siteDescription, regenerate ) {
- const baseUrl = onboardingRestURL( 'sitegen/get-homepages' );
-
- const queryParams = new URLSearchParams();
- if ( siteDescription !== undefined ) {
- queryParams.append( 'site_description', siteDescription );
- }
- if ( regenerate !== undefined ) {
- queryParams.append( 'regenerate', regenerate );
- }
-
- // Creating the full URL with query parameters
- const url = `${ baseUrl }&${ queryParams }`;
-
- console.log( 'Fetching URL:', url );
-
- try {
- const response = await fetch( url );
- if ( ! response.ok ) {
- throw new Error( `HTTP error! status: ${ response.status }` );
- }
- const data = await response.json();
- console.log( 'HomePage Previews:', data );
- return data;
- } catch ( error ) {
- console.error( 'Error fetching home page previews:', error );
- throw error;
- }
-} */
From ba544fbce7dff7af2d37829d406be9690aead733 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Fri, 1 Dec 2023 11:31:18 +0530
Subject: [PATCH 24/64] PRESS-1237 | fixed version dropdown
---
.../Header/components/SiteGenHeader/index.js | 15 ++--
src/OnboardingSPA/components/Header/index.js | 20 +++--
.../components/Header/stylesheet.scss | 16 +---
.../steps/SiteGen/Editor/Header/index.js | 2 +-
.../Editor/Header/step-navigation-center.js | 88 +++++++++----------
.../Editor/Header/step-navigation-left.js | 10 +--
.../steps/SiteGen/Editor/stylesheet.scss | 34 +++++++
src/OnboardingSPA/styles/app.scss | 1 +
8 files changed, 105 insertions(+), 81 deletions(-)
create mode 100644 src/OnboardingSPA/steps/SiteGen/Editor/stylesheet.scss
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
index ea070ca93..cdf54429b 100644
--- a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
+++ b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
@@ -37,7 +37,7 @@ const SiteGenHeader = () => {
path: currentStep?.path,
} );
const progress = ( currentStepIndex / allSteps.length ) * 100;
-
+
return (
<>
@@ -49,14 +49,13 @@ const SiteGenHeader = () => {
>
- { currentStep?.header
- ? isHeaderNavigationEnabled && ( )
+ { currentStep?.header
+ ? isHeaderNavigationEnabled &&
: isHeaderNavigationEnabled && (
-
-
-
- )
- }
+
+
+
+ ) }
>
);
};
diff --git a/src/OnboardingSPA/components/Header/index.js b/src/OnboardingSPA/components/Header/index.js
index 5950c1f4b..bd63551c1 100644
--- a/src/OnboardingSPA/components/Header/index.js
+++ b/src/OnboardingSPA/components/Header/index.js
@@ -1,6 +1,7 @@
import { Slot } from '@wordpress/components';
import { Fragment, Suspense } from '@wordpress/element';
import { useSelect } from '@wordpress/data';
+import classNames from 'classnames';
import { store as nfdOnboardingStore } from '../../store';
import {
@@ -8,20 +9,23 @@ import {
HEADER_END,
HEADER_START,
HEADER_TOP,
+ HEADER_SITEGEN,
} from '../../../constants';
const Header = () => {
- const { headers, headerActiveView, isHeaderEnabled } = useSelect(
- ( select ) => {
+ const { headers, headerActiveView, currentStep, isHeaderEnabled } =
+ useSelect( ( select ) => {
return {
+ currentStep: select( nfdOnboardingStore ).getCurrentStep(),
headers: select( nfdOnboardingStore ).getHeaders(),
headerActiveView:
select( nfdOnboardingStore ).getHeaderActiveView(),
isHeaderEnabled: select( nfdOnboardingStore ).isHeaderEnabled(),
};
- }
- );
-
+ } );
+ const isSiteGenEditor =
+ currentStep?.path === `/sitegen/step/editor` &&
+ headerActiveView === HEADER_SITEGEN;
return (
<>
}>
@@ -35,7 +39,11 @@ const Header = () => {
{ isHeaderEnabled && (
-
+
{
);
};
-export default memo( Header );
\ No newline at end of file
+export default memo( Header );
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
index 6aac3e83a..57d27ac8b 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
@@ -1,10 +1,9 @@
-import { Icon, chevronDown } from '@wordpress/icons';
+import { Icon, chevronDown, reusableBlock, settings } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
import { useViewportMatch } from '@wordpress/compose';
import { ReactComponent as FavouriteIcon } from '../../../../static/icons/sitegen/heart-stroked.svg';
-import { Button, Dropdown } from '@wordpress/components';
-import { useState } from '@wordpress/element';
+import { Dropdown, MenuGroup, MenuItem } from '@wordpress/components';
/**
* Centre Step buttons presented in Header.
@@ -12,83 +11,82 @@ import { useState } from '@wordpress/element';
* @return {WPComponent} StepNavigation Component
*/
const StepNavigationCenter = () => {
- const [isInputDisabled, setIsInputDisabled] = useState(true);
-
const isLargeViewport = useViewportMatch( 'medium' );
- const onTextChange = ( e ) => {
- e.preventDefault();
- setCustomerInput( e.target.value );
- };
-
-
- const TextInput = ( { customerInput, isDisabled } ) => {
- return (
- onTextChange( e ) }
- />
- );
- };
-
/**
* Version step Navigation button.
*
* @return {WPComponent} VersionButton Component
*/
- const VersionDropDown = ( ) => {
+ const VersionDropDownMenuItems = () => {
return (
-
- { !isLargeViewport ? <>Regenerate Customize >: '' }
- Rename
- View All
-
+
+ { ! isLargeViewport && (
+ <>
+ {} }>
+
+ { __( 'Regenrate', 'wp-module-onboarding' ) }
+
+ {} }>
+
+ { __( 'Customize', 'wp-module-onboarding' ) }
+
+ >
+ ) }
+
+ {} }>
+ { __( 'Rename', 'wp-module-onboarding' ) }
+
+ {} }>
+ { __( 'View All', 'wp-module-onboarding' ) }
+
+
);
};
/**
* Version step Navigation button.
*
+ * @param root0
+ * @param root0.isInputDisabled
* @return {WPComponent} VersionButton Component
*/
- const VersionButton = ( {isInputDisabled} ) => {
+
+ const VersionButton = () => {
return (
(
{
+ if ( event.key === 'Enter' ) {
+ onToggle();
+ }
+ } }
>
-
- {
- if ( event.key === 'Enter' ) {
- onToggle();
- }
- } }
- />
+
+ { __( 'Version 1', 'wp-module-onboarding' ) }
+
+
) }
- renderContent={ () =>
- }
+ renderContent={ VersionDropDownMenuItems }
+ paddingSize="none"
/>
);
};
return (
-
+
);
};
-export default StepNavigationCenter;
\ No newline at end of file
+export default StepNavigationCenter;
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
index 01541bfb2..4c048bb73 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
@@ -5,8 +5,6 @@ import { __ } from '@wordpress/i18n';
import { useViewportMatch } from '@wordpress/compose';
import { store as nfdOnboardingStore } from '../../../../store';
-import classNames from 'classnames';
-
/**
* Step buttons presented in Header.
@@ -51,7 +49,7 @@ const StepNavigationLeft = () => {
}
} }
aria-label="Back"
- className='navigation-buttons-editor'
+ className="navigation-buttons-editor"
>
{ __( 'Back', 'wp-module-onboarding' ) }
@@ -61,7 +59,7 @@ const StepNavigationLeft = () => {
const Regenerate = () => {
const regenerate = () => {
- alert('regenerate');
+ alert( 'regenerate' );
};
return (
{
}
} }
aria-label="Regenerate"
- className='navigation-buttons-editor'
+ className="navigation-buttons-editor"
>
{ __( 'Regenerate', 'wp-module-onboarding' ) }
);
};
-
+
return (
Date: Fri, 1 Dec 2023 15:40:21 +0530
Subject: [PATCH 25/64] PRESS-1237 | fixed linting
---
.../Button/ButtonDark/stylesheet.scss | 4 ++--
.../components/Header/stylesheet.scss | 2 +-
.../stylesheet.scss | 9 ++++----
.../NewfoldInterfaceSkeleton/style.scss | 3 ++-
.../Editor/Header/step-navigation-left.js | 4 ++--
.../Editor/Header/step-navigation-right.js | 22 +++++++++----------
.../steps/SiteGen/Editor/index.js | 11 +++++-----
.../steps/SiteGen/Editor/stylesheet.scss | 2 --
.../steps/SiteGen/Preview/index.js | 4 ++--
.../steps/SiteGen/Preview/pattern.js | 3 ++-
10 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss b/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss
index b987e5f12..f3d98d096 100644
--- a/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss
+++ b/src/OnboardingSPA/components/Button/ButtonDark/stylesheet.scss
@@ -1,14 +1,14 @@
.nfd-onboarding-button {
+
&--dark {
background-color: var(--nfd-onboarding-navigation-back-background);
- // width: 74px;
height: 36px;
color: var(--nfd-onboarding-primary);
border-radius: 8px;
padding: 0, 13px, 0 13px;
&:hover {
- background-color: #ffffff;
+ background-color: #fff;
color: #272d30;
}
}
diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss
index afedcf475..afeb46882 100644
--- a/src/OnboardingSPA/components/Header/stylesheet.scss
+++ b/src/OnboardingSPA/components/Header/stylesheet.scss
@@ -121,7 +121,7 @@
border-radius: 6px;
&:hover {
- background-color: #ffffff;
+ background-color: #fff;
color: #272d30;
fill: #272d30;
}
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
index f28e46b93..c93484ff8 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
@@ -1,4 +1,3 @@
-
.live-preview-sitegen--selectable-card {
flex: 1;
width: 420px;
@@ -54,7 +53,7 @@
transition: 0.5s ease;
background-color: rgb(var(--wp-admin-theme-color-darker-10--rgb));
border-radius: 8px;
-
+
&__button {
fill: var(--nfd-onboarding-white);
font-size: 20px;
@@ -75,9 +74,9 @@
&-buttons {
padding-top: 20px;
- display: flex;
+ display: flex;
flex-direction: row;
- justify-content: space-between;
+ justify-content: space-between;
height: 40px;
&__button {
@@ -90,6 +89,6 @@
fill: var(--nfd-onboarding-primary);
cursor: pointer;
}
- }
+ }
}
}
diff --git a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss
index 03fb91668..ab2057105 100644
--- a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss
+++ b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss
@@ -32,7 +32,8 @@ html.nfd-interface-interface-skeleton__html-container {
}
}
- &.nfd-onboarding-skeleton--sitegen{
+ &.nfd-onboarding-skeleton--sitegen {
+
.is-fullscreen-mode & {
top: 0;
}
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
index 4c048bb73..8e566fa91 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-left.js
@@ -28,7 +28,7 @@ const StepNavigationLeft = () => {
*
* @return {WPComponent} Back Component
*/
- const Back = ( { path, showErrorDialog } ) => {
+ const Back = ( { path } ) => {
const { setNavErrorContinuePath } = useDispatch( nfdOnboardingStore );
const navigate = useNavigate();
const navigateBack = () => {
@@ -59,7 +59,7 @@ const StepNavigationLeft = () => {
const Regenerate = () => {
const regenerate = () => {
- alert( 'regenerate' );
+ // alert( 'regenerate' );
};
return (
{
+ // eslint-disable-next-line no-unused-vars
const { previousStep, showErrorDialog } = useSelect( ( select ) => {
return {
previousStep: select( nfdOnboardingStore ).getPreviousStep(),
@@ -24,13 +24,13 @@ const StepNavigationRight = () => {
/**
* Back step Navigation button.
*
- * @param {*} param0
+ * @param {Object} param0
*
* @return {WPComponent} Back Component
*/
- const Customize = ( ) => {
+ const Customize = () => {
const customize = () => {
- alert('customize');
+ // alert('customize');
};
return (
{
}
} }
aria-label="Customize"
- className='navigation-buttons-editor'
+ className="navigation-buttons-editor"
>
{ __( 'Customize', 'wp-module-onboarding' ) }
@@ -53,7 +53,7 @@ const StepNavigationRight = () => {
const Save = () => {
const save = () => {
- alert('save');
+ // alert( 'save' );
};
return (
{
}
} }
aria-label="Save"
- className='navigation-buttons-editor'
+ className="navigation-buttons-editor"
>
- { isLargeViewport ?
- __( 'Save & Continue', 'wp-module-onboarding' )
- : __( 'Next', 'wp-module-onboarding' ) }
+ { isLargeViewport
+ ? __( 'Save & Continue', 'wp-module-onboarding' )
+ : __( 'Next', 'wp-module-onboarding' ) }
);
};
-
+
return (
{ isLargeViewport ?
: '' }
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/index.js
index ef558ab32..85a2f2f3d 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/index.js
@@ -6,10 +6,11 @@ import { useDispatch } from '@wordpress/data';
import { store as nfdOnboardingStore } from '../../../store';
import { HEADER_SITEGEN } from '../../../../constants';
-import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
+// import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
import { LivePreview } from '../../../components/LivePreview';
-const pattern = "\n
\n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We're meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the \"Settings\" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency's Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n";
+const pattern =
+ '\n
\n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n';
const StepSiteGenEditor = () => {
const {
@@ -30,12 +31,12 @@ const StepSiteGenEditor = () => {
isCentered
className="nfd-onboarding-step--site-gen__editor"
>
- {/*
*/}
-
*/ }
+
+ />
);
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Editor/stylesheet.scss
index fe697ae98..00b7a63dd 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/stylesheet.scss
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/stylesheet.scss
@@ -30,5 +30,3 @@
}
}
}
-
-
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index d46b1b95c..a898486c4 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -30,11 +30,11 @@ const SiteGenPreview = () => {
} );
const onWishlistClick = () => {
- alert( 'wishlist' );
+ // alert( 'wishlist' );
};
const onRegenerateClick = () => {
- alert( 'regenerate' );
+ // alert( 'regenerate' );
};
const buildPreviews = () => {
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
index 9aabfff9d..9727e1245 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
@@ -1,3 +1,4 @@
-const pattern = "\n
\n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We're meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the \"Settings\" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency's Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n";
+const pattern =
+ '\n
\n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n';
export { pattern };
From fbf2c9764fa127fa7f01d1332b1cfcb520252778 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Mon, 4 Dec 2023 18:36:22 +0530
Subject: [PATCH 26/64] PRESS2-1237 | reverted to textInput and fixed linting
---
.../NewfoldInterfaceSkeleton/style.scss | 2 +-
.../SiteGen/Editor/Header/TextInput/index.js | 32 +++++++++++++++++
.../Editor/Header/step-navigation-center.js | 36 ++++++++++++-------
.../Editor/Header/step-navigation-right.js | 3 +-
.../steps/SiteGen/Editor/stylesheet.scss | 15 ++++++--
5 files changed, 70 insertions(+), 18 deletions(-)
diff --git a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss
index 6a20f5bbf..936096f25 100644
--- a/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss
+++ b/src/OnboardingSPA/components/NewfoldInterfaceSkeleton/style.scss
@@ -33,7 +33,7 @@ html.nfd-interface-interface-skeleton__html-container {
}
&.nfd-onboarding-skeleton--sitegen {
-
+
.is-fullscreen-mode & {
top: 0;
}
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js
index e69de29bb..571f64f6d 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/TextInput/index.js
@@ -0,0 +1,32 @@
+import { useRef, useEffect } from '@wordpress/element';
+
+const TextInputVersion = ( {
+ isInputDisabled,
+ versionName,
+ setVersionName,
+} ) => {
+ const inputRef = useRef( null );
+
+ useEffect( () => {
+ if ( ! isInputDisabled && inputRef.current ) {
+ inputRef.current.focus();
+ }
+ }, [ isInputDisabled ] );
+
+ const handleTextChange = ( e ) => {
+ setVersionName( e.target.value );
+ };
+
+ return (
+
+ );
+};
+
+export default TextInputVersion;
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
index 57d27ac8b..7c4d74bc6 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-center.js
@@ -2,8 +2,10 @@ import { Icon, chevronDown, reusableBlock, settings } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
import { useViewportMatch } from '@wordpress/compose';
+import { useState } from '@wordpress/element';
import { ReactComponent as FavouriteIcon } from '../../../../static/icons/sitegen/heart-stroked.svg';
import { Dropdown, MenuGroup, MenuItem } from '@wordpress/components';
+import TextInputVersion from './TextInput';
/**
* Centre Step buttons presented in Header.
@@ -11,8 +13,14 @@ import { Dropdown, MenuGroup, MenuItem } from '@wordpress/components';
* @return {WPComponent} StepNavigation Component
*/
const StepNavigationCenter = () => {
+ const [ isInputDisabled, setIsInputDisabled ] = useState( true );
+ const [ versionName, setVersionName ] = useState( 'Version 1' );
const isLargeViewport = useViewportMatch( 'medium' );
+ const handleRenameClick = () => {
+ setIsInputDisabled( false );
+ };
+
/**
* Version step Navigation button.
*
@@ -34,7 +42,7 @@ const StepNavigationCenter = () => {
>
) }
- {} }>
+
{ __( 'Rename', 'wp-module-onboarding' ) }
{} }>
@@ -62,18 +70,22 @@ const StepNavigationCenter = () => {
aria-expanded={ isOpen }
aria-label="Regenerate"
className="navigation-buttons-editor"
- onClick={ onToggle }
- onKeyDown={ ( event ) => {
- if ( event.key === 'Enter' ) {
- onToggle();
- }
- } }
>
-
- { __( 'Version 1', 'wp-module-onboarding' ) }
-
-
+
+ {
+ if ( event.key === 'Enter' ) {
+ onToggle();
+ }
+ } }
+ />
) }
renderContent={ VersionDropDownMenuItems }
@@ -84,7 +96,7 @@ const StepNavigationCenter = () => {
return (
-
+
);
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
index 0ab8b2980..3163d7656 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/Header/step-navigation-right.js
@@ -24,7 +24,6 @@ const StepNavigationRight = () => {
/**
* Back step Navigation button.
*
- * @param {Object} param0
*
* @return {WPComponent} Back Component
*/
@@ -53,7 +52,7 @@ const StepNavigationRight = () => {
const Save = () => {
const save = () => {
- // alert( 'save' );
+ // alert( 'save' );
};
return (
Date: Tue, 5 Dec 2023 15:27:59 +0530
Subject: [PATCH 27/64] PRESS2-1262 | added animation
---
.../steps/SiteGen/Preview/heartAnimation.js | 22 +++++++++++
.../steps/SiteGen/Preview/index.js | 4 +-
.../steps/SiteGen/Preview/stylesheet.scss | 39 +++++++++++++++++++
src/OnboardingSPA/styles/_branding.scss | 4 ++
4 files changed, 67 insertions(+), 2 deletions(-)
create mode 100644 src/OnboardingSPA/steps/SiteGen/Preview/heartAnimation.js
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/heartAnimation.js b/src/OnboardingSPA/steps/SiteGen/Preview/heartAnimation.js
new file mode 100644
index 000000000..ea5d1c430
--- /dev/null
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/heartAnimation.js
@@ -0,0 +1,22 @@
+const HeartAnimation = () => {
+ return (
+
+
+
+
+
+ );
+};
+
+export default HeartAnimation;
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 440da5624..515bc7975 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -12,7 +12,7 @@ import { SiteGenLivePreview } from '../../../components/LivePreview';
//import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
import getContents from './contents';
import { pattern } from './pattern';
-import { ReactComponent as FavouriteIcon } from '../../../static/icons/sitegen/heart-stroked.svg';
+import HeartAnimation from './heartAnimation';
import { getHomePagePreviews } from '../../../utils/api/siteGen';
@@ -108,7 +108,7 @@ const SiteGenPreview = () => {
{ buildPreviews() }
-
+
{ content.favouriteNote }
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
index 431312520..a5311880f 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
@@ -70,4 +70,43 @@
border-radius: 12px;
margin-bottom: 60px;
}
+
+ @keyframes heartBeat {
+
+ 0%,
+ 100% {
+ fill: transparent;
+ transform: scale(1);
+ transform-origin: center;
+ }
+
+ 33%,
+ 66% {
+ fill: var(--nfd-onboarding-heart-icon-fill);
+ transform: scale(1.1);
+ transform-origin: center;
+ }
+
+ 67% {
+ fill: var(--nfd-onboarding-heart-icon-fill);
+ transform: scale(1.3);
+ transform-origin: center;
+ }
+
+ 87% {
+ fill: var(--nfd-onboarding-heart-icon-fill);
+ transform: scale(1.1);
+ transform-origin: center;
+ }
+ }
+
+ .heart {
+ stroke: var(--nfd-onboarding-heart-icon-stroke);
+ stroke-width: 2px;
+ }
+
+ .heart path {
+ animation: heartBeat 4s infinite;
+ }
+
}
diff --git a/src/OnboardingSPA/styles/_branding.scss b/src/OnboardingSPA/styles/_branding.scss
index 0f780ff8e..657fac00e 100644
--- a/src/OnboardingSPA/styles/_branding.scss
+++ b/src/OnboardingSPA/styles/_branding.scss
@@ -318,6 +318,8 @@ body {
--nfd-onboarding-site-logo-border: var(--nfd-onboarding-primary);
--nfd-onboarding-header-border: rgba(var(--nfd-onboarding-primary-rgb), 0.3);
--nfd-onboarding-card-overlay: rgba(0, 0, 0, 0.4);
+ --nfd-onboarding-heart-icon-fill:#EF4A71;
+ --nfd-onboarding-heart-icon-stroke:#9CA2A7;
}
.nfd-onboarding-sitegen-dark {
@@ -337,5 +339,7 @@ body {
--nfd-onboarding-site-logo-border: rgba(156, 162, 167, 1);
--nfd-onboarding-header-border: rgba(var(--nfd-onboarding-primary-rgb), 0.3);
--nfd-onboarding-card-overlay: rgba(0, 0, 0, 0.4);
+ --nfd-onboarding-heart-icon-fill:#EF4A71;
+ --nfd-onboarding-heart-icon-stroke:#9CA2A7;
}
}
From e7a91c5f3628a2b3be453121b96a4a47b9f196f0 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Tue, 5 Dec 2023 19:33:11 +0530
Subject: [PATCH 28/64] PRESS2-1237 | changed classname logic for editor header
---
.../components/Header/components/SiteGenHeader/index.js | 5 ++---
src/OnboardingSPA/components/Header/index.js | 7 ++-----
src/OnboardingSPA/steps/SiteGen/Editor/step.js | 5 ++++-
3 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
index cdf54429b..df5b3e2ee 100644
--- a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
+++ b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
@@ -37,7 +37,6 @@ const SiteGenHeader = () => {
path: currentStep?.path,
} );
const progress = ( currentStepIndex / allSteps.length ) * 100;
-
return (
<>
@@ -49,8 +48,8 @@ const SiteGenHeader = () => {
>
- { currentStep?.header
- ? isHeaderNavigationEnabled &&
+ { currentStep?.header?.component
+ ? isHeaderNavigationEnabled &&
: isHeaderNavigationEnabled && (
diff --git a/src/OnboardingSPA/components/Header/index.js b/src/OnboardingSPA/components/Header/index.js
index bd63551c1..a20ff71dd 100644
--- a/src/OnboardingSPA/components/Header/index.js
+++ b/src/OnboardingSPA/components/Header/index.js
@@ -9,7 +9,6 @@ import {
HEADER_END,
HEADER_START,
HEADER_TOP,
- HEADER_SITEGEN,
} from '../../../constants';
const Header = () => {
@@ -23,9 +22,6 @@ const Header = () => {
isHeaderEnabled: select( nfdOnboardingStore ).isHeaderEnabled(),
};
} );
- const isSiteGenEditor =
- currentStep?.path === `/sitegen/step/editor` &&
- headerActiveView === HEADER_SITEGEN;
return (
<>
}>
@@ -41,7 +37,8 @@ const Header = () => {
{ isHeaderEnabled && (
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/step.js b/src/OnboardingSPA/steps/SiteGen/Editor/step.js
index dc1524253..e1430cd7b 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/step.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/step.js
@@ -11,7 +11,10 @@ export const stepSiteGenEditor = new Step( {
title: __( 'Page Layouts', 'wp-module-onboarding' ),
Component: StepSiteGenEditor,
icon: copy,
- header: Header,
+ header: {
+ component: Header,
+ customClassName: 'nfd-onboarding-header-sg-editor',
+ },
sidebars: {
LearnMore: {
SidebarComponents: [],
From 3b7bd296900b6824b6de2a65eb138383615440f9 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Wed, 6 Dec 2023 14:17:38 +0530
Subject: [PATCH 29/64] PRESS2-1262 | regenrating card
---
.../Header/components/SiteGenHeader/index.js | 15 ++-
.../SiteGenPreviewSelectableCard/index.js | 20 ++-
.../stylesheet.scss | 2 +-
.../steps/SiteGen/Preview/index.js | 62 +++++----
.../steps/SiteGen/Preview/pattern.js | 118 +++++++++++++++++-
.../steps/SiteGen/Preview/regeneratingCard.js | 17 +++
.../steps/SiteGen/Preview/stylesheet.scss | 42 +++++++
7 files changed, 232 insertions(+), 44 deletions(-)
create mode 100644 src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js
diff --git a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
index ea070ca93..cdf54429b 100644
--- a/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
+++ b/src/OnboardingSPA/components/Header/components/SiteGenHeader/index.js
@@ -37,7 +37,7 @@ const SiteGenHeader = () => {
path: currentStep?.path,
} );
const progress = ( currentStepIndex / allSteps.length ) * 100;
-
+
return (
<>
@@ -49,14 +49,13 @@ const SiteGenHeader = () => {
>
- { currentStep?.header
- ? isHeaderNavigationEnabled && ( )
+ { currentStep?.header
+ ? isHeaderNavigationEnabled &&
: isHeaderNavigationEnabled && (
-
-
-
- )
- }
+
+
+
+ ) }
>
);
};
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index 960f36bb9..66f7b8a90 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -1,8 +1,11 @@
+/* eslint-disable jsx-a11y/no-static-element-interactions */
import { search, Icon, reusableBlock } from '@wordpress/icons';
import { useState } from '@wordpress/element';
-
+import { useNavigate } from 'react-router-dom';
+import { useSelect } from '@wordpress/data';
import { LivePreview } from '..';
import Button from '../../../components/Button';
+import { store as nfdOnboardingStore } from '../../../store';
import { ReactComponent as FavouriteIconStroked } from '../../../static/icons/sitegen/heart-stroked.svg';
import { ReactComponent as FavouriteIconFilled } from '../../../static/icons/sitegen/heart-filled.svg';
import { __ } from '@wordpress/i18n';
@@ -22,6 +25,13 @@ const SiteGenPreviewSelectableCard = ( {
} ) => {
const [ loadingParent, setIsLoadingParent ] = useState( true );
+ const navigate = useNavigate();
+ const { nextStep } = useSelect( ( select ) => {
+ return {
+ nextStep: select( nfdOnboardingStore ).getNextStep(),
+ };
+ } );
+
return (
{
+ navigate( nextStep.path );
+ } }
+ onKeyDown={ ( event ) => {
+ if ( event.key === 'Enter' ) {
+ navigate( nextStep.path );
+ }
+ } }
>
{
setDrawerActiveView( false );
}, [ currentData ] );
+ const [ isRegenerating, setIsRegenerating ] = useState( false );
+
const onWishlistClick = () => {
alert( 'wishlist' );
};
const onRegenerateClick = () => {
- // alert( 'regenerate' );
+ console.log("regenerate clicked");
+ setIsRegenerating( true );
};
const buildPreviews = () => {
- const designs = [ pattern, pattern, pattern ];
+ const designs = isRegenerating
+ ? [ ]
+ : [];
+ // const designs = pattern; // [ pattern, pattern, pattern ];
- const navigate = useNavigate();
- const { nextStep } = useSelect( ( select ) => {
- return {
- nextStep: select( nfdOnboardingStore ).getNextStep(),
- };
- } );
+ designs.push(
+ ...pattern.map( ( design, idx ) => {
+ return (
+
+ );
+ } )
+ );
- return designs.map( ( design, idx ) => {
- return (
- {
- navigate( nextStep.path );
- } }
- onKeyDown={ ( event ) => {
- if ( event.key === 'Enter' ) {
- navigate( nextStep.path );
- }
- } }
- onWishlistClick={ onWishlistClick }
- isFavourite={ true }
- onRegenerateClick={ onRegenerateClick }
- tabIndex="0"
- role="button"
- />
- );
- } );
+ return designs;
};
const content = getContents();
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
index 9aabfff9d..635ee083d 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
@@ -1,3 +1,119 @@
-const pattern = "\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We're meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the \"Settings\" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency's Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n";
+/* const pattern =
+ '\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n';
+ */
+const pattern1 = `
+
+
+
+
Our Services
+
+
+
Discover our range of services tailored to your needs.
+
+
+
+
+
+
+
+
+
+
+
+
+
Quality Assurance
+
+
+
Ensuring the highest standards in everything we do.
+
+
+
+
+
+
+
Innovative Solutions
+
+
+
Creative and effective approaches to solve your challenges.
+
+
+
+
+
+
+
Customer Support
+
+
+
Professional assistance whenever you need it.
+
+
+
+
+
+
+
+ "Exceeding expectations with excellence and innovation."
+
+
+
+
+`;
+
+const pattern2 = `
+
+
+
+
+
+
+
Innovative Solutions for Modern Challenges
+
+
+
+ `;
+const pattern3 = `
+
+
+
+
+
+
Strategy
+
+
+
Our strategic approach to business growth.
+
+
+
+
+
+
+
Execution
+
+
+
Implementing effective solutions efficiently.
+
+
+
+
+
+
+
Results
+
+
+
Achieving tangible and measurable outcomes.
+
+
+
+
+
+`;
+const pattern = [ pattern1, pattern2, pattern3, pattern1, pattern3, pattern2 ];
export { pattern };
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js b/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js
new file mode 100644
index 000000000..af29d4191
--- /dev/null
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js
@@ -0,0 +1,17 @@
+import { __ } from '@wordpress/i18n';
+
+function RegeneratingSiteCard( { progress } ) {
+ return (
+
+
{ __( 'Regenerating Site', 'text-domain' ) }
+
+
+ );
+}
+
+export default RegeneratingSiteCard;
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
index a5311880f..265811d58 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
@@ -53,6 +53,8 @@
flex-direction: row;
text-align: center;
margin: 10px 10px 55px 10px;
+ flex-wrap: wrap;
+ max-width: 1440px;
}
&__note {
@@ -110,3 +112,43 @@
}
}
+
+// Define your color variables
+$progress-bar-background-color: rgba(53, 58, 64, 1);
+
+$progress-bar-filled-color: #0060F0;
+; // Blue progress bar
+
+.regenerating-site-card {
+ width: 420px;
+ height: 315px;
+ border-radius: 20px;
+ background-color: rgba(53, 58, 64, 0.1);
+ color: #fff;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ text-align: center;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ border: 1px solid rgba(255, 255, 255, 0.1);
+
+ h3{
+ color:#fff;
+ }
+
+ .progress-bar {
+ width: 90%;
+ background: $progress-bar-background-color;
+ border-radius: 4px;
+ height: 8px;
+ overflow: hidden; // This keeps the child `div` within the parent's border-radius
+
+ &__fill {
+ background: $progress-bar-filled-color;
+ height: 100%;
+ transition: width 0.3s ease; // Smooth transition for the progress bar width
+ }
+ }
+}
+
From 8263c55d6d09ced5c558985d81155f95b4d2c236 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Wed, 6 Dec 2023 16:26:27 +0530
Subject: [PATCH 30/64] PRESS2-1262 | add regenerating screen
---
.../steps/SiteGen/Preview/index.js | 1 -
.../steps/SiteGen/Preview/regeneratingCard.js | 25 ++++--
.../steps/SiteGen/Preview/stylesheet.scss | 78 ++++++++++---------
src/OnboardingSPA/styles/_branding.scss | 2 +
4 files changed, 61 insertions(+), 45 deletions(-)
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 730b4baad..ef2f8c350 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -1,6 +1,5 @@
/* eslint-disable react/jsx-key */
/* eslint-disable react-hooks/rules-of-hooks */
-/* eslint-disable no-alert */
import CommonLayout from '../../../components/Layouts/Common';
import { useEffect, useState } from '@wordpress/element';
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js b/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js
index af29d4191..6b1765787 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js
@@ -1,14 +1,23 @@
import { __ } from '@wordpress/i18n';
+import { ReactComponent as FavouriteIconStroked } from '../../../static/icons/sitegen/heart-stroked.svg';
-function RegeneratingSiteCard( { progress } ) {
+function RegeneratingSiteCard( { previewVersion, progress } ) {
return (
-
-
{ __( 'Regenerating Site', 'text-domain' ) }
-
-
+
+
+
+ { __( 'Regenerating Site', 'wp-module-onboarding' ) }
+
+
+
+
+
+ { __( 'version0-1_copy', 'wp-module-onboarding' ) }
);
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
index 265811d58..23825fcf9 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
@@ -113,42 +113,48 @@
}
-// Define your color variables
-$progress-bar-background-color: rgba(53, 58, 64, 1);
-
-$progress-bar-filled-color: #0060F0;
-; // Blue progress bar
-
-.regenerating-site-card {
- width: 420px;
- height: 315px;
- border-radius: 20px;
- background-color: rgba(53, 58, 64, 0.1);
- color: #fff;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- text-align: center;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- border: 1px solid rgba(255, 255, 255, 0.1);
-
- h3{
- color:#fff;
+.regenerating-site-card-wrap {
+ padding: 20px;
+
+ .regenerating-site-card {
+ width: 420px;
+ height: 315px;
+ border-radius: 20px;
+ background-color: var(--nfd-onboarding-regenerating-card-background);
+ text-align: center;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ border: 1px solid rgba(var(--nfd-onboarding-primary-rgb), 0.2);
+ margin-bottom: 20px;
+ padding: 60px;
+ box-sizing: border-box;
+
+ &__title {
+ color: var(--nfd-onboarding-primary);
+ }
+
+ &__progress-bar {
+ width: 100%;
+ background: var(--nfd-onboarding-progress-bar-background);
+ border-radius: 4px;
+ height: 8px;
+ overflow: hidden;
+
+ &__fill {
+ background: var(--nfd-onboarding-progress-bar-fill);
+ height: 100%;
+ transition: width 0.3s ease;
+ }
+ }
}
- .progress-bar {
- width: 90%;
- background: $progress-bar-background-color;
- border-radius: 4px;
- height: 8px;
- overflow: hidden; // This keeps the child `div` within the parent's border-radius
-
- &__fill {
- background: $progress-bar-filled-color;
- height: 100%;
- transition: width 0.3s ease; // Smooth transition for the progress bar width
- }
- }
+ .regenerating-site-card__version {
+ text-align: left;
+ color: var(--nfd-onboarding-primary);
+ font-size: 18px;
+ display: flex;
+ gap: 8px;
+ }
}
-
diff --git a/src/OnboardingSPA/styles/_branding.scss b/src/OnboardingSPA/styles/_branding.scss
index 3caf70a4f..a0e82548b 100644
--- a/src/OnboardingSPA/styles/_branding.scss
+++ b/src/OnboardingSPA/styles/_branding.scss
@@ -322,6 +322,7 @@ body {
--nfd-onboarding-card-overlay: rgba(0, 0, 0, 0.4);
--nfd-onboarding-heart-icon-fill:#EF4A71;
--nfd-onboarding-heart-icon-stroke:#9CA2A7;
+ --nfd-onboarding-regenerating-card-background: rgba(53, 58, 64, 0.1);
}
.nfd-onboarding-sitegen-dark {
@@ -344,5 +345,6 @@ body {
--nfd-onboarding-heart-icon-fill:#EF4A71;
--nfd-onboarding-heart-icon-stroke:#9CA2A7;
--sitegen-background: url(../static/images/ai_bg.png);
+ --nfd-onboarding-regenerating-card-background: rgba(53, 58, 64, 0.1);
}
}
From 1171b2dfcf8eb120a46bfb5654bccf95aecafa1d Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Wed, 6 Dec 2023 18:13:32 +0530
Subject: [PATCH 31/64] PRESS2-1262 |
---
includes/RestApi/SiteGenController.php | 2 +-
.../steps/SiteGen/Preview/index.js | 7 ++++--
src/OnboardingSPA/steps/SiteGen/data.json | 24 +++++++++++++++++++
3 files changed, 30 insertions(+), 3 deletions(-)
create mode 100644 src/OnboardingSPA/steps/SiteGen/data.json
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index 7c49ab5c6..25ef721ea 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -54,7 +54,7 @@ public function register_routes() {
$this->namespace,
$this->rest_base . '/get-homepages',
array(
- 'methods' => \WP_REST_Server::READABLE,
+ 'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this, 'get_homepages' ),
'permission_callback' => '__return_true',
'args' => $this->get_homepages_args(),
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index ef2f8c350..230cc77d9 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -15,8 +15,10 @@ import HeartAnimation from './heartAnimation';
import RegeneratingSiteCard from './regeneratingCard';
import { getHomePagePreviews } from '../../../utils/api/siteGen';
+import homepageData from '../data.json';
const SiteGenPreview = () => {
+ const [ homepages, setHomepages ] = useState( { active: {}, data: [] } );
const {
setIsHeaderEnabled,
setSidebarActiveView,
@@ -38,6 +40,7 @@ const SiteGenPreview = () => {
false
);
}
+ setHomepages( homepageData.homepages );
setIsHeaderEnabled( true );
setSidebarActiveView( false );
setHeaderActiveView( HEADER_SITEGEN );
@@ -51,10 +54,10 @@ const SiteGenPreview = () => {
};
const onRegenerateClick = () => {
- console.log("regenerate clicked");
+ console.log( 'HOme pages', homepages );
+ console.log( 'regenerate clicked' );
setIsRegenerating( true );
};
-
const buildPreviews = () => {
const designs = isRegenerating
? [ ]
diff --git a/src/OnboardingSPA/steps/SiteGen/data.json b/src/OnboardingSPA/steps/SiteGen/data.json
new file mode 100644
index 000000000..4b5150306
--- /dev/null
+++ b/src/OnboardingSPA/steps/SiteGen/data.json
@@ -0,0 +1,24 @@
+{
+ "homepages": {
+ "active": {
+ "slug": "currenthash1",
+ "title": "Active Version",
+ "favorite": true,
+ "content": "hello"
+ },
+ "data": [
+ {
+ "slug": "hash1",
+ "title": "Version 1",
+ "favorite": false,
+ "content": "Hello 1"
+ },
+ {
+ "slug": "hash2",
+ "title": "Version 2",
+ "favorite": true,
+ "content": "hello 3"
+ }
+ ]
+ }
+}
From a497959375d420709a7f20f7534a043c15309fbd Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Thu, 7 Dec 2023 02:51:23 +0530
Subject: [PATCH 32/64] PRESS2-1262 | added to store
---
.../steps/SiteGen/Editor/index.js | 18 +-
.../steps/SiteGen/Preview/index.js | 20 +-
.../steps/SiteGen/Preview/pattern.js | 750 +++++++++++++++---
src/OnboardingSPA/steps/SiteGen/data.json | 12 +-
src/OnboardingSPA/store/actions.js | 7 +
src/OnboardingSPA/store/reducer.js | 21 +
src/OnboardingSPA/store/selectors.js | 10 +
7 files changed, 707 insertions(+), 131 deletions(-)
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/index.js
index ef558ab32..75cdddbc0 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/index.js
@@ -2,14 +2,15 @@ import CommonLayout from '../../../components/Layouts/Common';
import { useEffect } from '@wordpress/element';
-import { useDispatch } from '@wordpress/data';
+import { useDispatch, useSelect } from '@wordpress/data';
import { store as nfdOnboardingStore } from '../../../store';
import { HEADER_SITEGEN } from '../../../../constants';
import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
import { LivePreview } from '../../../components/LivePreview';
-const pattern = "\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We're meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the \"Settings\" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency's Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n";
+const pattern =
+ '\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n';
const StepSiteGenEditor = () => {
const {
@@ -19,6 +20,13 @@ const StepSiteGenEditor = () => {
setDrawerActiveView,
} = useDispatch( nfdOnboardingStore );
+ const homepages = useSelect(
+ ( select ) => select( nfdOnboardingStore ).getHomepagesData(),
+ []
+ );
+
+ console.log( 'Home pages', homepages );
+
useEffect( () => {
setIsHeaderEnabled( true );
setSidebarActiveView( false );
@@ -30,12 +38,12 @@ const StepSiteGenEditor = () => {
isCentered
className="nfd-onboarding-step--site-gen__editor"
>
- {/* */}
- */ }
+
+ />
);
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 230cc77d9..41593bd28 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -10,20 +10,20 @@ import { HEADER_SITEGEN } from '../../../../constants';
import { SiteGenLivePreview } from '../../../components/LivePreview';
//import SiteGenPlaceholder from '../../../components/SiteGenPlaceholder';
import getContents from './contents';
-import { pattern } from './pattern';
+import { homepageData } from './pattern';
import HeartAnimation from './heartAnimation';
import RegeneratingSiteCard from './regeneratingCard';
import { getHomePagePreviews } from '../../../utils/api/siteGen';
-import homepageData from '../data.json';
const SiteGenPreview = () => {
- const [ homepages, setHomepages ] = useState( { active: {}, data: [] } );
+ // const [ homepages, setHomepages ] = useState( { active: {}, data: [] } );
const {
setIsHeaderEnabled,
setSidebarActiveView,
setHeaderActiveView,
setDrawerActiveView,
+ setHomepagesData,
} = useDispatch( nfdOnboardingStore );
const { currentData } = useSelect( ( select ) => {
@@ -40,11 +40,12 @@ const SiteGenPreview = () => {
false
);
}
- setHomepages( homepageData.homepages );
+ // setHomepages( homepageData.homepages );
setIsHeaderEnabled( true );
setSidebarActiveView( false );
setHeaderActiveView( HEADER_SITEGEN );
setDrawerActiveView( false );
+ setHomepagesData( homepageData );
}, [ currentData ] );
const [ isRegenerating, setIsRegenerating ] = useState( false );
@@ -53,9 +54,8 @@ const SiteGenPreview = () => {
alert( 'wishlist' );
};
+ // console.log( 'HOme pages', JSON.parse( JSON.stringify( homepages ) ) );
const onRegenerateClick = () => {
- console.log( 'HOme pages', homepages );
- console.log( 'regenerate clicked' );
setIsRegenerating( true );
};
const buildPreviews = () => {
@@ -63,13 +63,13 @@ const SiteGenPreview = () => {
? [ ]
: [];
// const designs = pattern; // [ pattern, pattern, pattern ];
-
+ // console.log(homepageData.homepages.data);
designs.push(
- ...pattern.map( ( design, idx ) => {
+ ...homepageData.homepages.data.map( ( design, idx ) => {
return (
{
onRegenerateClick={ onRegenerateClick }
tabIndex="0"
role="button"
+ version={ design.version }
+ slug={ design.slug }
/>
);
} )
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
index 635ee083d..9af62a5aa 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
@@ -1,119 +1,641 @@
-/* const pattern =
- '\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n';
- */
-
-const pattern1 = `
-
-
-
-
Our Services
-
-
-
Discover our range of services tailored to your needs.
-
-
-
-
-
-
-
-
-
-
-
-
-
Quality Assurance
-
-
-
Ensuring the highest standards in everything we do.
-
-
-
-
-
-
-
Innovative Solutions
-
-
-
Creative and effective approaches to solve your challenges.
-
-
-
-
-
-
-
Customer Support
-
-
-
Professional assistance whenever you need it.
-
-
-
-
-
-
-
- "Exceeding expectations with excellence and innovation."
-
-
-
-
-`;
+const pattern1 = `\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n`;
const pattern2 = `
-
-
-
-
-
-
-
Innovative Solutions for Modern Challenges
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
Home
+
+
+
+
About
+
+
+
+
Services
+
+
+
+
Blog
+
+
+
+
Contact
+
+
+
+
+
+
+
+
+
+
+
+
Lorem ipsum dolor sit amet, sitelit.
+
+
+
+
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
About Us
+
+
+
+
It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).
+
+
+
+
+
+
+
+
+
Try Premium for free
+
+
+
+
We provide 15 days trial to all the users willing to try Rara permium services.
+
+
+
+
+
+
+
+
+
+
+
Client’s Logo Section
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Subscribe Newsletter
+
+
+
+
+
+
FOLLow US
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+const pattern3 = `
+
+
+
Travelling on a shoestring
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
10
+
+
+
+
Years of Experience
+
+
+
+
We love Travelling
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+
+
+
+
+
+
+
Travelling is art on the move
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+
+
+
+
+
+
+
+
+
Your adventure begins here
+
+
+
+
+
+
+
+
Numbers speak for themselves
+
+
+
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
+
+
+
+
+
+
+
+
+
62
+
+
+
+Countries Visited
+
+
+
+
+
+
134
+
+
+
+Adventure Trips
+
+
+
+
+
+
1500
+
+
+
+Happy Customers
+
+
+
+
+
+
+
+
+
+
+
+
Our experienced travel agents are dedicated to providing top-quality service!
+
+
+
+
+
+
+
+
+
+
CONTACT
+
+
+
+
100 Main Street, Cape Town, 10278
+
+
+
+
0800 1234 1234
+
+
+
+
mail@example.com
+
+
+
+
+
+
+
+
+
+
+
+
+
`;
-const pattern3 = `
-
-
-
-
-
-
Strategy
-
-
-
Our strategic approach to business growth.
-
-
-
-
-
-
-
Execution
-
-
-
Implementing effective solutions efficiently.
-
-
-
-
-
-
-
Results
-
-
-
Achieving tangible and measurable outcomes.
-
-
-
-
+
+const pattern4 = `
+
+
+
+
+
+
+
+
+
+
+
Home
+
+
+
+
About
+
+
+
+
Team
+
+
+
+
Blog
+
+
+
+
Contact Us
+
+
+
+
+
+
+
+
+
+
+
+
+
WP Support
+
+
+
+
Empowering Your WordPress Journey?
+
+
+
+
Welcome to WordPress Team, your go-to resource for all things WordPress. Our dedicated team of experts is passionate about empowering WordPress enthusiasts like you. Whether you're a beginner or an experienced user, we're here to provide valuable insights, tips, and tutorials to help you make the most out of your WordPress journey.
+
+
+
+
+
+
+
+
+
+
+
+
wordpress
+
+
+
+
WordPress is open source software you can use to create a beautiful website, blog, or app.Beautiful designs, powerful features, and the freedom to build anything you want. WordPress is both free and priceless at the same time.
+
+
+
+
Email us - simple@gmail.com
+
+
+
+
+
+
Quick Link
+
+
+
+
Home
+
+
+
+
About Us
+
+
+
+
Shop
+
+
+
+
Team
+
+
+
+
Blog
+
+
+
+
Contact Us
+
+
+
+
+
+
Products
+
+
+
+
Home
+
+
+
+
About Us
+
+
+
+
Shop
+
+
+
+
Services
+
+
+
+
Blog
+
+
+
+
Contact Us
+
+
+
+
+
+
Subscribe Newsletter
+
+
+
+
Join 1,933,300 other subscribers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Copyright © 2023 wordpress.org
+
+
+
+
`;
-const pattern = [ pattern1, pattern2, pattern3, pattern1, pattern3, pattern2 ];
-export { pattern };
+// const pattern = [ pattern1, pattern2, pattern3, pattern1, pattern3, pattern2 ];
+
+const homepageData = {
+ homepages: {
+ active: {
+ slug: 'hash1',
+ title: 'Version 1',
+ favorite: true,
+ content: pattern1,
+ },
+ data: [
+ {
+ slug: 'hash1',
+ title: 'Version 1',
+ favorite: false,
+ content: pattern1,
+ },
+ {
+ slug: 'hash2',
+ title: 'Version 2',
+ favorite: true,
+ content: pattern2,
+ },
+ {
+ slug: 'hash2',
+ title: 'Version 2',
+ favorite: true,
+ content: pattern3,
+ },
+ {
+ slug: 'hash2',
+ title: 'Version 2',
+ favorite: true,
+ content: pattern4,
+ },
+ ],
+ },
+};
+
+export { homepageData };
diff --git a/src/OnboardingSPA/steps/SiteGen/data.json b/src/OnboardingSPA/steps/SiteGen/data.json
index 4b5150306..a1d9ae8de 100644
--- a/src/OnboardingSPA/steps/SiteGen/data.json
+++ b/src/OnboardingSPA/steps/SiteGen/data.json
@@ -4,20 +4,26 @@
"slug": "currenthash1",
"title": "Active Version",
"favorite": true,
- "content": "hello"
+ "content": "\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n",
},
"data": [
{
"slug": "hash1",
"title": "Version 1",
"favorite": false,
- "content": "Hello 1"
+ "content": "\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n",
},
{
"slug": "hash2",
"title": "Version 2",
"favorite": true,
- "content": "hello 3"
+ "content": "\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n",
+ },
+ {
+ "slug": "hash3",
+ "title": "Version 3",
+ "favorite": true,
+ "content": "\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n",
}
]
}
diff --git a/src/OnboardingSPA/store/actions.js b/src/OnboardingSPA/store/actions.js
index da6ae43d5..ac2671896 100644
--- a/src/OnboardingSPA/store/actions.js
+++ b/src/OnboardingSPA/store/actions.js
@@ -284,3 +284,10 @@ export function resetNavError() {
type: 'RESET_NAV_ERROR',
};
}
+
+export const setHomepagesData = ( homepagesData ) => {
+ return {
+ type: 'SET_HOMEPAGES_DATA',
+ homepagesData,
+ };
+};
diff --git a/src/OnboardingSPA/store/reducer.js b/src/OnboardingSPA/store/reducer.js
index e475ad0e2..af2bef54f 100644
--- a/src/OnboardingSPA/store/reducer.js
+++ b/src/OnboardingSPA/store/reducer.js
@@ -323,6 +323,26 @@ export function footer(
return state;
}
+const initialhomepagesState = {
+ homepagess: {
+ active: {},
+ data: [],
+ },
+};
+
+export function homepagesData( state = initialhomepagesState, action ) {
+ switch ( action.type ) {
+ case 'SET_HOMEPAGES_DATA':
+ return {
+ ...state,
+ homepages: action.homepagesData,
+ };
+
+ default:
+ return state;
+ }
+}
+
export default combineReducers( {
drawer,
runtime,
@@ -333,4 +353,5 @@ export default combineReducers( {
header,
footer,
queue,
+ homepagesData,
} );
diff --git a/src/OnboardingSPA/store/selectors.js b/src/OnboardingSPA/store/selectors.js
index 1df9bb30e..d9cfd7cb3 100644
--- a/src/OnboardingSPA/store/selectors.js
+++ b/src/OnboardingSPA/store/selectors.js
@@ -426,3 +426,13 @@ export function getCurrentUserDetails( state ) {
const currentUserInfo = state.runtime.currentUserDetails;
return currentUserInfo;
}
+
+/**
+ * Gets homepages
+ *
+ * @param {*} state
+ * @return {Object} homepages
+ */
+export const getHomepagesData = ( state ) => {
+ return state.homepagesData.homepages;
+};
From f84602b32c16b824e87bd9ff3baf0387f92b0662 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Thu, 7 Dec 2023 04:55:11 +0530
Subject: [PATCH 33/64] PRESS2-1262 | added designs
---
src/OnboardingSPA/components/Button/index.js | 6 +++--
.../SiteGenPreviewSelectableCard/index.js | 16 +++++++++-----
.../steps/SiteGen/Editor/index.js | 12 +++++++---
.../steps/SiteGen/Preview/index.js | 3 +--
.../steps/SiteGen/Preview/pattern.js | 15 +++++--------
src/OnboardingSPA/store/actions.js | 7 ++++++
src/OnboardingSPA/store/reducer.js | 18 ++++++++++-----
src/OnboardingSPA/store/selectors.js | 22 +++++++++++++++++++
8 files changed, 72 insertions(+), 27 deletions(-)
diff --git a/src/OnboardingSPA/components/Button/index.js b/src/OnboardingSPA/components/Button/index.js
index 56d9a6ba5..a5efeaee4 100644
--- a/src/OnboardingSPA/components/Button/index.js
+++ b/src/OnboardingSPA/components/Button/index.js
@@ -5,9 +5,11 @@
* @return Button
*/
-const Button = ( { children, handleClick, disabled, className } ) => {
+const Button = ( { children, onClick, disabled, className } ) => {
const handleBtnClick = () => {
- handleClick();
+ if ( onClick ) {
+ onClick();
+ }
};
return (
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index 66f7b8a90..daaa988ea 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -2,7 +2,7 @@
import { search, Icon, reusableBlock } from '@wordpress/icons';
import { useState } from '@wordpress/element';
import { useNavigate } from 'react-router-dom';
-import { useSelect } from '@wordpress/data';
+import { useSelect, useDispatch } from '@wordpress/data';
import { LivePreview } from '..';
import Button from '../../../components/Button';
import { store as nfdOnboardingStore } from '../../../store';
@@ -22,7 +22,9 @@ const SiteGenPreviewSelectableCard = ( {
isFavourite,
onRegenerateClick = false,
skeletonLoadingTime = 2500,
+ designObject,
} ) => {
+ const { setActiveHomepage } = useDispatch( nfdOnboardingStore );
const [ loadingParent, setIsLoadingParent ] = useState( true );
const navigate = useNavigate();
@@ -32,6 +34,11 @@ const SiteGenPreviewSelectableCard = ( {
};
} );
+ const onPreviewVersionClick = () => {
+ setActiveHomepage( designObject );
+ navigate( nextStep.path );
+ };
+
return (
{
- navigate( nextStep.path );
- } }
+ onClick={ onPreviewVersionClick }
onKeyDown={ ( event ) => {
if ( event.key === 'Enter' ) {
- navigate( nextStep.path );
+ onPreviewVersionClick();
}
} }
>
Preview Version
diff --git a/src/OnboardingSPA/steps/SiteGen/Editor/index.js b/src/OnboardingSPA/steps/SiteGen/Editor/index.js
index 75cdddbc0..b4c943486 100644
--- a/src/OnboardingSPA/steps/SiteGen/Editor/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Editor/index.js
@@ -24,8 +24,14 @@ const StepSiteGenEditor = () => {
( select ) => select( nfdOnboardingStore ).getHomepagesData(),
[]
);
-
- console.log( 'Home pages', homepages );
+ const activeHomepage = useSelect(
+ ( select ) => select( nfdOnboardingStore ).getActiveHomepage(),
+ []
+ );
+ const allHomepages = useSelect(
+ ( select ) => select( nfdOnboardingStore ).getAllHomepages(),
+ []
+ );
useEffect( () => {
setIsHeaderEnabled( true );
@@ -40,7 +46,7 @@ const StepSiteGenEditor = () => {
>
{ /* */ }
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 41593bd28..9f7e0c8e3 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -77,8 +77,7 @@ const SiteGenPreview = () => {
onRegenerateClick={ onRegenerateClick }
tabIndex="0"
role="button"
- version={ design.version }
- slug={ design.slug }
+ designObject={ design }
/>
);
} )
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
index 9af62a5aa..57a80a036 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
@@ -603,12 +603,7 @@ const pattern4 = `\n \n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n \n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n';
-
const StepSiteGenEditor = () => {
const {
setIsHeaderEnabled,
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 34fc02e16..28bcb9f62 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -62,8 +62,7 @@ const SiteGenPreview = () => {
const designs = isRegenerating
? [ ]
: [];
- // const designs = pattern; // [ pattern, pattern, pattern ];
- // console.log(homepageData.homepages.data);
+
designs.push(
...homepageData.homepages.data.map( ( design, idx ) => {
return (
From 2e6bf66391ecbe2a81b7c7daabff2b866214b983 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Thu, 7 Dec 2023 12:34:26 +0530
Subject: [PATCH 35/64] PRESS2-1262 | favorite toggle
---
.../SiteGenPreviewSelectableCard/index.js | 15 +++++++++------
src/OnboardingSPA/steps/SiteGen/Preview/index.js | 6 ------
.../steps/SiteGen/Preview/pattern.js | 7 +++----
src/OnboardingSPA/store/actions.js | 7 +++++++
src/OnboardingSPA/store/reducer.js | 12 ++++++++++++
5 files changed, 31 insertions(+), 16 deletions(-)
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index 860b91543..ad35e3eae 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -18,13 +18,12 @@ const SiteGenPreviewSelectableCard = ( {
previewSettings,
overlay = false,
onClick = false,
- onWishlistClick = false,
- isFavourite,
onRegenerateClick = false,
skeletonLoadingTime = 2500,
designObject,
} ) => {
- const { setActiveHomepage } = useDispatch( nfdOnboardingStore );
+ const { setActiveHomepage, toggleFavorite } =
+ useDispatch( nfdOnboardingStore );
const [ loadingParent, setIsLoadingParent ] = useState( true );
const navigate = useNavigate();
@@ -39,6 +38,10 @@ const SiteGenPreviewSelectableCard = ( {
navigate( nextStep.path );
};
+ const onWishlistClick = ( slug ) => {
+ toggleFavorite( slug );
+ };
+
return (
{
if ( event.key === 'Enter' ) {
- onWishlistClick();
+ onWishlistClick( designObject?.slug );
}
} }
aria-label="Add to Wishlist"
className={ `${ className }__live-preview-container-buttons__button` }
>
- { isFavourite ? (
+ { designObject?.favorite ? (
) : (
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 28bcb9f62..723396cdc 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -50,10 +50,6 @@ const SiteGenPreview = () => {
const [ isRegenerating, setIsRegenerating ] = useState( false );
- const onWishlistClick = () => {
- // alert( 'wishlist' );
- };
-
// console.log( 'HOme pages', JSON.parse( JSON.stringify( homepages ) ) );
const onRegenerateClick = () => {
setIsRegenerating( true );
@@ -71,8 +67,6 @@ const SiteGenPreview = () => {
blockGrammer={ design.content }
styling={ 'custom' }
overlay={ true }
- onWishlistClick={ onWishlistClick }
- isFavourite={ true }
onRegenerateClick={ onRegenerateClick }
tabIndex="0"
role="button"
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
index 95005103d..46fd2d7fd 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/pattern.js
@@ -600,7 +600,6 @@ const pattern4 = `
`;
-// const pattern = [ pattern1, pattern2, pattern3, pattern1, pattern3, pattern2 ];
const homepageData = {
homepages: {
@@ -615,19 +614,19 @@ const homepageData = {
{
slug: 'hash2',
title: 'Version 2',
- favorite: true,
+ favorite: false,
content: pattern2,
},
{
slug: 'hash3',
title: 'Version 3',
- favorite: true,
+ favorite: false,
content: pattern3,
},
{
slug: 'hash4',
title: 'Version 4',
- favorite: true,
+ favorite: false,
content: pattern4,
},
],
diff --git a/src/OnboardingSPA/store/actions.js b/src/OnboardingSPA/store/actions.js
index bc431e605..be52c9924 100644
--- a/src/OnboardingSPA/store/actions.js
+++ b/src/OnboardingSPA/store/actions.js
@@ -298,3 +298,10 @@ export const setActiveHomepage = ( activeHomepage ) => {
activeHomepage,
};
};
+
+export const toggleFavorite = ( slug ) => {
+ return {
+ type: 'TOGGLE_FAVORITE',
+ slug,
+ };
+};
diff --git a/src/OnboardingSPA/store/reducer.js b/src/OnboardingSPA/store/reducer.js
index a8101bd37..7aa447139 100644
--- a/src/OnboardingSPA/store/reducer.js
+++ b/src/OnboardingSPA/store/reducer.js
@@ -345,6 +345,18 @@ export function homepagesData( state = initialHomepagesState, action ) {
active: action.activeHomepage,
},
};
+ case 'TOGGLE_FAVORITE':
+ return {
+ ...state,
+ homepages: {
+ ...state.homepages,
+ data: state.homepages.data.map( ( homepage ) =>
+ homepage.slug === action.slug
+ ? { ...homepage, favorite: ! homepage.favorite }
+ : homepage
+ ),
+ },
+ };
default:
return state;
From 4afc518c4dc947d3a40f7ec55511da7c4f73f347 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Fri, 8 Dec 2023 00:38:26 +0530
Subject: [PATCH 36/64] PRESS2-1262 | added on the sitegen object in store
---
.../steps/SiteGen/Preview/index.js | 13 ++--
src/OnboardingSPA/store/reducer.js | 75 +++++++++----------
src/OnboardingSPA/store/selectors.js | 6 +-
3 files changed, 45 insertions(+), 49 deletions(-)
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 723396cdc..6a7f11bc1 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -14,7 +14,7 @@ import { homepageData } from './pattern';
import HeartAnimation from './heartAnimation';
import RegeneratingSiteCard from './regeneratingCard';
-import { getHomePagePreviews } from '../../../utils/api/siteGen';
+// import { getHomePagePreviews } from '../../../utils/api/siteGen';
const SiteGenPreview = () => {
// const [ homepages, setHomepages ] = useState( { active: {}, data: [] } );
@@ -34,20 +34,23 @@ const SiteGenPreview = () => {
} );
useEffect( () => {
- if ( currentData.sitegen.siteDetails?.prompt !== '' ) {
+ /* if ( currentData.sitegen.siteDetails?.prompt !== '' ) {
getHomePagePreviews(
currentData.sitegen.siteDetails.prompt,
false
);
- }
- // setHomepages( homepageData.homepages );
+ } */
setIsHeaderEnabled( true );
setSidebarActiveView( false );
setHeaderActiveView( HEADER_SITEGEN );
setDrawerActiveView( false );
- setHomepagesData( homepageData );
}, [ currentData ] );
+
+ useEffect( () => {
+ setHomepagesData( homepageData.homepages );
+ }, [] );
+
const [ isRegenerating, setIsRegenerating ] = useState( false );
// console.log( 'HOme pages', JSON.parse( JSON.stringify( homepages ) ) );
diff --git a/src/OnboardingSPA/store/reducer.js b/src/OnboardingSPA/store/reducer.js
index 7aa447139..7b465114e 100644
--- a/src/OnboardingSPA/store/reducer.js
+++ b/src/OnboardingSPA/store/reducer.js
@@ -18,6 +18,7 @@ import { headers } from '../data/headers';
import { footers } from '../data/footers';
import apiQueueExecutor from '../utils/api-queuer/api-queue-executor';
import { DEFAULT_FLOW } from '../data/flows/constants';
+import { sitegen } from '../chapters/sitegen';
export function flow(
state = {
@@ -167,6 +168,39 @@ export function data( state = {}, action ) {
...action.socialData,
},
};
+ case 'SET_HOMEPAGES_DATA':
+ return {
+ ...state,
+ flowData: {
+ ...state.flowData,
+ sitegen: {
+ ...state.flowData.sitegen,
+ homepages: action.homepagesData,
+ },
+ },
+ };
+
+ case 'SET_ACTIVE_HOMEPAGE':
+ /* return {
+ ...state.flowData.sitegen,
+ homepages: {
+ ...state.flowData.sitegen.homepages,
+ active: action.activeHomepage,
+ },
+ }; */
+ return {
+ ...state,
+ flowData: {
+ ...state.flowData,
+ sitegen: {
+ ...state.flowData.sitegen,
+ homepages: {
+ ...state.flowData.sitegen.homepages,
+ active: action.activeHomepage,
+ },
+ },
+ },
+ };
}
return state;
@@ -323,46 +357,6 @@ export function footer(
return state;
}
-const initialHomepagesState = {
- homepages: {
- active: {},
- data: [],
- },
-};
-
-export function homepagesData( state = initialHomepagesState, action ) {
- switch ( action.type ) {
- case 'SET_HOMEPAGE_DATA':
- return {
- ...state,
- homepages: action.homepageData,
- };
- case 'SET_ACTIVE_HOMEPAGE':
- return {
- ...state,
- homepages: {
- ...state.homepages,
- active: action.activeHomepage,
- },
- };
- case 'TOGGLE_FAVORITE':
- return {
- ...state,
- homepages: {
- ...state.homepages,
- data: state.homepages.data.map( ( homepage ) =>
- homepage.slug === action.slug
- ? { ...homepage, favorite: ! homepage.favorite }
- : homepage
- ),
- },
- };
-
- default:
- return state;
- }
-}
-
export default combineReducers( {
drawer,
runtime,
@@ -373,5 +367,4 @@ export default combineReducers( {
header,
footer,
queue,
- homepagesData,
} );
diff --git a/src/OnboardingSPA/store/selectors.js b/src/OnboardingSPA/store/selectors.js
index f440ab753..6b1877429 100644
--- a/src/OnboardingSPA/store/selectors.js
+++ b/src/OnboardingSPA/store/selectors.js
@@ -434,7 +434,7 @@ export function getCurrentUserDetails( state ) {
* @return {Object} homepages
*/
export const getHomepagesData = ( state ) => {
- return state.homepagesData.homepages;
+ return state.data.flowData.sitegen.homepages;
};
/**
@@ -445,7 +445,7 @@ export const getHomepagesData = ( state ) => {
*/
export const getActiveHomepage = ( state ) => {
- return state.homepagesData.homepages.active;
+ return state.data.flowData.sitegen.homepages.active;
};
/**
@@ -456,5 +456,5 @@ export const getActiveHomepage = ( state ) => {
*/
export const getAllHomepages = ( state ) => {
- return state.homepagesData.homepages.data;
+ return state.data.flowData.sitegen.homepages.data;
};
From f147fd93fcc6cc11b9588d5ae552eb2bdc32a64e Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Tue, 12 Dec 2023 16:25:35 +0530
Subject: [PATCH 37/64] PRESS2-1262 | integration home page
---
.../SiteGenPreviewSelectableCard/index.js | 4 +-
.../steps/SiteGen/Preview/index.js | 43 ++++++++++++++++---
2 files changed, 38 insertions(+), 9 deletions(-)
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index ad35e3eae..611380fcb 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -101,12 +101,12 @@ const SiteGenPreviewSelectableCard = ( {
aria-label="Add to Wishlist"
className={ `${ className }__live-preview-container-buttons__button` }
>
- { designObject?.favorite ? (
+ {/* { designObject?.favorite ? (
) : (
) }
- { designObject?.title }
+ { designObject?.title } */}
{
// const [ homepages, setHomepages ] = useState( { active: {}, data: [] } );
+
+ const [ homePagePreviewPatterns, setHomePagePreviewPatterns ] = useState(
+ {}
+ );
const {
setIsHeaderEnabled,
setSidebarActiveView,
@@ -34,21 +38,44 @@ const SiteGenPreview = () => {
} );
useEffect( () => {
- /* if ( currentData.sitegen.siteDetails?.prompt !== '' ) {
+ if ( currentData.sitegen.siteDetails?.prompt !== '' ) {
getHomePagePreviews(
currentData.sitegen.siteDetails.prompt,
false
);
- } */
+ }
setIsHeaderEnabled( true );
setSidebarActiveView( false );
setHeaderActiveView( HEADER_SITEGEN );
setDrawerActiveView( false );
}, [ currentData ] );
-
useEffect( () => {
- setHomepagesData( homepageData.homepages );
+ const fetchHomePagesPatterns = async () => {
+ if ( currentData.sitegen.siteDetails?.prompt !== '' ) {
+ try {
+ const response = await getHomePagePreviews(
+ currentData.sitegen.siteDetails.prompt,
+ false
+ );
+
+ const processedPatterns = {};
+ for ( const key in response ) {
+ processedPatterns[ key ] = [
+ response[ key ]
+ .filter( ( item ) => item !== null )
+ .join( ' ' ),
+ ];
+ }
+ setHomePagePreviewPatterns( processedPatterns );
+ } catch ( error ) {
+ // Handle or log error
+ // console.error( 'Error fetching data:', error );
+ }
+ }
+ };
+
+ fetchHomePagesPatterns();
}, [] );
const [ isRegenerating, setIsRegenerating ] = useState( false );
@@ -57,17 +84,19 @@ const SiteGenPreview = () => {
const onRegenerateClick = () => {
setIsRegenerating( true );
};
+
+ console.log("home page preview patterns ", homePagePreviewPatterns);
const buildPreviews = () => {
const designs = isRegenerating
? [ ]
: [];
designs.push(
- ...homepageData.homepages.data.map( ( design, idx ) => {
+ Object.keys( homePagePreviewPatterns ).map( ( design, idx ) => {
return (
Date: Fri, 15 Dec 2023 02:16:30 +0530
Subject: [PATCH 38/64] PRESS-1262 | added home pages call
---
includes/RestApi/SiteGenController.php | 51 +++++++++++++++-
.../SiteGenPreviewSelectableCard/index.js | 4 +-
.../steps/SiteGen/Preview/index.js | 61 ++++++-------------
3 files changed, 71 insertions(+), 45 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index 25ef721ea..b590a69eb 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -145,15 +145,31 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) {
* @return array
*/
public function get_homepages( \WP_REST_Request $request ) {
+ $existing_homepages = get_option('nfd-sitegen-homepages');
+
+ // If the option exists and is not empty, return it
+ if ( ! empty( $existing_homepages ) ) {
+ return new \WP_REST_Response( $existing_homepages, 200 );
+ }
+
// Fetching parameters provided by the front end.
$site_description = $request->get_param( 'site_description' );
$regenerate = $request->get_param( 'regenerate' );
$nfd_ai_site_gen_option = get_option('nfd-ai-site-gen');
+ $site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
// Extracting the 'targetaudience' and 'contentstructure' values.
$target_audience = isset($nfd_ai_site_gen_option['targetaudience']) ? $nfd_ai_site_gen_option['targetaudience'] : null;
+ // Check if $target_audience is false, null, or not set and then call again.
+ if (!$target_audience) {
+ $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache);
+ }
+
$content_style = isset($nfd_ai_site_gen_option['contentstructure']) ? $nfd_ai_site_gen_option['contentstructure'] : null;
+ if(!$content_style) {
+ $content_style = SiteGenService::instantiate_site_meta( $site_info, 'contentstructure', $skip_cache );
+ }
// Ensure that the required data is available.
if (!$target_audience || !$content_style) {
@@ -170,8 +186,41 @@ public function get_homepages( \WP_REST_Request $request ) {
$target_audience,
$regenerate
);
+
+ $processed_home_pages = $this->process_homepages_response( $home_pages );
- return new \WP_REST_Response($home_pages, 200); // OK
+ // Save the structured data in the options table
+ update_option('nfd-sitegen-homepages', $processed_home_pages );
+ return new \WP_REST_Response($processed_home_pages, 200);
}
+
+ private function process_homepages_response( $home_pages ) {
+ $versions = [];
+ $version_number = 1; // Initialize the version number counter
+
+ foreach ( $home_pages as $key => $blocks ) {
+ if ( ! is_array( $blocks ) ) {
+ continue;
+ }
+
+ $filtered_blocks = array_filter( $blocks, function($value) {
+ return !is_null($value);
+ });
+
+ $content = implode( '', $filtered_blocks );
+
+ $version_info = [
+ "slug" => "version" . $version_number, // Construct slug using the version number
+ "title" => "Version " . $version_number,
+ "isFavourited" => false, // or true based on your logic
+ "colorScheme" => "#fff", // Replace with your logic for determining the color scheme
+ "content" => $content,
+ ];
+
+ $versions[] = $version_info;
+ $version_number++; // Increment the version number for the next iteration
+ }
+ return $versions;
+ }
}
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index 611380fcb..6cacd0ee6 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -101,12 +101,12 @@ const SiteGenPreviewSelectableCard = ( {
aria-label="Add to Wishlist"
className={ `${ className }__live-preview-container-buttons__button` }
>
- {/* { designObject?.favorite ? (
+ { designObject?.isFavourited ? (
) : (
) }
- { designObject?.title } */}
+ { designObject?.title }
{
- // const [ homepages, setHomepages ] = useState( { active: {}, data: [] } );
+ const [ homepages, setHomepages ] = useState( { active: {}, data: [] } );
+ const [ isRegenerating, setIsRegenerating ] = useState( false );
- const [ homePagePreviewPatterns, setHomePagePreviewPatterns ] = useState(
- {}
- );
const {
setIsHeaderEnabled,
setSidebarActiveView,
@@ -38,12 +34,6 @@ const SiteGenPreview = () => {
} );
useEffect( () => {
- if ( currentData.sitegen.siteDetails?.prompt !== '' ) {
- getHomePagePreviews(
- currentData.sitegen.siteDetails.prompt,
- false
- );
- }
setIsHeaderEnabled( true );
setSidebarActiveView( false );
setHeaderActiveView( HEADER_SITEGEN );
@@ -58,18 +48,9 @@ const SiteGenPreview = () => {
currentData.sitegen.siteDetails.prompt,
false
);
-
- const processedPatterns = {};
- for ( const key in response ) {
- processedPatterns[ key ] = [
- response[ key ]
- .filter( ( item ) => item !== null )
- .join( ' ' ),
- ];
- }
- setHomePagePreviewPatterns( processedPatterns );
+ setHomepages( { ...homepages, data: response.body } ); // Update the local state with the response data
+ setHomepagesData( { ...homepages, data: response.body } ); // Dispatch the action with the response data
} catch ( error ) {
- // Handle or log error
// console.error( 'Error fetching data:', error );
}
}
@@ -78,34 +59,30 @@ const SiteGenPreview = () => {
fetchHomePagesPatterns();
}, [] );
- const [ isRegenerating, setIsRegenerating ] = useState( false );
-
- // console.log( 'HOme pages', JSON.parse( JSON.stringify( homepages ) ) );
const onRegenerateClick = () => {
setIsRegenerating( true );
};
- console.log("home page preview patterns ", homePagePreviewPatterns);
const buildPreviews = () => {
const designs = isRegenerating
? [
]
: [];
-
designs.push(
- Object.keys( homePagePreviewPatterns ).map( ( design, idx ) => {
- return (
-
- );
- } )
+ homepages.data &&
+ homepages.data.map( ( design, idx ) => {
+ return (
+
+ );
+ } )
);
return designs;
From 3163b5637f17af1e19cc95176c83e88a72c468e4 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Fri, 15 Dec 2023 11:26:32 +0530
Subject: [PATCH 39/64] PRESS2-1262 | created generating site loaders
---
.../steps/SiteGen/Preview/contents.js | 2 +
.../steps/SiteGen/Preview/index.js | 17 ++++++-
.../steps/SiteGen/Preview/regeneratingCard.js | 46 +++++++++++--------
.../steps/SiteGen/Preview/stylesheet.scss | 14 +++++-
src/OnboardingSPA/steps/SiteGen/data.json | 30 ------------
5 files changed, 59 insertions(+), 50 deletions(-)
delete mode 100644 src/OnboardingSPA/steps/SiteGen/data.json
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/contents.js b/src/OnboardingSPA/steps/SiteGen/Preview/contents.js
index d93e97ad2..c6bc4b107 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/contents.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/contents.js
@@ -11,6 +11,8 @@ const getContents = () => {
'Favorite a generated version to find and use again in the future.',
'wp-module-onboarding'
),
+ generating: __( 'Generating Site', 'wp-module-onboarding' ),
+ regenerating: __( 'Regenerating Site', 'wp-module-onboarding' ),
};
};
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index be310edcb..293a33a3b 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -17,6 +17,7 @@ import { getHomePagePreviews } from '../../../utils/api/siteGen';
const SiteGenPreview = () => {
const [ homepages, setHomepages ] = useState( { active: {}, data: [] } );
const [ isRegenerating, setIsRegenerating ] = useState( false );
+ const [ isPreviewLoading, setIsPreviewLoading ] = useState( false );
const {
setIsHeaderEnabled,
@@ -42,6 +43,7 @@ const SiteGenPreview = () => {
useEffect( () => {
const fetchHomePagesPatterns = async () => {
+ setIsPreviewLoading( true );
if ( currentData.sitegen.siteDetails?.prompt !== '' ) {
try {
const response = await getHomePagePreviews(
@@ -50,7 +52,9 @@ const SiteGenPreview = () => {
);
setHomepages( { ...homepages, data: response.body } ); // Update the local state with the response data
setHomepagesData( { ...homepages, data: response.body } ); // Dispatch the action with the response data
+ setIsPreviewLoading( false );
} catch ( error ) {
+ setIsPreviewLoading( false );
// console.error( 'Error fetching data:', error );
}
}
@@ -64,8 +68,19 @@ const SiteGenPreview = () => {
};
const buildPreviews = () => {
+ if ( isPreviewLoading ) {
+ return (
+
+ );
+ }
+
const designs = isRegenerating
- ? [ ]
+ ? [
+ ,
+ ]
: [];
designs.push(
homepages.data &&
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js b/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js
index 6b1765787..10c3dcc2b 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js
@@ -1,26 +1,36 @@
+/* eslint-disable @wordpress/i18n-no-variables */
import { __ } from '@wordpress/i18n';
import { ReactComponent as FavouriteIconStroked } from '../../../static/icons/sitegen/heart-stroked.svg';
+import getContents from './contents';
-function RegeneratingSiteCard( { previewVersion, progress } ) {
- return (
-
-
-
- { __( 'Regenerating Site', 'wp-module-onboarding' ) }
-
-
-
+function RegeneratingSiteCard( { count = 1, isRegenerating } ) {
+ const content = getContents();
+ const cards = [];
+ const generatingText = isRegenerating
+ ? content.regenerating
+ : content.generating;
+ for ( let i = 0; i < count; i++ ) {
+ cards.push(
+
+
+
+ { __( generatingText, 'wp-module-onboarding' ) }
+
+
+ { isRegenerating && (
+
+
+ { __( 'version0-1_copy', 'wp-module-onboarding' ) }
+
+ ) }
-
-
- { __( 'version0-1_copy', 'wp-module-onboarding' ) }
-
-
- );
+ );
+ }
+
+ return <>{ cards }>;
}
export default RegeneratingSiteCard;
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
index 23825fcf9..5fc3f0513 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
@@ -54,7 +54,7 @@
text-align: center;
margin: 10px 10px 55px 10px;
flex-wrap: wrap;
- max-width: 1440px;
+ max-width: 1440px;
}
&__note {
@@ -113,6 +113,17 @@
}
+@keyframes infiniteProgress {
+
+ 0% {
+ width: 0;
+ }
+
+ 100% {
+ width: 100%;
+ }
+}
+
.regenerating-site-card-wrap {
padding: 20px;
@@ -146,6 +157,7 @@
background: var(--nfd-onboarding-progress-bar-fill);
height: 100%;
transition: width 0.3s ease;
+ animation: infiniteProgress 1.5s ease-in-out infinite;
}
}
}
diff --git a/src/OnboardingSPA/steps/SiteGen/data.json b/src/OnboardingSPA/steps/SiteGen/data.json
deleted file mode 100644
index a1d9ae8de..000000000
--- a/src/OnboardingSPA/steps/SiteGen/data.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "homepages": {
- "active": {
- "slug": "currenthash1",
- "title": "Active Version",
- "favorite": true,
- "content": "\n
\n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n",
- },
- "data": [
- {
- "slug": "hash1",
- "title": "Version 1",
- "favorite": false,
- "content": "\n
\n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n",
- },
- {
- "slug": "hash2",
- "title": "Version 2",
- "favorite": true,
- "content": "\n
\n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n",
- },
- {
- "slug": "hash3",
- "title": "Version 3",
- "favorite": true,
- "content": "\n
\n \n\t
\n\t\t\n\t\t
Business Consulting Solutions
\n\t\t\n\t\t\n\t\t
Make your company leader in the industry \n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n
\n \n
Area of Practice \n \n \n \n \n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
01
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
02
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
03
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
04
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Portfolio Management
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
05
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Performance Reviews
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
06
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Financial Planning
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We will work with you to create a personalised plan to help you achieve your financial goals.
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n\n\n
\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Explore Our Unmatched Consulting Solutions \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exceptional consulting services at our well-established agency. We offer comprehensive solutions for both established and emerging businesses, tailored to your unique needs.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Come and Experience Our Unforgettable Cuisine \n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
Experience exquisite fine dining at our newly opened restaurant. Enjoy a delicious menu of classic and modern dishes, prepared with the freshest ingredients.
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n\t\n\n
\n\n \n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
2.5k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Clients served
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
10k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Projects completed
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
1.2k \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Marketing campaigns
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
15 \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Full-time consultants
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
★ ★ ★ ★ ★
\n\t\n\t\n\t
\n\t\t\n\t\t
My experience at the restaurant was great. The food was delicious, the service was excellent, and the atmosphere was cozy and inviting. Highly recommend this restaurant.
\n\t\t\n\t
\n\t\n\t\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\tAlex Martinez \n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
/
\n\t\t\n\t\t\n\t\t
Customer
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
We\'re meticulous in our approach so you can focus on your business. \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Streamlined process
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
✓ Flawless events
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n\t\n
\n \n\n\n
\n \n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
Frequently Asked Questions \n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Is there a free trial available? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, we offer a free trial period of 14 days. During this period, you will have full access to all of our features and services.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How do I change my personal information? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
You can update name, email address and other personal information from the "Settings" section.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I change my plan later? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can upgrade or downgrade your plan at any time.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
How does billing work? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
We have a simple billing system which allows you to pay for services on a monthly basis.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
Can I get an invoice for my purchase? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Yes, you can. Please contact our customer support and provide your purchase number.
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n\t\n
\n \n\n\n
\n\n \n\t
\n\n\t\t\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
Discover Our Consulting Services
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\n\t\t\n\t\t
Our Agency\'s Expertise \n\t\t\n\t
\n\t\n\n \n\t
\n\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t\n\t\t\n\t
\n\t\n\n
\n",
- }
- ]
- }
-}
From 39698d53048a83801f5697472ba6631623a7504b Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Mon, 18 Dec 2023 13:18:47 +0530
Subject: [PATCH 40/64] PRESS2-1465 | updated according to changes in option
table
---
includes/RestApi/SiteGenController.php | 10 +++++-----
.../SiteGenPreviewSelectableCard/index.js | 12 +++++------
.../steps/SiteGen/Preview/index.js | 20 ++++++++++++++++---
3 files changed, 28 insertions(+), 14 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index b590a69eb..cf1e1426e 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -156,19 +156,19 @@ public function get_homepages( \WP_REST_Request $request ) {
$site_description = $request->get_param( 'site_description' );
$regenerate = $request->get_param( 'regenerate' );
- $nfd_ai_site_gen_option = get_option('nfd-ai-site-gen');
$site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
- // Extracting the 'targetaudience' and 'contentstructure' values.
- $target_audience = isset($nfd_ai_site_gen_option['targetaudience']) ? $nfd_ai_site_gen_option['targetaudience'] : null;
+ $target_audience_option = get_option('nfd-ai-site-gen-targetaudience');
+ $target_audience = isset($target_audience_option) ? $target_audience_option : null;
// Check if $target_audience is false, null, or not set and then call again.
if (!$target_audience) {
$target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache);
}
- $content_style = isset($nfd_ai_site_gen_option['contentstructure']) ? $nfd_ai_site_gen_option['contentstructure'] : null;
+ $content_style_option = get_option('nfd-ai-site-gen-contentstructure');
+ $content_style = isset($content_style_option) ? $content_style_option : null;
if(!$content_style) {
- $content_style = SiteGenService::instantiate_site_meta( $site_info, 'contentstructure', $skip_cache );
+ $content_style = SiteGenService::instantiate_site_meta($site_info, 'contentstructure', $skip_cache);
}
// Ensure that the required data is available.
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index 6cacd0ee6..82b1b9fb8 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -21,9 +21,9 @@ const SiteGenPreviewSelectableCard = ( {
onRegenerateClick = false,
skeletonLoadingTime = 2500,
designObject,
+ handleFavorite,
} ) => {
- const { setActiveHomepage, toggleFavorite } =
- useDispatch( nfdOnboardingStore );
+ const { setActiveHomepage } = useDispatch( nfdOnboardingStore );
const [ loadingParent, setIsLoadingParent ] = useState( true );
const navigate = useNavigate();
@@ -38,9 +38,9 @@ const SiteGenPreviewSelectableCard = ( {
navigate( nextStep.path );
};
- const onWishlistClick = ( slug ) => {
+ /* const onWishlistClick = ( slug ) => {
toggleFavorite( slug );
- };
+ }; */
return (
handleFavorite( designObject?.slug ) }
onKeyDown={ ( event ) => {
if ( event.key === 'Enter' ) {
- onWishlistClick( designObject?.slug );
+ handleFavorite( designObject?.slug );
}
} }
aria-label="Add to Wishlist"
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 293a33a3b..16e5f24f7 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -11,7 +11,6 @@ import { SiteGenLivePreview } from '../../../components/LivePreview';
import getContents from './contents';
import HeartAnimation from './heartAnimation';
import RegeneratingSiteCard from './regeneratingCard';
-
import { getHomePagePreviews } from '../../../utils/api/siteGen';
const SiteGenPreview = () => {
@@ -24,7 +23,7 @@ const SiteGenPreview = () => {
setSidebarActiveView,
setHeaderActiveView,
setDrawerActiveView,
- setHomepagesData,
+ setCurrentOnboardingData,
} = useDispatch( nfdOnboardingStore );
const { currentData } = useSelect( ( select ) => {
@@ -51,7 +50,8 @@ const SiteGenPreview = () => {
false
);
setHomepages( { ...homepages, data: response.body } ); // Update the local state with the response data
- setHomepagesData( { ...homepages, data: response.body } ); // Dispatch the action with the response data
+ currentData.sitegen.homepages.data = response.body;
+ setCurrentOnboardingData( currentData );
setIsPreviewLoading( false );
} catch ( error ) {
setIsPreviewLoading( false );
@@ -67,6 +67,19 @@ const SiteGenPreview = () => {
setIsRegenerating( true );
};
+ const handleFavorite = ( slug ) => {
+ const homepagesList = currentData.sitegen.homepages.data;
+
+ if ( homepagesList && homepagesList.length > 0 ) {
+ homepagesList.forEach( ( homepageObj ) => {
+ if ( homepageObj.slug === slug ) {
+ homepageObj.isFavourited = ! homepageObj.isFavourited; // Toggle the isFavourited property
+ }
+ } );
+ setCurrentOnboardingData( { ...currentData } ); // Create a new object to ensure state updates
+ }
+ };
+
const buildPreviews = () => {
if ( isPreviewLoading ) {
return (
@@ -95,6 +108,7 @@ const SiteGenPreview = () => {
tabIndex="0"
role="button"
designObject={ design }
+ handleFavorite={ handleFavorite }
/>
);
} )
From 81c0168dac26c1d3f99317c623f4d235e155a7f0 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Mon, 18 Dec 2023 19:17:26 +0530
Subject: [PATCH 41/64] PRESS2-1465
---
includes/RestApi/SiteGenController.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index cf1e1426e..bf8f8e554 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -165,12 +165,12 @@ public function get_homepages( \WP_REST_Request $request ) {
$target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache);
}
- $content_style_option = get_option('nfd-ai-site-gen-contentstructure');
+ $content_style_option = get_option('nfd-ai-site-gen-contenttones');
$content_style = isset($content_style_option) ? $content_style_option : null;
if(!$content_style) {
- $content_style = SiteGenService::instantiate_site_meta($site_info, 'contentstructure', $skip_cache);
+ $content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', $skip_cache);
}
-
+
// Ensure that the required data is available.
if (!$target_audience || !$content_style) {
return new \WP_REST_Response(
From fa8ff4a38c7a34665a938145fd0e5f001d72e1a2 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Wed, 20 Dec 2023 17:02:55 +0530
Subject: [PATCH 42/64] PRESS2-1465 | added regenerate changes
---
includes/RestApi/SiteGenController.php | 66 +++++++++++++------
.../SiteGenPreviewSelectableCard/index.js | 6 +-
.../steps/SiteGen/Preview/index.js | 27 ++++++--
3 files changed, 71 insertions(+), 28 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index bf8f8e554..115b23de0 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -145,22 +145,24 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) {
* @return array
*/
public function get_homepages( \WP_REST_Request $request ) {
- $existing_homepages = get_option('nfd-sitegen-homepages');
-
- // If the option exists and is not empty, return it
- if ( ! empty( $existing_homepages ) ) {
- return new \WP_REST_Response( $existing_homepages, 200 );
- }
// Fetching parameters provided by the front end.
$site_description = $request->get_param( 'site_description' );
$regenerate = $request->get_param( 'regenerate' );
-
$site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
-
+
+ // If the option exists and is not empty, return it
+ $existing_homepages = get_option('nfd-sitegen-homepages', []);
+ if ( ! empty( $existing_homepages ) && !$regenerate ) {
+ return new \WP_REST_Response( $existing_homepages, 200 );
+ }
+
+ // Get the regenerated homepages.
+ $regenerated_homepages = get_option('nfd-sitegen-regenerated-homepages', []);
+ // Check if $target_audience is false, null, or not set and then call again.
$target_audience_option = get_option('nfd-ai-site-gen-targetaudience');
$target_audience = isset($target_audience_option) ? $target_audience_option : null;
- // Check if $target_audience is false, null, or not set and then call again.
+
if (!$target_audience) {
$target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache);
}
@@ -178,20 +180,42 @@ public function get_homepages( \WP_REST_Request $request ) {
400 // Bad Request
);
}
-
- // Call the static method from SiteGen with all parameters.
- $home_pages = SiteGen::get_home_pages(
- $site_description,
- $content_style,
- $target_audience,
- $regenerate
- );
- $processed_home_pages = $this->process_homepages_response( $home_pages );
+ if ($regenerate) {
+ if (empty($regenerated_homepages)) {
+ $home_pages = SiteGen::get_home_pages(
+ $site_description,
+ $content_style,
+ $target_audience,
+ true
+ );
+
+ $regenerated_homepages= $this->process_homepages_response( $home_pages );
+ update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
- // Save the structured data in the options table
- update_option('nfd-sitegen-homepages', $processed_home_pages );
- return new \WP_REST_Response($processed_home_pages, 200);
+ $regenerated_item = array_shift($regenerated_homepages);
+ $existing_homepages[] = $regenerated_item;
+ update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
+ } else {
+ $regenerated_item = array_shift($regenerated_homepages);
+ $existing_homepages[] = $regenerated_item;
+ update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
+ }
+
+ update_option('nfd-sitegen-homepages', $existing_homepages);
+ return new \WP_REST_Response($existing_homepages, 200);
+ } else {
+ $home_pages = SiteGen::get_home_pages(
+ $site_description,
+ $content_style,
+ $target_audience,
+ $regenerate
+ );
+
+ $processed_home_pages = $this->process_homepages_response( $home_pages );
+ update_option('nfd-sitegen-homepages', $processed_home_pages );
+ return new \WP_REST_Response($processed_home_pages, 200);
+ }
}
private function process_homepages_response( $home_pages ) {
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index 82b1b9fb8..5710f3410 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -111,10 +111,12 @@ const SiteGenPreviewSelectableCard = ( {
+ onRegenerateClick( designObject?.slug )
+ }
onKeyDown={ ( event ) => {
if ( event.key === 'Enter' ) {
- onRegenerateClick();
+ onRegenerateClick( designObject?.slug );
}
} }
aria-label="Regenerate Content"
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 16e5f24f7..d2f401506 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -63,10 +63,6 @@ const SiteGenPreview = () => {
fetchHomePagesPatterns();
}, [] );
- const onRegenerateClick = () => {
- setIsRegenerating( true );
- };
-
const handleFavorite = ( slug ) => {
const homepagesList = currentData.sitegen.homepages.data;
@@ -80,6 +76,27 @@ const SiteGenPreview = () => {
}
};
+ const handleRegenerate = async ( slug ) => {
+ setIsRegenerating( true );
+ if ( ! ( slug in homepages.data ) ) {
+ if ( currentData.sitegen.siteDetails?.prompt !== '' ) {
+ try {
+ const response = await getHomePagePreviews(
+ currentData.sitegen.siteDetails.prompt,
+ true
+ );
+ setHomepages( { ...homepages.data, data: response.body } ); // Update the local state with the response data
+ currentData.sitegen.homepages.data = response.body;
+ setCurrentOnboardingData( currentData );
+ setIsRegenerating( false );
+ } catch ( error ) {
+ setIsRegenerating( false );
+ console.error( 'Error fetching data:', error );
+ }
+ }
+ }
+ };
+
const buildPreviews = () => {
if ( isPreviewLoading ) {
return (
@@ -104,7 +121,7 @@ const SiteGenPreview = () => {
blockGrammer={ design.content }
styling={ 'custom' }
overlay={ true }
- onRegenerateClick={ onRegenerateClick }
+ onRegenerateClick={ handleRegenerate }
tabIndex="0"
role="button"
designObject={ design }
From 8d056429559930f6563e2e88d2df774813ff5001 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Wed, 20 Dec 2023 20:08:11 +0530
Subject: [PATCH 43/64] PRESS2-1465 | regenerated api endpoint
---
includes/RestApi/SiteGenController.php | 136 +++++++++++++-----
.../steps/SiteGen/Preview/index.js | 7 +-
src/OnboardingSPA/utils/api/siteGen.js | 16 +++
3 files changed, 121 insertions(+), 38 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index 115b23de0..054b65ea5 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -60,6 +60,16 @@ public function register_routes() {
'args' => $this->get_homepages_args(),
)
);
+ \register_rest_route(
+ $this->namespace,
+ $this->rest_base . '/get-homepages-regenerate',
+ array(
+ 'methods' => \WP_REST_Server::CREATABLE,
+ 'callback' => array( $this, 'get_regenerated_homepages' ),
+ 'permission_callback' => '__return_true',
+ 'args' => $this->get_homepages_args(),
+ )
+ );
}
/**
@@ -157,8 +167,6 @@ public function get_homepages( \WP_REST_Request $request ) {
return new \WP_REST_Response( $existing_homepages, 200 );
}
- // Get the regenerated homepages.
- $regenerated_homepages = get_option('nfd-sitegen-regenerated-homepages', []);
// Check if $target_audience is false, null, or not set and then call again.
$target_audience_option = get_option('nfd-ai-site-gen-targetaudience');
$target_audience = isset($target_audience_option) ? $target_audience_option : null;
@@ -181,70 +189,126 @@ public function get_homepages( \WP_REST_Request $request ) {
);
}
- if ($regenerate) {
- if (empty($regenerated_homepages)) {
- $home_pages = SiteGen::get_home_pages(
- $site_description,
- $content_style,
- $target_audience,
- true
- );
-
- $regenerated_homepages= $this->process_homepages_response( $home_pages );
- update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
-
- $regenerated_item = array_shift($regenerated_homepages);
- $existing_homepages[] = $regenerated_item;
- update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
- } else {
- $regenerated_item = array_shift($regenerated_homepages);
- $existing_homepages[] = $regenerated_item;
- update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
- }
+ $home_pages = SiteGen::get_home_pages(
+ $site_description,
+ $content_style,
+ $target_audience,
+ false
+ );
+
+ $processed_home_pages = $this->process_homepages_response( $home_pages );
+ update_option('nfd-sitegen-homepages', $processed_home_pages );
+ return new \WP_REST_Response($processed_home_pages, 200);
+ }
+
+ public function get_regenerated_homepages( \WP_REST_Request $request ) {
+ // Fetching parameters provided by the front end.
+ $site_description = $request->get_param( 'site_description' );
+ $site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
+
+ // Get target audience and content style options.
+ $target_audience = get_option('nfd-ai-site-gen-targetaudience');
+ $content_style = get_option('nfd-ai-site-gen-contenttones');
+
+ // Ensure that the required data is available.
+ if (!$target_audience || !$content_style) {
+ return new \WP_REST_Response(
+ array('message' => 'Required data is missing.'),
+ 400 // Bad Request
+ );
+ }
+
+ // Get the existing and regenerated homepages.
+ $existing_homepages = get_option('nfd-sitegen-homepages', []);
+ $regenerated_homepages = get_option('nfd-sitegen-regenerated-homepages', []);
+ // Check if there are any regenerated homepages left.
+ if (!empty($regenerated_homepages)) {
+ // Shift the first element from regenerated homepages to existing homepages.
+ $regenerated_item = array_shift($regenerated_homepages);
+ $existing_homepages[] = $regenerated_item;
+
+ // Update the options with the new values.
+ update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
update_option('nfd-sitegen-homepages', $existing_homepages);
+
+ // Return the updated list of existing homepages.
return new \WP_REST_Response($existing_homepages, 200);
} else {
+ // Since there are no regenerated homepages left, generate new ones.
$home_pages = SiteGen::get_home_pages(
$site_description,
$content_style,
$target_audience,
- $regenerate
+ true
);
-
- $processed_home_pages = $this->process_homepages_response( $home_pages );
- update_option('nfd-sitegen-homepages', $processed_home_pages );
- return new \WP_REST_Response($processed_home_pages, 200);
+
+ // Process and save the new batch of regenerated homepages.
+ $regenerated_homepages = $this->process_homepages_response( $home_pages );
+ update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
+
+ // Take the first regenerated homepage and add it to the existing homepages.
+ $regenerated_item = array_shift($regenerated_homepages);
+ $existing_homepages[] = $regenerated_item;
+
+ // Save the updates and return the response.
+ update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
+ update_option('nfd-sitegen-homepages', $existing_homepages);
+
+ // Return the updated list of existing homepages.
+ return new \WP_REST_Response($existing_homepages, 200);
}
- }
+ }
private function process_homepages_response( $home_pages ) {
$versions = [];
- $version_number = 1; // Initialize the version number counter
-
+
+ // Retrieve the existing homepages to find the last version number.
+ $existing_homepages = get_option('nfd-sitegen-homepages', []);
+ $last_version_number = $this->get_last_version_number($existing_homepages);
+ $version_number = $last_version_number + 1; // Start numbering from the last version number + 1
+
foreach ( $home_pages as $key => $blocks ) {
if ( ! is_array( $blocks ) ) {
continue;
}
-
+
$filtered_blocks = array_filter( $blocks, function($value) {
return !is_null($value);
});
-
+
$content = implode( '', $filtered_blocks );
-
+
$version_info = [
"slug" => "version" . $version_number, // Construct slug using the version number
"title" => "Version " . $version_number,
- "isFavourited" => false, // or true based on your logic
- "colorScheme" => "#fff", // Replace with your logic for determining the color scheme
+ "isFavourited" => false, // Default to false; logic to set true can be added
+ "colorScheme" => "#fff", // Default to white; replace with actual logic if needed
"content" => $content,
];
-
+
$versions[] = $version_info;
$version_number++; // Increment the version number for the next iteration
}
return $versions;
}
+
+ private function get_last_version_number($homepages) {
+ // Initialize to zero, assuming there are no versions yet.
+ $last_version_number = 0;
+
+ // Loop through the homepages to find the highest version number.
+ foreach ($homepages as $homepage) {
+ // Extract the number from the slug (assuming slug is like "version3").
+ if (preg_match('/version(\d+)/', $homepage['slug'], $matches)) {
+ $version_num = intval($matches[1]);
+ if ($version_num > $last_version_number) {
+ $last_version_number = $version_num;
+ }
+ }
+ }
+
+ return $last_version_number;
+ }
}
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index d2f401506..cf38e0160 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -11,7 +11,10 @@ import { SiteGenLivePreview } from '../../../components/LivePreview';
import getContents from './contents';
import HeartAnimation from './heartAnimation';
import RegeneratingSiteCard from './regeneratingCard';
-import { getHomePagePreviews } from '../../../utils/api/siteGen';
+import {
+ getHomePagePreviews,
+ getRegeneratedHomePagePreviews,
+} from '../../../utils/api/siteGen';
const SiteGenPreview = () => {
const [ homepages, setHomepages ] = useState( { active: {}, data: [] } );
@@ -81,7 +84,7 @@ const SiteGenPreview = () => {
if ( ! ( slug in homepages.data ) ) {
if ( currentData.sitegen.siteDetails?.prompt !== '' ) {
try {
- const response = await getHomePagePreviews(
+ const response = await getRegeneratedHomePagePreviews(
currentData.sitegen.siteDetails.prompt,
true
);
diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js
index 5e6d875c4..ee40bda16 100644
--- a/src/OnboardingSPA/utils/api/siteGen.js
+++ b/src/OnboardingSPA/utils/api/siteGen.js
@@ -45,3 +45,19 @@ export async function getHomePagePreviews(
);
}
+export async function getRegeneratedHomePagePreviews(
+ siteDescription,
+ regenerate = true
+) {
+ return await resolve(
+ apiFetch( {
+ url: onboardingRestURL( 'sitegen/get-homepages-regenerate' ),
+ method: 'POST',
+ data: {
+ site_description: siteDescription,
+ regenerate,
+ },
+ } ).then()
+ );
+}
+
From be980c8d0dbdc5739f94da3f7c7628d21344afd2 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Thu, 21 Dec 2023 12:13:48 +0530
Subject: [PATCH 44/64] PRESS2-1465
---
includes/RestApi/SiteGenController.php | 63 +++++++++++++++----
.../steps/SiteGen/Preview/index.js | 8 ++-
src/OnboardingSPA/utils/api/siteGen.js | 6 +-
3 files changed, 62 insertions(+), 15 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index 054b65ea5..6f42104f0 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -163,9 +163,9 @@ public function get_homepages( \WP_REST_Request $request ) {
// If the option exists and is not empty, return it
$existing_homepages = get_option('nfd-sitegen-homepages', []);
- if ( ! empty( $existing_homepages ) && !$regenerate ) {
+ /* if ( ! empty( $existing_homepages ) && !$regenerate ) {
return new \WP_REST_Response( $existing_homepages, 200 );
- }
+ } */
// Check if $target_audience is false, null, or not set and then call again.
$target_audience_option = get_option('nfd-ai-site-gen-targetaudience');
@@ -204,6 +204,8 @@ public function get_homepages( \WP_REST_Request $request ) {
public function get_regenerated_homepages( \WP_REST_Request $request ) {
// Fetching parameters provided by the front end.
$site_description = $request->get_param( 'site_description' );
+ $slug = $request->get_param( 'slug' );
+ $colorPalattes = $request->get_param( 'colorPalettes' );
$site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
// Get target audience and content style options.
@@ -260,39 +262,78 @@ public function get_regenerated_homepages( \WP_REST_Request $request ) {
}
}
- private function process_homepages_response( $home_pages ) {
+ private function transform_color_palette($color_palette) {
+ $transformed_palette = array_map(function($key, $value) {
+ return [
+ "slug" => $key,
+ "title" => ucfirst(str_replace('_', ' ', $key)),
+ "color" => $value
+ ];
+ }, array_keys($color_palette), $color_palette);
+
+ return $transformed_palette;
+ }
+
+ private function get_color_palette($color_palettes) {
+ foreach ($color_palettes as $palette_index => $palette) {
+ error_log("Homepage Version palette: " . print_r($palette, true));
+ $colors_list = array_map(function($key, $color) {
+ error_log("Homepage Version palette key: " . print_r($key, true));
+ error_log("Homepage Version palette: color" . print_r($color, true));
+ return [
+ "slug" => $key,
+ "palette" => $this->transform_color_palette($color)
+ ];
+ }, array_keys($palette), $palette);
+ }
+ return $colors_list;
+ }
+
+
+ private function process_homepages_response($home_pages) {
$versions = [];
+ // Fetch the color palette data from the options table.
+ $color_palettes = get_option('nfd-ai-site-gen-colorpalette');
+
+ // If color palettes is not an array, try decoding it in case it's a JSON string.
+ if (!is_array($color_palettes)) {
+ $color_palettes = json_decode($color_palettes, true);
+ }
+
// Retrieve the existing homepages to find the last version number.
$existing_homepages = get_option('nfd-sitegen-homepages', []);
$last_version_number = $this->get_last_version_number($existing_homepages);
$version_number = $last_version_number + 1; // Start numbering from the last version number + 1
- foreach ( $home_pages as $key => $blocks ) {
- if ( ! is_array( $blocks ) ) {
+ // Iterate through each homepage block.
+ foreach ($home_pages as $key => $blocks) {
+ if (!is_array($blocks)) {
continue;
}
- $filtered_blocks = array_filter( $blocks, function($value) {
+ $filtered_blocks = array_filter($blocks, function($value) {
return !is_null($value);
});
- $content = implode( '', $filtered_blocks );
+ $content = implode('', $filtered_blocks);
$version_info = [
- "slug" => "version" . $version_number, // Construct slug using the version number
+ "slug" => "version" . $version_number,
"title" => "Version " . $version_number,
- "isFavourited" => false, // Default to false; logic to set true can be added
- "colorScheme" => "#fff", // Default to white; replace with actual logic if needed
+ "isFavourited" => false,
"content" => $content,
+ "color" => $this->get_color_palette($color_palettes)
];
$versions[] = $version_info;
- $version_number++; // Increment the version number for the next iteration
+ $version_number++; // Increment the version number for the next iteration.
}
+
return $versions;
}
+
private function get_last_version_number($homepages) {
// Initialize to zero, assuming there are no versions yet.
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index cf38e0160..a2385b755 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -58,7 +58,7 @@ const SiteGenPreview = () => {
setIsPreviewLoading( false );
} catch ( error ) {
setIsPreviewLoading( false );
- // console.error( 'Error fetching data:', error );
+ console.error( 'Error fetching data:', error );
}
}
};
@@ -79,14 +79,16 @@ const SiteGenPreview = () => {
}
};
- const handleRegenerate = async ( slug ) => {
+ const handleRegenerate = async ( slug, colorPalattes ) => {
setIsRegenerating( true );
if ( ! ( slug in homepages.data ) ) {
if ( currentData.sitegen.siteDetails?.prompt !== '' ) {
try {
const response = await getRegeneratedHomePagePreviews(
currentData.sitegen.siteDetails.prompt,
- true
+ true,
+ slug,
+ colorPalattes
);
setHomepages( { ...homepages.data, data: response.body } ); // Update the local state with the response data
currentData.sitegen.homepages.data = response.body;
diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js
index ee40bda16..0c8019ccb 100644
--- a/src/OnboardingSPA/utils/api/siteGen.js
+++ b/src/OnboardingSPA/utils/api/siteGen.js
@@ -47,7 +47,9 @@ export async function getHomePagePreviews(
export async function getRegeneratedHomePagePreviews(
siteDescription,
- regenerate = true
+ regenerate = true,
+ slug,
+ colorPalettes
) {
return await resolve(
apiFetch( {
@@ -56,6 +58,8 @@ export async function getRegeneratedHomePagePreviews(
data: {
site_description: siteDescription,
regenerate,
+ slug,
+ colorPalettes,
},
} ).then()
);
From 4071e8ff846280e4b30521d513ebe723280c2579 Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Thu, 21 Dec 2023 20:12:27 +0530
Subject: [PATCH 45/64] Revert "PRESS2-1465 | regenerated api endpoint"
This reverts commit 8d056429559930f6563e2e88d2df774813ff5001.
# Conflicts:
# includes/RestApi/SiteGenController.php
# src/OnboardingSPA/utils/api/siteGen.js
---
includes/RestApi/SiteGenController.php | 42 ++++++--------------------
1 file changed, 9 insertions(+), 33 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index 6f42104f0..eeee0748e 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -60,16 +60,6 @@ public function register_routes() {
'args' => $this->get_homepages_args(),
)
);
- \register_rest_route(
- $this->namespace,
- $this->rest_base . '/get-homepages-regenerate',
- array(
- 'methods' => \WP_REST_Server::CREATABLE,
- 'callback' => array( $this, 'get_regenerated_homepages' ),
- 'permission_callback' => '__return_true',
- 'args' => $this->get_homepages_args(),
- )
- );
}
/**
@@ -167,6 +157,8 @@ public function get_homepages( \WP_REST_Request $request ) {
return new \WP_REST_Response( $existing_homepages, 200 );
} */
+ // Get the regenerated homepages.
+ $regenerated_homepages = get_option('nfd-sitegen-regenerated-homepages', []);
// Check if $target_audience is false, null, or not set and then call again.
$target_audience_option = get_option('nfd-ai-site-gen-targetaudience');
$target_audience = isset($target_audience_option) ? $target_audience_option : null;
@@ -230,37 +222,21 @@ public function get_regenerated_homepages( \WP_REST_Request $request ) {
$regenerated_item = array_shift($regenerated_homepages);
$existing_homepages[] = $regenerated_item;
- // Update the options with the new values.
- update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
update_option('nfd-sitegen-homepages', $existing_homepages);
-
- // Return the updated list of existing homepages.
return new \WP_REST_Response($existing_homepages, 200);
} else {
- // Since there are no regenerated homepages left, generate new ones.
$home_pages = SiteGen::get_home_pages(
$site_description,
$content_style,
$target_audience,
- true
+ $regenerate
);
-
- // Process and save the new batch of regenerated homepages.
- $regenerated_homepages = $this->process_homepages_response( $home_pages );
- update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
-
- // Take the first regenerated homepage and add it to the existing homepages.
- $regenerated_item = array_shift($regenerated_homepages);
- $existing_homepages[] = $regenerated_item;
-
- // Save the updates and return the response.
- update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
- update_option('nfd-sitegen-homepages', $existing_homepages);
-
- // Return the updated list of existing homepages.
- return new \WP_REST_Response($existing_homepages, 200);
+
+ $processed_home_pages = $this->process_homepages_response( $home_pages );
+ update_option('nfd-sitegen-homepages', $processed_home_pages );
+ return new \WP_REST_Response($processed_home_pages, 200);
}
- }
+ }
private function transform_color_palette($color_palette) {
$transformed_palette = array_map(function($key, $value) {
@@ -325,7 +301,7 @@ private function process_homepages_response($home_pages) {
"content" => $content,
"color" => $this->get_color_palette($color_palettes)
];
-
+
$versions[] = $version_info;
$version_number++; // Increment the version number for the next iteration.
From e49b0fea0cf251c6a1f9431a6072875ff74ad9ae Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Fri, 22 Dec 2023 18:39:31 +0530
Subject: [PATCH 46/64] PRESS2-1465
---
includes/RestApi/SiteGenController.php | 146 ++++++++++++------
.../SiteGenPreviewSelectableCard/index.js | 2 +-
.../steps/SiteGen/Preview/index.js | 70 +++++++--
3 files changed, 154 insertions(+), 64 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index eeee0748e..a61f582fe 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -60,6 +60,16 @@ public function register_routes() {
'args' => $this->get_homepages_args(),
)
);
+ \register_rest_route(
+ $this->namespace,
+ $this->rest_base . '/get-homepages-regenerate',
+ array(
+ 'methods' => \WP_REST_Server::CREATABLE,
+ 'callback' => array( $this, 'get_regenerated_homepages' ),
+ 'permission_callback' => '__return_true',
+ 'args' => $this->get_homepages_regenerate_args(),
+ )
+ );
}
/**
@@ -84,7 +94,7 @@ public function sitegen_meta_args() {
);
}
- /**
+ /**
* Gets the arguments for the 'get-homepages' endpoint.
*
* @return array The array of arguments.
@@ -106,6 +116,32 @@ public function get_homepages_args() {
}
/**
+ * Gets the arguments for the 'get-homepages' endpoint.
+ *
+ * @return array The array of arguments.
+ */
+ public function get_homepages_regenerate_args() {
+ return array(
+ 'site_description' => array(
+ 'required' => false,
+ 'validate_callback' => function($param, $request, $key) {
+ return is_string($param);
+ },
+ 'sanitize_callback' => 'sanitize_text_field'
+ ),
+ 'regenerate' => array(
+ 'required' => false,
+ ),
+ 'slug' => array(
+ 'required' => false,
+ ),
+ 'colorPalettes' => array(
+ 'required' => false,
+ ),
+ );
+ }
+
+ /**
* Gets all the valid Identifiers
*
* @return array
@@ -151,14 +187,14 @@ public function get_homepages( \WP_REST_Request $request ) {
$regenerate = $request->get_param( 'regenerate' );
$site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
+ error_log("Homepage Version selected palatte: " . print_r($selected_palette, true));
+
// If the option exists and is not empty, return it
$existing_homepages = get_option('nfd-sitegen-homepages', []);
- /* if ( ! empty( $existing_homepages ) && !$regenerate ) {
+ if ( ! empty( $existing_homepages ) && !$regenerate ) {
return new \WP_REST_Response( $existing_homepages, 200 );
- } */
+ }
- // Get the regenerated homepages.
- $regenerated_homepages = get_option('nfd-sitegen-regenerated-homepages', []);
// Check if $target_audience is false, null, or not set and then call again.
$target_audience_option = get_option('nfd-ai-site-gen-targetaudience');
$target_audience = isset($target_audience_option) ? $target_audience_option : null;
@@ -196,9 +232,10 @@ public function get_homepages( \WP_REST_Request $request ) {
public function get_regenerated_homepages( \WP_REST_Request $request ) {
// Fetching parameters provided by the front end.
$site_description = $request->get_param( 'site_description' );
- $slug = $request->get_param( 'slug' );
- $colorPalattes = $request->get_param( 'colorPalettes' );
+ $regenerateSlug = $request->get_param( 'slug' );
+ $regenerateColorPalattes = $request->get_param( 'colorPalettes' );
$site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
+ $regenerate = $request->get_param( 'regenerate' );
// Get target audience and content style options.
$target_audience = get_option('nfd-ai-site-gen-targetaudience');
@@ -222,67 +259,70 @@ public function get_regenerated_homepages( \WP_REST_Request $request ) {
$regenerated_item = array_shift($regenerated_homepages);
$existing_homepages[] = $regenerated_item;
+ // Update the options with the new values.
+ update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
update_option('nfd-sitegen-homepages', $existing_homepages);
+
+ // Return the updated list of existing homepages.
return new \WP_REST_Response($existing_homepages, 200);
} else {
+ // Since there are no regenerated homepages left, generate new ones.
$home_pages = SiteGen::get_home_pages(
$site_description,
$content_style,
$target_audience,
- $regenerate
+ true
);
-
- $processed_home_pages = $this->process_homepages_response( $home_pages );
- update_option('nfd-sitegen-homepages', $processed_home_pages );
- return new \WP_REST_Response($processed_home_pages, 200);
- }
- }
-
- private function transform_color_palette($color_palette) {
- $transformed_palette = array_map(function($key, $value) {
- return [
- "slug" => $key,
- "title" => ucfirst(str_replace('_', ' ', $key)),
- "color" => $value
- ];
- }, array_keys($color_palette), $color_palette);
- return $transformed_palette;
- }
+ // Process and save the new batch of regenerated homepages.
+ $regenerated_homepages = $this->process_homepages_response( $home_pages, $regenerate, $regenerateSlug, $regenerateColorPalattes );
+ update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
+ // Take the first regenerated homepage and add it to the existing homepages.
+ $regenerated_item = array_shift($regenerated_homepages);
+ $existing_homepages[] = $regenerated_item;
+
+ // Save the updates and return the response.
+ update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
+ update_option('nfd-sitegen-homepages', $existing_homepages);
+
+ // Return the updated list of existing homepages.
+ return new \WP_REST_Response($existing_homepages, 200);
+ }
+ }
- private function get_color_palette($color_palettes) {
- foreach ($color_palettes as $palette_index => $palette) {
- error_log("Homepage Version palette: " . print_r($palette, true));
- $colors_list = array_map(function($key, $color) {
- error_log("Homepage Version palette key: " . print_r($key, true));
- error_log("Homepage Version palette: color" . print_r($color, true));
+ private function transform_palette($palette, $palette_index) {
+ $palette_name = "palette" . ($palette_index + 1);
+ $transformed_palette = [
+ "slug" => $palette_name,
+ "palette" => array_map(function($key, $value) {
return [
"slug" => $key,
- "palette" => $this->transform_color_palette($color)
+ "title" => ucfirst(str_replace('_', ' ', $key)),
+ "color" => $value
];
- }, array_keys($palette), $palette);
- }
- return $colors_list;
+ }, array_keys($palette), $palette)
+ ];
+
+ return $transformed_palette;
}
- private function process_homepages_response($home_pages) {
+ private function process_homepages_response($home_pages, $regenerate, $regenerateSlug, $regenerateColorPalettes) {
$versions = [];
-
+
// Fetch the color palette data from the options table.
$color_palettes = get_option('nfd-ai-site-gen-colorpalette');
-
- // If color palettes is not an array, try decoding it in case it's a JSON string.
+
+ // Decode the color palettes if it's not an array (assuming it's a JSON string).
if (!is_array($color_palettes)) {
$color_palettes = json_decode($color_palettes, true);
}
-
+
// Retrieve the existing homepages to find the last version number.
$existing_homepages = get_option('nfd-sitegen-homepages', []);
$last_version_number = $this->get_last_version_number($existing_homepages);
- $version_number = $last_version_number + 1; // Start numbering from the last version number + 1
+ $version_number = $last_version_number + 1;
- // Iterate through each homepage block.
foreach ($home_pages as $key => $blocks) {
if (!is_array($blocks)) {
continue;
@@ -294,22 +334,32 @@ private function process_homepages_response($home_pages) {
$content = implode('', $filtered_blocks);
+ // Select a random palette and check against the parent's palette.
+ $palette_index = array_rand($color_palettes['colorpalette']);
+ $selected_palette = $this->transform_palette($color_palettes['colorpalette'][$palette_index], $palette_index);
+
+ // If regeneration is true and the selected palette matches the parent's palette, reselect.
+ if ($regenerate) {
+ while ($selected_palette == $regenerateColorPalettes && count($color_palettes['colorpalette']) > 1) {
+ $palette_index = array_rand($color_palettes['colorpalette']);
+ $selected_palette = $this->transform_palette($color_palettes['colorpalette'][$palette_index], $palette_index);
+ }
+ }
+
$version_info = [
"slug" => "version" . $version_number,
"title" => "Version " . $version_number,
"isFavourited" => false,
"content" => $content,
- "color" => $this->get_color_palette($color_palettes)
+ "color" => $selected_palette
];
-
- $versions[] = $version_info;
- $version_number++; // Increment the version number for the next iteration.
+ $versions[] = $version_info;
+ $version_number++;
}
return $versions;
}
-
private function get_last_version_number($homepages) {
// Initialize to zero, assuming there are no versions yet.
@@ -328,4 +378,4 @@ private function get_last_version_number($homepages) {
return $last_version_number;
}
-}
+}
\ No newline at end of file
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index 5710f3410..46e344094 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -112,7 +112,7 @@ const SiteGenPreviewSelectableCard = ( {
role="button"
tabIndex="0"
onClick={ () =>
- onRegenerateClick( designObject?.slug )
+ onRegenerateClick( designObject?.slug, designObject?.color )
}
onKeyDown={ ( event ) => {
if ( event.key === 'Enter' ) {
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index a2385b755..7f341ccc4 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -2,7 +2,7 @@
/* eslint-disable react-hooks/rules-of-hooks */
import CommonLayout from '../../../components/Layouts/Common';
-import { useEffect, useState } from '@wordpress/element';
+import { useEffect, useState, useMemo } from '@wordpress/element';
import { useSelect, useDispatch } from '@wordpress/data';
import { store as nfdOnboardingStore } from '../../../store';
import { HEADER_SITEGEN } from '../../../../constants';
@@ -15,11 +15,13 @@ import {
getHomePagePreviews,
getRegeneratedHomePagePreviews,
} from '../../../utils/api/siteGen';
+import { getGlobalStyles } from '../../../utils/api/themes';
const SiteGenPreview = () => {
const [ homepages, setHomepages ] = useState( { active: {}, data: [] } );
const [ isRegenerating, setIsRegenerating ] = useState( false );
const [ isPreviewLoading, setIsPreviewLoading ] = useState( false );
+ const [ globalStyles, setGlobalStyles ] = useState( [] );
const {
setIsHeaderEnabled,
@@ -64,8 +66,14 @@ const SiteGenPreview = () => {
};
fetchHomePagesPatterns();
+ loadGlobalStyles();
}, [] );
+ const loadGlobalStyles = async () => {
+ const globalStylesResponse = await getGlobalStyles();
+ setGlobalStyles( globalStylesResponse.body );
+ };
+
const handleFavorite = ( slug ) => {
const homepagesList = currentData.sitegen.homepages.data;
@@ -102,6 +110,23 @@ const SiteGenPreview = () => {
}
};
+ // Define the createPreviewSettings function inside your component
+ const createPreviewSettings = ( palette ) => {
+ let settings = {};
+ if ( globalStyles.length > 0 ) {
+ settings = JSON.parse( JSON.stringify( globalStyles[ 0 ] ) );
+ settings.settings.color.palette = palette;
+ }
+ return settings;
+ };
+
+ // Use useMemo to memoize the previewSettings
+ const previewSettings = useMemo( () => {
+ return homepages.data.map( ( homepage ) =>
+ createPreviewSettings( homepage.color.palette )
+ );
+ }, [ homepages.data, globalStyles ] );
+
const buildPreviews = () => {
if ( isPreviewLoading ) {
return (
@@ -119,20 +144,35 @@ const SiteGenPreview = () => {
: [];
designs.push(
homepages.data &&
- homepages.data.map( ( design, idx ) => {
- return (
-
- );
+ homepages.data.map( ( homepage, idx ) => {
+ let newPreviewSettings = {};
+ if ( globalStyles.length > 0 ) {
+ newPreviewSettings = JSON.parse(
+ JSON.stringify( globalStyles && globalStyles[ 0 ] )
+ );
+ newPreviewSettings.settings.color.palette =
+ homepage.color.palette;
+ }
+ const isPreviewSettingsEmpty =
+ Object.keys( previewSettings[ idx ] ).length === 0;
+ if ( ! isPreviewSettingsEmpty ) {
+ return (
+
+ );
+ }
+ // Optionally return null or some other placeholder if newPreviewSettings is empty
+ return null;
} )
);
From 1008e4888d339dbbff43e97e511e58be071770bd Mon Sep 17 00:00:00 2001
From: Ajay Yadav
Date: Thu, 28 Dec 2023 23:19:13 +0530
Subject: [PATCH 47/64] PRESS2-1465 | regenerate functionality
---
includes/RestApi/SiteGenController.php | 191 ++++--------------
.../steps/SiteGen/Preview/index.js | 30 ++-
src/OnboardingSPA/utils/api/siteGen.js | 11 +
3 files changed, 72 insertions(+), 160 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index a61f582fe..90eedb0af 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -70,6 +70,15 @@ public function register_routes() {
'args' => $this->get_homepages_regenerate_args(),
)
);
+ \register_rest_route(
+ $this->namespace,
+ $this->rest_base . '/favourites',
+ array(
+ 'methods' => \WP_REST_Server::CREATABLE,
+ 'callback' => array( $this, 'toggle_favorite_homepage' ),
+ 'permission_callback' => '__return_true',
+ )
+ );
}
/**
@@ -187,8 +196,6 @@ public function get_homepages( \WP_REST_Request $request ) {
$regenerate = $request->get_param( 'regenerate' );
$site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
- error_log("Homepage Version selected palatte: " . print_r($selected_palette, true));
-
// If the option exists and is not empty, return it
$existing_homepages = get_option('nfd-sitegen-homepages', []);
if ( ! empty( $existing_homepages ) && !$regenerate ) {
@@ -217,165 +224,49 @@ public function get_homepages( \WP_REST_Request $request ) {
);
}
- $home_pages = SiteGen::get_home_pages(
+ // Call the SiteGenService method to generate and process homepages
+ $processed_home_pages = SiteGenService::generate_homepages(
$site_description,
$content_style,
$target_audience,
- false
+ $regenerate
);
- $processed_home_pages = $this->process_homepages_response( $home_pages );
- update_option('nfd-sitegen-homepages', $processed_home_pages );
+ // Return the processed homepages
return new \WP_REST_Response($processed_home_pages, 200);
}
- public function get_regenerated_homepages( \WP_REST_Request $request ) {
- // Fetching parameters provided by the front end.
- $site_description = $request->get_param( 'site_description' );
- $regenerateSlug = $request->get_param( 'slug' );
- $regenerateColorPalattes = $request->get_param( 'colorPalettes' );
- $site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
- $regenerate = $request->get_param( 'regenerate' );
-
- // Get target audience and content style options.
- $target_audience = get_option('nfd-ai-site-gen-targetaudience');
- $content_style = get_option('nfd-ai-site-gen-contenttones');
-
- // Ensure that the required data is available.
- if (!$target_audience || !$content_style) {
- return new \WP_REST_Response(
- array('message' => 'Required data is missing.'),
- 400 // Bad Request
- );
- }
-
- // Get the existing and regenerated homepages.
- $existing_homepages = get_option('nfd-sitegen-homepages', []);
- $regenerated_homepages = get_option('nfd-sitegen-regenerated-homepages', []);
-
- // Check if there are any regenerated homepages left.
- if (!empty($regenerated_homepages)) {
- // Shift the first element from regenerated homepages to existing homepages.
- $regenerated_item = array_shift($regenerated_homepages);
- $existing_homepages[] = $regenerated_item;
-
- // Update the options with the new values.
- update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
- update_option('nfd-sitegen-homepages', $existing_homepages);
+ public function get_regenerated_homepages(\WP_REST_Request $request) {
+ $site_description = $request->get_param('site_description');
+ $regenerateSlug = $request->get_param('slug');
+ $regenerateColorPalattes = $request->get_param('colorPalettes');
+ $favorites = get_option('nfd-sitegen-favorites', []);
+ $isFavorite = in_array($regenerateSlug, $favorites);
+ $target_audience = get_option('nfd-ai-site-gen-targetaudience');
+ $content_style = get_option('nfd-ai-site-gen-contenttones');
- // Return the updated list of existing homepages.
- return new \WP_REST_Response($existing_homepages, 200);
- } else {
- // Since there are no regenerated homepages left, generate new ones.
- $home_pages = SiteGen::get_home_pages(
- $site_description,
- $content_style,
- $target_audience,
- true
- );
-
- // Process and save the new batch of regenerated homepages.
- $regenerated_homepages = $this->process_homepages_response( $home_pages, $regenerate, $regenerateSlug, $regenerateColorPalattes );
- update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
- // Take the first regenerated homepage and add it to the existing homepages.
- $regenerated_item = array_shift($regenerated_homepages);
- $existing_homepages[] = $regenerated_item;
-
- // Save the updates and return the response.
- update_option('nfd-sitegen-regenerated-homepages', $regenerated_homepages);
- update_option('nfd-sitegen-homepages', $existing_homepages);
-
- // Return the updated list of existing homepages.
- return new \WP_REST_Response($existing_homepages, 200);
- }
- }
+ if (!$target_audience || !$content_style) {
+ return new \WP_REST_Response(array('message' => 'Required data is missing.'), 400);
+ }
- private function transform_palette($palette, $palette_index) {
- $palette_name = "palette" . ($palette_index + 1);
- $transformed_palette = [
- "slug" => $palette_name,
- "palette" => array_map(function($key, $value) {
- return [
- "slug" => $key,
- "title" => ucfirst(str_replace('_', ' ', $key)),
- "color" => $value
- ];
- }, array_keys($palette), $palette)
- ];
-
- return $transformed_palette;
- }
-
+ if ($isFavorite) {
+ $result = SiteGenService::handle_favorite_regeneration($regenerateSlug, $regenerateColorPalattes);
+ } else {
+ $result = SiteGenService::handle_regular_regeneration($site_description, $content_style, $target_audience);
+ }
- private function process_homepages_response($home_pages, $regenerate, $regenerateSlug, $regenerateColorPalettes) {
- $versions = [];
-
- // Fetch the color palette data from the options table.
- $color_palettes = get_option('nfd-ai-site-gen-colorpalette');
-
- // Decode the color palettes if it's not an array (assuming it's a JSON string).
- if (!is_array($color_palettes)) {
- $color_palettes = json_decode($color_palettes, true);
- }
-
- // Retrieve the existing homepages to find the last version number.
- $existing_homepages = get_option('nfd-sitegen-homepages', []);
- $last_version_number = $this->get_last_version_number($existing_homepages);
- $version_number = $last_version_number + 1;
-
- foreach ($home_pages as $key => $blocks) {
- if (!is_array($blocks)) {
- continue;
- }
-
- $filtered_blocks = array_filter($blocks, function($value) {
- return !is_null($value);
- });
-
- $content = implode('', $filtered_blocks);
-
- // Select a random palette and check against the parent's palette.
- $palette_index = array_rand($color_palettes['colorpalette']);
- $selected_palette = $this->transform_palette($color_palettes['colorpalette'][$palette_index], $palette_index);
-
- // If regeneration is true and the selected palette matches the parent's palette, reselect.
- if ($regenerate) {
- while ($selected_palette == $regenerateColorPalettes && count($color_palettes['colorpalette']) > 1) {
- $palette_index = array_rand($color_palettes['colorpalette']);
- $selected_palette = $this->transform_palette($color_palettes['colorpalette'][$palette_index], $palette_index);
- }
- }
-
- $version_info = [
- "slug" => "version" . $version_number,
- "title" => "Version " . $version_number,
- "isFavourited" => false,
- "content" => $content,
- "color" => $selected_palette
- ];
-
- $versions[] = $version_info;
- $version_number++;
- }
-
- return $versions;
- }
+ if ($result === null) {
+ return new \WP_REST_Response(array('message' => 'Error processing request.'), 500);
+ }
- private function get_last_version_number($homepages) {
- // Initialize to zero, assuming there are no versions yet.
- $last_version_number = 0;
-
- // Loop through the homepages to find the highest version number.
- foreach ($homepages as $homepage) {
- // Extract the number from the slug (assuming slug is like "version3").
- if (preg_match('/version(\d+)/', $homepage['slug'], $matches)) {
- $version_num = intval($matches[1]);
- if ($version_num > $last_version_number) {
- $last_version_number = $version_num;
- }
- }
- }
+ return new \WP_REST_Response($result, 200);
+ }
- return $last_version_number;
- }
+ public function toggle_favorite_homepage(\WP_REST_Request $request) {
+ $slug = $request->get_param('slug');
+
+ $response = SiteGenService::toggle_favorite_homepage($slug);
+
+ return new \WP_REST_Response($response, 200);
+ }
}
\ No newline at end of file
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 7f341ccc4..89ab0ad93 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -14,6 +14,7 @@ import RegeneratingSiteCard from './regeneratingCard';
import {
getHomePagePreviews,
getRegeneratedHomePagePreviews,
+ toggleFavoriteHomepage,
} from '../../../utils/api/siteGen';
import { getGlobalStyles } from '../../../utils/api/themes';
@@ -75,16 +76,25 @@ const SiteGenPreview = () => {
};
const handleFavorite = ( slug ) => {
- const homepagesList = currentData.sitegen.homepages.data;
-
- if ( homepagesList && homepagesList.length > 0 ) {
- homepagesList.forEach( ( homepageObj ) => {
- if ( homepageObj.slug === slug ) {
- homepageObj.isFavourited = ! homepageObj.isFavourited; // Toggle the isFavourited property
+ toggleFavoriteHomepage( slug )
+ .then( ( response ) => {
+ // Check if the response indicates a successful toggle
+ if ( response ) {
+ const homepagesList = currentData.sitegen.homepages.data;
+ if ( homepagesList && homepagesList.length > 0 ) {
+ homepagesList.forEach( ( homepageObj ) => {
+ if ( homepageObj.slug === slug ) {
+ homepageObj.isFavourited =
+ ! homepageObj.isFavourited;
+ }
+ } );
+ setCurrentOnboardingData( { ...currentData } );
+ }
+ } else {
+ console.error( 'Error toggling favorite status' );
}
- } );
- setCurrentOnboardingData( { ...currentData } ); // Create a new object to ensure state updates
- }
+ } )
+ .catch( ( error ) => console.error( 'Error:', error ) );
};
const handleRegenerate = async ( slug, colorPalattes ) => {
@@ -123,7 +133,7 @@ const SiteGenPreview = () => {
// Use useMemo to memoize the previewSettings
const previewSettings = useMemo( () => {
return homepages.data.map( ( homepage ) =>
- createPreviewSettings( homepage.color.palette )
+ createPreviewSettings( homepage?.color?.palette )
);
}, [ homepages.data, globalStyles ] );
diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js
index 0c8019ccb..fb004a2de 100644
--- a/src/OnboardingSPA/utils/api/siteGen.js
+++ b/src/OnboardingSPA/utils/api/siteGen.js
@@ -65,3 +65,14 @@ export async function getRegeneratedHomePagePreviews(
);
}
+export async function toggleFavoriteHomepage( slug ) {
+ return await resolve(
+ apiFetch( {
+ url: onboardingRestURL( 'sitegen/favourites' ),
+ method: 'POST',
+ data: {
+ slug,
+ },
+ } ).then()
+ );
+}
From c052920ce02e77352204165ef00437a43f15ac9b Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Fri, 29 Dec 2023 11:31:07 +0530
Subject: [PATCH 48/64] updated preview
merged conflicts
---
.../LivePreview/SiteGenPreviewSelectableCard/index.js | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index 46e344094..12ca2bac1 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -22,6 +22,7 @@ const SiteGenPreviewSelectableCard = ( {
skeletonLoadingTime = 2500,
designObject,
handleFavorite,
+ handlePreview
} ) => {
const { setActiveHomepage } = useDispatch( nfdOnboardingStore );
const [ loadingParent, setIsLoadingParent ] = useState( true );
@@ -73,13 +74,13 @@ const SiteGenPreviewSelectableCard = ( {
onClick={ onPreviewVersionClick }
onKeyDown={ ( event ) => {
if ( event.key === 'Enter' ) {
- onPreviewVersionClick();
+ handlePreview();
}
} }
>
handlePreview() }
>
Preview Version
@@ -112,7 +113,10 @@ const SiteGenPreviewSelectableCard = ( {
role="button"
tabIndex="0"
onClick={ () =>
- onRegenerateClick( designObject?.slug, designObject?.color )
+ onRegenerateClick(
+ designObject?.slug,
+ designObject?.color
+ )
}
onKeyDown={ ( event ) => {
if ( event.key === 'Enter' ) {
From 7cc1db122ac4f66aa7c71bb944237a019905d78d Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Tue, 2 Jan 2024 10:02:20 +0530
Subject: [PATCH 49/64] PRESS2-1465 | fixed linting issues
fixed linting issues
---
.../SiteGenPreviewSelectableCard/index.js | 6 +---
.../steps/SiteGen/Preview/index.js | 36 +++++++++----------
src/OnboardingSPA/store/reducer.js | 8 -----
src/OnboardingSPA/styles/_branding.scss | 8 ++---
src/OnboardingSPA/styles/app.scss | 1 -
5 files changed, 21 insertions(+), 38 deletions(-)
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index 12ca2bac1..d3485cd2a 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -22,7 +22,7 @@ const SiteGenPreviewSelectableCard = ( {
skeletonLoadingTime = 2500,
designObject,
handleFavorite,
- handlePreview
+ handlePreview,
} ) => {
const { setActiveHomepage } = useDispatch( nfdOnboardingStore );
const [ loadingParent, setIsLoadingParent ] = useState( true );
@@ -39,10 +39,6 @@ const SiteGenPreviewSelectableCard = ( {
navigate( nextStep.path );
};
- /* const onWishlistClick = ( slug ) => {
- toggleFavorite( slug );
- }; */
-
return (
{
setIsPreviewLoading( false );
} catch ( error ) {
setIsPreviewLoading( false );
- console.error( 'Error fetching data:', error );
}
}
};
@@ -89,25 +88,23 @@ const SiteGenPreview = () => {
};
const handleFavorite = ( slug ) => {
- toggleFavoriteHomepage( slug )
- .then( ( response ) => {
- // Check if the response indicates a successful toggle
- if ( response ) {
- const homepagesList = currentData.sitegen.homepages.data;
- if ( homepagesList && homepagesList.length > 0 ) {
- homepagesList.forEach( ( homepageObj ) => {
- if ( homepageObj.slug === slug ) {
- homepageObj.isFavourited =
- ! homepageObj.isFavourited;
- }
- } );
- setCurrentOnboardingData( { ...currentData } );
- }
- } else {
- console.error( 'Error toggling favorite status' );
+ toggleFavoriteHomepage( slug ).then( ( response ) => {
+ // Check if the response indicates a successful toggle
+ if ( response ) {
+ const homepagesList = currentData.sitegen.homepages.data;
+ if ( homepagesList && homepagesList.length > 0 ) {
+ homepagesList.forEach( ( homepageObj ) => {
+ if ( homepageObj.slug === slug ) {
+ homepageObj.isFavourited =
+ ! homepageObj.isFavourited;
+ }
+ } );
+ setCurrentOnboardingData( { ...currentData } );
}
- } )
- .catch( ( error ) => console.error( 'Error:', error ) );
+ } else {
+ // console.error( 'Error toggling favorite status' );
+ }
+ } );
};
const handleRegenerate = async ( slug, colorPalattes ) => {
@@ -127,7 +124,6 @@ const SiteGenPreview = () => {
setIsRegenerating( false );
} catch ( error ) {
setIsRegenerating( false );
- console.error( 'Error fetching data:', error );
}
}
}
diff --git a/src/OnboardingSPA/store/reducer.js b/src/OnboardingSPA/store/reducer.js
index 7b465114e..de6067be4 100644
--- a/src/OnboardingSPA/store/reducer.js
+++ b/src/OnboardingSPA/store/reducer.js
@@ -18,7 +18,6 @@ import { headers } from '../data/headers';
import { footers } from '../data/footers';
import apiQueueExecutor from '../utils/api-queuer/api-queue-executor';
import { DEFAULT_FLOW } from '../data/flows/constants';
-import { sitegen } from '../chapters/sitegen';
export function flow(
state = {
@@ -181,13 +180,6 @@ export function data( state = {}, action ) {
};
case 'SET_ACTIVE_HOMEPAGE':
- /* return {
- ...state.flowData.sitegen,
- homepages: {
- ...state.flowData.sitegen.homepages,
- active: action.activeHomepage,
- },
- }; */
return {
...state,
flowData: {
diff --git a/src/OnboardingSPA/styles/_branding.scss b/src/OnboardingSPA/styles/_branding.scss
index 9422f5cad..49c0f34d6 100644
--- a/src/OnboardingSPA/styles/_branding.scss
+++ b/src/OnboardingSPA/styles/_branding.scss
@@ -320,8 +320,8 @@ body {
--nfd-onboarding-site-logo-border: var(--nfd-onboarding-primary);
--nfd-onboarding-header-border: rgba(var(--nfd-onboarding-primary-rgb), 0.3);
--nfd-onboarding-card-overlay: rgba(0, 0, 0, 0.4);
- --nfd-onboarding-heart-icon-fill:#EF4A71;
- --nfd-onboarding-heart-icon-stroke:#9CA2A7;
+ --nfd-onboarding-heart-icon-fill: #ef4a71;
+ --nfd-onboarding-heart-icon-stroke: #9ca2a7;
--nfd-onboarding-regenerating-card-background: rgba(53, 58, 64, 0.1);
--nfd-onboarding-preview-favorite-background: #1e2327;
--nfd-onboarding-favorite-fill: #ef4a71;
@@ -346,8 +346,8 @@ body {
--nfd-onboarding-site-logo-border: rgba(156, 162, 167, 1);
--nfd-onboarding-header-border: rgba(var(--nfd-onboarding-primary-rgb), 0.3);
--nfd-onboarding-card-overlay: rgba(0, 0, 0, 0.4);
- --nfd-onboarding-heart-icon-fill:#EF4A71;
- --nfd-onboarding-heart-icon-stroke:#9CA2A7;
+ --nfd-onboarding-heart-icon-fill: #ef4a71;
+ --nfd-onboarding-heart-icon-stroke: #9ca2a7;
--nfd-onboarding-preview-favorite-background: #1e2327;
--nfd-onboarding-editor-header-background: var(--nfd-onboarding-preview-favorite-background);
--nfd-onboarding-favorite-fill: #ef4a71;
diff --git a/src/OnboardingSPA/styles/app.scss b/src/OnboardingSPA/styles/app.scss
index f6d0fc6d4..58882e322 100644
--- a/src/OnboardingSPA/styles/app.scss
+++ b/src/OnboardingSPA/styles/app.scss
@@ -84,7 +84,6 @@
@import "../steps/SiteGen/Welcome/stylesheet";
@import "../steps/SiteGen/Building/stylesheet";
@import "../steps/SiteGen/Editor/stylesheet";
-@import "../steps/SiteGen/Preview/stylesheet";
@import "../steps/SiteGen/Editor/Header/stylesheet";
.nfd-onboarding-container {
From bb4a753e8087d60d180cca29f877f0c86bc79a67 Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Wed, 3 Jan 2024 18:05:59 +0530
Subject: [PATCH 50/64] Fixing PR comments | removed bg image
---
src/OnboardingSPA/styles/_branding.scss | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/OnboardingSPA/styles/_branding.scss b/src/OnboardingSPA/styles/_branding.scss
index f3ff2370a..b28787025 100644
--- a/src/OnboardingSPA/styles/_branding.scss
+++ b/src/OnboardingSPA/styles/_branding.scss
@@ -353,7 +353,6 @@ body {
--nfd-onboarding-editor-header-background: var(--nfd-onboarding-preview-favorite-background);
--nfd-onboarding-favorite-fill: #ef4a71;
--nfd-onboarding-button-background: #363e4459;
- --sitegen-background: url(../static/images/ai_bg.png);
--nfd-onboarding-regenerating-card-background: rgba(53, 58, 64, 0.1);
--sitegen-background-low: url(../static/images/sitegen/ai_bg_low.png);
}
From 9ab19d691fcf1078e8b96e76b6b37281fd5087da Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Thu, 4 Jan 2024 09:13:23 +0530
Subject: [PATCH 51/64] Press2-1465 | fixing PR comments
---
includes/RestApi/SiteGenController.php | 27 ++++++++++++-------
.../components/Header/stylesheet.scss | 8 +++---
.../SiteGenPreviewSelectableCard/index.js | 5 +++-
3 files changed, 26 insertions(+), 14 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index feff2db19..0db0af567 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -46,7 +46,7 @@ public function register_routes() {
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this, 'generate_sitegen_meta' ),
- 'permission_callback' => '__return_true',
+ 'permission_callback' => array( Permissions::class, 'rest_is_authorized_admin' ),
'args' => $this->sitegen_meta_args(),
)
);
@@ -56,7 +56,7 @@ public function register_routes() {
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this, 'get_homepages' ),
- 'permission_callback' => '__return_true',
+ 'permission_callback' => array( Permissions::class, 'rest_is_authorized_admin' ),
'args' => $this->get_homepages_args(),
)
);
@@ -66,7 +66,7 @@ public function register_routes() {
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this, 'get_regenerated_homepages' ),
- 'permission_callback' => '__return_true',
+ 'permission_callback' => array( Permissions::class, 'rest_is_authorized_admin' ),
'args' => $this->get_homepages_regenerate_args(),
)
);
@@ -111,7 +111,7 @@ public function sitegen_meta_args() {
public function get_homepages_args() {
return array(
'site_description' => array(
- 'required' => false,
+ 'required' => true,
'validate_callback' => function($param, $request, $key) {
return is_string($param);
},
@@ -132,7 +132,7 @@ public function get_homepages_args() {
public function get_homepages_regenerate_args() {
return array(
'site_description' => array(
- 'required' => false,
+ 'required' => true,
'validate_callback' => function($param, $request, $key) {
return is_string($param);
},
@@ -203,6 +203,7 @@ public function get_homepages( \WP_REST_Request $request ) {
}
// Check if $target_audience is false, null, or not set and then call again.
+ /* TODO : call them via a function and get options */
$target_audience_option = get_option('nfd-ai-site-gen-targetaudience');
$target_audience = isset($target_audience_option) ? $target_audience_option : null;
@@ -216,11 +217,11 @@ public function get_homepages( \WP_REST_Request $request ) {
$content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', $skip_cache);
}
- // Ensure that the required data is available.
+ // Ensure that the required data is available.
if (!$target_audience || !$content_style) {
- return new \WP_REST_Response(
+ return new \WP_Error(
array('message' => 'Required data is missing.'),
- 400 // Bad Request
+ 400
);
}
@@ -232,6 +233,11 @@ public function get_homepages( \WP_REST_Request $request ) {
$regenerate
);
+ // Check for errors in the response
+ if ( is_wp_error( $processed_home_pages ) ) {
+ return $processed_home_pages;
+ }
+
// Return the processed homepages
return new \WP_REST_Response($processed_home_pages, 200);
}
@@ -242,11 +248,12 @@ public function get_regenerated_homepages(\WP_REST_Request $request) {
$regenerateColorPalattes = $request->get_param('colorPalettes');
$favorites = get_option('nfd-sitegen-favorites', []);
$isFavorite = in_array($regenerateSlug, $favorites);
+ /* TODO : call them via a function and get options */
$target_audience = get_option('nfd-ai-site-gen-targetaudience');
$content_style = get_option('nfd-ai-site-gen-contenttones');
if (!$target_audience || !$content_style) {
- return new \WP_REST_Response(array('message' => 'Required data is missing.'), 400);
+ return new \WP_Error(array('message' => 'Required data is missing.'), 400);
}
if ($isFavorite) {
@@ -256,7 +263,7 @@ public function get_regenerated_homepages(\WP_REST_Request $request) {
}
if ($result === null) {
- return new \WP_REST_Response(array('message' => 'Error processing request.'), 500);
+ return new \WP_Error(array('message' => 'Error processing request.'), 500);
}
return new \WP_REST_Response($result, 200);
diff --git a/src/OnboardingSPA/components/Header/stylesheet.scss b/src/OnboardingSPA/components/Header/stylesheet.scss
index afeb46882..4e92c268c 100644
--- a/src/OnboardingSPA/components/Header/stylesheet.scss
+++ b/src/OnboardingSPA/components/Header/stylesheet.scss
@@ -1,3 +1,5 @@
+$nfd-onboarding-editor-header-hover: #272d30;
+
.nfd-onboarding-header {
align-items: center;
background-color: var(--nfd-onboarding-header-base);
@@ -121,9 +123,9 @@
border-radius: 6px;
&:hover {
- background-color: #fff;
- color: #272d30;
- fill: #272d30;
+ background-color: var(--nfd-onboarding-primary);
+ color: $nfd-onboarding-editor-header-hover;
+ fill: $nfd-onboarding-editor-header-hover;
}
}
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index d3485cd2a..ffa292171 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -119,7 +119,10 @@ const SiteGenPreviewSelectableCard = ( {
onRegenerateClick( designObject?.slug );
}
} }
- aria-label="Regenerate Content"
+ aria-label={ __(
+ 'Regenerate Content',
+ 'wp-module-onboarding'
+ ) }
className={ `${ className }__live-preview-container-buttons__button` }
>
From 976d93181541e427ec53bc64885920ecdb075955 Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Fri, 5 Jan 2024 01:28:52 +0530
Subject: [PATCH 52/64] Press2-1465 | updated get options from Option
---
includes/RestApi/SiteGenController.php | 51 ++++++++++++++------------
1 file changed, 28 insertions(+), 23 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index 0db0af567..d9b41bc8d 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -5,6 +5,7 @@
use NewfoldLabs\WP\Module\Onboarding\Permissions;
use NewfoldLabs\WP\Module\AI\SiteGen\SiteGen;
use NewfoldLabs\WP\Module\Onboarding\Data\Services\SiteGenService;
+use NewfoldLabs\WP\Module\Onboarding\Data\Options;
/**
* Class SiteGenController
@@ -197,31 +198,22 @@ public function get_homepages( \WP_REST_Request $request ) {
$site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
// If the option exists and is not empty, return it
- $existing_homepages = get_option('nfd-sitegen-homepages', []);
+ $existing_homepages = get_option(Options::get_option_name( 'sitegen_homepages' ), []);
if ( ! empty( $existing_homepages ) && !$regenerate ) {
return new \WP_REST_Response( $existing_homepages, 200 );
}
- // Check if $target_audience is false, null, or not set and then call again.
- /* TODO : call them via a function and get options */
- $target_audience_option = get_option('nfd-ai-site-gen-targetaudience');
- $target_audience = isset($target_audience_option) ? $target_audience_option : null;
-
- if (!$target_audience) {
- $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache);
- }
-
- $content_style_option = get_option('nfd-ai-site-gen-contenttones');
- $content_style = isset($content_style_option) ? $content_style_option : null;
- if(!$content_style) {
- $content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', $skip_cache);
- }
+ $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache);
+ $content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', $skip_cache);
// Ensure that the required data is available.
if (!$target_audience || !$content_style) {
return new \WP_Error(
- array('message' => 'Required data is missing.'),
- 400
+ 'nfd_onboarding_error',
+ __( 'Required data is missing.', 'wp-module-onboarding' ),
+ array(
+ 'status' => 400,
+ )
);
}
@@ -246,14 +238,21 @@ public function get_regenerated_homepages(\WP_REST_Request $request) {
$site_description = $request->get_param('site_description');
$regenerateSlug = $request->get_param('slug');
$regenerateColorPalattes = $request->get_param('colorPalettes');
- $favorites = get_option('nfd-sitegen-favorites', []);
+ /* TODO: call the favourites as a function from sitegenservice */
+ $favorites = get_option( Options::get_option_name( 'sitegen_favorites' ), []);
$isFavorite = in_array($regenerateSlug, $favorites);
- /* TODO : call them via a function and get options */
- $target_audience = get_option('nfd-ai-site-gen-targetaudience');
- $content_style = get_option('nfd-ai-site-gen-contenttones');
+
+ $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache);
+ $content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', $skip_cache);
if (!$target_audience || !$content_style) {
- return new \WP_Error(array('message' => 'Required data is missing.'), 400);
+ return new \WP_Error(
+ 'nfd_onboarding_error',
+ __( 'Required data is missing.', 'wp-module-onboarding' ),
+ array(
+ 'status' => 400,
+ )
+ );
}
if ($isFavorite) {
@@ -263,7 +262,13 @@ public function get_regenerated_homepages(\WP_REST_Request $request) {
}
if ($result === null) {
- return new \WP_Error(array('message' => 'Error processing request.'), 500);
+ return new \WP_Error(
+ 'nfd_onboarding_error',
+ __( 'Error processing request.', 'wp-module-onboarding' ),
+ array(
+ 'status' => 500,
+ )
+ );
}
return new \WP_REST_Response($result, 200);
From 246bae93a971dc70d5290cec5ca0b1e784c52324 Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Fri, 5 Jan 2024 12:51:07 +0530
Subject: [PATCH 53/64] PRESS2-1465 | changed favourite logic
---
includes/RestApi/SiteGenController.php | 14 +++--
.../SiteGenPreviewSelectableCard/index.js | 9 +++-
.../steps/SiteGen/Preview/index.js | 54 ++++++++++++-------
src/OnboardingSPA/utils/api/siteGen.js | 4 +-
4 files changed, 52 insertions(+), 29 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index d9b41bc8d..23b216325 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -76,8 +76,8 @@ public function register_routes() {
$this->rest_base . '/favourites',
array(
'methods' => \WP_REST_Server::CREATABLE,
- 'callback' => array( $this, 'toggle_favorite_homepage' ),
- 'permission_callback' => '__return_true',
+ 'callback' => array( $this, 'toggle_favourite_homepage' ),
+ 'permission_callback' => array( Permissions::class, 'rest_is_authorized_admin' ),
)
);
}
@@ -238,9 +238,7 @@ public function get_regenerated_homepages(\WP_REST_Request $request) {
$site_description = $request->get_param('site_description');
$regenerateSlug = $request->get_param('slug');
$regenerateColorPalattes = $request->get_param('colorPalettes');
- /* TODO: call the favourites as a function from sitegenservice */
- $favorites = get_option( Options::get_option_name( 'sitegen_favorites' ), []);
- $isFavorite = in_array($regenerateSlug, $favorites);
+ $isFavourite = $request->get_param('isFavourited');
$target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache);
$content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', $skip_cache);
@@ -255,7 +253,7 @@ public function get_regenerated_homepages(\WP_REST_Request $request) {
);
}
- if ($isFavorite) {
+ if ($isFavourite) {
$result = SiteGenService::handle_favorite_regeneration($regenerateSlug, $regenerateColorPalattes);
} else {
$result = SiteGenService::handle_regular_regeneration($site_description, $content_style, $target_audience);
@@ -274,10 +272,10 @@ public function get_regenerated_homepages(\WP_REST_Request $request) {
return new \WP_REST_Response($result, 200);
}
- public function toggle_favorite_homepage(\WP_REST_Request $request) {
+ public function toggle_favourite_homepage(\WP_REST_Request $request) {
$slug = $request->get_param('slug');
- $response = SiteGenService::toggle_favorite_homepage($slug);
+ $response = SiteGenService::toggle_favourite_homepage($slug);
return new \WP_REST_Response($response, 200);
}
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index ffa292171..9d0e61cef 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -111,12 +111,17 @@ const SiteGenPreviewSelectableCard = ( {
onClick={ () =>
onRegenerateClick(
designObject?.slug,
- designObject?.color
+ designObject?.color,
+ designObject?.isFavourited
)
}
onKeyDown={ ( event ) => {
if ( event.key === 'Enter' ) {
- onRegenerateClick( designObject?.slug );
+ onRegenerateClick(
+ designObject?.slug,
+ designObject?.color,
+ designObject?.isFavourited
+ );
}
} }
aria-label={ __(
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index b27ed9064..59f9c0e68 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -87,27 +87,44 @@ const SiteGenPreview = () => {
navigate( nextStep.path );
};
- const handleFavorite = ( slug ) => {
- toggleFavoriteHomepage( slug ).then( ( response ) => {
- // Check if the response indicates a successful toggle
- if ( response ) {
- const homepagesList = currentData.sitegen.homepages.data;
- if ( homepagesList && homepagesList.length > 0 ) {
- homepagesList.forEach( ( homepageObj ) => {
- if ( homepageObj.slug === slug ) {
- homepageObj.isFavourited =
- ! homepageObj.isFavourited;
- }
- } );
- setCurrentOnboardingData( { ...currentData } );
- }
- } else {
- // console.error( 'Error toggling favorite status' );
+ const updateFavoriteStatus = ( slug, homepagesList ) => {
+ homepagesList.forEach( ( homepageObj ) => {
+ if ( homepageObj.slug === slug ) {
+ homepageObj.isFavourited = ! homepageObj.isFavourited;
}
} );
+ setCurrentOnboardingData( { ...currentData } );
+ };
+
+ const handleToggleFavoriteSuccess = ( response, slug, homepagesList ) => {
+ if ( ! response ) {
+ updateFavoriteStatus( slug, homepagesList );
+ }
+ };
+
+ const handleToggleFavoriteError = ( error, slug, homepagesList ) => {
+ updateFavoriteStatus( slug, homepagesList );
+ // eslint-disable-next-line no-console
+ console.error( error );
+ };
+
+ const handleFavorite = ( slug ) => {
+ const homepagesList = currentData.sitegen.homepages.data;
+
+ if ( homepagesList && homepagesList.length > 0 ) {
+ updateFavoriteStatus( slug, homepagesList );
+ }
+
+ toggleFavoriteHomepage( slug )
+ .then( ( response ) =>
+ handleToggleFavoriteSuccess( response, slug, homepagesList )
+ )
+ .catch( ( error ) =>
+ handleToggleFavoriteError( error, slug, homepagesList )
+ );
};
- const handleRegenerate = async ( slug, colorPalattes ) => {
+ const handleRegenerate = async ( slug, colorPalattes, isFavourited ) => {
setIsRegenerating( true );
if ( ! ( slug in homepages.data ) ) {
if ( currentData.sitegen.siteDetails?.prompt !== '' ) {
@@ -116,7 +133,8 @@ const SiteGenPreview = () => {
currentData.sitegen.siteDetails.prompt,
true,
slug,
- colorPalattes
+ colorPalattes,
+ isFavourited
);
setHomepages( { ...homepages.data, data: response.body } ); // Update the local state with the response data
currentData.sitegen.homepages.data = response.body;
diff --git a/src/OnboardingSPA/utils/api/siteGen.js b/src/OnboardingSPA/utils/api/siteGen.js
index af98e276d..f3c78b626 100644
--- a/src/OnboardingSPA/utils/api/siteGen.js
+++ b/src/OnboardingSPA/utils/api/siteGen.js
@@ -49,7 +49,8 @@ export async function getRegeneratedHomePagePreviews(
siteDescription,
regenerate = true,
slug,
- colorPalettes
+ colorPalettes,
+ isFavourited
) {
return await resolve(
apiFetch( {
@@ -60,6 +61,7 @@ export async function getRegeneratedHomePagePreviews(
regenerate,
slug,
colorPalettes,
+ isFavourited,
},
} ).then()
);
From a390f20923e044ed38c16d0c9a8e4f87e6d3b5d5 Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Fri, 5 Jan 2024 20:35:45 +0530
Subject: [PATCH 54/64] PRESS2-1465 | fixed Option with get_option
---
includes/RestApi/SiteGenController.php | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index 23b216325..bf4c1d9e3 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -203,8 +203,8 @@ public function get_homepages( \WP_REST_Request $request ) {
return new \WP_REST_Response( $existing_homepages, 200 );
}
- $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache);
- $content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', $skip_cache);
+ $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', true);
+ $content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', true);
// Ensure that the required data is available.
if (!$target_audience || !$content_style) {
@@ -239,9 +239,9 @@ public function get_regenerated_homepages(\WP_REST_Request $request) {
$regenerateSlug = $request->get_param('slug');
$regenerateColorPalattes = $request->get_param('colorPalettes');
$isFavourite = $request->get_param('isFavourited');
-
- $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', $skip_cache);
- $content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', $skip_cache);
+ $site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
+ $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', true);
+ $content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', true);
if (!$target_audience || !$content_style) {
return new \WP_Error(
@@ -277,6 +277,16 @@ public function toggle_favourite_homepage(\WP_REST_Request $request) {
$response = SiteGenService::toggle_favourite_homepage($slug);
+ if (is_wp_error($response)) {
+ $error_message = $response->get_error_message();
+ return new \WP_Error(
+ 'nfd_onboarding_error',
+ __( $error_message, 'wp-module-onboarding' ),
+ array(
+ 'status' => 404,
+ )
+ );
+ }
return new \WP_REST_Response($response, 200);
}
}
\ No newline at end of file
From ae0be8b2c524c8c11d547981286db6844b648b97 Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Mon, 8 Jan 2024 17:06:31 +0530
Subject: [PATCH 55/64] PRESS2-1465 | fixed php linting
---
includes/RestApi/SiteGenController.php | 189 +++++++++++++------------
1 file changed, 98 insertions(+), 91 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index bf4c1d9e3..b30225c29 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -58,7 +58,7 @@ public function register_routes() {
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this, 'get_homepages' ),
'permission_callback' => array( Permissions::class, 'rest_is_authorized_admin' ),
- 'args' => $this->get_homepages_args(),
+ 'args' => $this->get_homepages_args(),
)
);
\register_rest_route(
@@ -68,7 +68,7 @@ public function register_routes() {
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this, 'get_regenerated_homepages' ),
'permission_callback' => array( Permissions::class, 'rest_is_authorized_admin' ),
- 'args' => $this->get_homepages_regenerate_args(),
+ 'args' => $this->get_homepages_regenerate_args(),
)
);
\register_rest_route(
@@ -105,51 +105,51 @@ public function sitegen_meta_args() {
}
/**
- * Gets the arguments for the 'get-homepages' endpoint.
- *
- * @return array The array of arguments.
- */
- public function get_homepages_args() {
- return array(
- 'site_description' => array(
- 'required' => true,
- 'validate_callback' => function($param, $request, $key) {
- return is_string($param);
- },
- 'sanitize_callback' => 'sanitize_text_field'
- ),
- 'regenerate' => array(
- 'required' => false,
- ),
- // Add other parameters here as needed.
- );
- }
+ * Gets the arguments for the 'get-homepages' endpoint.
+ *
+ * @return array The array of arguments.
+ */
+ public function get_homepages_args() {
+ return array(
+ 'site_description' => array(
+ 'required' => true,
+ 'validate_callback' => function ( $param ) {
+ return is_string( $param );
+ },
+ 'sanitize_callback' => 'sanitize_text_field',
+ ),
+ 'regenerate' => array(
+ 'required' => false,
+ ),
+ // Add other parameters here as needed.
+ );
+ }
/**
- * Gets the arguments for the 'get-homepages' endpoint.
- *
- * @return array The array of arguments.
- */
- public function get_homepages_regenerate_args() {
- return array(
- 'site_description' => array(
- 'required' => true,
- 'validate_callback' => function($param, $request, $key) {
- return is_string($param);
- },
- 'sanitize_callback' => 'sanitize_text_field'
- ),
- 'regenerate' => array(
- 'required' => false,
- ),
- 'slug' => array(
- 'required' => false,
- ),
- 'colorPalettes' => array(
- 'required' => false,
- ),
- );
- }
+ * Gets the arguments for the 'get-homepages' endpoint.
+ *
+ * @return array The array of arguments.
+ */
+ public function get_homepages_regenerate_args() {
+ return array(
+ 'site_description' => array(
+ 'required' => true,
+ 'validate_callback' => function ( $param ) {
+ return is_string( $param );
+ },
+ 'sanitize_callback' => 'sanitize_text_field',
+ ),
+ 'regenerate' => array(
+ 'required' => false,
+ ),
+ 'slug' => array(
+ 'required' => false,
+ ),
+ 'colorPalettes' => array(
+ 'required' => false,
+ ),
+ );
+ }
/**
* Gets all the valid Identifiers
@@ -182,32 +182,30 @@ public function generate_sitegen_meta( \WP_REST_Request $request ) {
// TODO Implement the main function and do computations if required.
return SiteGenService::instantiate_site_meta( $site_info, $identifier, $skip_cache );
-
}
/**
* Gets the preview homepages
*
+ * @param \WP_REST_Request $request parameter.
* @return array
*/
public function get_homepages( \WP_REST_Request $request ) {
- // Fetching parameters provided by the front end.
$site_description = $request->get_param( 'site_description' );
- $regenerate = $request->get_param( 'regenerate' );
- $site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
+ $regenerate = $request->get_param( 'regenerate' );
+ $site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
- // If the option exists and is not empty, return it
- $existing_homepages = get_option(Options::get_option_name( 'sitegen_homepages' ), []);
- if ( ! empty( $existing_homepages ) && !$regenerate ) {
- return new \WP_REST_Response( $existing_homepages, 200 );
- }
+ // If the option exists and is not empty, return it.
+ $existing_homepages = get_option( Options::get_option_name( 'sitegen_homepages' ), array() );
+ if ( ! empty( $existing_homepages ) && ! $regenerate ) {
+ return new \WP_REST_Response( $existing_homepages, 200 );
+ }
- $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', true);
- $content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', true);
+ $target_audience = SiteGenService::instantiate_site_meta( $site_info, 'targetaudience', true );
+ $content_style = SiteGenService::instantiate_site_meta( $site_info, 'contenttones', true );
- // Ensure that the required data is available.
- if (!$target_audience || !$content_style) {
+ if ( ! $target_audience || ! $content_style ) {
return new \WP_Error(
'nfd_onboarding_error',
__( 'Required data is missing.', 'wp-module-onboarding' ),
@@ -217,7 +215,6 @@ public function get_homepages( \WP_REST_Request $request ) {
);
}
- // Call the SiteGenService method to generate and process homepages
$processed_home_pages = SiteGenService::generate_homepages(
$site_description,
$content_style,
@@ -225,41 +222,45 @@ public function get_homepages( \WP_REST_Request $request ) {
$regenerate
);
- // Check for errors in the response
if ( is_wp_error( $processed_home_pages ) ) {
return $processed_home_pages;
}
- // Return the processed homepages
- return new \WP_REST_Response($processed_home_pages, 200);
+ return new \WP_REST_Response( $processed_home_pages, 200 );
}
- public function get_regenerated_homepages(\WP_REST_Request $request) {
- $site_description = $request->get_param('site_description');
- $regenerateSlug = $request->get_param('slug');
- $regenerateColorPalattes = $request->get_param('colorPalettes');
- $isFavourite = $request->get_param('isFavourited');
- $site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
- $target_audience = SiteGenService::instantiate_site_meta($site_info, 'targetaudience', true);
- $content_style = SiteGenService::instantiate_site_meta($site_info, 'contenttones', true);
+ /**
+ * Gets the regenerated preview homepages
+ *
+ * @param \WP_REST_Request $request parameter.
+ * @return array
+ */
+ public function get_regenerated_homepages( \WP_REST_Request $request ) {
+ $site_description = $request->get_param( 'site_description' );
+ $regenerate_slug = $request->get_param( 'slug' );
+ $regenerate_color_palattes = $request->get_param( 'colorPalettes' );
+ $is_favourite = $request->get_param( 'isFavourited' );
+ $site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
+ $target_audience = SiteGenService::instantiate_site_meta( $site_info, 'targetaudience', true );
+ $content_style = SiteGenService::instantiate_site_meta( $site_info, 'contenttones', true );
- if (!$target_audience || !$content_style) {
- return new \WP_Error(
+ if ( ! $target_audience || ! $content_style ) {
+ return new \WP_Error(
'nfd_onboarding_error',
__( 'Required data is missing.', 'wp-module-onboarding' ),
array(
'status' => 400,
)
);
- }
+ }
- if ($isFavourite) {
- $result = SiteGenService::handle_favorite_regeneration($regenerateSlug, $regenerateColorPalattes);
- } else {
- $result = SiteGenService::handle_regular_regeneration($site_description, $content_style, $target_audience);
- }
+ if ( $is_favourite ) {
+ $result = SiteGenService::handle_favorite_regeneration( $regenerate_slug, $regenerate_color_palattes );
+ } else {
+ $result = SiteGenService::handle_regular_regeneration( $site_description, $content_style, $target_audience );
+ }
- if ($result === null) {
+ if ( null === $result ) {
return new \WP_Error(
'nfd_onboarding_error',
__( 'Error processing request.', 'wp-module-onboarding' ),
@@ -267,26 +268,32 @@ public function get_regenerated_homepages(\WP_REST_Request $request) {
'status' => 500,
)
);
- }
+ }
- return new \WP_REST_Response($result, 200);
- }
-
- public function toggle_favourite_homepage(\WP_REST_Request $request) {
- $slug = $request->get_param('slug');
+ return new \WP_REST_Response( $result, 200 );
+ }
- $response = SiteGenService::toggle_favourite_homepage($slug);
+ /**
+ * Updates favourite status
+ *
+ * @param \WP_REST_Request $request parameter.
+ * @return array
+ */
+ public function toggle_favourite_homepage( \WP_REST_Request $request ) {
+ $slug = $request->get_param( 'slug' );
- if (is_wp_error($response)) {
+ $response = SiteGenService::toggle_favourite_homepage( $slug );
+
+ if ( is_wp_error( $response ) ) {
$error_message = $response->get_error_message();
return new \WP_Error(
'nfd_onboarding_error',
- __( $error_message, 'wp-module-onboarding' ),
+ __( 'Failed at updating Favourite status', 'wp-module-onboarding' ),
array(
'status' => 404,
)
);
}
- return new \WP_REST_Response($response, 200);
- }
-}
\ No newline at end of file
+ return new \WP_REST_Response( $response, 200 );
+ }
+}
From a3ad4ef9f46ff03392af28d67b8a093273dd1e5d Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Wed, 10 Jan 2024 09:36:03 +0530
Subject: [PATCH 56/64] PRESS2-1465 | added check
---
.../LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss | 1 +
src/OnboardingSPA/steps/SiteGen/Preview/index.js | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
index 745ed51d3..679802fec 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
@@ -89,6 +89,7 @@
font-size: 16px;
fill: var(--nfd-onboarding-primary);
cursor: pointer;
+ text-align: left;
}
}
}
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 59f9c0e68..5aa2adb9a 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -159,7 +159,7 @@ const SiteGenPreview = () => {
// Use useMemo to memoize the previewSettings
const previewSettings = useMemo( () => {
- return homepages.data.map( ( homepage ) =>
+ return homepages?.data.map( ( homepage ) =>
createPreviewSettings( homepage?.color?.palette )
);
}, [ homepages.data, globalStyles ] );
From 953149e4e68730b6e6a0b4fd1e41c31f27195719 Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Wed, 10 Jan 2024 18:17:15 +0530
Subject: [PATCH 57/64] PRESS2-1465 | handled error responses
---
includes/RestApi/SiteGenController.php | 49 +++++++++++--------
.../steps/SiteGen/Preview/index.js | 20 ++++++--
2 files changed, 46 insertions(+), 23 deletions(-)
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index b30225c29..93b0fb194 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -194,24 +194,27 @@ public function get_homepages( \WP_REST_Request $request ) {
$site_description = $request->get_param( 'site_description' );
$regenerate = $request->get_param( 'regenerate' );
- $site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
-
+ $site_info = array( 'site_description' => $site_description );
+
// If the option exists and is not empty, return it.
$existing_homepages = get_option( Options::get_option_name( 'sitegen_homepages' ), array() );
if ( ! empty( $existing_homepages ) && ! $regenerate ) {
return new \WP_REST_Response( $existing_homepages, 200 );
}
-
- $target_audience = SiteGenService::instantiate_site_meta( $site_info, 'targetaudience', true );
- $content_style = SiteGenService::instantiate_site_meta( $site_info, 'contenttones', true );
-
- if ( ! $target_audience || ! $content_style ) {
+ $target_audience = SiteGenService::instantiate_site_meta( $site_info, 'target_audience', true );
+ $content_style = SiteGenService::instantiate_site_meta( $site_info, 'content_tones', true );
+ if ( ! $target_audience || is_wp_error( $target_audience ) ) {
return new \WP_Error(
'nfd_onboarding_error',
__( 'Required data is missing.', 'wp-module-onboarding' ),
- array(
- 'status' => 400,
- )
+ array( 'status' => 400 )
+ );
+ }
+ if ( ! $content_style || is_wp_error( $content_style ) ) {
+ return new \WP_Error(
+ 'nfd_onboarding_error',
+ __( 'Required data is missing.', 'wp-module-onboarding' ),
+ array( 'status' => 400 )
);
}
@@ -240,17 +243,23 @@ public function get_regenerated_homepages( \WP_REST_Request $request ) {
$regenerate_slug = $request->get_param( 'slug' );
$regenerate_color_palattes = $request->get_param( 'colorPalettes' );
$is_favourite = $request->get_param( 'isFavourited' );
- $site_info = array( 'site_info' => array( 'site_description' => $site_description ) );
- $target_audience = SiteGenService::instantiate_site_meta( $site_info, 'targetaudience', true );
- $content_style = SiteGenService::instantiate_site_meta( $site_info, 'contenttones', true );
+ $site_info = array( 'site_description' => $site_description );
+ $target_audience = SiteGenService::instantiate_site_meta( $site_info, 'target_audience', true );
+ $content_style = SiteGenService::instantiate_site_meta( $site_info, 'content_tones', true );
- if ( ! $target_audience || ! $content_style ) {
+ if ( ! $target_audience || is_wp_error( $target_audience ) ) {
return new \WP_Error(
'nfd_onboarding_error',
__( 'Required data is missing.', 'wp-module-onboarding' ),
- array(
- 'status' => 400,
- )
+ array( 'status' => 400 )
+ );
+ }
+
+ if ( ! $content_style || is_wp_error( $content_style ) ) {
+ return new \WP_Error(
+ 'nfd_onboarding_error',
+ __( 'Required data is missing.', 'wp-module-onboarding' ),
+ array( 'status' => 400 )
);
}
@@ -263,9 +272,9 @@ public function get_regenerated_homepages( \WP_REST_Request $request ) {
if ( null === $result ) {
return new \WP_Error(
'nfd_onboarding_error',
- __( 'Error processing request.', 'wp-module-onboarding' ),
+ __( 'Error at Regenerating home pages.', 'wp-module-onboarding' ),
array(
- 'status' => 500,
+ 'status' => 400,
)
);
}
@@ -288,7 +297,7 @@ public function toggle_favourite_homepage( \WP_REST_Request $request ) {
$error_message = $response->get_error_message();
return new \WP_Error(
'nfd_onboarding_error',
- __( 'Failed at updating Favourite status', 'wp-module-onboarding' ),
+ __( 'Error at updating Favourite status', 'wp-module-onboarding' ),
array(
'status' => 404,
)
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 5aa2adb9a..005103905 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -58,9 +58,23 @@ const SiteGenPreview = () => {
currentData.sitegen.siteDetails.prompt,
false
);
- setHomepages( { ...homepages, data: response.body } ); // Update the local state with the response data
- currentData.sitegen.homepages.data = response.body;
- setCurrentOnboardingData( currentData );
+
+ if ( response && response.body ) {
+ setHomepages( { ...homepages, data: response.body } );
+ currentData.sitegen.homepages.data = response.body;
+ setCurrentOnboardingData( currentData );
+ } else if ( response && response.error ) {
+ // Log the error message
+ console.error(
+ 'Error:',
+ response.error.message || 'Unknown error'
+ );
+ } else {
+ console.error(
+ 'Invalid response format or missing data'
+ );
+ }
+
setIsPreviewLoading( false );
} catch ( error ) {
setIsPreviewLoading( false );
From 0d347b0f5131b47506c8881ca40378e5627099b9 Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Thu, 11 Jan 2024 11:15:35 +0530
Subject: [PATCH 58/64] PRESS2-1465 | changed skeleton
---
includes/RestApi/SiteGenController.php | 5 +-
.../LivePreview/BlockPreviewSiteGen/auto.js | 130 ++++++++++++++++++
.../LivePreview/BlockPreviewSiteGen/index.js | 115 ++++++++++++++++
.../stylesheet.scss | 7 +
.../components/LivePreview/index.js | 1 +
.../steps/SiteGen/Preview/index.js | 44 +++---
.../steps/SiteGen/Preview/regeneratingCard.js | 17 +--
.../steps/SiteGen/Preview/stylesheet.scss | 4 +
8 files changed, 287 insertions(+), 36 deletions(-)
create mode 100644 src/OnboardingSPA/components/LivePreview/BlockPreviewSiteGen/auto.js
create mode 100644 src/OnboardingSPA/components/LivePreview/BlockPreviewSiteGen/index.js
diff --git a/includes/RestApi/SiteGenController.php b/includes/RestApi/SiteGenController.php
index 93b0fb194..68bb133c4 100644
--- a/includes/RestApi/SiteGenController.php
+++ b/includes/RestApi/SiteGenController.php
@@ -195,7 +195,6 @@ public function get_homepages( \WP_REST_Request $request ) {
$site_description = $request->get_param( 'site_description' );
$regenerate = $request->get_param( 'regenerate' );
$site_info = array( 'site_description' => $site_description );
-
// If the option exists and is not empty, return it.
$existing_homepages = get_option( Options::get_option_name( 'sitegen_homepages' ), array() );
if ( ! empty( $existing_homepages ) && ! $regenerate ) {
@@ -210,7 +209,7 @@ public function get_homepages( \WP_REST_Request $request ) {
array( 'status' => 400 )
);
}
- if ( ! $content_style || is_wp_error( $content_style ) ) {
+ if ( ! $content_style || is_wp_error( $content_style ) ) {
return new \WP_Error(
'nfd_onboarding_error',
__( 'Required data is missing.', 'wp-module-onboarding' ),
@@ -255,7 +254,7 @@ public function get_regenerated_homepages( \WP_REST_Request $request ) {
);
}
- if ( ! $content_style || is_wp_error( $content_style ) ) {
+ if ( ! $content_style || is_wp_error( $content_style ) ) {
return new \WP_Error(
'nfd_onboarding_error',
__( 'Required data is missing.', 'wp-module-onboarding' ),
diff --git a/src/OnboardingSPA/components/LivePreview/BlockPreviewSiteGen/auto.js b/src/OnboardingSPA/components/LivePreview/BlockPreviewSiteGen/auto.js
new file mode 100644
index 000000000..49f2764da
--- /dev/null
+++ b/src/OnboardingSPA/components/LivePreview/BlockPreviewSiteGen/auto.js
@@ -0,0 +1,130 @@
+import { Disabled } from '@wordpress/components';
+import { useResizeObserver, pure, useRefEffect } from '@wordpress/compose';
+import { useMemo } from '@wordpress/element';
+import {
+ BlockList,
+ // eslint-disable-next-line @wordpress/no-unsafe-wp-apis
+ __unstableIframe as Iframe,
+ // eslint-disable-next-line @wordpress/no-unsafe-wp-apis
+ __unstableEditorStyles as EditorStyles,
+} from '@wordpress/block-editor';
+
+// This is used to avoid rendering the block list if the sizes change.
+let MemoizedBlockList;
+
+const MAX_HEIGHT = 6000;
+
+function ScaledBlockPreview( {
+ viewportWidth,
+ settings,
+ containerWidth,
+ minHeight,
+ additionalStyles = [],
+} ) {
+ if ( ! viewportWidth ) {
+ viewportWidth = containerWidth;
+ }
+
+ const [ contentResizeListener, { height: contentHeight } ] =
+ useResizeObserver();
+ const { styles, assets } = {
+ styles: settings.styles,
+ assets: settings.__unstableResolvedAssets,
+ };
+
+ // Avoid scrollbars for pattern previews.
+ const editorStyles = useMemo( () => {
+ if ( styles ) {
+ return [
+ ...styles,
+ {
+ css: 'body{height:auto;overflow:hidden;border:none;padding:0;}',
+ __unstableType: 'presets',
+ },
+ ...additionalStyles,
+ ];
+ }
+
+ return styles;
+ }, [ styles, additionalStyles ] );
+
+ // Initialize on render instead of module top level, to avoid circular dependency issues.
+ MemoizedBlockList = MemoizedBlockList || pure( BlockList );
+
+ const scale = containerWidth / viewportWidth;
+ const aspectRatio = contentHeight
+ ? containerWidth / ( contentHeight * scale )
+ : 0;
+ return (
+ MAX_HEIGHT ? MAX_HEIGHT * scale : undefined,
+ minHeight,
+ } }
+ >
+
+
+ );
+}
+
+export default function AutoBlockPreview( props ) {
+ const [ containerResizeListener, { width: containerWidth } ] =
+ useResizeObserver();
+
+ return (
+ <>
+
+ { containerResizeListener }
+
+
+ { containerWidth && (
+
+ ) }
+
+ >
+ );
+}
diff --git a/src/OnboardingSPA/components/LivePreview/BlockPreviewSiteGen/index.js b/src/OnboardingSPA/components/LivePreview/BlockPreviewSiteGen/index.js
new file mode 100644
index 000000000..5e481bb8a
--- /dev/null
+++ b/src/OnboardingSPA/components/LivePreview/BlockPreviewSiteGen/index.js
@@ -0,0 +1,115 @@
+import { useSelect } from '@wordpress/data';
+import { BlockEditorProvider } from '@wordpress/block-editor';
+import { parse } from '@wordpress/blocks';
+import { useEffect, useState, memo } from '@wordpress/element';
+import { __ } from '@wordpress/i18n';
+
+import AutoHeightBlockPreview from './auto';
+import { useGlobalStylesOutput } from '../../../utils/global-styles/use-global-styles-output';
+import { store as nfdOnboardingStore } from '../../../store';
+
+const BlockPreviewSiteGen = ( {
+ blockGrammer,
+ viewportWidth = 1300,
+ styling = 'large',
+ setIsLoadingParent = false,
+ previewSettings = false,
+ skeletonLoadingTime = 2500,
+ isRegenerating = { isRegenerating },
+} ) => {
+ const [ blocks, setBlocks ] = useState();
+ const [ settings, setSettings ] = useState();
+ const [ loading, setIsLoading ] = useState( true );
+
+ useEffect( () => {
+ if ( skeletonLoadingTime ) {
+ const timer = setTimeout( () => {
+ setIsLoading( false );
+ if ( setIsLoadingParent ) {
+ setIsLoadingParent( false );
+ }
+ }, skeletonLoadingTime );
+ return () => clearTimeout( timer );
+ }
+ setIsLoading( false );
+ if ( setIsLoadingParent ) {
+ setIsLoadingParent( false );
+ }
+ }, [ skeletonLoadingTime ] );
+
+ const { currentData, storedPreviewSettings } = useSelect( ( select ) => {
+ return {
+ currentData:
+ select( nfdOnboardingStore ).getCurrentOnboardingData(),
+ storedPreviewSettings:
+ select( nfdOnboardingStore ).getPreviewSettings(),
+ };
+ }, [] );
+
+ useEffect( () => {
+ if ( previewSettings ) {
+ setSettings(
+ // eslint-disable-next-line react-hooks/rules-of-hooks
+ useGlobalStylesOutput( previewSettings, storedPreviewSettings )
+ );
+ } else {
+ setSettings( storedPreviewSettings );
+ }
+ }, [] );
+
+ useEffect( () => {
+ if ( blockGrammer ) {
+ setBlocks( parse( blockGrammer ) );
+ }
+ }, [ blockGrammer ] );
+
+ useEffect( () => {
+ if ( ! previewSettings ) {
+ setSettings( storedPreviewSettings );
+ }
+ }, [ storedPreviewSettings, currentData ] );
+
+ const SkeletonLivePreview = memo( () => {
+ return (
+
+
+
+
+ { isRegenerating
+ ? __(
+ 'Regenerating Site',
+ 'wp-module-onboarding'
+ )
+ : __(
+ 'Generating Site',
+ 'wp-module-onboarding'
+ ) }
+
+
+
+
+
+ );
+ } );
+
+ return (
+
+ { loading &&
}
+ { blocks && settings && (
+
+
+
+ ) }
+
+ );
+};
+
+export default memo( BlockPreviewSiteGen );
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
index 679802fec..cdac5bd0a 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/stylesheet.scss
@@ -79,6 +79,13 @@
flex-direction: row;
justify-content: space-between;
height: 40px;
+ opacity: 1;
+
+ &.disabled {
+ pointer-events: none;
+ cursor: not-allowed;
+ opacity: 0.5;
+ }
&__button {
display: flex;
diff --git a/src/OnboardingSPA/components/LivePreview/index.js b/src/OnboardingSPA/components/LivePreview/index.js
index bba7e3cda..8e18d6370 100644
--- a/src/OnboardingSPA/components/LivePreview/index.js
+++ b/src/OnboardingSPA/components/LivePreview/index.js
@@ -4,3 +4,4 @@ export { default as LivePreviewSelectableCard } from './SelectableCard';
export { default as LivePreviewSelectableCardWithInfo } from './SelectableCardWithInfo';
export { default as GlobalStylesProvider } from './GlobalStylesProvider';
export { default as SiteGenLivePreview } from './SiteGenPreviewSelectableCard';
+export { default as BlockPreviewSiteGen } from './BlockPreviewSiteGen';
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/index.js b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
index 005103905..a27da4ac8 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/index.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/index.js
@@ -64,15 +64,9 @@ const SiteGenPreview = () => {
currentData.sitegen.homepages.data = response.body;
setCurrentOnboardingData( currentData );
} else if ( response && response.error ) {
- // Log the error message
- console.error(
- 'Error:',
- response.error.message || 'Unknown error'
- );
+ setHomepages( { ...homepages, data: [] } );
} else {
- console.error(
- 'Invalid response format or missing data'
- );
+ /* Handle Error UI state */
}
setIsPreviewLoading( false );
@@ -150,9 +144,24 @@ const SiteGenPreview = () => {
colorPalattes,
isFavourited
);
- setHomepages( { ...homepages.data, data: response.body } ); // Update the local state with the response data
- currentData.sitegen.homepages.data = response.body;
- setCurrentOnboardingData( currentData );
+
+ if (
+ response &&
+ response.body &&
+ response.body.length > 0
+ ) {
+ setHomepages( {
+ ...homepages.data,
+ data: response.body,
+ } );
+ currentData.sitegen.homepages.data = response.body;
+ setCurrentOnboardingData( currentData );
+ } else if ( response && response.error ) {
+ /* Handle Error UI state */
+ } else {
+ /* Handle Error UI state */
+ }
+
setIsRegenerating( false );
} catch ( error ) {
setIsRegenerating( false );
@@ -185,14 +194,7 @@ const SiteGenPreview = () => {
);
}
- const designs = isRegenerating
- ? [
- ,
- ]
- : [];
+ const designs = [];
designs.push(
homepages.data &&
homepages.data.map( ( homepage, idx ) => {
@@ -220,6 +222,7 @@ const SiteGenPreview = () => {
handleFavorite={ handleFavorite }
previewSettings={ previewSettings[ idx ] }
handlePreview={ handlePreview }
+ isRegenerating={ isRegenerating }
/>
);
}
@@ -250,6 +253,9 @@ const SiteGenPreview = () => {
{ buildPreviews() }
+ { isRegenerating && (
+
+ ) }
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js b/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js
index 10c3dcc2b..fc9e952d8 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/regeneratingCard.js
@@ -1,31 +1,20 @@
-/* eslint-disable @wordpress/i18n-no-variables */
import { __ } from '@wordpress/i18n';
-import { ReactComponent as FavouriteIconStroked } from '../../../static/icons/sitegen/heart-stroked.svg';
-import getContents from './contents';
function RegeneratingSiteCard( { count = 1, isRegenerating } ) {
- const content = getContents();
const cards = [];
- const generatingText = isRegenerating
- ? content.regenerating
- : content.generating;
for ( let i = 0; i < count; i++ ) {
cards.push(
- { __( generatingText, 'wp-module-onboarding' ) }
+ { isRegenerating
+ ? __( 'Regenerating Site', 'wp-module-onboarding' )
+ : __( 'Generating Site', 'wp-module-onboarding' ) }
- { isRegenerating && (
-
-
- { __( 'version0-1_copy', 'wp-module-onboarding' ) }
-
- ) }
);
}
diff --git a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
index 5fc3f0513..95328801a 100644
--- a/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
+++ b/src/OnboardingSPA/steps/SiteGen/Preview/stylesheet.scss
@@ -169,4 +169,8 @@
display: flex;
gap: 8px;
}
+
+ &.regenerating-site-card-skeleton {
+ padding: 0;
+ }
}
From 4b725094375f675a4e5c9aed8866204f47e1fe87 Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Thu, 11 Jan 2024 11:16:13 +0530
Subject: [PATCH 59/64] Press2-1465 | updated preview
---
.../SiteGenPreviewSelectableCard/index.js | 47 ++++++++++---------
1 file changed, 25 insertions(+), 22 deletions(-)
diff --git a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
index 9d0e61cef..e97c10b23 100644
--- a/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
+++ b/src/OnboardingSPA/components/LivePreview/SiteGenPreviewSelectableCard/index.js
@@ -3,7 +3,7 @@ import { search, Icon, reusableBlock } from '@wordpress/icons';
import { useState } from '@wordpress/element';
import { useNavigate } from 'react-router-dom';
import { useSelect, useDispatch } from '@wordpress/data';
-import { LivePreview } from '..';
+import { BlockPreviewSiteGen } from '..';
import Button from '../../../components/Button';
import { store as nfdOnboardingStore } from '../../../store';
import { ReactComponent as FavouriteIconStroked } from '../../../static/icons/sitegen/heart-stroked.svg';
@@ -23,6 +23,7 @@ const SiteGenPreviewSelectableCard = ( {
designObject,
handleFavorite,
handlePreview,
+ isRegenerating,
} ) => {
const { setActiveHomepage } = useDispatch( nfdOnboardingStore );
const [ loadingParent, setIsLoadingParent ] = useState( true );
@@ -38,6 +39,13 @@ const SiteGenPreviewSelectableCard = ( {
setActiveHomepage( designObject );
navigate( nextStep.path );
};
+ const handleRegenerate = () => {
+ onRegenerateClick(
+ designObject?.slug,
+ designObject?.color,
+ designObject?.isFavourited
+ );
+ };
return (
-
{ overlay && ! loadingParent && (
handlePreview() }
>
- Preview Version
+ { __( 'Preview Version', 'wp-module-onboarding' ) }
) }
- { designObject?.isFavourited ? (
-
- ) : (
-
- ) }
- { designObject?.title }
+
+ { designObject?.isFavourited ? (
+
+ ) : (
+
+ ) }
+
+ { designObject?.title }
- onRegenerateClick(
- designObject?.slug,
- designObject?.color,
- designObject?.isFavourited
- )
- }
+ onClick={ () => handleRegenerate() }
onKeyDown={ ( event ) => {
if ( event.key === 'Enter' ) {
- onRegenerateClick(
- designObject?.slug,
- designObject?.color,
- designObject?.isFavourited
- );
+ handleRegenerate();
}
} }
aria-label={ __(
From 50ee5152c92d58a3023281cb3896cefd06aaf9ca Mon Sep 17 00:00:00 2001
From: ajayadav09
Date: Thu, 11 Jan 2024 18:09:21 +0530
Subject: [PATCH 60/64] Press2-1465 | hiding darkmode toggle from editor step
---
.../images/sitegen-ai-animation.45cdf3b3.gif | Bin 0 -> 2385756 bytes
.../Footer/components/SiteGenFooter/index.js | 7 +++++--
.../steps/SiteGen/Preview/index.js | 4 ----
3 files changed, 5 insertions(+), 6 deletions(-)
create mode 100644 build/1.11.13/images/sitegen-ai-animation.45cdf3b3.gif
diff --git a/build/1.11.13/images/sitegen-ai-animation.45cdf3b3.gif b/build/1.11.13/images/sitegen-ai-animation.45cdf3b3.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e0e2f3a62f6ff62f89cfbebbfb729f95aa4a47b5
GIT binary patch
literal 2385756
zcmV($K;yqhNk%w1VITuo0`)oo?~MP;$NvHWM72QuMlb09$o~KU8+CU7s+a!)0A&B^
z{}T;o7ZQWHy#MC@|Hj(?;==!J(Eqa8|D(hI$i?vt3|tTehXeq5x48Hk7om1^+RfJR
zB^#;H&GY~N|M&O*=I8&mx8LvY|KHvJwAJ_4)&KwZ|Mma>^y2@};s4|B|K-*H)z$gl
z-uLF``S0)e_4oJF-}e9j0RR91p4o3gF9IF{00#d+nPEsQ8jr}N
za>*PDn#JeSAU#&8&TN!ey>_u*shBD*o6mwYS)DGg+wizNF|Wtz_;y~;-~0c7c!Ggx
zgMfv7hlzHKjdgErkZ)^}Y;I#=SyNwNomyC+p`Kb(qEM%(sj922t*oV=u~)LBpq!hV
zotV00y^*_czK+AhjemWMdWwaH&4h@~&(O)p#n#r4XW3nr!rqygwx6ZsDk7&L4yCkrn)JID%RwR0qnZu$C
zn@vMnEpE?7+rUI^I~82WvRAEQO#=sRzD!qyeqMlAY
zZ$#G#iCI)Cd!yjx0Sl+yXA|?tc4}h=Uk_Z>%J%Z^jnbO_tl{xD!-I#7(Yepp+4U9O
zX$@7^nrcZU_}n!F_4mz#$*OzbXH#CS3x=Aha81XhDg&{u^73^dv1Ctr-fU!$)uCzDYq7spoz&}
zU<+cYpmbfrXqSv&UKwU>o;CVecxKjgr;nDgM`WCsYKY{L=B4>$RS+`A&5i$sIjB$s
z7HX)MTViKwTum{$*{8fsC{l;Rv4>%%yoOaAhDt7G--zUy_?B%`I#p$|ug(}0tB0yu
z=%KC7*en`iHZ>S+*@{=+RdxQDXK?pi+UvQmuo?d>r#%8m>ss34L?yGOJ|}3FsY(7JU^;dN9Fi*oN$=d)6D*cBhus>b}u}-0x_w
zH8@bfq;`ATeRnFRRh_po?C>dY_9`EVAlfSN%4iYRXrB(s8z#pe7mcXMAxr0~qSsC`
zTZ70#%2B%$2dm^Pj?Jufy1%YV+`2%rTPwV8f%fRU*Djr}$ZR9p@v9mK?X;*;n@MTQ
zbY3X))_lK{wQ#nM%UOvKUMw_RCqqXgzNsbM_Nx4j{IA^D@;NZKJn9@|haalP`L2EU
z4L0EB;7zH)WIJ)weu>K#w`lh={`l;XvnK!Gc`~L#*cKp%;$|@OG|=
z=eH$VesPp(FYYm`w6|?^?9n5x6Q9u69ggWcbCRLC#)mE>xKLnSb!KNiiQ;FiYi}j?
zgjQeu_1H6w`?8m7Tll*mQ4f;5HmUNJk9-nSU)JhFvD8he65n|m+O9`z)ndnZaFolWhULU$Pek9F7`cd-3i287Tvz+r-73XAiYd!=LhBCyhL*t#KBR}V>*DRQ$HDD+
z(0gV26cWwyw>IwWiEzx7-iC!U=IQ^5BPf!fjXo$B4T{l%JN)7OWJj_wibjhM#GE3<
zSHfF?3wdIRBn#uHDdm-mBv`qm*g%yZ=*cUBC<7W72?@wR3i6B6Dy7Zu<1!wGyH|gMma<=ni7>@JmurA=f`FZ^OYdn0NQWU6F>QI&GOsG2bWz2RG?IIZgr3XP6PI?mSWw!L3E%T|*Aw_J7y_^XE
z;ny9B(rc6rU8h3B$WB8-)Q0~jDh%Cb)jq0;3zEm-3P)AAAxS0=SZl25H?8QiEs8RC
z(laPR(W%UZHdR$Ab*YNrxjTS8Pnf(j;YVpXr%Ar?Ts$?>`9LSbTs=~7cl6HT;`O>d
z8nkvyb*fzF3e}bt^Cudcn@lU3M4r)5H*^%>S9j{LP3?wiQ>5t~Rp+!czVoQCOKDu`
z`c%p?G>FZ7=plb*BVc0Hffpqm18+uHIF41TyFy=+rfDqwz;uEed#mG?y3)$pc96Dn
zs6k%m+HFZKtH8w>>CnWmY?ii2=$WHMPdB!ITosK*g)M*-WeD0%_O_OVE8}zvtJj8b
zKhU+QKN)yD3mNygUK#%#3xgL}8M1b81jW`wFBe%-TKBry1)^OS1zGt9?6-bhOl1&8
z-t(fjJqCW^Vf`6YTD{M3jzwy0Wvf!`TKK|{6XIPs%u=H{Gc@G9>eRURPnl?rz$q>s^43FIBWDGGSu7i5|+kk%dz3iDq=q;*o+!F&2d7pV4*D3<;ildL5`_+Yb@D2Z#mC;wzE|I
z9O-4znXkRD+l2qlyf?2Y8PP5A=yAHaRWo-=u`rf%w`9yB8{b#Un8q{Ymct$N8YlF*c+}M)RQui);>=dL&wXFPvwc
zv1!+O-qyah#I@UJQ_*>x82hXums{vFYqa2*^69`yEM>GlTPkAqQ~an6ae7bu<@VmS
zhBpgly~a{JFP>-E62?T3W9s8_Os;M`)j(idj-6;pPszMd7~
zfgAAnii7`RpLbQ&F*9+(+Y3%_8BUyjYHOvtSZ}7g9j;299Kfms;V~5bbjA+tF1;S|
z6Q87?s}(VfzY|b$_LtgDUwYFQU%PGN_1DeupQAJ`_$lIDjvM9s&yk$4QFs32Cy(Zk
z5s7%Ew>{=>*Y4ZOIcKwvH0RDf@_=tfT8A;YVFc8v@B%MhShx1@^nLg_U4DATXE~}+
zPh^l&PTwN;ET@-OujUP|T)km*xV%rI>#L3GecYdKbSX`!Es1~p#@Be~w_8V5c-$jw?I$c+$4m0pQJ5!iW7lp)
z2TlJ+S9-Qaam5FK$Hy;EmwaeIRl#<5F$6Oh#cHkAfWIMfyaYb?S7yrbVIQP17npee
zr-493VKfJM9p+i|1
zMrdPFfc9Rv;bI84Ue!m0DWPcUhEt9NdcH?CqXK*u7=BY&g>ZN@Ue)0iA){?I@*j7|Z?5NjUg$ZbhGamuiS(d6n51qo(>edJ
zCr>5zTXOvbz*lfG_g~IZ6(kO`5$8(&=Zc~<4@zqC+h=VhTip6M*l9+?Tw1vONRV5dH
z3}|lcNPWjg~VuY;3$Rtn2aDOdCcfw?1zbevyREddFOU}^GA)f
zR9qqQjA)2*D%XY(`I2s^j}^%_tmuKscyxC+kL^`f8x@iUM3PWsk_yIb_vd+BXe=8c
zjKg<|gW!!bxsPx+6iXp1GxcaXM->scfV~Ka2l+6na8Ih`SKoDjPRNZgnUDWYxd2f4
zl&Y6+-L*w-0cr}#hna+VK3P6MDOO*(lLZ5cBBg|c=Y0=(mcy8VP^gxdww4>{mNyAO
z9_C82_%3Hyh6btXBREKzK`cZR#L
z5AIfXi%6KFd6;`fn!zcY+R2nW#+W)NX&EP%u&010DSf5poRQ%~CMcckqd@pkf&ABJ
zqnVbanQPyuVW*V{N^l8EjUrc1)#Qv4D43x+p)DGdz-ggv*)PagfR9O0ymO5d
zB9H?2ktAB8Kgwe3^HYImj{9dw6^EUp8AviJqr{1RMpvE)NKHFBawv4AK&oV$!cVq{
zj=wl~z4@YO$(>EQm>HTwsX3k;+I<1WesyU=^f!oj8Ar8OnIh>+hA2WT`h;;uoMh^q
zktm)7NQujMl|)B!Bz>xVi#S#JM($Bw0{nS>}@fjqJG7s{S*Bg)ry81tzjj0fGfO>*b}IkOKKQ5E;_E{x}Rst
ztmtZ~ml~DPx~UO{tLtNABj`fYmzUGnobZT=VCr6F*{8ZSrt0dfrm1Z;`gp)7neuv)
z3+9JGx~;2VhEe2xK?SBtIhgpUczc9FRjcg^iY_x!s;!w4wte??
zxe0jas90xPu1=e&Zd-4iTcNayjED=M9y(qmB&6uMo_afmMTkvh=#0Rpxlg;cH>RIW8uF^}mh5NSRSg@}6
zZN4k2UPwFz8mFtfwmEXYay+Pt%?thYJ463UsJG^xIhq<@4
zf7v|s0>A02zU{ld1YE!~`n+!$X`@$ilZifE`c?nJ8@|jbcF9Y&-uAJZE5HL>TeWMw
z82n@3CTfh!Zo;!-5zHZQLc9n`x$F3-a0<9-ySoUiw*0xlHhjRNJC(2Gd_rrWCf0Q)
zoTUgvY~~fOnag?_jJqAY#P55N39J#ICU{pTqOInm60D$pM}pqU8@7OlGkj%)NrO0i
z!%E!5Im{qZXPzpVo_TY{v?-EVOs{uLHngIz3|y$z}Y=9?MG9
zYPobNGeW4zhYZIN%eZVrdPv;JeVk>cT+08tJiQp4y=pa}M0r+%9Clpk%0;VO2RBrE
z%Ed+SEPES&!BwH
z(96q7?9b~Q$vN13Avlm*ti>&i&|bMfcA6)O=+OH-&3HVp(Ol6M4baZJsXlAEJ8D?R
z9K`U^&6_vDVCSHv^NJ+h(qF8kv@6jRZNsWqWWcTh>qAsQnAOZDrK84AEJQ(pt^cDvi!X)0nISY*Or~bMnn*jczP_ua0c~>`&6nS+E7*acGco--^zX41e@Ex+12UYpS*pm
z!F7b>%dHK|&DsRgT}z!l0p0(Fo!|E;z@e+#HT>VZ>zJaFt1bJu<2&3?osh&VpThXy
zon5K6&D=sw*A$N1bl9O()jOu+xCZXw?%>pa>5C897vhb+G(3lLjo9I6;S$Z;jRmr`
zSi%mR+6azpb$Z(Moekkl;t<~7=Dl`fOyxoz(LF0uH(FC6-LUc98{1u4cyruR&e@cT
z-x1Ewv<>9w{m(Uehx?kfjvL(QHRfs-q@zgEJ6;C>%jTaQ=xt83wY}mj9^Q`mX=dk|
z9qy|%zL#&L%*T4>cC6-r{^p16+=f2nQGT4;`{hZ_cX+-vtz3-}>fj{K<0dZXDSqCU
zJ{_B07g5eS3(PKTJhA`1YJ03O>NmYa(lqI)p6aR|#;Z==nU3kP9_w22pU_0m!P+DkT)IbYLvI`UDV08pM744fmv{Y^Fl%C@yUfzRV
z?A-3=L9X8dP3syCQpNn}#Qp3q%&PAG?ma%+#;)z%p5>hWbY~;7#{GT=?(YX(?wT+!
zvrg#`J?sXL)!MG`2=dV3zPLo2w@T!i&edmKeGi2?3MbCzFANp3l@rj@JnFjfwuj8?3&ChqweqHiR
z&frz;`E;M8w6ApXj{6?Z_!s};YJ{cc?k0h6^2eouFUx7h5A$A4?_)}Qo}K%L9^o{P
z*9VxBme2aFACwW45zh~ooWK1qU-#8!0rqeI8Ib?_zyJFW1Qy|im@o>CN#(M_Y(AY(
zX>?k(Ua|jAXBA0Z#Lk{TzwlrA%=EVV9;h=ejkIS5DzPEk`)Nm)5uMHz-RXR~T;m2Pu6Il~wW
z%Ye~<1J~390g;md_w?YHpOvGf<9@3Xdn2)Z9j~*!zcn$%!*{u&$eBP#RoUC!*0jTMU*(PQblx{@{!Ak?!vlu2M8Ph
zIdWu3lO;jETlH!lJ$x@=-pZEf-@jsm2ohSjlV?w#$kqh4$gM&*quMAY^#)NNQ;p*`
zc?$oPilj)ZCrO6Pic+gclkeiSj5*e2Q?ryhEmC7mSX+TO1O1fC2Vq@jZtTvLM$k~V
zrG6ES0jzW)#GymYW<(oB2vw_Iw?39Unexf5U)!-~Hv~y9XBny9x-~a;p^y8;gX*u}utMKIcjJW}w%c4EC
zssrdIHdNEeyYBpea2g38d~2=R9-*$N(U3Z?F!n%1>p&%bgU>koP`paNRrcGjDi!}P
z15gwKY3!`P(0Ji+x@xS+j=^IpTqZ&YDGYM23;R-!BEV|X&_nb>91%L-GBA-i6!G(_
z#Vxsf@kJRes8PT%apbV3)6fLcNS=yZQ?7n6)DatgWOFjk+n|(E&pkgOr8q3JkDzGUaEuLSn&{3a7g-b|C8YpvI4u7w
zEjxd(gH2O~G95OV1sysSlEFGna!yi}9FfmmKPmCb
z6!kL&Ru)@%r4(Ux>JyAOTs
zjC-5DQMTGyXak13TA00@ndWW7@+i5Q%XZORwB>_wC7|7ospY_S+<3vdDTUhUr$--_
zQ`;W>8^Nlx-hA4QAeJmkkXZ2<=UB;(oSm~(;axxCCdNE-nG7$Lws-&GReI^t^JYHe
zeVOESYB>iNy!FBbmJ)WX40Yx5b#jJ0eBF1S+)Aprk1zPPhquRdzf(VxZsqkJvUy9L
zpG&AXOU7DtxdGTL)~!ryQhJZtT4l4wWu{8wBVUUk(>t1Jsb{MY-rExOK6jahV@9)E
z{p}x
z(TKqN^pIk>U?Zbi_&+4N1!-!sBNLtH#5c(?ejPHIhW-`3C}vV%FAU_w2Kk<`ZRvNF
z>yKp;nZ6tHkb=UA+1Kimzzh`Ol5J$=vmo_3VSLhlL}Df(`XxQ%P0xCI450s5=rT9L
zsw(EXnHLKwOLx%9IFa1pF44zGM#8X{<+@TZ7dOme8mM@o8U_jD1tj`uXLO>p|Yyz0i{kAjde|DUCC)#tK0{(+1l(_I@?*=)P%d8ENxk1dRCr5
z@1}3;g(~4#US<&xq3)q;R)Q+jZyC}tOML)gi#z{Z{qC2){q^sDkGou|cC(Q`{h>&*
zbXgQN_CJ+0X;+V_Qe=g;rQa3r6Kz7%{@E08BfI8$RomKj^%SrUb%r7
zo2(tO6dLo~%-$}=ITHzs^DAR9kNL$lCKrx5Dp_(V*gi~k^8_UJv+Fj;h#4}nYLI7P
zCO5OmJ>grGZCYesjEXv{WSv*B07&P4PnIcWhkaGxVlo#Ov49Q0r7>-3{Dv9EG{%oF
z7YfORemSadj_RkkI%mxhc__&|GD|x;`95z+_%3FT_H?R_K
zGqhKL0-Y`a0tt)ViKOKH5*phA1lIe1<jsI^ut6rHnFO(|}ESswIDM(#MVL
zo1}1sJ)U{ZpZn{3)3~lbRa5NqTJ%yYyVWzf1fQ~;*u^G*?@iF@O8=GTJFh(i-k*2)
z&!7JFxBvW$-*;(KKm$Z~LBf+Ri1MQ=u%rS0D*xzXeUy*#GD7>NBaSwX-0sHQq>o2T1@GAsEOFq=s3XrK?)*5uZ`?ip$S_u?`&70aT3<*F2bdb|<5e45*
z7UvKGTv54TaTZ}Q;_A*F@$eSMv9|)?|NQIl`cLVw>fj7;91*})h{+g-hY>?htU9jT
zCXo_%LMW&x(5#Re?SvXVQA$cmoN_3>#PAgMZSLkV4c8DI+wcvGjt)t3BoUw_Z>}Wc
zuodBv25qqhJ8}n)4!Ba_%qVCdUvL~#AOX)M@{%yZIIO#rNK-`V!W44cKyUQk3KOq!
zt->$S#7PvzCu~en96PccK{6fF@g!}`4!P1KZ!Roba^l|cB^@s&@6je>XUzc1=Xg;8
ze=?h}kGr-`$rAr^`i?Ro0BQ-z4kD{j(D;XBHfOFr(3@oFRjSe|0W1B;aSZ`r4j+>%
z=kP00(mv?00L9Ygm~AZojV#S_4})$O)zaGPgAaWR&Mqe)<1(eHkS`6g38N1$W%Dlc
zGUQf@`OFKou&^n)ki?>rcY+FHbW1VA(IX!-GLcgbEfYoHkTNmTD@}4UrIRzu@-snm
zCiRQrYQ>gxu{i%RHCOW+M8hwI1<5dP54z(SWl9Tmtr1<*?24>C!Ow-TXeyp7IJadZ
zU(fD*Oa6{iIVUqfm-8#Jq&Wu;Gc$8KsT1m~6BV&j1!{~Z9d0r(pg2#!2EG&d1ah8~
z5EGLK^Jf1uMAdUOE-(WHZQb6JHxW%6dnZ=l!v+)+;rg@o{`kq09&7VzfAC&rNSsKnZkI>$Ftw
z)JGK*81=M4`;@;{fY~TWLg&M<2sNBG^j52GJ{3U=jz=hA(=|p^`hwN#K8q<)G^gTo
zN}K=hDPL;{3KKYCClbyfFt4^I#fnM!d4FGJy}
zJIxh5arGFd6xZ6y5uI=29CcW0(>7C!bwErv0p}2w&lW=AH(P`T(9}uGRp%U2GUs$#
z2f#8#%3CFN;5IWXGZRR~)jG>{#whO75NyY!wFGDfQQoy=>4{&QLx76nLSQWtUjtu-
zRZ}jp`AW`M=XFu@WZtSE7D7=fIn_e@kX`!_9U&7r=kQ?>;9=vGE0MNoC-!OG3}a0V
zs@^PP@2mJSEgXR>LOnK^gl{nwE;SEzAeS!_SGLybQiSkz68-ES0F7V!2bH`ON?`xO
zS)WxU5CBGjwpFdwO(TBlc-gG`QYNhshqgQ%4m(-Fp0YzeST~%bYmwPFASCn!?xUW$skbF<~dEEb&OKTQ=
zUsqROLUw1@#Dvp!mCG%SmUms)GVxbRJ|@6KzOyv36A_hTd+))RSl4Xpl?h3ggUweV8)8{I&(=_`^lIUK9cgzAR(>nA
z3{Eea|bbCf-9KLq%mH70cT&cQr5PEH922HE4>1nd&vWYmFY^ccvycT-N5&4yZHOS*dD}qjIly*DJ=k6uf=ZHev>v%Vfl?^n1AE=
zhIwoNg2|3`8ILbZfcIG78f&kZcbEs6kUcZ7UN4bPVWI?YICJ*_4uE7M`JsCuZXHry
zJv7hg$aKp$lff=hE%`6ObY{P|ZcVth!iWS9Hn?v0oMqB)-IRY}S(b76mTx(p={afd
z_+yLrp7EKwc)E{Em4JnLLC;dL9(QAhs|9$`cuDXd8Tm*X8Wx}!nl}_<()VUx)4SND
zgE4xmQCBZNIM5O`OsBbhMLHHV^`i(N0u$<+-sg~Duw{?1wm@07to1cNXu!nn?
zYs?ml+Nd2FKTvZBg_dIniMlKMFAc$qjrBu0Zi6>@!@2+aj#aryCdc4cptj(`Q
z6?p`Zjj-$^?jp^tA=9aNx$*hqV{@Sc{_Rg8qOx_0D^n4eb~V3
z&bW~axtG~oYdc+WH?oCD7NmN@Q&ys<7`(0HAUixux4XMb$1T?F!aZ4INj5O_0!?A+NlWx)4Y^TdtlGnqY@Jkdk~#%K+auTe~H)5aowhK{l0G<
zuk}2mrYpDiJJ9brxPRG?k6hrHSJ9We2H^}Coqe%0>N|_>0Lyt~LqXcBn>AbQSUD-X
zcY@o~v(rh-c}mn|D7licfugV6q)^=(%O~Blv(5Sw#_RWJYh0FVeb4Fp=J7n|aoy(Y
zS-`nOeA`_^
zghQQ6K{`<<`Q%gHfkpzi<_<;38OCAVg=hagmInZy={?8iUL50Sw~0(#3?vY+{LDP9pT9+W%!o&Fd&eqI$9KF403P`5_o?T2zC7ZH59F>q_Zsn01&w&04xy=(9;*u
z59tr+@AvZq6cUgh5CjigP!)>`Eh@8P
zJg-{CNlhBfnTif!bJ-1?HzWTORF*q;LLD0n?c&9IcQ2p4Ap`y0#cPD0k-h?r;6u3O
zfEOiJC`Lp~(Tf&~T`FRXjDZa0jU+}Y0fQ2)2+V}Vr4$)R8(5fLPfyw^wI+K{tI!qj}Wh3wH_PI#D
z4+MBOZ@_=^Pz#~CXJc*D`mVK|}-FSMBpobk~THm1dN2y?30
zO{b>K5dVrai5PS|v@dOqTHTIZ8_R%L9e*00$P(}XzQO6zqbtZyn
zg1A%~f{83BQzj*n=%8^`=``Df6ke!XhI7hUr=4*Q<>72fu
z#|>GaRrdh~YT3A*j_~kUS3N*t%2!^P_JdDJM}Qhd74bRro*R!r8D)KwS(cxxYqZgy
zfLT7UjHL1Uh=RQ?!