├── src
├── stylesheets
│ ├── pages
│ │ ├── _module.scss
│ │ └── _404.scss
│ ├── base
│ │ ├── _fonts.scss
│ │ ├── _module.scss
│ │ ├── _resetr.scss
│ │ ├── _base.scss
│ │ └── _typography.scss
│ ├── _variables.scss
│ ├── main.scss
│ └── components
│ │ ├── _module.scss
│ │ ├── _footer.scss
│ │ ├── slices
│ │ ├── _full-width-image.scss
│ │ ├── _text-info.scss
│ │ ├── _headline-with-button.scss
│ │ ├── _info-with-image.scss
│ │ └── _email-signup.scss
│ │ └── _header.scss
├── images
│ ├── logo.png
│ ├── favicon.png
│ ├── twitter.png
│ ├── facebook.png
│ ├── instagram.png
│ ├── top-icon.png
│ └── full-width-image-background.png
├── pages
│ ├── preview.js
│ └── 404.js
├── components
│ ├── GatsbyLink.js
│ ├── Footer.js
│ ├── LanguageSwitcher.js
│ ├── Layout.js
│ └── TopMenu.js
├── slices
│ ├── index.js
│ ├── TextInfo.js
│ ├── FullWidthImage.js
│ ├── HeadlineWithButton.js
│ ├── EmailSignup.js
│ └── InfoWithImage.js
├── utils
│ ├── linkResolver.js
│ └── prismicPreviews.js
└── templates
│ ├── homepage.js
│ └── page.js
├── .prettierignore
├── documents
├── index.json
├── en-us
│ ├── Xs5vWREAACYAIvvr=#=Xs5vWREAACYAIvvs=#=top_menu=#=Xs5vWREAACYAIvvt=#=en-us=#=y.json
│ ├── Xs5M1hEAACEAImP9=#=Xs_kqBEAAArQKQMx=#=homepage=#=Xs5M1hEAACEAImP_=#=en-us=#=y.json
│ └── Xs5rBhEAACEAIueu=#=Xs_k9REAACEAKQOv=#=page=#=Xs5rBhEAACEAIuew=#=en-us=#=y.json
└── fr-fr
│ ├── Xs5vkREAAArQIvz4=#=Xs5vkREAAArQIvz5=#=top_menu=#=Xs5vWREAACYAIvvt=#=fr-fr=#=n.json
│ ├── Xs5SSREAACQAInz5=#=Xs_kwBEAACEAKQNa=#=homepage=#=Xs5M1hEAACEAImP_=#=fr-fr=#=n.json
│ └── Xs5ushEAACQAIvjn=#=Xs_k4REAACYAKQOR=#=page=#=Xs5rBhEAACEAIuew=#=fr-fr=#=n.json
├── .prettierrc
├── .env.example
├── gatsby-ssr.js
├── custom_types
├── index.json
├── top_menu.json
├── homepage.json
└── page.json
├── .eslintrc.json
├── prismic-configuration.js
├── gatsby-browser.js
├── gatsby-node.js
├── README.md
├── .gitignore
├── package.json
└── gatsby-config.js
/src/stylesheets/pages/_module.scss:
--------------------------------------------------------------------------------
1 | @import './404';
2 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | .cache
2 | package.json
3 | package-lock.json
4 | public
5 |
--------------------------------------------------------------------------------
/src/stylesheets/base/_fonts.scss:
--------------------------------------------------------------------------------
1 | $font-sans-serif: 'Roboto', sans-serif;
2 |
--------------------------------------------------------------------------------
/documents/index.json:
--------------------------------------------------------------------------------
1 | { "signature": "34fbecc5b263e17dba2cd597119489a17b7343d6" }
2 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": false,
3 | "singleQuote": true,
4 | "trailingComma": "all"
5 | }
6 |
--------------------------------------------------------------------------------
/src/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/prismicio/gatsby-multi-language-site/master/src/images/logo.png
--------------------------------------------------------------------------------
/src/images/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/prismicio/gatsby-multi-language-site/master/src/images/favicon.png
--------------------------------------------------------------------------------
/src/images/twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/prismicio/gatsby-multi-language-site/master/src/images/twitter.png
--------------------------------------------------------------------------------
/src/images/facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/prismicio/gatsby-multi-language-site/master/src/images/facebook.png
--------------------------------------------------------------------------------
/src/images/instagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/prismicio/gatsby-multi-language-site/master/src/images/instagram.png
--------------------------------------------------------------------------------
/src/images/top-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/prismicio/gatsby-multi-language-site/master/src/images/top-icon.png
--------------------------------------------------------------------------------
/src/stylesheets/_variables.scss:
--------------------------------------------------------------------------------
1 | /* Break points */
2 | $min-width-md: 610px;
3 | $min-width-l: 1100px;
4 | $min-width-xl: 1200px;
5 |
--------------------------------------------------------------------------------
/src/stylesheets/base/_module.scss:
--------------------------------------------------------------------------------
1 | @import './fonts';
2 | @import './resetr';
3 | @import './base';
4 | @import './typography';
5 |
--------------------------------------------------------------------------------
/src/stylesheets/main.scss:
--------------------------------------------------------------------------------
1 | @import './variables';
2 | @import './base/module';
3 | @import './pages/module';
4 | @import './components/module';
5 |
--------------------------------------------------------------------------------
/src/images/full-width-image-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/prismicio/gatsby-multi-language-site/master/src/images/full-width-image-background.png
--------------------------------------------------------------------------------
/.env.example:
--------------------------------------------------------------------------------
1 | # Your Prismic repository access token (if your repository is private).
2 | # See: https://user-guides.prismic.io/en/articles/1036153-generating-an-access-token
3 | PRISMIC_ACCESS_TOKEN=prismic_access_token
4 |
5 | GATSBY_PRISMIC_REPO_NAME=your-repo-name
--------------------------------------------------------------------------------
/src/stylesheets/components/_module.scss:
--------------------------------------------------------------------------------
1 | @import './header';
2 | @import './footer';
3 | @import './slices/email-signup';
4 | @import './slices/full-width-image';
5 | @import './slices/headline-with-button';
6 | @import './slices/info-with-image';
7 | @import './slices/text-info';
8 |
--------------------------------------------------------------------------------
/src/pages/preview.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { withPrismicPreviewResolver } from 'gatsby-plugin-prismic-previews'
3 |
4 | const PreviewPage = ({ isPreview, ...props }) => {
5 | if (isPreview === false) return 'Not a preview!'
6 |
7 | return
Loading
8 | }
9 |
10 | export default withPrismicPreviewResolver(PreviewPage)
11 |
--------------------------------------------------------------------------------
/gatsby-ssr.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { PrismicPreviewProvider } from 'gatsby-plugin-prismic-previews'
3 | import { repositoryConfigs } from './src/utils/prismicPreviews'
4 | import './src/stylesheets/main.scss'
5 |
6 | export const wrapRootElement = ({ element }) => (
7 |
8 | {element}
9 |
10 | )
11 |
--------------------------------------------------------------------------------
/custom_types/index.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "homepage",
4 | "name": "Homepage",
5 | "repeatable": false,
6 | "value": "homepage.json"
7 | },
8 | {
9 | "id": "page",
10 | "name": "Page",
11 | "repeatable": true,
12 | "value": "page.json"
13 | },
14 | {
15 | "id": "top_menu",
16 | "name": "Top Menu",
17 | "repeatable": false,
18 | "value": "top_menu.json"
19 | }
20 | ]
21 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "plugin:react/recommended",
4 | "plugin:react-hooks/recommended",
5 | "plugin:jsx-a11y/recommended"
6 | ],
7 | "env": {
8 | "browser": true,
9 | "es6": true
10 | },
11 | "parserOptions": {
12 | "ecmaFeatures": {
13 | "jsx": true
14 | },
15 | "ecmaVersion": 2021,
16 | "sourceType": "module"
17 | },
18 | "rules": {
19 | "react/prop-types": "off"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/components/GatsbyLink.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { Link } from 'gatsby'
3 |
4 | import { linkResolver } from '../utils/linkResolver'
5 |
6 | export const GatsbyLink = (type, element, content, children, index) => {
7 | if (element.data.link_type === 'Document') {
8 | return (
9 |
10 | {content}
11 |
12 | )
13 | }
14 | return null
15 | }
16 |
--------------------------------------------------------------------------------
/src/pages/404.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { withPrismicUnpublishedPreview } from 'gatsby-plugin-prismic-previews'
3 |
4 | const NotFoundPage = () => (
5 |
14 | )
15 |
16 | export default withPrismicUnpublishedPreview(NotFoundPage)
17 |
--------------------------------------------------------------------------------
/src/stylesheets/pages/_404.scss:
--------------------------------------------------------------------------------
1 | .not-found {
2 | display: flex;
3 | flex-direction: column;
4 | justify-content: center;
5 | height: 50vw;
6 | align-items: center;
7 |
8 | h1 {
9 | font-size: 8rem;
10 | padding-bottom: 0;
11 | }
12 |
13 | p {
14 | a {
15 | color: inherit;
16 |
17 | button {
18 | padding: 20px 30px;
19 | margin-top: 20px;
20 | border-radius: 20px;
21 | font-size: 20px;
22 | }
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/slices/index.js:
--------------------------------------------------------------------------------
1 | import { EmailSignup } from './EmailSignup'
2 | import { FullWidthImage } from './FullWidthImage'
3 | import { HeadlineWithButton } from './HeadlineWithButton'
4 | import { InfoWithImage } from './InfoWithImage'
5 | import { TextInfo } from './TextInfo'
6 |
7 | export const components = {
8 | headline_with_button: HeadlineWithButton,
9 | email_signup: EmailSignup,
10 | full_width_image: FullWidthImage,
11 | info_with_image: InfoWithImage,
12 | text_info: TextInfo,
13 | }
14 |
--------------------------------------------------------------------------------
/prismic-configuration.js:
--------------------------------------------------------------------------------
1 | /**
2 | * This file is used for setting up and connecting to Prismic.
3 | */
4 |
5 | module.exports = {
6 | // The domain name of your Prismic repository. This can be found in the URL of
7 | // your repository.
8 | //
9 | // Example: 'my-repo' if your Prismic repository URL is 'my-repo.prismic.io'.
10 | prismicRepo: 'your-repo-name',
11 |
12 | // The default language for content in your Prismic repository.
13 | defaultLanguage: 'en-us',
14 |
15 | // All available languages for content in your Prismic repository.
16 | langs: ['en-us', 'fr-fr'],
17 | }
18 |
--------------------------------------------------------------------------------
/src/components/Footer.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 |
3 | import twitterIcon from '../images/twitter.png'
4 | import instagramIcon from '../images/instagram.png'
5 | import facebookIcon from '../images/facebook.png'
6 |
7 | export const Footer = () => (
8 |
18 | )
19 |
--------------------------------------------------------------------------------
/src/stylesheets/components/_footer.scss:
--------------------------------------------------------------------------------
1 | footer {
2 | font-style: italic;
3 | text-align: center;
4 | border-top: 1px solid #dadada;
5 | display: flex;
6 | flex-direction: column;
7 |
8 | .copyright {
9 | display: flex;
10 | justify-content: center;
11 | }
12 |
13 | .social {
14 | padding-top: 4%;
15 | display: flex;
16 | justify-content: center;
17 | img {
18 | padding: 5px 16px;
19 | width: 19px;
20 | }
21 | }
22 | }
23 |
24 | /* Extra Small Devices, Phones */
25 | @media only screen and (min-width: $min-width-md) {
26 | footer {
27 | display: flex;
28 | flex-direction: row;
29 | justify-content: space-between;
30 | .social {
31 | padding-top: 0;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/gatsby-browser.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { Link } from 'gatsby'
3 | import { PrismicPreviewProvider } from 'gatsby-plugin-prismic-previews'
4 | import { PrismicProvider } from '@prismicio/react'
5 |
6 | import { repositoryConfigs } from './src/utils/prismicPreviews'
7 | import { linkResolver } from './src/utils/linkResolver'
8 |
9 | import './src/stylesheets/main.scss'
10 |
11 | export const wrapRootElement = ({ element }) => (
12 | (
15 |
16 | )}
17 | >
18 |
19 | {element}
20 |
21 |
22 | )
23 |
--------------------------------------------------------------------------------
/custom_types/top_menu.json:
--------------------------------------------------------------------------------
1 | {
2 | "Main": {
3 | "display_title": {
4 | "type": "StructuredText",
5 | "config": {
6 | "single": "heading1",
7 | "label": "display_title"
8 | }
9 | },
10 | "menu_links": {
11 | "type": "Group",
12 | "config": {
13 | "fields": {
14 | "label": {
15 | "type": "StructuredText",
16 | "config": {
17 | "single": "paragraph",
18 | "label": "label"
19 | }
20 | },
21 | "link": {
22 | "type": "Link",
23 | "config": {
24 | "label": "link",
25 | "placeholder": "Select a Link..."
26 | }
27 | }
28 | },
29 | "label": "menu_links"
30 | }
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/components/LanguageSwitcher.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { navigate } from 'gatsby'
3 |
4 | import { linkResolver } from '../utils/linkResolver'
5 |
6 | export const LanguageSwitcher = ({ activeDocMeta }) => {
7 | const currentLang = activeDocMeta.lang
8 | const currentLangOption = (
9 |
10 | )
11 |
12 | const alternateLangOptions = activeDocMeta.alternateLanguages.map(
13 | (altLang, index) => (
14 |
17 | ),
18 | )
19 |
20 | const handleLangChange = (event) => {
21 | navigate(event.target.value)
22 | }
23 |
24 | return (
25 |
26 |
30 |
31 | )
32 | }
33 |
--------------------------------------------------------------------------------
/src/utils/linkResolver.js:
--------------------------------------------------------------------------------
1 | const { defaultLanguage } = require('../../prismic-configuration')
2 |
3 | /**
4 | * The Link Resolver used for the Prismic repository. This function converts a
5 | * Prismic document to a URL within your app. It is used throughout your app to
6 | * resolve document links and support editor previews.
7 | *
8 | * {@link https://prismic.io/docs/technologies/link-resolver-gatsby}
9 | *
10 | * @param doc Prismic document to resolve to a URL within your app.
11 | *
12 | * @returns URL for the provided Prismic document.
13 | *
14 | * @type import('@prismicio/helpers').LinkResolverFunction
15 | */
16 | exports.linkResolver = (doc) => {
17 | switch (doc.type) {
18 | case 'homepage': {
19 | return doc.lang === defaultLanguage ? '/' : `/${doc.lang}`
20 | }
21 |
22 | case 'page': {
23 | return doc.lang === defaultLanguage
24 | ? `/page/${doc.uid}`
25 | : `/page/${doc.lang}/${doc.uid}`
26 | }
27 |
28 | default:
29 | return '/'
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/stylesheets/components/slices/_full-width-image.scss:
--------------------------------------------------------------------------------
1 | .full-width-image {
2 | position: relative;
3 | margin-top: 0;
4 | padding-top: 0;
5 |
6 | @media only screen and (min-width: $min-width-xl) {
7 | position: relative;
8 | margin-top: 50px;
9 | padding-top: 110px;
10 | }
11 |
12 | .main-img {
13 | z-index: 1;
14 |
15 | img {
16 | width: 100%;
17 | }
18 | }
19 |
20 | .background {
21 | display: none;
22 | position: absolute;
23 | top: 0;
24 |
25 | @media only screen and (min-width: $min-width-xl) {
26 | display: flex;
27 |
28 | &.left-bg {
29 | display: flex;
30 | justify-self: start;
31 | left: -100px;
32 | }
33 |
34 | &.right-bg {
35 | display: flex;
36 | justify-self: end;
37 | right: -100px;
38 |
39 | img {
40 | transform: scaleX(-1);
41 | }
42 | }
43 | }
44 |
45 | img {
46 | width: 790px;
47 | height: 608px;
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/stylesheets/components/slices/_text-info.scss:
--------------------------------------------------------------------------------
1 | .text-info {
2 | @media only screen and (min-width: $min-width-l) {
3 | display: flex;
4 | flex-direction: row;
5 | }
6 |
7 | .left-column {
8 | h1,
9 | h2 {
10 | max-width: 415px;
11 | margin: 30px 0px 20px 0px;
12 | }
13 |
14 | p {
15 | max-width: 1075px;
16 | line-height: 40px;
17 | font-size: 23px;
18 | font-weight: 500;
19 | }
20 | }
21 |
22 | .right-column,
23 | .left-column {
24 | h3 {
25 | font-size: 20px;
26 | line-height: 36px;
27 |
28 | @media only screen and (min-width: $min-width-l) {
29 | font-size: 20px;
30 | line-height: 36px;
31 | }
32 | }
33 |
34 | p {
35 | max-width: 1075px;
36 | margin: 10px 0 20px;
37 | line-height: 30px;
38 | font-size: 16px;
39 | font-weight: 400;
40 | }
41 | }
42 |
43 | .right-column {
44 | margin-left: 0;
45 |
46 | @media only screen and (min-width: $min-width-l) {
47 | margin-left: 135px;
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/gatsby-node.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 |
3 | exports.createPages = async ({ graphql, actions }) => {
4 | const { createPage } = actions
5 |
6 | const queryData = await graphql(`
7 | {
8 | allPrismicPage {
9 | nodes {
10 | id
11 | lang
12 | url
13 | }
14 | }
15 | allPrismicHomepage {
16 | nodes {
17 | id
18 | lang
19 | url
20 | }
21 | }
22 | }
23 | `)
24 |
25 | queryData.data.allPrismicPage.nodes.forEach((page) => {
26 | createPage({
27 | path: page.url,
28 | component: path.resolve(__dirname, 'src/templates/page.js'),
29 | context: {
30 | id: page.id,
31 | lang: page.lang,
32 | },
33 | })
34 | })
35 |
36 | queryData.data.allPrismicHomepage.nodes.forEach((page) => {
37 | createPage({
38 | path: page.url,
39 | component: path.resolve(__dirname, 'src/templates/homepage.js'),
40 | context: {
41 | id: page.id,
42 | lang: page.lang,
43 | },
44 | })
45 | })
46 | }
47 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Prismic & Gatsby multi-language example website
2 |
3 | [Gatsby.js](https://www.gatsbyjs.org/) example Multi-language website with content managed in [Prismic](https://prismic.io)
4 |
5 | ## Check out the dedicated article to get this project up and running
6 |
7 | [Prismic project guide](https://prismic.io/docs/technologies/example-projects-gatsby)
8 |
9 | ## Learn more about using Prismic with Gatsby.js
10 |
11 | [Prismic + Gatsby.js Documentation](https://prismic.io/docs/technologies/gatsby)
12 |
13 | ## License
14 |
15 | This software is licensed under the Apache 2 license, quoted below.
16 |
17 | Copyright 2021 [Prismic](http://prismic.io/).
18 |
19 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
20 |
21 | Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
22 |
--------------------------------------------------------------------------------
/src/utils/prismicPreviews.js:
--------------------------------------------------------------------------------
1 | /**
2 | * This file contains configuration for `gatsby-plugin-prismic-previews` to
3 | * support preview sessions from Prismic with drafts and unpublished documents.
4 | *
5 | * @see https://prismic.io/docs/technologies/previews-gatsby
6 | */
7 |
8 | import { componentResolverFromMap } from 'gatsby-plugin-prismic-previews'
9 |
10 | import { prismicRepo } from '../../prismic-configuration'
11 | import { linkResolver } from './linkResolver'
12 |
13 | import PageTemplate from '../templates/page'
14 | import HomepageTemplate from '../templates/homepage'
15 | /**
16 | * Prismic preview configuration for each repository in your app. This set of
17 | * configuration objects will be used with the `PrismicPreviewProvider`
18 | * higher order component.
19 | *
20 | * If your app needs to support multiple Prismic repositories, add each of
21 | * their own configuration objects here as additional elements.
22 | *
23 | */
24 | export const repositoryConfigs = [
25 | {
26 | repositoryName: prismicRepo,
27 | linkResolver,
28 | componentResolver: componentResolverFromMap({
29 | page: PageTemplate,
30 | homepage: HomepageTemplate,
31 | }),
32 | },
33 | ]
34 |
--------------------------------------------------------------------------------
/src/stylesheets/components/slices/_headline-with-button.scss:
--------------------------------------------------------------------------------
1 | .headline-with-button {
2 | display: flex;
3 | flex-direction: column;
4 | justify-content: space-between;
5 | align-items: center;
6 | text-align: center;
7 |
8 | @media only screen and (min-width: $min-width-l) {
9 | display: flex;
10 | flex-direction: row;
11 | padding-top: 40px;
12 | text-align: inherit;
13 | }
14 |
15 | h1 {
16 | line-height: 4rem;
17 | font-size: 43px;
18 |
19 | @media only screen and (min-width: $min-width-l) {
20 | max-width: 645px;
21 | line-height: inherit;
22 | font-size: 100px;
23 | letter-spacing: 0;
24 | font-weight: 600;
25 | }
26 | }
27 |
28 | p {
29 | max-width: 691px;
30 | margin-top: 20px;
31 | line-height: 40px;
32 | font-size: 23px;
33 | font-weight: 500;
34 |
35 | @media only screen and (min-width: $min-width-l) {
36 | max-width: 617px;
37 | }
38 | }
39 |
40 | .button {
41 | display: flex;
42 | align-self: center;
43 | padding-top: 20px;
44 |
45 | @media only screen and (min-width: $min-width-l) {
46 | display: flex;
47 | align-self: flex-end;
48 | justify-content: flex-end;
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/stylesheets/base/_resetr.scss:
--------------------------------------------------------------------------------
1 | html,
2 | body,
3 | div,
4 | span,
5 | applet,
6 | object,
7 | iframe,
8 | h1,
9 | h2,
10 | h3,
11 | h4,
12 | h5,
13 | h6,
14 | p,
15 | blockquote,
16 | pre,
17 | a,
18 | abbr,
19 | acronym,
20 | address,
21 | big,
22 | cite,
23 | code,
24 | del,
25 | dfn,
26 | em,
27 | img,
28 | ins,
29 | kbd,
30 | q,
31 | s,
32 | samp,
33 | small,
34 | strike,
35 | strong,
36 | sub,
37 | sup,
38 | tt,
39 | var,
40 | b,
41 | u,
42 | i,
43 | center,
44 | dl,
45 | dt,
46 | dd,
47 | ol,
48 | ul,
49 | li,
50 | fieldset,
51 | form,
52 | label,
53 | legend,
54 | table,
55 | caption,
56 | tbody,
57 | tfoot,
58 | thead,
59 | tr,
60 | th,
61 | td,
62 | article,
63 | aside,
64 | canvas,
65 | details,
66 | embed,
67 | figure,
68 | figcaption,
69 | hgroup,
70 | menu,
71 | nav,
72 | output,
73 | ruby,
74 | section,
75 | summary,
76 | time,
77 | mark,
78 | audio,
79 | video {
80 | margin: 0;
81 | padding: 0;
82 | }
83 |
84 | /* HTML5 display-role reset for older browsers */
85 | article,
86 | aside,
87 | details,
88 | figcaption,
89 | figure,
90 | footer,
91 | header,
92 | hgroup,
93 | menu,
94 | nav,
95 | section {
96 | display: block;
97 | }
98 |
99 | ol,
100 | ul {
101 | list-style: none;
102 | }
103 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # dotenv environment variables file
55 | .env
56 | .env.*
57 | !.env.example
58 |
59 | # gatsby files
60 | .cache/
61 | public
62 |
63 | # Mac files
64 | .DS_Store
65 |
66 | # Yarn
67 | yarn-error.log
68 | .pnp/
69 | .pnp.js
70 | # Yarn Integrity file
71 | .yarn-integrity
72 |
73 | # Other
74 | .vscode
75 |
--------------------------------------------------------------------------------
/src/slices/TextInfo.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { graphql } from 'gatsby'
3 | import { PrismicRichText } from '@prismicio/react'
4 | import { StaticImage } from 'gatsby-plugin-image'
5 |
6 | export const TextInfo = ({ slice }) => (
7 |
17 | )
18 |
19 | export const query = graphql`
20 | fragment PageDataBodyTextInfo on PrismicPageDataBodyTextInfo {
21 | primary {
22 | left_column_text {
23 | richText
24 | }
25 | right_column_text {
26 | richText
27 | }
28 | section_title {
29 | richText
30 | }
31 | }
32 | }
33 | fragment HomepageDataBodyTextInfo on PrismicHomepageDataBodyTextInfo {
34 | primary {
35 | left_column_text {
36 | richText
37 | }
38 | right_column_text {
39 | richText
40 | }
41 | section_title {
42 | richText
43 | }
44 | }
45 | }
46 | `
47 |
--------------------------------------------------------------------------------
/src/components/Layout.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { useStaticQuery, graphql } from 'gatsby'
3 | import { Helmet } from 'react-helmet'
4 |
5 | import { TopMenu } from './TopMenu'
6 | import { Footer } from './Footer'
7 |
8 | export const Layout = ({ children, topMenu, activeDocMeta }) => {
9 | const queryData = useStaticQuery(graphql`
10 | query SiteQuery {
11 | site {
12 | siteMetadata {
13 | title
14 | description
15 | }
16 | }
17 | }
18 | `)
19 |
20 | return (
21 | <>
22 |
23 |
24 | {queryData.site.siteMetadata.title}
25 |
29 |
30 |
35 |
39 |
40 |
41 | {children}
42 |
43 | >
44 | )
45 | }
46 |
--------------------------------------------------------------------------------
/src/stylesheets/base/_base.scss:
--------------------------------------------------------------------------------
1 | /*========== Mobile First Method ==========*/
2 |
3 | /* Custom, iPhone Retina */
4 | *,
5 | html {
6 | /* -webkit-font-smoothing: antialiased; */
7 | margin: 0;
8 | padding: 0;
9 | border: 0;
10 | font-size: 100%;
11 | }
12 | ::selection {
13 | background: #fff7c7; /* WebKit/Blink Browsers */
14 | }
15 | ::-moz-selection {
16 | background: #fff7c7; /* Gecko Browsers */
17 | }
18 |
19 | body {
20 | font-family: $font-sans-serif;
21 | letter-spacing: 0;
22 | }
23 |
24 | button:focus {
25 | outline: 0;
26 | }
27 |
28 | .auto-grid {
29 | display: grid;
30 | grid-template-columns: repeat(
31 | auto-fill,
32 | minmax(var(--auto-grid-min-size), 1fr)
33 | );
34 | grid-gap: 2rem;
35 | max-width: inherit;
36 | }
37 |
38 | main,
39 | header,
40 | footer {
41 | padding: 30px 60px;
42 | margin: 0 auto;
43 | }
44 |
45 | main {
46 | section {
47 | padding-bottom: 8%;
48 | }
49 | }
50 |
51 | /* Small Devices, Tablets */
52 | @media only screen and (min-width: $min-width-l) {
53 | header,
54 | footer {
55 | padding: 38px 80px;
56 | }
57 | }
58 |
59 | /* Medium Devices, Desktops, Large Devices, Wide Screens */
60 |
61 | @media only screen and (min-width: $min-width-xl) {
62 | header,
63 | footer {
64 | padding: 38px 7%;
65 | }
66 | main {
67 | max-width: 1080px;
68 | margin: auto;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/slices/FullWidthImage.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { GatsbyImage, StaticImage } from 'gatsby-plugin-image'
3 | import { graphql } from 'gatsby'
4 |
5 | export const FullWidthImage = ({ slice }) => {
6 | const imagePosition =
7 | slice.primary.background_image_position === 'Left' ? 'left-bg' : 'right-bg'
8 |
9 | return (
10 |
11 |
12 |
16 |
17 |
18 |
23 |
24 |
25 | )
26 | }
27 |
28 | export const query = graphql`
29 | fragment PageDataBodyFullWidthImage on PrismicPageDataBodyFullWidthImage {
30 | primary {
31 | background_image_position
32 | image {
33 | gatsbyImageData
34 | alt
35 | copyright
36 | }
37 | }
38 | }
39 | fragment HomepageDataBodyFullWidthImage on PrismicHomepageDataBodyFullWidthImage {
40 | primary {
41 | background_image_position
42 | image {
43 | gatsbyImageData
44 | alt
45 | copyright
46 | }
47 | }
48 | }
49 | `
50 |
--------------------------------------------------------------------------------
/src/stylesheets/components/slices/_info-with-image.scss:
--------------------------------------------------------------------------------
1 | .info-with-image {
2 | display: flex;
3 | align-items: unset;
4 | flex-direction: column;
5 | margin: auto;
6 | padding-bottom: 30px;
7 |
8 | @media only screen and (min-width: $min-width-l) {
9 | display: flex;
10 | flex-direction: row-reverse;
11 | margin-bottom: 110px;
12 | }
13 |
14 | .featured-image {
15 | order: 2;
16 | margin: 0;
17 | padding-top: 20px;
18 |
19 | @media only screen and (min-width: $min-width-l) {
20 | margin-right: 60px;
21 | }
22 |
23 | .mobile-thumbnail {
24 | display: block;
25 |
26 | @media (min-width: $min-width-md) {
27 | display: none;
28 | }
29 | }
30 |
31 | .tablet-thumbnail {
32 | display: none;
33 |
34 | @media (min-width: $min-width-md) {
35 | display: block;
36 | }
37 |
38 | @media (min-width: $min-width-l) {
39 | display: none;
40 | }
41 | }
42 |
43 | .desktop {
44 | display: none;
45 | width: 516px;
46 |
47 | @media (min-width: $min-width-l) {
48 | display: block;
49 | }
50 | }
51 | }
52 |
53 | .text-content {
54 | margin-bottom: 30px;
55 | text-align: left;
56 |
57 | h1,
58 | h2 {
59 | margin-top: 20px;
60 | }
61 |
62 | h3 {
63 | margin-top: 20px;
64 | line-height: 36px;
65 | font-size: 20px;
66 | }
67 |
68 | p {
69 | margin-top: 20px;
70 | line-height: 30px;
71 | font-size: 16px;
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gatsby-multi-language-website",
3 | "description": "Multi-language website example with Gatsby.js using Prismic headless CMS",
4 | "author": "Prismic",
5 | "dependencies": {
6 | "@prismicio/helpers": "^2.0.0",
7 | "@prismicio/react": "^2.0.3",
8 | "gatsby": "^4.25.4",
9 | "gatsby-plugin-image": "^2.0.0",
10 | "gatsby-plugin-manifest": "^4.0.0",
11 | "gatsby-plugin-prismic-previews": "^5.0.0",
12 | "gatsby-plugin-react-helmet": "^5.0.0",
13 | "gatsby-plugin-sass": "^5.0.0",
14 | "gatsby-plugin-sharp": "^4.0.1",
15 | "gatsby-source-filesystem": "^4.0.0",
16 | "gatsby-source-prismic": "^5.0.4",
17 | "react": "^17.0.2",
18 | "react-dom": "^17.0.2",
19 | "react-helmet": "^6.1.0",
20 | "sass": "^1.58.3"
21 | },
22 | "devDependencies": {
23 | "dotenv": "^10.0.0",
24 | "eslint": "^8.7.0",
25 | "eslint-plugin-jsx-a11y": "^6.4.1",
26 | "eslint-plugin-react": "^7.24.0",
27 | "eslint-plugin-react-hooks": "^4.2.0",
28 | "prettier": "^2.3.2"
29 | },
30 | "license": "Apache-2.0",
31 | "scripts": {
32 | "format": "prettier --write \"**/*.{js,jsx,json,scss,md}\"",
33 | "build": "gatsby build",
34 | "develop": "gatsby develop",
35 | "start": "npm run clean && npm run develop",
36 | "serve": "gatsby serve",
37 | "clean": "gatsby clean",
38 | "start:prod": "npm run clean && npm run build && npm run serve"
39 | },
40 | "repository": {
41 | "type": "git",
42 | "url": "https://github.com/prismicio/gatsby-multi-language-site"
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/slices/HeadlineWithButton.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { graphql } from 'gatsby'
3 | import { PrismicRichText } from '@prismicio/react'
4 | import { GatsbyImage } from 'gatsby-plugin-image'
5 |
6 | export const HeadlineWithButton = ({ slice }) => (
7 |
19 | )
20 |
21 | export const query = graphql`
22 | fragment PageDataBodyHeadlineWithButton on PrismicPageDataBodyHeadlineWithButton {
23 | primary {
24 | headline {
25 | richText
26 | }
27 | description {
28 | richText
29 | }
30 | button {
31 | gatsbyImageData
32 | alt
33 | copyright
34 | dimensions {
35 | height
36 | width
37 | }
38 | }
39 | }
40 | }
41 | fragment HomepageDataBodyHeadlineWithButton on PrismicHomepageDataBodyHeadlineWithButton {
42 | primary {
43 | headline {
44 | richText
45 | }
46 | description {
47 | richText
48 | }
49 | button {
50 | gatsbyImageData
51 | alt
52 | copyright
53 | dimensions {
54 | height
55 | width
56 | }
57 | }
58 | }
59 | }
60 | `
61 |
--------------------------------------------------------------------------------
/src/components/TopMenu.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { Link, graphql } from 'gatsby'
3 | import { PrismicLink, PrismicText } from '@prismicio/react'
4 | import { StaticImage } from 'gatsby-plugin-image'
5 |
6 | import { LanguageSwitcher } from './LanguageSwitcher'
7 |
8 | export const TopMenu = ({ topMenu, activeDocMeta }) => {
9 | const renderedMenuLinks = topMenu
10 | ? topMenu.menu_links.map((menuLink, index) => (
11 |
12 |
13 |
14 |
15 |
16 | ))
17 | : null
18 |
19 | return (
20 |
21 |
22 |
23 |
29 |
30 |
31 |
32 |
33 | {renderedMenuLinks}
34 |
35 |
36 |
37 |
38 | )
39 | }
40 |
41 | export const query = graphql`
42 | fragment TopMenuFragment on PrismicTopMenu {
43 | _previewable
44 | type
45 | lang
46 | data {
47 | menu_links {
48 | label {
49 | richText
50 | html
51 | text
52 | }
53 | link {
54 | id
55 | url
56 | }
57 | }
58 | }
59 | }
60 | `
61 |
--------------------------------------------------------------------------------
/src/templates/homepage.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { graphql } from 'gatsby'
3 | import { withPrismicPreview } from 'gatsby-plugin-prismic-previews'
4 | import { SliceZone } from '@prismicio/react'
5 |
6 | import { Layout } from '../components/Layout'
7 | import { components } from '../slices'
8 |
9 | const HomepageTemplate = ({ data }) => {
10 | if (!data) return null
11 |
12 | const homepage = data.prismicHomepage || {}
13 | const topMenu = data.prismicTopMenu || {}
14 |
15 | const { lang, type, url } = homepage || {}
16 | const alternateLanguages = homepage.alternate_languages || []
17 | const activeDoc = {
18 | lang,
19 | type,
20 | url,
21 | alternateLanguages,
22 | }
23 |
24 | return (
25 |
26 |
27 |
28 | )
29 | }
30 |
31 | export const query = graphql`
32 | query homepageQuery($lang: String) {
33 | prismicHomepage(lang: { eq: $lang }) {
34 | _previewable
35 | alternate_languages {
36 | uid
37 | type
38 | lang
39 | }
40 | lang
41 | url
42 | type
43 | data {
44 | body {
45 | ... on PrismicSliceType {
46 | id
47 | slice_type
48 | slice_label
49 | }
50 | ...HomepageDataBodyEmailSignup
51 | ...HomepageDataBodyFullWidthImage
52 | ...HomepageDataBodyHeadlineWithButton
53 | ...HomepageDataBodyInfoWithImage
54 | ...HomepageDataBodyTextInfo
55 | }
56 | }
57 | }
58 | prismicTopMenu(lang: { eq: $lang }) {
59 | ...TopMenuFragment
60 | }
61 | }
62 | `
63 |
64 | export default withPrismicPreview(HomepageTemplate)
65 |
--------------------------------------------------------------------------------
/gatsby-config.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 | const dotenv = require('dotenv')
3 |
4 | dotenv.config()
5 |
6 | const prismicConfig = require('./prismic-configuration')
7 |
8 | module.exports = {
9 | siteMetadata: {
10 | title: 'Multi-language site',
11 | description: 'Sample multi-language website with Prismic CMS & Gatsby.js',
12 | },
13 | plugins: [
14 | {
15 | resolve: 'gatsby-source-prismic',
16 | options: {
17 | repositoryName: prismicConfig.prismicRepo,
18 | accessToken: process.env.PRISMIC_ACCESS_TOKEN,
19 | linkResolver: require('./src/utils/linkResolver').linkResolver,
20 | schemas: {
21 | homepage: require('./custom_types/homepage.json'),
22 | page: require('./custom_types/page.json'),
23 | top_menu: require('./custom_types/top_menu.json'),
24 | },
25 | },
26 | },
27 | {
28 | resolve: 'gatsby-plugin-prismic-previews',
29 | options: {
30 | repositoryName: prismicConfig.prismicRepo,
31 | accessToken: process.env.PRISMIC_ACCESS_TOKEN,
32 | },
33 | },
34 | 'gatsby-plugin-image',
35 | 'gatsby-plugin-sharp',
36 | 'gatsby-plugin-react-helmet',
37 | 'gatsby-plugin-sass',
38 | {
39 | resolve: 'gatsby-plugin-manifest',
40 | options: {
41 | name: 'gatsby-starter-default',
42 | short_name: 'starter',
43 | start_url: '/',
44 | background_color: '#663399',
45 | theme_color: '#663399',
46 | display: 'minimal-ui',
47 | icon: path.resolve(__dirname, 'src', 'images', 'favicon.png'),
48 | },
49 | },
50 | {
51 | resolve: 'gatsby-source-filesystem',
52 | options: {
53 | name: 'images',
54 | path: path.resolve(__dirname, 'src', 'images'),
55 | },
56 | },
57 | ],
58 | }
59 |
--------------------------------------------------------------------------------
/src/slices/EmailSignup.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { graphql } from 'gatsby'
3 | import { PrismicRichText } from '@prismicio/react'
4 | import { asText } from '@prismicio/helpers'
5 |
6 | export const EmailSignup = ({ slice }) => (
7 |
27 | )
28 |
29 | export const query = graphql`
30 | fragment PageDataBodyEmailSignup on PrismicPageDataBodyEmailSignup {
31 | primary {
32 | section_title {
33 | richText
34 | }
35 | input_placeholder {
36 | richText
37 | }
38 | input_label {
39 | richText
40 | }
41 | description {
42 | richText
43 | }
44 | button_text {
45 | richText
46 | }
47 | }
48 | }
49 | fragment HomepageDataBodyEmailSignup on PrismicHomepageDataBodyEmailSignup {
50 | primary {
51 | section_title {
52 | richText
53 | }
54 | input_placeholder {
55 | richText
56 | }
57 | input_label {
58 | richText
59 | }
60 | description {
61 | richText
62 | }
63 | button_text {
64 | richText
65 | }
66 | }
67 | }
68 | `
69 |
--------------------------------------------------------------------------------
/src/templates/page.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { graphql } from 'gatsby'
3 | import { withPrismicPreview } from 'gatsby-plugin-prismic-previews'
4 | import { SliceZone } from '@prismicio/react'
5 |
6 | import { Layout } from '../components/Layout'
7 | import { components } from '../slices'
8 |
9 | const PageTemplate = ({ data }) => {
10 | if (!data) return null
11 |
12 | const pageContent = data.prismicPage
13 | const page = pageContent.data || {}
14 |
15 | const { lang, type, url } = pageContent
16 | const alternateLanguages = pageContent.alternate_languages || []
17 | const activeDoc = {
18 | lang,
19 | type,
20 | url,
21 | alternateLanguages,
22 | }
23 | const topMenu = data.prismicTopMenu || {}
24 |
25 | return (
26 |
27 |
28 |
29 | )
30 | }
31 |
32 | export const query = graphql`
33 | query pageQuery($id: String, $lang: String) {
34 | prismicPage(id: { eq: $id }, lang: { eq: $lang }) {
35 | _previewable
36 | url
37 | uid
38 | type
39 | id
40 | lang
41 | alternate_languages {
42 | id
43 | type
44 | lang
45 | uid
46 | }
47 | data {
48 | body {
49 | ... on PrismicSliceType {
50 | id
51 | slice_label
52 | slice_type
53 | }
54 | ...PageDataBodyEmailSignup
55 | ...PageDataBodyFullWidthImage
56 | ...PageDataBodyHeadlineWithButton
57 | ...PageDataBodyInfoWithImage
58 | ...PageDataBodyTextInfo
59 | }
60 | }
61 | }
62 | prismicTopMenu(lang: { eq: $lang }) {
63 | ...TopMenuFragment
64 | }
65 | }
66 | `
67 |
68 | export default withPrismicPreview(PageTemplate)
69 |
--------------------------------------------------------------------------------
/src/stylesheets/base/_typography.scss:
--------------------------------------------------------------------------------
1 | a {
2 | text-decoration: none;
3 | background-repeat: repeat-x;
4 | background-size: 0.125rem 0.125rem;
5 | background-position: 0 1.4375rem;
6 | }
7 | h1,
8 | h2,
9 | h3,
10 | h4,
11 | h5,
12 | h6 {
13 | font-family: $font-sans-serif;
14 | margin: 1rem 0;
15 | line-height: 1.5;
16 | font-weight: 900;
17 | }
18 |
19 | h1 {
20 | font-size: 3rem;
21 | line-height: 4.75rem;
22 | }
23 |
24 | h2 {
25 | font-size: 32px;
26 | line-height: 45px;
27 | font-weight: 600;
28 | }
29 |
30 | h3 {
31 | font-size: 2.25rem;
32 | line-height: 2.6875rem;
33 | }
34 |
35 | h4 {
36 | line-height: 2rem;
37 | font-size: 2.625rem;
38 | }
39 |
40 | h5 {
41 | line-height: 2.25rem;
42 | font-size: 1.5rem;
43 | }
44 |
45 | h6 {
46 | line-height: 1.875rem;
47 | font-size: 1.25rem;
48 | }
49 |
50 | p {
51 | line-height: 1.875rem;
52 | font-size: 1.25rem;
53 | }
54 |
55 | pre {
56 | white-space: pre-wrap; /* css-3 */
57 | white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
58 | white-space: -pre-wrap; /* Opera 4-6 */
59 | white-space: -o-pre-wrap; /* Opera 7 */
60 | word-wrap: break-word; /* Internet Explorer 5.5+ */
61 | }
62 |
63 | ol,
64 | ul {
65 | margin: 20px 0 20px 30px;
66 |
67 | li {
68 | margin-bottom: 8px;
69 | }
70 | }
71 |
72 | ol {
73 | list-style: disc;
74 | }
75 |
76 | ul {
77 | list-style: decimal;
78 | }
79 |
80 | strong {
81 | font-weight: bold;
82 | }
83 |
84 | em {
85 | font-style: italic;
86 | }
87 |
88 | /* Small Devices, Tablets */
89 | @media only screen and (min-width: $min-width-l) {
90 | h1 {
91 | font-size: 4rem;
92 | line-height: 4.75rem;
93 | }
94 |
95 | h2 {
96 | line-height: 67px;
97 | font-size: 48px;
98 | font-weight: 600;
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/documents/en-us/Xs5vWREAACYAIvvr=#=Xs5vWREAACYAIvvs=#=top_menu=#=Xs5vWREAACYAIvvt=#=en-us=#=y.json:
--------------------------------------------------------------------------------
1 | {
2 | "menu_links": [
3 | {
4 | "label": [
5 | { "type": "paragraph", "content": { "text": "Homepage", "spans": [] } }
6 | ],
7 | "link": {
8 | "id": "Xs5M1hEAACEAImP9",
9 | "wioUrl": "wio://documents/Xs5M1hEAACEAImP9"
10 | }
11 | },
12 | {
13 | "label": [
14 | { "type": "paragraph", "content": { "text": "About us", "spans": [] } }
15 | ],
16 | "link": {
17 | "id": "Xs5rBhEAACEAIueu",
18 | "wioUrl": "wio://documents/Xs5rBhEAACEAIueu"
19 | }
20 | }
21 | ],
22 | "display_title": [
23 | { "type": "heading1", "content": { "text": "Top Menu", "spans": [] } }
24 | ],
25 | "site_logo": {
26 | "origin": {
27 | "id": "Xs5P3BEAACQAInHj",
28 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/bf4f5d18-5ea8-404c-9c4c-da7e0b0ada66_site-logo.png",
29 | "width": 143,
30 | "height": 32
31 | },
32 | "provider": "imgix",
33 | "url": "https://images.prismic.io/multi-language-example/bf4f5d18-5ea8-404c-9c4c-da7e0b0ada66_site-logo.png?auto=compress,format&rect=0,0,142,32&w=102&h=23",
34 | "alt": "Site logo",
35 | "credits": null,
36 | "width": 102,
37 | "height": 23,
38 | "edit": {
39 | "zoom": 0.71875,
40 | "crop": { "x": 0, "y": 0 },
41 | "background": "transparent"
42 | },
43 | "thumbnails": {}
44 | },
45 | "display_title_TYPE": "StructuredText",
46 | "display_title_POSITION": 0,
47 | "site_logo_TYPE": "Image",
48 | "site_logo_POSITION": 1,
49 | "menu_links_TYPE": "Group",
50 | "menu_links_POSITION": 2,
51 | "menu_links.label_TYPE": "StructuredText",
52 | "menu_links.label_POSITION": 3,
53 | "menu_links.link_TYPE": "Link",
54 | "menu_links.link_POSITION": 4,
55 | "slugs_INTERNAL": ["top-menu"],
56 | "uids_INTERNAL": []
57 | }
58 |
--------------------------------------------------------------------------------
/src/stylesheets/components/slices/_email-signup.scss:
--------------------------------------------------------------------------------
1 | .email-signup {
2 | display: flex;
3 | flex-direction: column;
4 | align-items: center;
5 |
6 | @media only screen and (min-width: $min-width-l) {
7 | flex-direction: row;
8 | justify-content: space-between;
9 | }
10 |
11 | .description {
12 | display: flex;
13 | flex-direction: column;
14 | align-items: center;
15 |
16 | @media only screen and (min-width: $min-width-l) {
17 | align-items: baseline;
18 | }
19 |
20 | p {
21 | max-width: 723px;
22 | line-height: 40px;
23 | font-size: 23px;
24 | font-weight: 500;
25 | text-align: center;
26 |
27 | @media only screen and (min-width: $min-width-l) {
28 | text-align: left;
29 | }
30 | }
31 | }
32 |
33 | .form {
34 | display: block;
35 | width: 100%;
36 | max-width: 500px;
37 | padding-left: 0;
38 | font-weight: 900;
39 |
40 | @media only screen and (min-width: $min-width-l) {
41 | display: flex;
42 | flex-direction: column;
43 | margin-left: 165px;
44 | }
45 |
46 | p {
47 | margin: 1rem 0 0rem;
48 | line-height: 1.5;
49 | font-size: 1rem;
50 | font-weight: 500;
51 | text-align: left;
52 | }
53 |
54 | input {
55 | width: 100%;
56 | height: 60px;
57 | margin: 4px 0;
58 | border-radius: 5px;
59 |
60 | @media only screen and (min-width: $min-width-l) {
61 | width: 390px;
62 | }
63 | }
64 |
65 | .email-input {
66 | box-sizing: border-box;
67 | height: 66px;
68 | margin-top: 10px;
69 | padding: 10px 20px;
70 | font-size: 18px;
71 | color: black;
72 | background-color: transparent;
73 | border: 1px solid #2d2d2d;
74 | border-radius: 6px;
75 | }
76 |
77 | .btn {
78 | color: white;
79 | background-color: black;
80 | }
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/documents/fr-fr/Xs5vkREAAArQIvz4=#=Xs5vkREAAArQIvz5=#=top_menu=#=Xs5vWREAACYAIvvt=#=fr-fr=#=n.json:
--------------------------------------------------------------------------------
1 | {
2 | "menu_links": [
3 | {
4 | "label": [
5 | {
6 | "type": "paragraph",
7 | "content": { "text": "Page accueil", "spans": [] }
8 | }
9 | ],
10 | "link": {
11 | "id": "Xs5SSREAACQAInz5",
12 | "wioUrl": "wio://documents/Xs5SSREAACQAInz5"
13 | }
14 | },
15 | {
16 | "label": [
17 | {
18 | "type": "paragraph",
19 | "content": { "text": "Propos nous", "spans": [] }
20 | }
21 | ],
22 | "link": {
23 | "id": "Xs5ushEAACQAIvjn",
24 | "wioUrl": "wio://documents/Xs5ushEAACQAIvjn"
25 | }
26 | }
27 | ],
28 | "display_title": [
29 | { "type": "heading1", "content": { "text": "Top Menu", "spans": [] } }
30 | ],
31 | "site_logo": {
32 | "origin": {
33 | "id": "Xs5P3BEAACQAInHj",
34 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/bf4f5d18-5ea8-404c-9c4c-da7e0b0ada66_site-logo.png",
35 | "width": 143,
36 | "height": 32
37 | },
38 | "provider": "imgix",
39 | "url": "https://images.prismic.io/multi-language-example/bf4f5d18-5ea8-404c-9c4c-da7e0b0ada66_site-logo.png?auto=compress,format&rect=0,0,142,32&w=102&h=23",
40 | "alt": "Site Logo",
41 | "credits": null,
42 | "width": 102,
43 | "height": 23,
44 | "edit": {
45 | "zoom": 0.71875,
46 | "crop": { "x": 0, "y": 0 },
47 | "background": "transparent"
48 | },
49 | "thumbnails": {}
50 | },
51 | "display_title_TYPE": "StructuredText",
52 | "display_title_POSITION": 0,
53 | "site_logo_TYPE": "Image",
54 | "site_logo_POSITION": 1,
55 | "menu_links_TYPE": "Group",
56 | "menu_links_POSITION": 2,
57 | "menu_links.label_TYPE": "StructuredText",
58 | "menu_links.label_POSITION": 3,
59 | "menu_links.link_TYPE": "Link",
60 | "menu_links.link_POSITION": 4,
61 | "slugs_INTERNAL": ["top-menu"],
62 | "uids_INTERNAL": []
63 | }
64 |
--------------------------------------------------------------------------------
/src/slices/InfoWithImage.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import { graphql } from 'gatsby'
3 | import { GatsbyImage, StaticImage } from 'gatsby-plugin-image'
4 | import { PrismicRichText } from '@prismicio/react'
5 |
6 | export const InfoWithImage = ({ slice }) => {
7 | const featuredImage = slice.primary.featured_image
8 | return (
9 |
10 |
11 |
16 |
21 |
26 |
27 |
36 |
37 | )
38 | }
39 |
40 | export const query = graphql`
41 | fragment PageDataBodyInfoWithImage on PrismicPageDataBodyInfoWithImage {
42 | primary {
43 | featured_image {
44 | url
45 | gatsbyImageData
46 | alt
47 | thumbnails {
48 | mobile {
49 | url
50 | gatsbyImageData
51 | alt
52 | }
53 | tablet {
54 | url
55 | gatsbyImageData
56 | alt
57 | }
58 | }
59 | }
60 | section_title {
61 | richText
62 | }
63 | text {
64 | richText
65 | }
66 | }
67 | }
68 | fragment HomepageDataBodyInfoWithImage on PrismicHomepageDataBodyInfoWithImage {
69 | primary {
70 | featured_image {
71 | gatsbyImageData
72 | alt
73 | thumbnails {
74 | mobile {
75 | gatsbyImageData
76 | alt
77 | }
78 | tablet {
79 | gatsbyImageData
80 | alt
81 | }
82 | }
83 | }
84 | section_title {
85 | richText
86 | }
87 | text {
88 | richText
89 | }
90 | }
91 | }
92 | `
93 |
--------------------------------------------------------------------------------
/src/stylesheets/components/_header.scss:
--------------------------------------------------------------------------------
1 | header {
2 | display: flex;
3 | flex-direction: column;
4 | align-items: center;
5 | max-width: 1080px;
6 | margin: auto;
7 |
8 | @media only screen and (min-width: $min-width-md) {
9 | flex-direction: row;
10 | justify-content: space-between;
11 | }
12 |
13 | .menu {
14 | padding: 12px;
15 | display: flex;
16 | justify-content: center;
17 |
18 | @media only screen and (min-width: $min-width-md) {
19 | justify-content: space-between;
20 | }
21 |
22 | .logo {
23 | margin-right: 4px;
24 | vertical-align: text-top;
25 |
26 | @media only screen and (min-width: $min-width-md) {
27 | width: 75%;
28 | }
29 | }
30 |
31 | ul {
32 | display: flex;
33 | align-items: baseline;
34 | list-style: none;
35 |
36 | .language-switcher {
37 | color: grey;
38 |
39 | select {
40 | display: block;
41 | font-size: 16px;
42 | font-family: sans-serif;
43 | font-weight: 700;
44 | color: #444;
45 | line-height: 1.3;
46 | padding: 0.3em 1em 0.2em 0.6em;
47 | width: 100%;
48 | max-width: 100%;
49 | box-sizing: border-box;
50 | margin: 0 0 0 10px;
51 | border: 1px solid #aaa;
52 | box-shadow: 0 1px 0 1px rgba(0, 0, 0, 0.04);
53 | border-radius: 0.4em;
54 | -moz-appearance: none;
55 | -webkit-appearance: none;
56 | appearance: none;
57 | background-color: #fff;
58 | background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'),
59 | linear-gradient(to bottom, #ffffff 0%, #e5e5e5 100%);
60 | background-repeat: no-repeat, repeat;
61 | background-position: right 0.7em top 50%, 0 0;
62 | background-size: 0.65em auto, 100%;
63 | }
64 | select::-ms-expand {
65 | display: none;
66 | }
67 | select:hover {
68 | border-color: #888;
69 | }
70 | select:focus {
71 | border-color: #aaa;
72 | box-shadow: 0 0 1px 3px rgba(59, 153, 252, 0.7);
73 | box-shadow: 0 0 0 3px -moz-mac-focusring;
74 | color: #222;
75 | outline: none;
76 | }
77 | select option {
78 | font-weight: normal;
79 | }
80 | }
81 |
82 | .lang {
83 | padding: 0 4px;
84 | }
85 |
86 | a {
87 | color: inherit;
88 | display: inline-block;
89 | padding: 0 10px;
90 | text-decoration: none;
91 | font-size: 1rem;
92 | font-weight: 600;
93 |
94 | .slash {
95 | padding-left: 6px;
96 | }
97 | }
98 |
99 | img {
100 | width: 18px;
101 | padding-top: 5px;
102 | margin: -3px 9px;
103 | cursor: pointer;
104 | }
105 | }
106 | }
107 | }
108 |
--------------------------------------------------------------------------------
/custom_types/homepage.json:
--------------------------------------------------------------------------------
1 | {
2 | "Main": {
3 | "display_title": {
4 | "type": "StructuredText",
5 | "config": {
6 | "single": "heading1",
7 | "label": "display_title"
8 | }
9 | },
10 | "body": {
11 | "type": "Slices",
12 | "fieldset": "Slice zone",
13 | "config": {
14 | "labels": {
15 | "headline_with_button": [],
16 | "full_width_image": [],
17 | "info_with_image": [],
18 | "text_info": [],
19 | "email_signup": []
20 | },
21 | "choices": {
22 | "headline_with_button": {
23 | "type": "Slice",
24 | "fieldset": "Headline with button",
25 | "description": "Headline & description with button",
26 | "icon": "library_books",
27 | "display": "list",
28 | "non-repeat": {
29 | "headline": {
30 | "type": "StructuredText",
31 | "config": {
32 | "single": "heading1, heading2",
33 | "label": "headline"
34 | }
35 | },
36 | "description": {
37 | "type": "StructuredText",
38 | "config": {
39 | "multi": "paragraph, strong, em, hyperlink, list-item, o-list-item",
40 | "allowTargetBlank": true,
41 | "label": "description"
42 | }
43 | },
44 | "button": {
45 | "type": "Image",
46 | "config": {
47 | "constraint": {
48 | "width": 235,
49 | "height": 75
50 | },
51 | "thumbnails": [],
52 | "label": "button"
53 | }
54 | }
55 | },
56 | "repeat": {}
57 | },
58 | "full_width_image": {
59 | "type": "Slice",
60 | "fieldset": "Full width image",
61 | "description": "Full page width featured image",
62 | "icon": "image",
63 | "display": "list",
64 | "non-repeat": {
65 | "background_image_position": {
66 | "type": "Select",
67 | "config": {
68 | "options": ["Left", "Right"],
69 | "default_value": "Left",
70 | "label": "background_image_position"
71 | }
72 | },
73 | "image": {
74 | "type": "Image",
75 | "config": {
76 | "constraint": {
77 | "width": 1080,
78 | "height": 580
79 | },
80 | "thumbnails": [],
81 | "label": "image"
82 | }
83 | }
84 | },
85 | "repeat": {}
86 | },
87 | "info_with_image": {
88 | "type": "Slice",
89 | "fieldset": "Info with image",
90 | "description": "Text section with featured image",
91 | "icon": "art_track",
92 | "display": "list",
93 | "non-repeat": {
94 | "featured_image": {
95 | "type": "Image",
96 | "config": {
97 | "constraint": {
98 | "width": 600,
99 | "height": 690
100 | },
101 | "thumbnails": [
102 | {
103 | "name": "tablet",
104 | "width": 800,
105 | "height": 400
106 | },
107 | {
108 | "name": "mobile",
109 | "width": 400,
110 | "height": 300
111 | }
112 | ],
113 | "label": "featured_image"
114 | }
115 | },
116 | "section_title": {
117 | "type": "StructuredText",
118 | "config": {
119 | "single": "heading1, heading2",
120 | "label": "section_title"
121 | }
122 | },
123 | "text": {
124 | "type": "StructuredText",
125 | "config": {
126 | "multi": "paragraph, heading3, strong, em, hyperlink, list-item, o-list-item",
127 | "allowTargetBlank": true,
128 | "label": "text"
129 | }
130 | }
131 | },
132 | "repeat": {}
133 | },
134 | "text_info": {
135 | "type": "Slice",
136 | "fieldset": "Text info",
137 | "description": "2 column text section",
138 | "icon": "subject",
139 | "display": "list",
140 | "non-repeat": {
141 | "section_title": {
142 | "type": "StructuredText",
143 | "config": {
144 | "single": "heading1, heading2",
145 | "label": "section_title"
146 | }
147 | },
148 | "left_column_text": {
149 | "type": "StructuredText",
150 | "config": {
151 | "multi": "paragraph, heading3, strong, em, hyperlink, list-item, o-list-item",
152 | "allowTargetBlank": true,
153 | "label": "left_column_text"
154 | }
155 | },
156 | "right_column_text": {
157 | "type": "StructuredText",
158 | "config": {
159 | "multi": "paragraph, heading3, strong, em, hyperlink, list-item, o-list-item",
160 | "allowTargetBlank": true,
161 | "label": "right_column_text"
162 | }
163 | }
164 | },
165 | "repeat": {}
166 | },
167 | "email_signup": {
168 | "type": "Slice",
169 | "fieldset": "Email signup",
170 | "description": "Email signup form",
171 | "icon": "email",
172 | "display": "list",
173 | "non-repeat": {
174 | "section_title": {
175 | "type": "StructuredText",
176 | "config": {
177 | "single": "heading1, heading2",
178 | "label": "section_title"
179 | }
180 | },
181 | "description": {
182 | "type": "StructuredText",
183 | "config": {
184 | "multi": "paragraph, strong, em, hyperlink, list-item, o-list-item",
185 | "allowTargetBlank": true,
186 | "label": "description"
187 | }
188 | },
189 | "input_label": {
190 | "type": "StructuredText",
191 | "config": {
192 | "single": "paragraph",
193 | "label": "input_label"
194 | }
195 | },
196 | "input_placeholder": {
197 | "type": "StructuredText",
198 | "config": {
199 | "single": "paragraph",
200 | "label": "input_placeholder"
201 | }
202 | },
203 | "button_text": {
204 | "type": "StructuredText",
205 | "config": {
206 | "single": "paragraph",
207 | "label": "button_text"
208 | }
209 | }
210 | },
211 | "repeat": {}
212 | }
213 | }
214 | }
215 | }
216 | }
217 | }
218 |
--------------------------------------------------------------------------------
/custom_types/page.json:
--------------------------------------------------------------------------------
1 | {
2 | "Main": {
3 | "display_title": {
4 | "type": "StructuredText",
5 | "config": {
6 | "single": "heading1",
7 | "label": "display_title"
8 | }
9 | },
10 | "uid": {
11 | "type": "UID",
12 | "config": {
13 | "label": "uid"
14 | }
15 | },
16 | "body": {
17 | "type": "Slices",
18 | "fieldset": "Slice zone",
19 | "config": {
20 | "labels": {
21 | "headline_with_button": [],
22 | "full_width_image": [],
23 | "info_with_image": [],
24 | "text_info": [],
25 | "email_signup": []
26 | },
27 | "choices": {
28 | "headline_with_button": {
29 | "type": "Slice",
30 | "fieldset": "Headline with button",
31 | "description": "Headline & description with button",
32 | "icon": "library_books",
33 | "display": "list",
34 | "non-repeat": {
35 | "headline": {
36 | "type": "StructuredText",
37 | "config": {
38 | "single": "heading1, heading2",
39 | "label": "headline"
40 | }
41 | },
42 | "description": {
43 | "type": "StructuredText",
44 | "config": {
45 | "multi": "paragraph, strong, em, hyperlink, list-item, o-list-item",
46 | "allowTargetBlank": true,
47 | "label": "description"
48 | }
49 | },
50 | "button": {
51 | "type": "Image",
52 | "config": {
53 | "constraint": {
54 | "width": 235,
55 | "height": 75
56 | },
57 | "thumbnails": [],
58 | "label": "button"
59 | }
60 | }
61 | },
62 | "repeat": {}
63 | },
64 | "full_width_image": {
65 | "type": "Slice",
66 | "fieldset": "Full width image",
67 | "description": "Full page width featured image",
68 | "icon": "image",
69 | "display": "list",
70 | "non-repeat": {
71 | "background_image_position": {
72 | "type": "Select",
73 | "config": {
74 | "options": ["Left", "Right"],
75 | "default_value": "Left",
76 | "label": "background_image_position"
77 | }
78 | },
79 | "image": {
80 | "type": "Image",
81 | "config": {
82 | "constraint": {
83 | "width": 1080,
84 | "height": 580
85 | },
86 | "thumbnails": [],
87 | "label": "image"
88 | }
89 | }
90 | },
91 | "repeat": {}
92 | },
93 | "info_with_image": {
94 | "type": "Slice",
95 | "fieldset": "Info with image",
96 | "description": "Text section with featured image",
97 | "icon": "art_track",
98 | "display": "list",
99 | "non-repeat": {
100 | "featured_image": {
101 | "type": "Image",
102 | "config": {
103 | "constraint": {
104 | "width": 600,
105 | "height": 690
106 | },
107 | "thumbnails": [
108 | {
109 | "name": "tablet",
110 | "width": 800,
111 | "height": 400
112 | },
113 | {
114 | "name": "mobile",
115 | "width": 400,
116 | "height": 300
117 | }
118 | ],
119 | "label": "featured_image"
120 | }
121 | },
122 | "section_title": {
123 | "type": "StructuredText",
124 | "config": {
125 | "single": "heading1, heading2",
126 | "label": "section_title"
127 | }
128 | },
129 | "text": {
130 | "type": "StructuredText",
131 | "config": {
132 | "multi": "paragraph, heading3, strong, em, hyperlink, list-item, o-list-item",
133 | "allowTargetBlank": true,
134 | "label": "text"
135 | }
136 | }
137 | },
138 | "repeat": {}
139 | },
140 | "text_info": {
141 | "type": "Slice",
142 | "fieldset": "Text info",
143 | "description": "2 column text section",
144 | "icon": "subject",
145 | "display": "list",
146 | "non-repeat": {
147 | "section_title": {
148 | "type": "StructuredText",
149 | "config": {
150 | "single": "heading1, heading2",
151 | "label": "section_title"
152 | }
153 | },
154 | "left_column_text": {
155 | "type": "StructuredText",
156 | "config": {
157 | "multi": "paragraph, heading3, strong, em, hyperlink, list-item, o-list-item",
158 | "allowTargetBlank": true,
159 | "label": "left_column_text"
160 | }
161 | },
162 | "right_column_text": {
163 | "type": "StructuredText",
164 | "config": {
165 | "multi": "paragraph, heading3, strong, em, hyperlink, list-item, o-list-item",
166 | "allowTargetBlank": true,
167 | "label": "right_column_text"
168 | }
169 | }
170 | },
171 | "repeat": {}
172 | },
173 | "email_signup": {
174 | "type": "Slice",
175 | "fieldset": "Email signup",
176 | "description": "Email signup form",
177 | "icon": "email",
178 | "display": "list",
179 | "non-repeat": {
180 | "section_title": {
181 | "type": "StructuredText",
182 | "config": {
183 | "single": "heading1, heading2",
184 | "label": "section_title"
185 | }
186 | },
187 | "description": {
188 | "type": "StructuredText",
189 | "config": {
190 | "multi": "paragraph, strong, em, hyperlink, list-item, o-list-item",
191 | "allowTargetBlank": true,
192 | "label": "description"
193 | }
194 | },
195 | "input_label": {
196 | "type": "StructuredText",
197 | "config": {
198 | "single": "paragraph",
199 | "label": "input_label"
200 | }
201 | },
202 | "input_placeholder": {
203 | "type": "StructuredText",
204 | "config": {
205 | "single": "paragraph",
206 | "label": "input_placeholder"
207 | }
208 | },
209 | "button_text": {
210 | "type": "StructuredText",
211 | "config": {
212 | "single": "paragraph",
213 | "label": "button_text"
214 | }
215 | }
216 | },
217 | "repeat": {}
218 | }
219 | }
220 | }
221 | }
222 | }
223 | }
224 |
--------------------------------------------------------------------------------
/documents/en-us/Xs5M1hEAACEAImP9=#=Xs_kqBEAAArQKQMx=#=homepage=#=Xs5M1hEAACEAImP_=#=en-us=#=y.json:
--------------------------------------------------------------------------------
1 | {
2 | "display_title": [
3 | { "type": "heading1", "content": { "text": "Homepage", "spans": [] } }
4 | ],
5 | "body": [
6 | {
7 | "key": "headline_with_button$51db216d-e101-42cd-81cc-df45032371cc",
8 | "value": {
9 | "repeat": [{}],
10 | "non-repeat": {
11 | "headline": [
12 | {
13 | "type": "heading1",
14 | "content": { "text": "Keep your life organized", "spans": [] }
15 | }
16 | ],
17 | "description": [
18 | {
19 | "type": "paragraph",
20 | "content": {
21 | "text": "Life can feel overwhelming, but it doesn’t have to. Todoist lets you keep track of everything in one place, so you can get it all done and enjoy more peace of mind along the way.",
22 | "spans": []
23 | }
24 | }
25 | ],
26 | "button": {
27 | "origin": {
28 | "id": "Xs5P2xEAACYAInHd",
29 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/f617d193-4894-49b6-9486-9f8fdd695739_download-btn-english.png",
30 | "width": 232,
31 | "height": 74
32 | },
33 | "width": 234,
34 | "height": 75,
35 | "url": "https://images.prismic.io/multi-language-example/f617d193-4894-49b6-9486-9f8fdd695739_download-btn-english.png?auto=compress,format&rect=1,0,231,74&w=234&h=75",
36 | "edit": {
37 | "background": "transparent",
38 | "zoom": 1.0135135135135136,
39 | "crop": { "x": -1, "y": 0 }
40 | },
41 | "credits": null,
42 | "alt": "Download on the App Store",
43 | "provider": "imgix",
44 | "thumbnails": {}
45 | }
46 | }
47 | }
48 | },
49 | {
50 | "key": "full_width_image$c568a546-ba0b-41b1-8595-c8587c04fa2f",
51 | "value": {
52 | "repeat": [{}],
53 | "non-repeat": {
54 | "background_image_position": "Left",
55 | "image": {
56 | "origin": {
57 | "id": "Xs5P3REAACQAInHp",
58 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/10cc9671-43f6-4ac5-8320-3f9bc2314d2f_app-screen-dark.jpeg",
59 | "width": 1228,
60 | "height": 658
61 | },
62 | "width": 1080,
63 | "height": 579,
64 | "url": "https://images.prismic.io/multi-language-example/10cc9671-43f6-4ac5-8320-3f9bc2314d2f_app-screen-dark.jpeg?auto=compress,format&rect=0,0,1227,658&w=1080&h=579",
65 | "edit": {
66 | "background": "#fff",
67 | "zoom": 0.8799392097264438,
68 | "crop": { "x": 0, "y": 0 }
69 | },
70 | "credits": null,
71 | "alt": "Todoop app screenshot",
72 | "provider": "imgix",
73 | "thumbnails": {}
74 | }
75 | }
76 | }
77 | },
78 | {
79 | "key": "text_info$3995ab75-14ac-4dcb-8228-e8a2d6b9ebc1",
80 | "value": {
81 | "repeat": [{}],
82 | "non-repeat": {
83 | "top_icon": {
84 | "origin": {
85 | "id": "Xs5P3BEAAArQInHk",
86 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/3a9bb9d0-ec7e-43d5-b9e4-7ac5f672a82e_top-icon.png",
87 | "width": 62,
88 | "height": 62
89 | },
90 | "width": 62,
91 | "height": 62,
92 | "url": "https://images.prismic.io/multi-language-example/3a9bb9d0-ec7e-43d5-b9e4-7ac5f672a82e_top-icon.png?auto=compress,format&rect=0,0,62,62&w=62&h=62",
93 | "edit": {
94 | "background": "transparent",
95 | "zoom": 1,
96 | "crop": { "x": 0, "y": 0 }
97 | },
98 | "credits": null,
99 | "alt": "Checkbox icon",
100 | "provider": "imgix",
101 | "thumbnails": {}
102 | },
103 | "section_title": [
104 | {
105 | "type": "heading2",
106 | "content": {
107 | "text": "The future of Todo application",
108 | "spans": []
109 | }
110 | }
111 | ],
112 | "left_column_text": [
113 | {
114 | "type": "paragraph",
115 | "content": {
116 | "text": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mttis eroas. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non.",
117 | "spans": [
118 | {
119 | "start": 87,
120 | "end": 98,
121 | "type": "hyperlink",
122 | "data": {
123 | "id": "Xs5rBhEAACEAIueu",
124 | "preview": {
125 | "image": "https://images.prismic.io/multi-language-example/a1cdd5a9-6573-43fd-990f-e09514fa62d7_featured-image.png?auto=compress,format&w=900",
126 | "title": "Page - About Us"
127 | },
128 | "wioUrl": "wio://documents/Xs5rBhEAACEAIueu"
129 | }
130 | }
131 | ]
132 | }
133 | }
134 | ],
135 | "right_column_text": [
136 | {
137 | "type": "heading3",
138 | "content": {
139 | "text": "Never worry about forgetting things again",
140 | "spans": []
141 | }
142 | },
143 | {
144 | "type": "paragraph",
145 | "content": {
146 | "text": "Let Todoist remember it all for you. You can get tasks out of your head and onto your to-do list anytime, anywhere, on any device – even offline.",
147 | "spans": []
148 | }
149 | },
150 | {
151 | "type": "heading3",
152 | "content": {
153 | "text": "Todoist helps millions of people feel more in control of their lives",
154 | "spans": []
155 | }
156 | },
157 | {
158 | "type": "paragraph",
159 | "content": {
160 | "text": "Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis. Morbi in sem quis dui placerat ornare.",
161 | "spans": []
162 | }
163 | },
164 | {
165 | "type": "heading3",
166 | "content": {
167 | "text": "Focus your energy on the right things",
168 | "spans": []
169 | }
170 | },
171 | {
172 | "type": "paragraph",
173 | "content": {
174 | "text": "Praesent dapibus, neque id cursus faucibus, tortor neque egestas auguae, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis.",
175 | "spans": []
176 | }
177 | }
178 | ]
179 | }
180 | }
181 | },
182 | {
183 | "key": "full_width_image$f5a76b07-df7d-4745-9e2d-0cf1e30b23f4",
184 | "value": {
185 | "repeat": [{}],
186 | "non-repeat": {
187 | "background_image_position": "Right",
188 | "image": {
189 | "origin": {
190 | "id": "Xs5P3hEAACYAInHw",
191 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/670672c4-6abd-43f8-a94d-9d84300705ae_app-screen-light.svg",
192 | "width": 1268,
193 | "height": 699
194 | },
195 | "width": 1080,
196 | "height": 595,
197 | "url": "https://images.prismic.io/multi-language-example/670672c4-6abd-43f8-a94d-9d84300705ae_app-screen-light.svg?auto=compress,format&rect=0,0,1268,699&w=1080&h=595",
198 | "edit": {
199 | "background": "#fff",
200 | "zoom": 0.8517350157728707,
201 | "crop": { "x": 0, "y": 0 }
202 | },
203 | "credits": null,
204 | "alt": "Light mode screenshot",
205 | "provider": "imgix",
206 | "thumbnails": {}
207 | }
208 | }
209 | }
210 | },
211 | {
212 | "key": "email_signup$ec98ea3e-5528-4df6-903f-03ab559d7f55",
213 | "value": {
214 | "repeat": [{}],
215 | "non-repeat": {
216 | "section_title": [
217 | {
218 | "type": "heading2",
219 | "content": { "text": "Get notified", "spans": [] }
220 | }
221 | ],
222 | "description": [
223 | {
224 | "type": "paragraph",
225 | "content": {
226 | "text": "Get notified about updates and be the first to get early access to the new, safer and smarter way to archive your files.",
227 | "spans": []
228 | }
229 | }
230 | ],
231 | "input_label": [
232 | {
233 | "type": "paragraph",
234 | "content": { "text": "Your Email:", "spans": [] }
235 | }
236 | ],
237 | "input_placeholder": [
238 | {
239 | "type": "paragraph",
240 | "content": { "text": "johndoe@example.com", "spans": [] }
241 | }
242 | ],
243 | "button_text": [
244 | {
245 | "type": "paragraph",
246 | "content": { "text": "Join our Newsletters", "spans": [] }
247 | }
248 | ]
249 | }
250 | }
251 | }
252 | ],
253 | "display_title_TYPE": "StructuredText",
254 | "display_title_POSITION": 0,
255 | "body_TYPE": "Slices",
256 | "body_POSITION": 1,
257 | "body.headline_with_button_TYPE": "Slice",
258 | "body.headline_with_button_POSITION": 2,
259 | "body.headline_with_button.non-repeat.headline_TYPE": "StructuredText",
260 | "body.headline_with_button.non-repeat.headline_POSITION": 3,
261 | "body.headline_with_button.non-repeat.description_TYPE": "StructuredText",
262 | "body.headline_with_button.non-repeat.description_POSITION": 4,
263 | "body.headline_with_button.non-repeat.button_TYPE": "Image",
264 | "body.headline_with_button.non-repeat.button_POSITION": 5,
265 | "body.full_width_image_TYPE": "Slice",
266 | "body.full_width_image_POSITION": 6,
267 | "body.full_width_image.non-repeat.background_image_position_TYPE": "Select",
268 | "body.full_width_image.non-repeat.background_image_position_POSITION": 7,
269 | "body.full_width_image.non-repeat.image_TYPE": "Image",
270 | "body.full_width_image.non-repeat.image_POSITION": 8,
271 | "body.info_with_image_TYPE": "Slice",
272 | "body.info_with_image_POSITION": 9,
273 | "body.info_with_image.non-repeat.featured_image_TYPE": "Image",
274 | "body.info_with_image.non-repeat.featured_image_POSITION": 10,
275 | "body.info_with_image.non-repeat.top_icon_TYPE": "Image",
276 | "body.info_with_image.non-repeat.top_icon_POSITION": 11,
277 | "body.info_with_image.non-repeat.section_title_TYPE": "StructuredText",
278 | "body.info_with_image.non-repeat.section_title_POSITION": 12,
279 | "body.info_with_image.non-repeat.text_TYPE": "StructuredText",
280 | "body.info_with_image.non-repeat.text_POSITION": 13,
281 | "body.text_info_TYPE": "Slice",
282 | "body.text_info_POSITION": 14,
283 | "body.text_info.non-repeat.top_icon_TYPE": "Image",
284 | "body.text_info.non-repeat.top_icon_POSITION": 15,
285 | "body.text_info.non-repeat.section_title_TYPE": "StructuredText",
286 | "body.text_info.non-repeat.section_title_POSITION": 16,
287 | "body.text_info.non-repeat.left_column_text_TYPE": "StructuredText",
288 | "body.text_info.non-repeat.left_column_text_POSITION": 17,
289 | "body.text_info.non-repeat.right_column_text_TYPE": "StructuredText",
290 | "body.text_info.non-repeat.right_column_text_POSITION": 18,
291 | "body.email_signup_TYPE": "Slice",
292 | "body.email_signup_POSITION": 19,
293 | "body.email_signup.non-repeat.section_title_TYPE": "StructuredText",
294 | "body.email_signup.non-repeat.section_title_POSITION": 20,
295 | "body.email_signup.non-repeat.description_TYPE": "StructuredText",
296 | "body.email_signup.non-repeat.description_POSITION": 21,
297 | "body.email_signup.non-repeat.input_label_TYPE": "StructuredText",
298 | "body.email_signup.non-repeat.input_label_POSITION": 22,
299 | "body.email_signup.non-repeat.input_placeholder_TYPE": "StructuredText",
300 | "body.email_signup.non-repeat.input_placeholder_POSITION": 23,
301 | "body.email_signup.non-repeat.button_text_TYPE": "StructuredText",
302 | "body.email_signup.non-repeat.button_text_POSITION": 24,
303 | "slugs_INTERNAL": ["homepage"],
304 | "uids_INTERNAL": []
305 | }
306 |
--------------------------------------------------------------------------------
/documents/fr-fr/Xs5SSREAACQAInz5=#=Xs_kwBEAACEAKQNa=#=homepage=#=Xs5M1hEAACEAImP_=#=fr-fr=#=n.json:
--------------------------------------------------------------------------------
1 | {
2 | "display_title": [
3 | { "type": "heading1", "content": { "text": "Page accueil", "spans": [] } }
4 | ],
5 | "body": [
6 | {
7 | "key": "headline_with_button$51db216d-e101-42cd-81cc-df45032371cc",
8 | "value": {
9 | "repeat": [{}],
10 | "non-repeat": {
11 | "headline": [
12 | {
13 | "type": "heading1",
14 | "content": { "text": "Gardez votre vie organisée", "spans": [] }
15 | }
16 | ],
17 | "description": [
18 | {
19 | "type": "paragraph",
20 | "content": {
21 | "text": "La vie peut sembler écrasante, mais ce n’est pas nécessaire. Todoist vous permet de tout garder au même endroit, pour que tout soit fini et que vous ayez l'esprit tranquille en chemin.",
22 | "spans": []
23 | }
24 | }
25 | ],
26 | "button": {
27 | "origin": {
28 | "id": "Xs5rLhEAACYAIuhp",
29 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/20217ec3-8411-4596-98b8-a0b582f4b8de_Group+8+%281%29.png",
30 | "width": 232,
31 | "height": 74
32 | },
33 | "width": 234,
34 | "height": 75,
35 | "url": "https://images.prismic.io/multi-language-example/20217ec3-8411-4596-98b8-a0b582f4b8de_Group+8+%281%29.png?auto=compress,format&rect=1,0,231,74&w=234&h=75",
36 | "edit": {
37 | "background": "transparent",
38 | "zoom": 1.0135135135135136,
39 | "crop": { "x": -1, "y": 0 }
40 | },
41 | "credits": null,
42 | "alt": "Télécharger sure App Store",
43 | "provider": "imgix",
44 | "thumbnails": {}
45 | }
46 | }
47 | }
48 | },
49 | {
50 | "key": "full_width_image$c568a546-ba0b-41b1-8595-c8587c04fa2f",
51 | "value": {
52 | "repeat": [{}],
53 | "non-repeat": {
54 | "background_image_position": "Left",
55 | "image": {
56 | "origin": {
57 | "id": "Xs5P3REAACQAInHp",
58 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/10cc9671-43f6-4ac5-8320-3f9bc2314d2f_app-screen-dark.jpeg",
59 | "width": 1228,
60 | "height": 658
61 | },
62 | "width": 1080,
63 | "height": 579,
64 | "url": "https://images.prismic.io/multi-language-example/10cc9671-43f6-4ac5-8320-3f9bc2314d2f_app-screen-dark.jpeg?auto=compress,format&rect=0,0,1227,658&w=1080&h=579",
65 | "edit": {
66 | "background": "#fff",
67 | "zoom": 0.8799392097264438,
68 | "crop": { "x": 0, "y": 0 }
69 | },
70 | "credits": null,
71 | "alt": "Capture d'écran de l'application Todoop",
72 | "provider": "imgix",
73 | "thumbnails": {}
74 | }
75 | }
76 | }
77 | },
78 | {
79 | "key": "text_info$3995ab75-14ac-4dcb-8228-e8a2d6b9ebc1",
80 | "value": {
81 | "repeat": [{}],
82 | "non-repeat": {
83 | "top_icon": {
84 | "origin": {
85 | "id": "Xs5P3BEAAArQInHk",
86 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/3a9bb9d0-ec7e-43d5-b9e4-7ac5f672a82e_top-icon.png",
87 | "width": 62,
88 | "height": 62
89 | },
90 | "width": 62,
91 | "height": 62,
92 | "url": "https://images.prismic.io/multi-language-example/3a9bb9d0-ec7e-43d5-b9e4-7ac5f672a82e_top-icon.png?auto=compress,format&rect=0,0,62,62&w=62&h=62",
93 | "edit": {
94 | "background": "transparent",
95 | "zoom": 1,
96 | "crop": { "x": 0, "y": 0 }
97 | },
98 | "credits": null,
99 | "alt": "Checkbox icon",
100 | "provider": "imgix",
101 | "thumbnails": {}
102 | },
103 | "section_title": [
104 | {
105 | "type": "heading2",
106 | "content": {
107 | "text": "L'avenir de l'application Todo",
108 | "spans": []
109 | }
110 | }
111 | ],
112 | "left_column_text": [
113 | {
114 | "type": "paragraph",
115 | "content": {
116 | "text": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non.",
117 | "spans": [
118 | {
119 | "start": 87,
120 | "end": 98,
121 | "type": "hyperlink",
122 | "data": {
123 | "id": "Xs5ushEAACQAIvjn",
124 | "preview": {
125 | "image": "https://images.prismic.io/multi-language-example/a1cdd5a9-6573-43fd-990f-e09514fa62d7_featured-image.png?auto=compress,format&w=900",
126 | "title": "Page - À propos de Todoop"
127 | },
128 | "wioUrl": "wio://documents/Xs5ushEAACQAIvjn"
129 | }
130 | }
131 | ]
132 | }
133 | }
134 | ],
135 | "right_column_text": [
136 | {
137 | "type": "heading3",
138 | "content": {
139 | "text": "Ne vous inquiétez plus jamais pour oublier des choses",
140 | "spans": []
141 | }
142 | },
143 | {
144 | "type": "paragraph",
145 | "content": {
146 | "text": "Laissez Todoist s'en souvenir pour vous. Vous pouvez obtenir des tâches de votre tête et sur votre liste de tâches à tout moment, n'importe où, sur n'importe quel appareil - même hors ligne.",
147 | "spans": []
148 | }
149 | },
150 | {
151 | "type": "heading3",
152 | "content": {
153 | "text": "Todoist aide des millions de personnes à se sentir plus maîtres de leur vie",
154 | "spans": []
155 | }
156 | },
157 | {
158 | "type": "paragraph",
159 | "content": {
160 | "text": "Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis. Morbi in sem quis dui placerat ornare.",
161 | "spans": []
162 | }
163 | },
164 | {
165 | "type": "heading3",
166 | "content": {
167 | "text": "Concentrez votre énergie sur les bonnes choses",
168 | "spans": []
169 | }
170 | },
171 | {
172 | "type": "paragraph",
173 | "content": {
174 | "text": "Praesent dapibus, neque id cursus faucibus, tortor neque egestas auguae, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis.",
175 | "spans": []
176 | }
177 | }
178 | ]
179 | }
180 | }
181 | },
182 | {
183 | "key": "full_width_image$f5a76b07-df7d-4745-9e2d-0cf1e30b23f4",
184 | "value": {
185 | "repeat": [{}],
186 | "non-repeat": {
187 | "background_image_position": "Right",
188 | "image": {
189 | "origin": {
190 | "id": "Xs5P3hEAACYAInHw",
191 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/670672c4-6abd-43f8-a94d-9d84300705ae_app-screen-light.svg",
192 | "width": 1268,
193 | "height": 699
194 | },
195 | "width": 1080,
196 | "height": 595,
197 | "url": "https://images.prismic.io/multi-language-example/670672c4-6abd-43f8-a94d-9d84300705ae_app-screen-light.svg?auto=compress,format&rect=0,0,1268,699&w=1080&h=595",
198 | "edit": {
199 | "background": "#fff",
200 | "zoom": 0.8517350157728707,
201 | "crop": { "x": 0, "y": 0 }
202 | },
203 | "credits": null,
204 | "alt": "Capture d'écran du mode light",
205 | "provider": "imgix",
206 | "thumbnails": {}
207 | }
208 | }
209 | }
210 | },
211 | {
212 | "key": "email_signup$ec98ea3e-5528-4df6-903f-03ab559d7f55",
213 | "value": {
214 | "repeat": [{}],
215 | "non-repeat": {
216 | "section_title": [
217 | {
218 | "type": "heading2",
219 | "content": { "text": "Recevez une notification", "spans": [] }
220 | }
221 | ],
222 | "description": [
223 | {
224 | "type": "paragraph",
225 | "content": {
226 | "text": "Soyez averti des mises à jour et soyez le premier à accéder rapidement à la nouvelle façon plus sûre et plus intelligente d'archiver vos fichiers.",
227 | "spans": []
228 | }
229 | }
230 | ],
231 | "input_label": [
232 | {
233 | "type": "paragraph",
234 | "content": { "text": "Votre e-mail:", "spans": [] }
235 | }
236 | ],
237 | "input_placeholder": [
238 | {
239 | "type": "paragraph",
240 | "content": { "text": "johndoe@example.com", "spans": [] }
241 | }
242 | ],
243 | "button_text": [
244 | {
245 | "type": "paragraph",
246 | "content": { "text": "Rejoignez nos newsletters", "spans": [] }
247 | }
248 | ]
249 | }
250 | }
251 | }
252 | ],
253 | "display_title_TYPE": "StructuredText",
254 | "display_title_POSITION": 0,
255 | "body_TYPE": "Slices",
256 | "body_POSITION": 1,
257 | "body.headline_with_button_TYPE": "Slice",
258 | "body.headline_with_button_POSITION": 2,
259 | "body.headline_with_button.non-repeat.headline_TYPE": "StructuredText",
260 | "body.headline_with_button.non-repeat.headline_POSITION": 3,
261 | "body.headline_with_button.non-repeat.description_TYPE": "StructuredText",
262 | "body.headline_with_button.non-repeat.description_POSITION": 4,
263 | "body.headline_with_button.non-repeat.button_TYPE": "Image",
264 | "body.headline_with_button.non-repeat.button_POSITION": 5,
265 | "body.full_width_image_TYPE": "Slice",
266 | "body.full_width_image_POSITION": 6,
267 | "body.full_width_image.non-repeat.background_image_position_TYPE": "Select",
268 | "body.full_width_image.non-repeat.background_image_position_POSITION": 7,
269 | "body.full_width_image.non-repeat.image_TYPE": "Image",
270 | "body.full_width_image.non-repeat.image_POSITION": 8,
271 | "body.info_with_image_TYPE": "Slice",
272 | "body.info_with_image_POSITION": 9,
273 | "body.info_with_image.non-repeat.featured_image_TYPE": "Image",
274 | "body.info_with_image.non-repeat.featured_image_POSITION": 10,
275 | "body.info_with_image.non-repeat.top_icon_TYPE": "Image",
276 | "body.info_with_image.non-repeat.top_icon_POSITION": 11,
277 | "body.info_with_image.non-repeat.section_title_TYPE": "StructuredText",
278 | "body.info_with_image.non-repeat.section_title_POSITION": 12,
279 | "body.info_with_image.non-repeat.text_TYPE": "StructuredText",
280 | "body.info_with_image.non-repeat.text_POSITION": 13,
281 | "body.text_info_TYPE": "Slice",
282 | "body.text_info_POSITION": 14,
283 | "body.text_info.non-repeat.top_icon_TYPE": "Image",
284 | "body.text_info.non-repeat.top_icon_POSITION": 15,
285 | "body.text_info.non-repeat.section_title_TYPE": "StructuredText",
286 | "body.text_info.non-repeat.section_title_POSITION": 16,
287 | "body.text_info.non-repeat.left_column_text_TYPE": "StructuredText",
288 | "body.text_info.non-repeat.left_column_text_POSITION": 17,
289 | "body.text_info.non-repeat.right_column_text_TYPE": "StructuredText",
290 | "body.text_info.non-repeat.right_column_text_POSITION": 18,
291 | "body.email_signup_TYPE": "Slice",
292 | "body.email_signup_POSITION": 19,
293 | "body.email_signup.non-repeat.section_title_TYPE": "StructuredText",
294 | "body.email_signup.non-repeat.section_title_POSITION": 20,
295 | "body.email_signup.non-repeat.description_TYPE": "StructuredText",
296 | "body.email_signup.non-repeat.description_POSITION": 21,
297 | "body.email_signup.non-repeat.input_label_TYPE": "StructuredText",
298 | "body.email_signup.non-repeat.input_label_POSITION": 22,
299 | "body.email_signup.non-repeat.input_placeholder_TYPE": "StructuredText",
300 | "body.email_signup.non-repeat.input_placeholder_POSITION": 23,
301 | "body.email_signup.non-repeat.button_text_TYPE": "StructuredText",
302 | "body.email_signup.non-repeat.button_text_POSITION": 24,
303 | "slugs_INTERNAL": ["page-accueil", "homepage"],
304 | "uids_INTERNAL": []
305 | }
306 |
--------------------------------------------------------------------------------
/documents/en-us/Xs5rBhEAACEAIueu=#=Xs_k9REAACEAKQOv=#=page=#=Xs5rBhEAACEAIuew=#=en-us=#=y.json:
--------------------------------------------------------------------------------
1 | {
2 | "display_title": [
3 | {
4 | "type": "heading1",
5 | "content": { "text": "Page - About Us", "spans": [] }
6 | }
7 | ],
8 | "uid": "about-us",
9 | "body": [
10 | {
11 | "key": "headline_with_button$bda52117-d20f-4fc4-9834-1e1fcd269614",
12 | "value": {
13 | "repeat": [{}],
14 | "non-repeat": {
15 | "headline": [
16 | {
17 | "type": "heading1",
18 | "content": { "text": "About Todoop", "spans": [] }
19 | }
20 | ],
21 | "description": [
22 | {
23 | "type": "paragraph",
24 | "content": {
25 | "text": "Life can feel overwhelming, but it doesn’t have to. Todoist lets you keep track of everything in one place, so you can get it all done and enjoy more peace of mind along the way.",
26 | "spans": []
27 | }
28 | }
29 | ],
30 | "button": {
31 | "origin": {
32 | "id": "Xs5P2xEAACQAInHi",
33 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/8aef588d-4b6b-4fd7-bcad-cf5d7c51e7ca_twitter-btn-english.png",
34 | "width": 232,
35 | "height": 74
36 | },
37 | "width": 234,
38 | "height": 75,
39 | "url": "https://images.prismic.io/multi-language-example/8aef588d-4b6b-4fd7-bcad-cf5d7c51e7ca_twitter-btn-english.png?auto=compress,format&rect=1,0,231,74&w=234&h=75",
40 | "edit": {
41 | "background": "transparent",
42 | "zoom": 1.0135135135135136,
43 | "crop": { "x": -1, "y": 0 }
44 | },
45 | "credits": null,
46 | "alt": "Follow us on twitter",
47 | "provider": "imgix",
48 | "thumbnails": {}
49 | }
50 | }
51 | }
52 | },
53 | {
54 | "key": "full_width_image$e6957865-99c1-4b21-8583-a1dbf803fd31",
55 | "value": {
56 | "repeat": [{}],
57 | "non-repeat": {
58 | "background_image_position": "Left",
59 | "image": {
60 | "origin": {
61 | "id": "Xs5P7xEAACEAInI9",
62 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/a1cdd5a9-6573-43fd-990f-e09514fa62d7_featured-image.png",
63 | "width": 2456,
64 | "height": 1316
65 | },
66 | "width": 1080,
67 | "height": 579,
68 | "url": "https://images.prismic.io/multi-language-example/a1cdd5a9-6573-43fd-990f-e09514fa62d7_featured-image.png?auto=compress,format&rect=0,0,2455,1316&w=1080&h=579",
69 | "edit": {
70 | "background": "transparent",
71 | "zoom": 0.4399696048632219,
72 | "crop": { "x": 0, "y": 0 }
73 | },
74 | "credits": null,
75 | "alt": "Productivity in the workplace",
76 | "provider": "imgix",
77 | "thumbnails": {}
78 | }
79 | }
80 | }
81 | },
82 | {
83 | "key": "info_with_image$722d234d-eb1f-4b15-b34e-90ed98941a61",
84 | "value": {
85 | "repeat": [{}],
86 | "non-repeat": {
87 | "featured_image": {
88 | "origin": {
89 | "id": "Xs5P3xEAACEAInH1",
90 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/c78f8271-1561-4fac-bab9-13e578e7559a_featured-image-2.jpeg",
91 | "width": 600,
92 | "height": 690
93 | },
94 | "width": 600,
95 | "height": 690,
96 | "url": "https://images.prismic.io/multi-language-example/c78f8271-1561-4fac-bab9-13e578e7559a_featured-image-2.jpeg?auto=compress,format&rect=0,0,600,690&w=600&h=690",
97 | "edit": {
98 | "background": "#fff",
99 | "zoom": 1,
100 | "crop": { "x": 0, "y": 0 }
101 | },
102 | "credits": null,
103 | "alt": "Todoop in the office",
104 | "provider": "imgix",
105 | "thumbnails": {
106 | "tablet": {
107 | "origin": {
108 | "id": "Xs5P3xEAACEAInH1",
109 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/c78f8271-1561-4fac-bab9-13e578e7559a_featured-image-2.jpeg",
110 | "width": 600,
111 | "height": 690
112 | },
113 | "width": 800,
114 | "height": 400,
115 | "url": "https://images.prismic.io/multi-language-example/c78f8271-1561-4fac-bab9-13e578e7559a_featured-image-2.jpeg?auto=compress,format&rect=0,147,600,300&w=800&h=400",
116 | "edit": {
117 | "background": "#fff",
118 | "zoom": 1.3333333333333333,
119 | "crop": { "x": 0, "y": -196 }
120 | },
121 | "credits": null,
122 | "alt": null,
123 | "provider": "imgix"
124 | },
125 | "mobile": {
126 | "origin": {
127 | "id": "Xs5P3xEAACEAInH1",
128 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/c78f8271-1561-4fac-bab9-13e578e7559a_featured-image-2.jpeg",
129 | "width": 600,
130 | "height": 690
131 | },
132 | "width": 400,
133 | "height": 300,
134 | "url": "https://images.prismic.io/multi-language-example/c78f8271-1561-4fac-bab9-13e578e7559a_featured-image-2.jpeg?auto=compress,format&rect=0,136,600,450&w=400&h=300",
135 | "edit": {
136 | "background": "#fff",
137 | "zoom": 0.6666666666666666,
138 | "crop": { "x": 0, "y": -90 }
139 | },
140 | "credits": null,
141 | "alt": null,
142 | "provider": "imgix"
143 | }
144 | }
145 | },
146 | "top_icon": {
147 | "origin": {
148 | "id": "Xs5P3BEAAArQInHk",
149 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/3a9bb9d0-ec7e-43d5-b9e4-7ac5f672a82e_top-icon.png",
150 | "width": 62,
151 | "height": 62
152 | },
153 | "width": 62,
154 | "height": 62,
155 | "url": "https://images.prismic.io/multi-language-example/3a9bb9d0-ec7e-43d5-b9e4-7ac5f672a82e_top-icon.png?auto=compress,format&rect=0,0,62,62&w=62&h=62",
156 | "edit": {
157 | "background": "transparent",
158 | "zoom": 1,
159 | "crop": { "x": 0, "y": 0 }
160 | },
161 | "credits": null,
162 | "alt": "Checkbox icon",
163 | "provider": "imgix",
164 | "thumbnails": {}
165 | },
166 | "section_title": [
167 | {
168 | "type": "heading2",
169 | "content": {
170 | "text": "The future of Todo application",
171 | "spans": []
172 | }
173 | }
174 | ],
175 | "text": [
176 | {
177 | "type": "heading3",
178 | "content": {
179 | "text": "Life can feel overwhelming, but it doesn’t have to. Todoist lets you keep track of everything in one place, so you can get it all done and enjoy more peace of mind along the way.",
180 | "spans": []
181 | }
182 | },
183 | {
184 | "type": "paragraph",
185 | "content": {
186 | "text": "Suspendisse mauris. Fusce accumsan mollis eros. Pellentesque a diam sit amet mi ullamcorper vehicula. Integer adipiscing risus a sem. Nullam quis massa sit amet nibh viverra malesuada. Nunc sem lacus, accumsan quis, faucibus non, congue vel, arcu. Ut scelerisque hendrerit tellus. Integer sagittis.",
187 | "spans": [
188 | {
189 | "start": 80,
190 | "end": 100,
191 | "type": "hyperlink",
192 | "data": {
193 | "id": "Xs5M1hEAACEAImP9",
194 | "preview": {
195 | "image": "https://images.prismic.io/multi-language-example/10cc9671-43f6-4ac5-8320-3f9bc2314d2f_app-screen-dark.jpeg?auto=compress,format&w=900",
196 | "title": "Homepage"
197 | },
198 | "wioUrl": "wio://documents/Xs5M1hEAACEAImP9"
199 | }
200 | }
201 | ]
202 | }
203 | }
204 | ]
205 | }
206 | }
207 | },
208 | {
209 | "key": "email_signup$07924604-88c3-4018-9207-1b3786171675",
210 | "value": {
211 | "repeat": [{}],
212 | "non-repeat": {
213 | "section_title": [
214 | {
215 | "type": "heading2",
216 | "content": { "text": "Get notified", "spans": [] }
217 | }
218 | ],
219 | "description": [
220 | {
221 | "type": "paragraph",
222 | "content": {
223 | "text": "Get notified about updates and be the first to get early access to the new, safer and smarter way to archive your files.",
224 | "spans": []
225 | }
226 | }
227 | ],
228 | "input_label": [
229 | {
230 | "type": "paragraph",
231 | "content": { "text": "Your Email:", "spans": [] }
232 | }
233 | ],
234 | "input_placeholder": [
235 | {
236 | "type": "paragraph",
237 | "content": { "text": "johndoe@example.com", "spans": [] }
238 | }
239 | ],
240 | "button_text": [
241 | {
242 | "type": "paragraph",
243 | "content": { "text": "Join our Newsletters", "spans": [] }
244 | }
245 | ]
246 | }
247 | }
248 | }
249 | ],
250 | "display_title_TYPE": "StructuredText",
251 | "display_title_POSITION": 0,
252 | "uid_TYPE": "UID",
253 | "uid_POSITION": 1,
254 | "body_TYPE": "Slices",
255 | "body_POSITION": 2,
256 | "body.headline_with_button_TYPE": "Slice",
257 | "body.headline_with_button_POSITION": 3,
258 | "body.headline_with_button.non-repeat.headline_TYPE": "StructuredText",
259 | "body.headline_with_button.non-repeat.headline_POSITION": 4,
260 | "body.headline_with_button.non-repeat.description_TYPE": "StructuredText",
261 | "body.headline_with_button.non-repeat.description_POSITION": 5,
262 | "body.headline_with_button.non-repeat.button_TYPE": "Image",
263 | "body.headline_with_button.non-repeat.button_POSITION": 6,
264 | "body.full_width_image_TYPE": "Slice",
265 | "body.full_width_image_POSITION": 7,
266 | "body.full_width_image.non-repeat.background_image_position_TYPE": "Select",
267 | "body.full_width_image.non-repeat.background_image_position_POSITION": 8,
268 | "body.full_width_image.non-repeat.image_TYPE": "Image",
269 | "body.full_width_image.non-repeat.image_POSITION": 9,
270 | "body.info_with_image_TYPE": "Slice",
271 | "body.info_with_image_POSITION": 10,
272 | "body.info_with_image.non-repeat.featured_image_TYPE": "Image",
273 | "body.info_with_image.non-repeat.featured_image_POSITION": 11,
274 | "body.info_with_image.non-repeat.top_icon_TYPE": "Image",
275 | "body.info_with_image.non-repeat.top_icon_POSITION": 12,
276 | "body.info_with_image.non-repeat.section_title_TYPE": "StructuredText",
277 | "body.info_with_image.non-repeat.section_title_POSITION": 13,
278 | "body.info_with_image.non-repeat.text_TYPE": "StructuredText",
279 | "body.info_with_image.non-repeat.text_POSITION": 14,
280 | "body.text_info_TYPE": "Slice",
281 | "body.text_info_POSITION": 15,
282 | "body.text_info.non-repeat.top_icon_TYPE": "Image",
283 | "body.text_info.non-repeat.top_icon_POSITION": 16,
284 | "body.text_info.non-repeat.section_title_TYPE": "StructuredText",
285 | "body.text_info.non-repeat.section_title_POSITION": 17,
286 | "body.text_info.non-repeat.left_column_text_TYPE": "StructuredText",
287 | "body.text_info.non-repeat.left_column_text_POSITION": 18,
288 | "body.text_info.non-repeat.right_column_text_TYPE": "StructuredText",
289 | "body.text_info.non-repeat.right_column_text_POSITION": 19,
290 | "body.email_signup_TYPE": "Slice",
291 | "body.email_signup_POSITION": 20,
292 | "body.email_signup.non-repeat.section_title_TYPE": "StructuredText",
293 | "body.email_signup.non-repeat.section_title_POSITION": 21,
294 | "body.email_signup.non-repeat.description_TYPE": "StructuredText",
295 | "body.email_signup.non-repeat.description_POSITION": 22,
296 | "body.email_signup.non-repeat.input_label_TYPE": "StructuredText",
297 | "body.email_signup.non-repeat.input_label_POSITION": 23,
298 | "body.email_signup.non-repeat.input_placeholder_TYPE": "StructuredText",
299 | "body.email_signup.non-repeat.input_placeholder_POSITION": 24,
300 | "body.email_signup.non-repeat.button_text_TYPE": "StructuredText",
301 | "body.email_signup.non-repeat.button_text_POSITION": 25,
302 | "slugs_INTERNAL": ["page---about-us"],
303 | "uids_INTERNAL": ["about-us"]
304 | }
305 |
--------------------------------------------------------------------------------
/documents/fr-fr/Xs5ushEAACQAIvjn=#=Xs_k4REAACYAKQOR=#=page=#=Xs5rBhEAACEAIuew=#=fr-fr=#=n.json:
--------------------------------------------------------------------------------
1 | {
2 | "display_title": [
3 | {
4 | "type": "heading1",
5 | "content": { "text": "Page - À propos de Todoop", "spans": [] }
6 | }
7 | ],
8 | "uid": "a-propos-de-nous",
9 | "body": [
10 | {
11 | "key": "headline_with_button$bda52117-d20f-4fc4-9834-1e1fcd269614",
12 | "value": {
13 | "repeat": [{}],
14 | "non-repeat": {
15 | "headline": [
16 | {
17 | "type": "heading1",
18 | "content": { "text": "À propos de Todoop", "spans": [] }
19 | }
20 | ],
21 | "description": [
22 | {
23 | "type": "paragraph",
24 | "content": {
25 | "text": "La vie peut sembler écrasante, mais ce n’est pas nécessaire. Todoist vous permet de tout garder au même endroit, pour que tout soit fini et que vous ayez l'esprit tranquille en chemin.",
26 | "spans": []
27 | }
28 | }
29 | ],
30 | "button": {
31 | "origin": {
32 | "id": "Xs5rLhEAACQAIuhr",
33 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/a28ec5fa-aff0-4dee-b926-d92beac959ea_Group+8.png",
34 | "width": 232,
35 | "height": 74
36 | },
37 | "width": 234,
38 | "height": 75,
39 | "url": "https://images.prismic.io/multi-language-example/a28ec5fa-aff0-4dee-b926-d92beac959ea_Group+8.png?auto=compress,format&rect=1,0,231,74&w=234&h=75",
40 | "edit": {
41 | "background": "transparent",
42 | "zoom": 1.0135135135135136,
43 | "crop": { "x": -1, "y": 0 }
44 | },
45 | "credits": null,
46 | "alt": "Suivez-nous sur twitter",
47 | "provider": "imgix",
48 | "thumbnails": {}
49 | }
50 | }
51 | }
52 | },
53 | {
54 | "key": "full_width_image$e6957865-99c1-4b21-8583-a1dbf803fd31",
55 | "value": {
56 | "repeat": [{}],
57 | "non-repeat": {
58 | "background_image_position": "Left",
59 | "image": {
60 | "origin": {
61 | "id": "Xs5P7xEAACEAInI9",
62 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/a1cdd5a9-6573-43fd-990f-e09514fa62d7_featured-image.png",
63 | "width": 2456,
64 | "height": 1316
65 | },
66 | "width": 1080,
67 | "height": 579,
68 | "url": "https://images.prismic.io/multi-language-example/a1cdd5a9-6573-43fd-990f-e09514fa62d7_featured-image.png?auto=compress,format&rect=0,0,2455,1316&w=1080&h=579",
69 | "edit": {
70 | "background": "transparent",
71 | "zoom": 0.4399696048632219,
72 | "crop": { "x": 0, "y": 0 }
73 | },
74 | "credits": null,
75 | "alt": "Productivité au travail",
76 | "provider": "imgix",
77 | "thumbnails": {}
78 | }
79 | }
80 | }
81 | },
82 | {
83 | "key": "info_with_image$722d234d-eb1f-4b15-b34e-90ed98941a61",
84 | "value": {
85 | "repeat": [{}],
86 | "non-repeat": {
87 | "featured_image": {
88 | "origin": {
89 | "id": "Xs5P3xEAACEAInH1",
90 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/c78f8271-1561-4fac-bab9-13e578e7559a_featured-image-2.jpeg",
91 | "width": 600,
92 | "height": 690
93 | },
94 | "width": 600,
95 | "height": 690,
96 | "url": "https://images.prismic.io/multi-language-example/c78f8271-1561-4fac-bab9-13e578e7559a_featured-image-2.jpeg?auto=compress,format&rect=0,0,600,690&w=600&h=690",
97 | "edit": {
98 | "background": "#fff",
99 | "zoom": 1,
100 | "crop": { "x": 0, "y": 0 }
101 | },
102 | "credits": null,
103 | "alt": "Todoop au bureau",
104 | "provider": "imgix",
105 | "thumbnails": {
106 | "tablet": {
107 | "origin": {
108 | "id": "Xs5P3xEAACEAInH1",
109 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/c78f8271-1561-4fac-bab9-13e578e7559a_featured-image-2.jpeg",
110 | "width": 600,
111 | "height": 690
112 | },
113 | "width": 800,
114 | "height": 400,
115 | "url": "https://images.prismic.io/multi-language-example/c78f8271-1561-4fac-bab9-13e578e7559a_featured-image-2.jpeg?auto=compress,format&rect=0,147,600,300&w=800&h=400",
116 | "edit": {
117 | "background": "#fff",
118 | "zoom": 1.3333333333333333,
119 | "crop": { "x": 0, "y": -196 }
120 | },
121 | "credits": null,
122 | "alt": "Todoop au bureau",
123 | "provider": "imgix"
124 | },
125 | "mobile": {
126 | "origin": {
127 | "id": "Xs5P3xEAACEAInH1",
128 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/c78f8271-1561-4fac-bab9-13e578e7559a_featured-image-2.jpeg",
129 | "width": 600,
130 | "height": 690
131 | },
132 | "width": 400,
133 | "height": 300,
134 | "url": "https://images.prismic.io/multi-language-example/c78f8271-1561-4fac-bab9-13e578e7559a_featured-image-2.jpeg?auto=compress,format&rect=0,136,600,450&w=400&h=300",
135 | "edit": {
136 | "background": "#fff",
137 | "zoom": 0.6666666666666666,
138 | "crop": { "x": 0, "y": -90 }
139 | },
140 | "credits": null,
141 | "alt": "Todoop au bureau",
142 | "provider": "imgix"
143 | }
144 | }
145 | },
146 | "top_icon": {
147 | "origin": {
148 | "id": "Xs5P3BEAAArQInHk",
149 | "url": "https://prismic-io.s3.amazonaws.com/multi-language-example/3a9bb9d0-ec7e-43d5-b9e4-7ac5f672a82e_top-icon.png",
150 | "width": 62,
151 | "height": 62
152 | },
153 | "width": 62,
154 | "height": 62,
155 | "url": "https://images.prismic.io/multi-language-example/3a9bb9d0-ec7e-43d5-b9e4-7ac5f672a82e_top-icon.png?auto=compress,format&rect=0,0,62,62&w=62&h=62",
156 | "edit": {
157 | "background": "transparent",
158 | "zoom": 1,
159 | "crop": { "x": 0, "y": 0 }
160 | },
161 | "credits": null,
162 | "alt": "Checkbox icon",
163 | "provider": "imgix",
164 | "thumbnails": {}
165 | },
166 | "section_title": [
167 | {
168 | "type": "heading2",
169 | "content": {
170 | "text": "L'avenir de l'application Todo",
171 | "spans": []
172 | }
173 | }
174 | ],
175 | "text": [
176 | {
177 | "type": "heading3",
178 | "content": {
179 | "text": "La vie peut sembler écrasante, mais ce n’est pas nécessaire. Todoist vous permet de tout garder au même endroit, pour que tout soit fini et que vous ayez l'esprit tranquille en chemin.",
180 | "spans": []
181 | }
182 | },
183 | {
184 | "type": "paragraph",
185 | "content": {
186 | "text": "Suspendisse mauris. Fusce accumsan mollis eros. Pellentesque a diam sit amet mi ullamcorper vehicula. Integer adipiscing risus a sem. Nullam quis massa sit amet nibh viverra malesuada. Nunc sem lacus, accumsan quis, faucibus non, congue vel, arcu. Ut scelerisque hendrerit tellus. Integer sagittis. Vivamus a mauris eget arcu gravida tristique. Nunc iaculis mi in ante.",
187 | "spans": [
188 | {
189 | "start": 80,
190 | "end": 100,
191 | "type": "hyperlink",
192 | "data": {
193 | "id": "Xs5SSREAACQAInz5",
194 | "preview": {
195 | "image": "https://images.prismic.io/multi-language-example/10cc9671-43f6-4ac5-8320-3f9bc2314d2f_app-screen-dark.jpeg?auto=compress,format&w=900",
196 | "title": "Page accueil"
197 | },
198 | "wioUrl": "wio://documents/Xs5SSREAACQAInz5"
199 | }
200 | }
201 | ]
202 | }
203 | }
204 | ]
205 | }
206 | }
207 | },
208 | {
209 | "key": "email_signup$07924604-88c3-4018-9207-1b3786171675",
210 | "value": {
211 | "repeat": [{}],
212 | "non-repeat": {
213 | "section_title": [
214 | {
215 | "type": "heading2",
216 | "content": { "text": "Recevez une notification", "spans": [] }
217 | }
218 | ],
219 | "description": [
220 | {
221 | "type": "paragraph",
222 | "content": {
223 | "text": "Soyez averti des mises à jour et soyez le premier à accéder rapidement à la nouvelle façon plus sûre et plus intelligente d'archiver vos fichiers.",
224 | "spans": []
225 | }
226 | }
227 | ],
228 | "input_label": [
229 | {
230 | "type": "paragraph",
231 | "content": { "text": "Votre e-mail:", "spans": [] }
232 | }
233 | ],
234 | "input_placeholder": [
235 | {
236 | "type": "paragraph",
237 | "content": { "text": "johndoe@example.com", "spans": [] }
238 | }
239 | ],
240 | "button_text": [
241 | {
242 | "type": "paragraph",
243 | "content": { "text": "Rejoignez nos newsletters", "spans": [] }
244 | }
245 | ]
246 | }
247 | }
248 | }
249 | ],
250 | "display_title_TYPE": "StructuredText",
251 | "display_title_POSITION": 0,
252 | "uid_TYPE": "UID",
253 | "uid_POSITION": 1,
254 | "body_TYPE": "Slices",
255 | "body_POSITION": 2,
256 | "body.headline_with_button_TYPE": "Slice",
257 | "body.headline_with_button_POSITION": 3,
258 | "body.headline_with_button.non-repeat.headline_TYPE": "StructuredText",
259 | "body.headline_with_button.non-repeat.headline_POSITION": 4,
260 | "body.headline_with_button.non-repeat.description_TYPE": "StructuredText",
261 | "body.headline_with_button.non-repeat.description_POSITION": 5,
262 | "body.headline_with_button.non-repeat.button_TYPE": "Image",
263 | "body.headline_with_button.non-repeat.button_POSITION": 6,
264 | "body.full_width_image_TYPE": "Slice",
265 | "body.full_width_image_POSITION": 7,
266 | "body.full_width_image.non-repeat.background_image_position_TYPE": "Select",
267 | "body.full_width_image.non-repeat.background_image_position_POSITION": 8,
268 | "body.full_width_image.non-repeat.image_TYPE": "Image",
269 | "body.full_width_image.non-repeat.image_POSITION": 9,
270 | "body.info_with_image_TYPE": "Slice",
271 | "body.info_with_image_POSITION": 10,
272 | "body.info_with_image.non-repeat.featured_image_TYPE": "Image",
273 | "body.info_with_image.non-repeat.featured_image_POSITION": 11,
274 | "body.info_with_image.non-repeat.top_icon_TYPE": "Image",
275 | "body.info_with_image.non-repeat.top_icon_POSITION": 12,
276 | "body.info_with_image.non-repeat.section_title_TYPE": "StructuredText",
277 | "body.info_with_image.non-repeat.section_title_POSITION": 13,
278 | "body.info_with_image.non-repeat.text_TYPE": "StructuredText",
279 | "body.info_with_image.non-repeat.text_POSITION": 14,
280 | "body.text_info_TYPE": "Slice",
281 | "body.text_info_POSITION": 15,
282 | "body.text_info.non-repeat.top_icon_TYPE": "Image",
283 | "body.text_info.non-repeat.top_icon_POSITION": 16,
284 | "body.text_info.non-repeat.section_title_TYPE": "StructuredText",
285 | "body.text_info.non-repeat.section_title_POSITION": 17,
286 | "body.text_info.non-repeat.left_column_text_TYPE": "StructuredText",
287 | "body.text_info.non-repeat.left_column_text_POSITION": 18,
288 | "body.text_info.non-repeat.right_column_text_TYPE": "StructuredText",
289 | "body.text_info.non-repeat.right_column_text_POSITION": 19,
290 | "body.email_signup_TYPE": "Slice",
291 | "body.email_signup_POSITION": 20,
292 | "body.email_signup.non-repeat.section_title_TYPE": "StructuredText",
293 | "body.email_signup.non-repeat.section_title_POSITION": 21,
294 | "body.email_signup.non-repeat.description_TYPE": "StructuredText",
295 | "body.email_signup.non-repeat.description_POSITION": 22,
296 | "body.email_signup.non-repeat.input_label_TYPE": "StructuredText",
297 | "body.email_signup.non-repeat.input_label_POSITION": 23,
298 | "body.email_signup.non-repeat.input_placeholder_TYPE": "StructuredText",
299 | "body.email_signup.non-repeat.input_placeholder_POSITION": 24,
300 | "body.email_signup.non-repeat.button_text_TYPE": "StructuredText",
301 | "body.email_signup.non-repeat.button_text_POSITION": 25,
302 | "slugs_INTERNAL": ["page---a-propos-de-todoop", "page---about-us"],
303 | "uids_INTERNAL": ["a-propos-de-nous", "about-us"]
304 | }
305 |
--------------------------------------------------------------------------------