diff --git a/.github/workflows/alpha.yml b/.github/workflows/alpha.yml index 81fd2c55e..1d3c0e14e 100644 --- a/.github/workflows/alpha.yml +++ b/.github/workflows/alpha.yml @@ -2,7 +2,7 @@ name: 'Alpha Build' on: push: - branches: [v5000/backend-fix] + branches: [v5000/multi-pages] jobs: frontend: diff --git a/.github/workflows/marketing.yml b/.github/workflows/marketing.yml index 9eea9132c..88998cc33 100644 --- a/.github/workflows/marketing.yml +++ b/.github/workflows/marketing.yml @@ -2,7 +2,7 @@ name: 'Marketing Build' on: push: - branches: [v5000/marketing-content] + branches: [v5000/multi-page] jobs: marketing: diff --git a/Makefile b/Makefile index e36ff3532..54e22252b 100644 --- a/Makefile +++ b/Makefile @@ -47,4 +47,11 @@ trivy: translate: crowdin push sources crowdin pre-translate --method=mt --engine-id=316468 -l=fr -l=nl -l=ar -l=de -l=it -l=ja -l=uk - crowdin download \ No newline at end of file + crowdin download + +run-local: + docker build -f ./frontend/Dockerfile -t retrospected/frontend:local ./frontend + docker run \ + --env BACKEND_HOST=localhost \ + --env BACKEND_PORT=8081 \ + -it --rm -p 3100:80 retrospected/frontend:local \ No newline at end of file diff --git a/README.md b/README.md index 964383e06..c5500af00 100644 --- a/README.md +++ b/README.md @@ -740,6 +740,8 @@ Special thanks to [@andresin87](https://github.com/andresin87) for pointing the Another special thanks to Browserstack, as they allow me to test this project in other browsers. +Thanks to [UnDraw](https://undraw.co/) for some of the illustrations. + Please make your PRs from the **develop** branch, not **master**. diff --git a/docs/docs/self-hosting/optionals.md b/docs/docs/self-hosting/optionals.md index e9b646d30..9a6c8c14d 100644 --- a/docs/docs/self-hosting/optionals.md +++ b/docs/docs/self-hosting/optionals.md @@ -111,6 +111,7 @@ services: SENTRY_URL: '' # Optional, Sentry URL (https://1234567890abcdef12345@sentry.io/1234567) GIPHY_API_KEY: '' # Optional, can be obtained here: https://developers.giphy.com/ DEFAULT_LANGUAGE: 'en-GB' # Set the default language for new users + MARKETING_ROOT: 'https://www.retrospected.com' # URL of the marketing website # -- Do Not Change -- BACKEND_HOST: backend # This should be the name of the backend service diff --git a/frontend/.env b/frontend/.env index e69de29bb..a7517dd86 100644 --- a/frontend/.env +++ b/frontend/.env @@ -0,0 +1 @@ +VITE_VERSION=$npm_package_version diff --git a/frontend/docker/frontend-entrypoint.sh b/frontend/docker/frontend-entrypoint.sh index 889f50d47..11b8605b0 100644 --- a/frontend/docker/frontend-entrypoint.sh +++ b/frontend/docker/frontend-entrypoint.sh @@ -11,5 +11,6 @@ sed -i "s#NO_SENTRY#${SENTRY_URL:-}#g" /usr/share/nginx/html/index.html sed -i "s#NO_GIPHY#${GIPHY_API_KEY:-}#g" /usr/share/nginx/html/index.html sed -i "s#NO_STRIPE#${STRIPE_KEY:-}#g" /usr/share/nginx/html/index.html sed -i "s#NO_DEFAULT_LANGUAGE#${DEFAULT_LANGUAGE:-en-GB}#g" /usr/share/nginx/html/index.html +sed -i "s#NO_MARKETING_ROOT#${MARKETING_ROOT:-https://www.retrospected.com}#g" /usr/share/nginx/html/index.html exec "$@" \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html index c6daf9fe0..b96518c23 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -28,6 +28,7 @@ GIPHY_API_KEY: 'NO_GIPHY', STRIPE_KEY: 'NO_STRIPE', DEFAULT_LANGUAGE: 'NO_DEFAULT_LANGUAGE', + MARKETING_ROOT: 'NO_MARKETING_ROOT', }; diff --git a/frontend/src/Layout.tsx b/frontend/src/Layout.tsx index 0fa50d6bc..5200c0519 100644 --- a/frontend/src/Layout.tsx +++ b/frontend/src/Layout.tsx @@ -40,14 +40,7 @@ const SubscribePageOuter = lazy( ); const ResetPasswordPage = lazy(() => import('./views/Reset')); const ValidatePage = lazy(() => import('./views/Validate')); -const DisclaimerPage = lazy(() => import('./views/policies/Disclaimer')); -const AcceptableUsePolicyPage = lazy( - () => import('./views/policies/AcceptableUse') -); -const CookiesPolicyPage = lazy(() => import('./views/policies/Cookies')); -const TermsAndConditionsPage = lazy(() => import('./views/policies/Terms')); const Invite = lazy(() => import('./views/layout/Invite')); -const PrivacyPolicyPage = lazy(() => import('./views/policies/Privacy')); const Panel = lazy(() => import('./views/Panel')); const EncryptionDoc = lazy(() => import('./views/home/Encryption')); const AdminPage = lazy(() => import('./views/admin/AdminPage')); @@ -153,11 +146,6 @@ function App() { } /> } /> - } /> - } /> - } /> - } /> - } /> } /> diff --git a/frontend/src/utils/getConfig.ts b/frontend/src/utils/getConfig.ts index 257bfbe34..8de3c8978 100644 --- a/frontend/src/utils/getConfig.ts +++ b/frontend/src/utils/getConfig.ts @@ -5,6 +5,7 @@ interface HtmlConfig { STRIPE_KEY: string; DEFAULT_LANGUAGE: string; VERSION: string; + MARKETING_ROOT: string; } interface Config { @@ -17,6 +18,7 @@ interface Config { StripeKey: string; defaultLanguage: string; version: string; + marketingRoot: string; } declare global { @@ -33,6 +35,7 @@ function getKey( | 'SENTRY_URL' | 'GIPHY_API_KEY' | 'STRIPE_KEY' + | 'MARKETING_ROOT' | 'DEFAULT_LANGUAGE', noValue: string, defaultValue?: string @@ -51,6 +54,7 @@ function getConfig(): Config { const sentryUrl = getKey('SENTRY_URL', 'NO_SENTRY'); const giphyApiKey = getKey('GIPHY_API_KEY', 'NO_GIPHY'); const stripeKey = getKey('STRIPE_KEY', 'NO_STRIPE'); + const marketingRoot = getKey('MARKETING_ROOT', 'NO_MARKETING_ROOT'); let defaultLanguage = getKey( 'DEFAULT_LANGUAGE', 'NO_DEFAULT_LANGUAGE', @@ -74,6 +78,7 @@ function getConfig(): Config { StripeKey: stripeKey, defaultLanguage: defaultLanguage, version: APP_VERSION, + marketingRoot, }; } diff --git a/frontend/src/views/Panel.tsx b/frontend/src/views/Panel.tsx index 120ec73e3..e9824bf83 100644 --- a/frontend/src/views/Panel.tsx +++ b/frontend/src/views/Panel.tsx @@ -1,8 +1,6 @@ import styled from '@emotion/styled'; -import { Link as RouterLink } from 'react-router-dom'; import { colors } from '@mui/material'; import Drawer from '@mui/material/Drawer'; -import Link from '@mui/material/Link'; import Typography from '@mui/material/Typography'; import { useLanguage } from '../translations'; import LanguagePicker from '../components/LanguagePicker'; @@ -17,11 +15,11 @@ interface Policy { } const policies: Policy[] = [ - { name: 'Privacy policy', url: '/privacy' }, - { name: 'Terms & Conditions', url: '/terms' }, - { name: 'Disclaimer', url: '/disclaimer' }, - { name: 'Cookies Policy', url: '/cookies' }, - { name: 'Acceptable Use Policy', url: '/acceptable-use' }, + { name: 'Privacy policy', url: '/legal/privacy' }, + { name: 'Terms & Conditions', url: '/legal/terms' }, + { name: 'Disclaimer', url: '/legal/disclaimer' }, + { name: 'Cookies Policy', url: '/legal/cookies' }, + { name: 'Acceptable Use Policy', url: '/legal/acceptable-use' }, ]; function Panel() { @@ -62,11 +60,13 @@ function Panel() { Legal Stuff {policies.map((policy) => ( - + > + {policy.name} + ))} @@ -82,27 +82,6 @@ function Panel() { ); } -type PanelLinkProps = { - url: string; - name: string; -}; - -function PanelLink({ url, name }: PanelLinkProps) { - return ( - - {name} - - ); -} - const ExternalLink = styled.a` text-decoration: none; :hover { diff --git a/frontend/src/views/policies/AcceptableUse.tsx b/frontend/src/views/policies/AcceptableUse.tsx deleted file mode 100644 index eab35c9d0..000000000 --- a/frontend/src/views/policies/AcceptableUse.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import aup from './acceptable-use.md'; -import GenericPolicy from './Policy'; - -const AcceptableUsePolicyPage = () => { - return ; -}; - -export default AcceptableUsePolicyPage; diff --git a/frontend/src/views/policies/Cookies.tsx b/frontend/src/views/policies/Cookies.tsx deleted file mode 100644 index 98fcbcaee..000000000 --- a/frontend/src/views/policies/Cookies.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import cookies from './cookies.md'; -import GenericPolicy from './Policy'; - -const CookiesPolicyPage = () => { - return ; -}; - -export default CookiesPolicyPage; diff --git a/frontend/src/views/policies/Disclaimer.tsx b/frontend/src/views/policies/Disclaimer.tsx deleted file mode 100644 index a31ace6a8..000000000 --- a/frontend/src/views/policies/Disclaimer.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import disclaimer from './disclaimer.md'; -import GenericPolicy from './Policy'; - -const DisclaimerPage = () => { - return ; -}; - -export default DisclaimerPage; diff --git a/frontend/src/views/policies/Policy.tsx b/frontend/src/views/policies/Policy.tsx deleted file mode 100644 index c1bb3c170..000000000 --- a/frontend/src/views/policies/Policy.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import styled from '@emotion/styled'; -import Markdown from 'react-markdown'; -import useMd from '../../hooks/useMd'; - -interface GenericPolicyProps { - url: string; -} - -const GenericPolicy = ({ url }: GenericPolicyProps) => { - const content = useMd(url); - return content !== null ? ( - - {content} - - ) : ( -
- ); -}; - -const Container = styled.div` - padding: 50px; -`; - -export default GenericPolicy; diff --git a/frontend/src/views/policies/Privacy.tsx b/frontend/src/views/policies/Privacy.tsx deleted file mode 100644 index 5f8cfca60..000000000 --- a/frontend/src/views/policies/Privacy.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import privacy from './privacy.md'; -import GenericPolicy from './Policy'; - -const PrivacyPolicyPage = () => { - return ; -}; - -export default PrivacyPolicyPage; diff --git a/frontend/src/views/policies/Terms.tsx b/frontend/src/views/policies/Terms.tsx deleted file mode 100644 index 3692acb18..000000000 --- a/frontend/src/views/policies/Terms.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import terms from './terms.md'; -import GenericPolicy from './Policy'; - -const TermsAndConditionsPage = () => { - return ; -}; - -export default TermsAndConditionsPage; diff --git a/marketing/README.md b/marketing/README.md index 965a1228c..de3ac065a 100644 --- a/marketing/README.md +++ b/marketing/README.md @@ -1,38 +1,3 @@ -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). +# Marketing Website -## Getting Started - -First, run the development server: - -```bash -npm run dev -# or -yarn dev -# or -pnpm dev -``` - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file. - -[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`. - -The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. - -This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. +https://github.com/vercel/next.js/blob/canary/examples/blog-starter/pages/posts/%5Bslug%5D.tsx \ No newline at end of file diff --git a/marketing/package.json b/marketing/package.json index e5026216f..835787df6 100644 --- a/marketing/package.json +++ b/marketing/package.json @@ -26,6 +26,7 @@ "eslint": "8.34.0", "eslint-config-next": "13.1.6", "fs": "^0.0.1-security", + "gray-matter": "^4.0.3", "i18next": "^22.4.9", "next": "13.1.6", "next-i18next": "^13.1.5", @@ -46,6 +47,8 @@ "react-slick": "^0.29.0", "react-stickynode": "^4.1.0", "react-tabs": "^6.0.0", + "remark": "^14.0.2", + "remark-html": "^15.0.2", "sharp": "^0.31.3", "styled-components": "^5.3.6", "styled-system": "^5.1.5", diff --git a/marketing/public/locales/en/common.json b/marketing/public/locales/en/common.json index e21351cea..1dff00257 100644 --- a/marketing/public/locales/en/common.json +++ b/marketing/public/locales/en/common.json @@ -170,6 +170,7 @@ "hint": "This will change your life!" }, "Footer": { + "legal": "Legal Stuff", "copyright": "Copyright © 2023 - Retrospected Ltd. All rights reserved.", "about": "We create software with Love, from London, UK" }, diff --git a/marketing/src/common/components/Markdown/PostBody.tsx b/marketing/src/common/components/Markdown/PostBody.tsx new file mode 100644 index 000000000..89112dabe --- /dev/null +++ b/marketing/src/common/components/Markdown/PostBody.tsx @@ -0,0 +1,18 @@ +import styled from 'styled-components'; + +type Props = { + content: string; +}; + +const PostBody = ({ content }: Props) => { + return ( + + ); +}; + +const Container = styled.div``; + +export default PostBody; diff --git a/marketing/src/common/components/ScrollSpyMenu/index.tsx b/marketing/src/common/components/ScrollSpyMenu/index.tsx index 4104175a1..7df1e5fee 100755 --- a/marketing/src/common/components/ScrollSpyMenu/index.tsx +++ b/marketing/src/common/components/ScrollSpyMenu/index.tsx @@ -1,5 +1,4 @@ import React, { useContext } from 'react'; -import PropTypes from 'prop-types'; import Scrollspy from 'react-scrollspy'; import AnchorLink from 'react-anchor-link-smooth-scroll'; @@ -7,6 +6,7 @@ import { DrawerContext } from '../../contexts/DrawerContext'; import NextImage from '../NextImage'; import { MenuItem } from '@/types'; import { useTranslation } from 'next-i18next'; +import Link from 'next/link'; type ScrollSpyMenuProps = { /** className of the ScrollSpyMenu. */ @@ -35,7 +35,7 @@ type ScrollSpyMenuProps = { /** Name of the element of scrollable container that can be used with querySelector [optional]. */ rootEl?: string; - drawerClose?: boolean; + drawer?: boolean; /** * Function to be executed when the active item has been updated [optional]. @@ -64,7 +64,7 @@ const RenderLinkWithIcon = ({ menu }: { menu: MenuItem }) => { const ScrollSpyMenu = ({ className, menuItems, - drawerClose, + drawer, componentTag = 'ul', currentClassName = 'is-current', ...props @@ -102,29 +102,38 @@ const ScrollSpyMenu = ({ componentTag={componentTag} {...props} > - {menuItems.map((menu, index) => ( -
  • - {menu.staticLink ? ( - - ) : ( - <> - {drawerClose ? ( - - {t(menu.label)} - - ) : ( - - {t(menu.label)} - - )} - - )} -
  • - ))} + {menuItems.map((menu, index) => { + const isAnchor = menu.path.startsWith('#'); + return ( +
  • + {menu.staticLink ? ( + + ) : ( + <> + {drawer ? ( + + {t(menu.label)} + + ) : ( + <> + {isAnchor ? ( + + {t(menu.label)} + + ) : ( + {t(menu.label)} + )} + + )} + + )} +
  • + ); + })} ); }; diff --git a/marketing/src/common/data/WebAppCreative/index.js b/marketing/src/common/data/WebAppCreative/index.js index d60c1a47a..c169827af 100755 --- a/marketing/src/common/data/WebAppCreative/index.js +++ b/marketing/src/common/data/WebAppCreative/index.js @@ -1,39 +1,39 @@ -import envato from '../../../common/assets/image/webAppCreative/clients/envato.png'; -import evernote from '../../../common/assets/image/webAppCreative/clients/evernote.png'; -import forbes from '../../../common/assets/image/webAppCreative/clients/forbes.png'; -import geekwire from '../../../common/assets/image/webAppCreative/clients/geekwire.png'; -import slack from '../../../common/assets/image/webAppCreative/clients/slack.png'; -import usaToday from '../../../common/assets/image/webAppCreative/clients/usa-today.png'; -import icon1 from '../../../common/assets/image/webAppCreative/icons/1.png'; -import icon2 from '../../../common/assets/image/webAppCreative/icons/2.png'; -import icon3 from '../../../common/assets/image/webAppCreative/icons/3.png'; -import icon4 from '../../../common/assets/image/webAppCreative/icons/4.png'; -import icon5 from '../../../common/assets/image/webAppCreative/icons/5.png'; -import icon6 from '../../../common/assets/image/webAppCreative/icons/6.png'; -import icon7 from '../../../common/assets/image/webAppCreative/icons/7.png'; +import envato from '@/common/assets/image/webAppCreative/clients/envato.png'; +import evernote from '@/common/assets/image/webAppCreative/clients/evernote.png'; +import forbes from '@/common/assets/image/webAppCreative/clients/forbes.png'; +import geekwire from '@/common/assets/image/webAppCreative/clients/geekwire.png'; +import slack from '@/common/assets/image/webAppCreative/clients/slack.png'; +import usaToday from '@/common/assets/image/webAppCreative/clients/usa-today.png'; +import icon1 from '@/common/assets/image/webAppCreative/icons/1.png'; +import icon2 from '@/common/assets/image/webAppCreative/icons/2.png'; +import icon3 from '@/common/assets/image/webAppCreative/icons/3.png'; +import icon4 from '@/common/assets/image/webAppCreative/icons/4.png'; +import icon5 from '@/common/assets/image/webAppCreative/icons/5.png'; +import icon6 from '@/common/assets/image/webAppCreative/icons/6.png'; +import icon7 from '@/common/assets/image/webAppCreative/icons/7.png'; -import asana from '../../../common/assets/image/webAppCreative/icons/asana.png'; -import drive from '../../../common/assets/image/webAppCreative/icons/drive.png'; -import dropbox from '../../../common/assets/image/webAppCreative/icons/dropbox.png'; -import fontAwesome from '../../../common/assets/image/webAppCreative/icons/fontawesome.png'; -import github from '../../../common/assets/image/webAppCreative/icons/github.png'; -import googleCloud from '../../../common/assets/image/webAppCreative/icons/google-cloud.png'; -import messenger from '../../../common/assets/image/webAppCreative/icons/messenger.png'; -import nginx from '../../../common/assets/image/webAppCreative/icons/nginx.png'; -import slack2 from '../../../common/assets/image/webAppCreative/icons/slack.png'; -import smashingMag from '../../../common/assets/image/webAppCreative/icons/smashing-mag.png'; -import zeplin from '../../../common/assets/image/webAppCreative/icons/zeplin.png'; -import zoom from '../../../common/assets/image/webAppCreative/icons/zoom.png'; -import icecream from '../../../common/assets/image/webAppCreative/icons/icecream.png'; -import donut from '../../../common/assets/image/webAppCreative/icons/donut.png'; -import pizza from '../../../common/assets/image/webAppCreative/icons/pizza.png'; -import post1 from '../../../common/assets/image/webAppCreative/post1.png'; -import post2 from '../../../common/assets/image/webAppCreative/post2.png'; -import post3 from '../../../common/assets/image/webAppCreative/post3.png'; -import siteLogo from '../../../common/assets/image/webAppCreative/logo.png'; -import facebook from '../../../common/assets/image/webAppCreative/icons/facebook.png'; -import twitter from '../../../common/assets/image/webAppCreative/icons/twitter.png'; -import dribbble from '../../../common/assets/image/webAppCreative/icons/dribbble.png'; +import asana from '@/common/assets/image/webAppCreative/icons/asana.png'; +import drive from '@/common/assets/image/webAppCreative/icons/drive.png'; +import dropbox from '@/common/assets/image/webAppCreative/icons/dropbox.png'; +import fontAwesome from '@/common/assets/image/webAppCreative/icons/fontawesome.png'; +import github from '@/common/assets/image/webAppCreative/icons/github.png'; +import googleCloud from '@/common/assets/image/webAppCreative/icons/google-cloud.png'; +import messenger from '@/common/assets/image/webAppCreative/icons/messenger.png'; +import nginx from '@/common/assets/image/webAppCreative/icons/nginx.png'; +import slack2 from '@/common/assets/image/webAppCreative/icons/slack.png'; +import smashingMag from '@/common/assets/image/webAppCreative/icons/smashing-mag.png'; +import zeplin from '@/common/assets/image/webAppCreative/icons/zeplin.png'; +import zoom from '@/common/assets/image/webAppCreative/icons/zoom.png'; +import icecream from '@/common/assets/image/webAppCreative/icons/icecream.png'; +import donut from '@/common/assets/image/webAppCreative/icons/donut.png'; +import pizza from '@/common/assets/image/webAppCreative/icons/pizza.png'; +import post1 from '@/common/assets/image/webAppCreative/post1.png'; +import post2 from '@/common/assets/image/webAppCreative/post2.png'; +import post3 from '@/common/assets/image/webAppCreative/post3.png'; +import siteLogo from '@/common/assets/image/webAppCreative/logo.png'; +import facebook from '@/common/assets/image/webAppCreative/icons/facebook.png'; +import twitter from '@/common/assets/image/webAppCreative/icons/twitter.png'; +import dribbble from '@/common/assets/image/webAppCreative/icons/dribbble.png'; export const clients = [envato, evernote, forbes, geekwire, slack, usaToday]; diff --git a/frontend/src/views/policies/acceptable-use.md b/marketing/src/common/documents/legal/acceptable-use.md similarity index 99% rename from frontend/src/views/policies/acceptable-use.md rename to marketing/src/common/documents/legal/acceptable-use.md index 3a4322fba..be05d5f96 100644 --- a/frontend/src/views/policies/acceptable-use.md +++ b/marketing/src/common/documents/legal/acceptable-use.md @@ -1,3 +1,7 @@ +--- +title: 'Acceptable use policy' +--- + # Acceptable use policy These acceptable use policy ("Acceptable Use Policy", "AUP", "Policy") is an agreement between Website Operator ("Website Operator", "us", "we" or "our") and you ("User", "you" or "your"). This Policy sets forth the general guidelines and acceptable and prohibited uses of the [retrospected.com](https://www.retrospected.com) website and any of its products or services (collectively, "Website" or "Services"). diff --git a/frontend/src/views/policies/cookies.md b/marketing/src/common/documents/legal/cookies.md similarity index 99% rename from frontend/src/views/policies/cookies.md rename to marketing/src/common/documents/legal/cookies.md index 91805d56b..9240f51a7 100644 --- a/frontend/src/views/policies/cookies.md +++ b/marketing/src/common/documents/legal/cookies.md @@ -1,3 +1,7 @@ +--- +title: 'Cookie Policy' +--- + # Cookie policy This cookie policy ("Policy") describes what cookies are and how Website Operator ("Website Operator", "we", "us" or "our") uses them on the [retrospected.com](https://www.retrospected.com) website and any of its products or services (collectively, "Website" or "Services"). diff --git a/frontend/src/views/policies/disclaimer.md b/marketing/src/common/documents/legal/disclaimer.md similarity index 99% rename from frontend/src/views/policies/disclaimer.md rename to marketing/src/common/documents/legal/disclaimer.md index 9e41be530..f142656d4 100644 --- a/frontend/src/views/policies/disclaimer.md +++ b/marketing/src/common/documents/legal/disclaimer.md @@ -1,3 +1,7 @@ +--- +title: 'Disclaimer' +--- + # Disclaimer This disclaimer ("Disclaimer", "Agreement") is an agreement between Website Operator ("Website Operator", "us", "we" or "our") and you ("User", "you" or "your"). This Disclaimer sets forth the general guidelines, terms and conditions of your use of the [retrospected.com](https://www.retrospected.com) website and any of its products or services (collectively, "Website" or "Services"). diff --git a/frontend/src/views/policies/privacy.md b/marketing/src/common/documents/legal/privacy.md similarity index 99% rename from frontend/src/views/policies/privacy.md rename to marketing/src/common/documents/legal/privacy.md index 8372eb1d9..86c178e1d 100644 --- a/frontend/src/views/policies/privacy.md +++ b/marketing/src/common/documents/legal/privacy.md @@ -1,3 +1,7 @@ +--- +title: 'Privacy Policy' +--- + # Privacy policy This privacy policy ("Policy") describes how Website Operator ("Website Operator", "we", "us" or "our") collects, protects and uses the personally identifiable information ("Personal Information") you ("User", "you" or "your") may provide on the [retrospected.com](https://www.retrospected.com) website and any of its products or services (collectively, "Website" or "Services"). diff --git a/frontend/src/views/policies/terms.md b/marketing/src/common/documents/legal/terms.md similarity index 99% rename from frontend/src/views/policies/terms.md rename to marketing/src/common/documents/legal/terms.md index f141e486a..e089fb08f 100644 --- a/frontend/src/views/policies/terms.md +++ b/marketing/src/common/documents/legal/terms.md @@ -1,3 +1,7 @@ +--- +title: 'Terms and conditions' +--- + # Terms and conditions These terms and conditions ("Terms", "Agreement") are an agreement between Website Operator ("Website Operator", "us", "we" or "our") and you ("User", "you" or "your"). This Agreement sets forth the general terms and conditions of your use of the [retrospected.com](https://www.retrospected.com) website and any of its products or services (collectively, "Website" or "Services"). diff --git a/marketing/src/containers/WebAppCreative/AnalyticsTool/analytics.style.tsx b/marketing/src/containers/AnalyticsTool/analytics.style.tsx similarity index 96% rename from marketing/src/containers/WebAppCreative/AnalyticsTool/analytics.style.tsx rename to marketing/src/containers/AnalyticsTool/analytics.style.tsx index 51b93c99d..7aba4eace 100755 --- a/marketing/src/containers/WebAppCreative/AnalyticsTool/analytics.style.tsx +++ b/marketing/src/containers/AnalyticsTool/analytics.style.tsx @@ -2,8 +2,8 @@ import { Parallax } from 'react-parallax'; import styled from 'styled-components'; import { rgba } from 'polished'; import { themeGet } from '@styled-system/theme-get'; -import parallaxBg from '../../../common/assets/image/webAppCreative/parallax-1.png'; -import polygon from '../../../common/assets/image/webAppCreative/polygon.png'; +import parallaxBg from '@/common/assets/image/webAppCreative/parallax-1.png'; +import polygon from '@/common/assets/image/webAppCreative/polygon.png'; const Section = styled(Parallax)` /* background: #373754 url(${parallaxBg?.src}) no-repeat fixed center center / cover; */ diff --git a/marketing/src/containers/WebAppCreative/AnalyticsTool/index.tsx b/marketing/src/containers/AnalyticsTool/index.tsx similarity index 79% rename from marketing/src/containers/WebAppCreative/AnalyticsTool/index.tsx rename to marketing/src/containers/AnalyticsTool/index.tsx index 07991432b..17417cc91 100755 --- a/marketing/src/containers/WebAppCreative/AnalyticsTool/index.tsx +++ b/marketing/src/containers/AnalyticsTool/index.tsx @@ -3,15 +3,15 @@ import Fade from 'react-reveal/Fade'; import { Icon } from 'react-icons-kit'; import { check } from 'react-icons-kit/feather/check'; import { ic_keyboard_arrow_right } from 'react-icons-kit/md/ic_keyboard_arrow_right'; -import Container from '../../../common/components/UI/Container'; -import NextImage from '../../../common/components/NextImage'; -import Button from '../../../common/components/Button'; -import Text from '../../../common/components/Text'; -import Link from '../../../common/components/Link'; -import Heading from '../../../common/components/Heading'; +import Container from '@/common/components/UI/Container'; +import NextImage from '@/common/components/NextImage'; +import Button from '@/common/components/Button'; +import Text from '@/common/components/Text'; +import Link from '@/common/components/Link'; +import Heading from '@/common/components/Heading'; import analytics from './server-secure.svg'; import Section, { Grid, Figure, Content, Features } from './analytics.style'; -import parallaxBg from '../../../common/assets/image/webAppCreative/parallax-1.png'; +import parallaxBg from '@/common/assets/image/webAppCreative/parallax-1.png'; import { useTranslation } from 'next-i18next'; const AnalyticsTool = () => { diff --git a/marketing/src/containers/WebAppCreative/AnalyticsTool/server-secure.svg b/marketing/src/containers/AnalyticsTool/server-secure.svg similarity index 100% rename from marketing/src/containers/WebAppCreative/AnalyticsTool/server-secure.svg rename to marketing/src/containers/AnalyticsTool/server-secure.svg diff --git a/marketing/src/containers/WebAppCreative/Banner/banner.style.tsx b/marketing/src/containers/Banner/banner.style.tsx similarity index 100% rename from marketing/src/containers/WebAppCreative/Banner/banner.style.tsx rename to marketing/src/containers/Banner/banner.style.tsx diff --git a/marketing/src/containers/WebAppCreative/Banner/index.tsx b/marketing/src/containers/Banner/index.tsx similarity index 80% rename from marketing/src/containers/WebAppCreative/Banner/index.tsx rename to marketing/src/containers/Banner/index.tsx index b89988305..47d9658da 100755 --- a/marketing/src/containers/WebAppCreative/Banner/index.tsx +++ b/marketing/src/containers/Banner/index.tsx @@ -1,8 +1,8 @@ -import Container from '../../../common/components/UI/Container'; -import Heading from '../../../common/components/Heading'; -import Text from '../../../common/components/Text'; -import Button from '../../../common/components/Button'; -import NextImage from '../../../common/components/NextImage'; +import Container from '@/common/components/UI/Container'; +import Heading from '@/common/components/Heading'; +import Text from '@/common/components/Text'; +import Button from '@/common/components/Button'; +import NextImage from '@/common/components/NextImage'; import Section, { BannerContentWrapper, BannerContent, @@ -12,7 +12,7 @@ import Section, { import screenshot from './mockup-1-02.webp'; import { useTranslation } from 'next-i18next'; import { useConfig } from '@/common/hooks/useConfig'; -import dashboardPattern from '../../../common/assets/image/webAppCreative/dashboard-pattern.png'; +import dashboardPattern from '@/common/assets/image/webAppCreative/dashboard-pattern.png'; const Banner = () => { const { t } = useTranslation('common'); diff --git a/marketing/src/containers/WebAppCreative/Banner/mockup-1-02.webp b/marketing/src/containers/Banner/mockup-1-02.webp similarity index 100% rename from marketing/src/containers/WebAppCreative/Banner/mockup-1-02.webp rename to marketing/src/containers/Banner/mockup-1-02.webp diff --git a/marketing/src/containers/WebAppCreative/CallToAction/cta.style.tsx b/marketing/src/containers/CallToAction/cta.style.tsx similarity index 100% rename from marketing/src/containers/WebAppCreative/CallToAction/cta.style.tsx rename to marketing/src/containers/CallToAction/cta.style.tsx diff --git a/marketing/src/containers/WebAppCreative/CallToAction/index.tsx b/marketing/src/containers/CallToAction/index.tsx similarity index 75% rename from marketing/src/containers/WebAppCreative/CallToAction/index.tsx rename to marketing/src/containers/CallToAction/index.tsx index 4adfa2dc5..cdc93978d 100755 --- a/marketing/src/containers/WebAppCreative/CallToAction/index.tsx +++ b/marketing/src/containers/CallToAction/index.tsx @@ -1,9 +1,9 @@ -import Container from '../../../common/components/UI/Container'; -import Heading from '../../../common/components/Heading'; -import Text from '../../../common/components/Text'; +import Container from '@/common/components/UI/Container'; +import Heading from '@/common/components/Heading'; +import Text from '@/common/components/Text'; import Section, { Content } from './cta.style'; -import bubble1 from '../../../common/assets/image/webAppCreative/cta-bubble-1.png'; -import bubble2 from '../../../common/assets/image/webAppCreative/cta-bubble-2.png'; +import bubble1 from '@/common/assets/image/webAppCreative/cta-bubble-1.png'; +import bubble2 from '@/common/assets/image/webAppCreative/cta-bubble-2.png'; import { useTranslation } from 'next-i18next'; import Button from '@/common/components/Button'; import NextImage from '@/common/components/NextImage'; diff --git a/marketing/src/containers/WebAppCreative/Clients/adidas.png b/marketing/src/containers/Clients/adidas.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/adidas.png rename to marketing/src/containers/Clients/adidas.png diff --git a/marketing/src/containers/WebAppCreative/Clients/amazon.png b/marketing/src/containers/Clients/amazon.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/amazon.png rename to marketing/src/containers/Clients/amazon.png diff --git a/marketing/src/containers/WebAppCreative/Clients/barclays.png b/marketing/src/containers/Clients/barclays.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/barclays.png rename to marketing/src/containers/Clients/barclays.png diff --git a/marketing/src/containers/WebAppCreative/Clients/clients.style.tsx b/marketing/src/containers/Clients/clients.style.tsx similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/clients.style.tsx rename to marketing/src/containers/Clients/clients.style.tsx diff --git a/marketing/src/containers/WebAppCreative/Clients/db.png b/marketing/src/containers/Clients/db.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/db.png rename to marketing/src/containers/Clients/db.png diff --git a/marketing/src/containers/WebAppCreative/Clients/db.svg b/marketing/src/containers/Clients/db.svg similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/db.svg rename to marketing/src/containers/Clients/db.svg diff --git a/marketing/src/containers/WebAppCreative/Clients/deloitte.png b/marketing/src/containers/Clients/deloitte.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/deloitte.png rename to marketing/src/containers/Clients/deloitte.png diff --git a/marketing/src/containers/WebAppCreative/Clients/delta.png b/marketing/src/containers/Clients/delta.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/delta.png rename to marketing/src/containers/Clients/delta.png diff --git a/marketing/src/containers/WebAppCreative/Clients/expedia.png b/marketing/src/containers/Clients/expedia.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/expedia.png rename to marketing/src/containers/Clients/expedia.png diff --git a/marketing/src/containers/WebAppCreative/Clients/ibm.png b/marketing/src/containers/Clients/ibm.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/ibm.png rename to marketing/src/containers/Clients/ibm.png diff --git a/marketing/src/containers/WebAppCreative/Clients/index.tsx b/marketing/src/containers/Clients/index.tsx similarity index 93% rename from marketing/src/containers/WebAppCreative/Clients/index.tsx rename to marketing/src/containers/Clients/index.tsx index a9c19ddae..b15a26dbf 100755 --- a/marketing/src/containers/WebAppCreative/Clients/index.tsx +++ b/marketing/src/containers/Clients/index.tsx @@ -1,8 +1,8 @@ import React from 'react'; import Slider, { Settings } from 'react-slick'; -import Container from '../../../common/components/UI/Container'; -import NextImage from '../../../common/components/NextImage'; -import Text from '../../../common/components/Text'; +import Container from '@/common/components/UI/Container'; +import NextImage from '@/common/components/NextImage'; +import Text from '@/common/components/Text'; import Section, { Title, SliderWrapper, Figure } from './clients.style'; import { useTranslation } from 'next-i18next'; import adidas from './adidas.png'; diff --git a/marketing/src/containers/WebAppCreative/Clients/natwest.png b/marketing/src/containers/Clients/natwest.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/natwest.png rename to marketing/src/containers/Clients/natwest.png diff --git a/marketing/src/containers/WebAppCreative/Clients/novartis.png b/marketing/src/containers/Clients/novartis.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/novartis.png rename to marketing/src/containers/Clients/novartis.png diff --git a/marketing/src/containers/WebAppCreative/Clients/pwc.png b/marketing/src/containers/Clients/pwc.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/pwc.png rename to marketing/src/containers/Clients/pwc.png diff --git a/marketing/src/containers/WebAppCreative/Clients/siemens.png b/marketing/src/containers/Clients/siemens.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/siemens.png rename to marketing/src/containers/Clients/siemens.png diff --git a/marketing/src/containers/WebAppCreative/Clients/target.png b/marketing/src/containers/Clients/target.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/target.png rename to marketing/src/containers/Clients/target.png diff --git a/marketing/src/containers/WebAppCreative/Clients/vodafone.png b/marketing/src/containers/Clients/vodafone.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Clients/vodafone.png rename to marketing/src/containers/Clients/vodafone.png diff --git a/marketing/src/containers/WebAppCreative/Dashboard/dashboard.style.tsx b/marketing/src/containers/Dashboard/dashboard.style.tsx similarity index 96% rename from marketing/src/containers/WebAppCreative/Dashboard/dashboard.style.tsx rename to marketing/src/containers/Dashboard/dashboard.style.tsx index 9a9d32140..9d4c546e4 100755 --- a/marketing/src/containers/WebAppCreative/Dashboard/dashboard.style.tsx +++ b/marketing/src/containers/Dashboard/dashboard.style.tsx @@ -1,8 +1,8 @@ import styled from 'styled-components'; import { themeGet } from '@styled-system/theme-get'; import { Tabs } from 'react-tabs'; -import pattern1 from '../../../common/assets/image/webAppCreative/pattern1.png'; -import pattern2 from '../../../common/assets/image/webAppCreative/pattern2.png'; +import pattern1 from '@/common/assets/image/webAppCreative/pattern1.png'; +import pattern2 from '@/common/assets/image/webAppCreative/pattern2.png'; const Section = styled.section` background-color: #fff; diff --git a/marketing/src/containers/WebAppCreative/Dashboard/feature1.webp b/marketing/src/containers/Dashboard/feature1.webp similarity index 100% rename from marketing/src/containers/WebAppCreative/Dashboard/feature1.webp rename to marketing/src/containers/Dashboard/feature1.webp diff --git a/marketing/src/containers/WebAppCreative/Dashboard/feature2.png b/marketing/src/containers/Dashboard/feature2.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Dashboard/feature2.png rename to marketing/src/containers/Dashboard/feature2.png diff --git a/marketing/src/containers/WebAppCreative/Dashboard/feature3.png b/marketing/src/containers/Dashboard/feature3.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Dashboard/feature3.png rename to marketing/src/containers/Dashboard/feature3.png diff --git a/marketing/src/containers/WebAppCreative/Dashboard/feature4.png b/marketing/src/containers/Dashboard/feature4.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Dashboard/feature4.png rename to marketing/src/containers/Dashboard/feature4.png diff --git a/marketing/src/containers/WebAppCreative/Dashboard/index.tsx b/marketing/src/containers/Dashboard/index.tsx similarity index 89% rename from marketing/src/containers/WebAppCreative/Dashboard/index.tsx rename to marketing/src/containers/Dashboard/index.tsx index c11b23a29..9eee2855a 100755 --- a/marketing/src/containers/WebAppCreative/Dashboard/index.tsx +++ b/marketing/src/containers/Dashboard/index.tsx @@ -1,9 +1,9 @@ import React from 'react'; import { Tab, TabList, TabPanel } from 'react-tabs'; -import Container from '../../../common/components/UI/Container'; -import NextImage from '../../../common/components/NextImage'; -import Text from '../../../common/components/Text'; -import Heading from '../../../common/components/Heading'; +import Container from '@/common/components/UI/Container'; +import NextImage from '@/common/components/NextImage'; +import Text from '@/common/components/Text'; +import Heading from '@/common/components/Heading'; import Section, { SectionHeading, ReactTabs, diff --git a/marketing/src/containers/WebAppCreative/Faq/faq.style.tsx b/marketing/src/containers/Faq/faq.style.tsx similarity index 100% rename from marketing/src/containers/WebAppCreative/Faq/faq.style.tsx rename to marketing/src/containers/Faq/faq.style.tsx diff --git a/marketing/src/containers/WebAppCreative/Faq/index.tsx b/marketing/src/containers/Faq/index.tsx similarity index 93% rename from marketing/src/containers/WebAppCreative/Faq/index.tsx rename to marketing/src/containers/Faq/index.tsx index 78681c843..f4d71b973 100755 --- a/marketing/src/containers/WebAppCreative/Faq/index.tsx +++ b/marketing/src/containers/Faq/index.tsx @@ -1,6 +1,6 @@ import { useState, Fragment } from 'react'; -import Heading from '../../../common/components/Heading'; -import Container from '../../../common/components/UI/Container'; +import Heading from '@/common/components/Heading'; +import Container from '@/common/components/UI/Container'; import { Icon } from 'react-icons-kit'; import { plus } from 'react-icons-kit/entypo/plus'; import { minus } from 'react-icons-kit/entypo/minus'; diff --git a/marketing/src/containers/WebAppCreative/Faq/motion-util.ts b/marketing/src/containers/Faq/motion-util.ts similarity index 100% rename from marketing/src/containers/WebAppCreative/Faq/motion-util.ts rename to marketing/src/containers/Faq/motion-util.ts diff --git a/marketing/src/containers/WebAppCreative/Footer/footer.style.tsx b/marketing/src/containers/Footer/footer.style.tsx similarity index 96% rename from marketing/src/containers/WebAppCreative/Footer/footer.style.tsx rename to marketing/src/containers/Footer/footer.style.tsx index 252fbc538..3978e4bb2 100755 --- a/marketing/src/containers/WebAppCreative/Footer/footer.style.tsx +++ b/marketing/src/containers/Footer/footer.style.tsx @@ -8,14 +8,14 @@ export const Section = styled.footer` export const Grid = styled.div` display: grid; - grid-template-columns: repeat(2, 1fr); + grid-template-columns: repeat(3, 1fr); @media screen and (max-width: 768px) { gap: 30px 30px; - grid-template-columns: repeat(2, 1fr); + grid-template-columns: repeat(3, 1fr); } @media screen and (max-width: 480px) { gap: 20px 0px; - grid-template-columns: repeat(2, 50%); + grid-template-columns: repeat(3, 50%); } `; diff --git a/marketing/src/containers/WebAppCreative/Footer/index.tsx b/marketing/src/containers/Footer/index.tsx similarity index 84% rename from marketing/src/containers/WebAppCreative/Footer/index.tsx rename to marketing/src/containers/Footer/index.tsx index 9a0e28b00..6ed554fd1 100755 --- a/marketing/src/containers/WebAppCreative/Footer/index.tsx +++ b/marketing/src/containers/Footer/index.tsx @@ -2,11 +2,11 @@ import { Icon } from 'react-icons-kit'; import { ic_place } from 'react-icons-kit/md/ic_place'; import { ic_phone } from 'react-icons-kit/md/ic_phone'; import { paperPlane } from 'react-icons-kit/fa/paperPlane'; -import Container from '../../../common/components/UI/Container'; -import Heading from '../../../common/components/Heading'; -import Image from '../../../common/components/Image'; -import Text from '../../../common/components/Text'; -import Link from '../../../common/components/Link'; +import Container from '@/common/components/UI/Container'; +import Heading from '@/common/components/Heading'; +import Image from '@/common/components/Image'; +import Text from '@/common/components/Text'; +import Link from '@/common/components/Link'; import { Section, Grid, @@ -20,10 +20,16 @@ import { } from './footer.style'; import NextImage from '@/common/components/NextImage'; import siteLogo from '../Navbar/logo.png'; -import facebook from '../../../common/assets/image/webAppCreative/icons/facebook.png'; -import twitter from '../../../common/assets/image/webAppCreative/icons/twitter.png'; -import dribbble from '../../../common/assets/image/webAppCreative/icons/dribbble.png'; +import facebook from '@/common/assets/image/webAppCreative/icons/facebook.png'; +import twitter from '@/common/assets/image/webAppCreative/icons/twitter.png'; +import dribbble from '@/common/assets/image/webAppCreative/icons/dribbble.png'; import { useTranslation } from 'next-i18next'; +import { LegalDocumentMetadata } from '@/lib/getLegal'; +import NextLink from 'next/link'; + +type FooterProps = { + legals: LegalDocumentMetadata[]; +}; export const footerTop = { about: { @@ -180,7 +186,7 @@ export const footer = { ], }; -const Footer = () => { +export default function Footer({ legals }: FooterProps) { const { t } = useTranslation(); return (
    @@ -202,6 +208,16 @@ const Footer = () => { ))} */} + +

    {t('Footer.legal')}

    +
      + {legals.map((doc) => ( +
    • + {doc.title} +
    • + ))} +
    +
    @@ -253,6 +269,4 @@ const Footer = () => {
    ); -}; - -export default Footer; +} diff --git a/marketing/src/containers/WebAppCreative/HowItWorks/howItWorks.style.tsx b/marketing/src/containers/HowItWorks/howItWorks.style.tsx similarity index 100% rename from marketing/src/containers/WebAppCreative/HowItWorks/howItWorks.style.tsx rename to marketing/src/containers/HowItWorks/howItWorks.style.tsx diff --git a/marketing/src/containers/WebAppCreative/HowItWorks/index.tsx b/marketing/src/containers/HowItWorks/index.tsx similarity index 69% rename from marketing/src/containers/WebAppCreative/HowItWorks/index.tsx rename to marketing/src/containers/HowItWorks/index.tsx index 07f03e52b..c902e1eaf 100755 --- a/marketing/src/containers/WebAppCreative/HowItWorks/index.tsx +++ b/marketing/src/containers/HowItWorks/index.tsx @@ -1,16 +1,16 @@ import React from 'react'; // import { Icon } from 'react-icons-kit'; TODO !!!! // import { arrowRight } from 'react-icons-kit/feather/arrowRight'; -import Container from '../../../common/components/UI/Container'; -import NextImage from '../../../common/components/NextImage'; -// import Link from '../../../common/components/Link'; -import Heading from '../../../common/components/Heading'; -import Text from '../../../common/components/Text'; +import Container from '@/common/components/UI/Container'; +import NextImage from '@/common/components/NextImage'; +// import Link from '@/common/components/Link'; +import Heading from '@/common/components/Heading'; +import Text from '@/common/components/Text'; import Section, { SectionHeading, Grid, Item } from './howItWorks.style'; -import icon1 from '../../../common/assets/image/webAppCreative/icons/1.png'; -import icon2 from '../../../common/assets/image/webAppCreative/icons/2.png'; -import icon3 from '../../../common/assets/image/webAppCreative/icons/3.png'; -import icon4 from '../../../common/assets/image/webAppCreative/icons/4.png'; +import icon1 from '@/common/assets/image/webAppCreative/icons/1.png'; +import icon2 from '@/common/assets/image/webAppCreative/icons/2.png'; +import icon3 from '@/common/assets/image/webAppCreative/icons/3.png'; +import icon4 from '@/common/assets/image/webAppCreative/icons/4.png'; import { useTranslation } from 'next-i18next'; type HowTo = { diff --git a/marketing/src/containers/WebAppCreative/Integrations/index.tsx b/marketing/src/containers/Integrations/index.tsx similarity index 75% rename from marketing/src/containers/WebAppCreative/Integrations/index.tsx rename to marketing/src/containers/Integrations/index.tsx index 8fc847cf5..23f1ae011 100755 --- a/marketing/src/containers/WebAppCreative/Integrations/index.tsx +++ b/marketing/src/containers/Integrations/index.tsx @@ -1,12 +1,12 @@ -import Container from '../../../common/components/UI/Container'; -import NextImage from '../../../common/components/NextImage'; -import Text from '../../../common/components/Text'; -import Heading from '../../../common/components/Heading'; +import Container from '@/common/components/UI/Container'; +import NextImage from '@/common/components/NextImage'; +import Text from '@/common/components/Text'; +import Heading from '@/common/components/Heading'; import Section, { SectionHeading, SupportedApps } from './integration.style'; -import github from '../../../common/assets/image/webAppCreative/icons/github.png'; -import googleCloud from '../../../common/assets/image/webAppCreative/icons/google-cloud.png'; -import slack2 from '../../../common/assets/image/webAppCreative/icons/slack.png'; -import twitter from '../../../common/assets/image/webAppCreative/icons/twitter.png'; +import github from '@/common/assets/image/webAppCreative/icons/github.png'; +import googleCloud from '@/common/assets/image/webAppCreative/icons/google-cloud.png'; +import slack2 from '@/common/assets/image/webAppCreative/icons/slack.png'; +import twitter from '@/common/assets/image/webAppCreative/icons/twitter.png'; import markdown from './markdown.png'; import microsoft from './microsoft.png'; import okta from './okta.png'; diff --git a/marketing/src/containers/WebAppCreative/Integrations/integration.style.tsx b/marketing/src/containers/Integrations/integration.style.tsx similarity index 100% rename from marketing/src/containers/WebAppCreative/Integrations/integration.style.tsx rename to marketing/src/containers/Integrations/integration.style.tsx diff --git a/marketing/src/containers/WebAppCreative/Integrations/markdown.png b/marketing/src/containers/Integrations/markdown.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Integrations/markdown.png rename to marketing/src/containers/Integrations/markdown.png diff --git a/marketing/src/containers/WebAppCreative/Integrations/microsoft.png b/marketing/src/containers/Integrations/microsoft.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Integrations/microsoft.png rename to marketing/src/containers/Integrations/microsoft.png diff --git a/marketing/src/containers/WebAppCreative/Integrations/okta.png b/marketing/src/containers/Integrations/okta.png similarity index 100% rename from marketing/src/containers/WebAppCreative/Integrations/okta.png rename to marketing/src/containers/Integrations/okta.png diff --git a/marketing/src/containers/Layout/Layout.tsx b/marketing/src/containers/Layout/Layout.tsx new file mode 100644 index 000000000..58e063301 --- /dev/null +++ b/marketing/src/containers/Layout/Layout.tsx @@ -0,0 +1,44 @@ +import React, { Fragment } from 'react'; +import styled, { ThemeProvider } from 'styled-components'; +import Sticky from 'react-stickynode'; +import 'animate.css'; +import { useTranslation } from 'next-i18next'; +import { LegalDocumentMetadata } from '@/lib/getLegal'; +import ResetCSS from '@/common/assets/css/style'; +import { ContentWrapper, GlobalStyle } from '../webAppCreative.style'; +import { DrawerProvider } from '@/common/contexts/DrawerContext'; +import Navbar from '../Navbar'; +import { theme } from '@/common/theme/webAppCreative'; +import Footer from '../Footer'; +import { MenuItem } from '@/types'; + +type HomePageProps = { + legals: LegalDocumentMetadata[]; + menuItems: MenuItem[]; + children: React.ReactNode; +}; + +export default function Layout({ legals, menuItems, children }: HomePageProps) { + return ( + + + + + + + + + + + + {children} +