From 084f651131bd639b36c69aae32834c3042da5ea0 Mon Sep 17 00:00:00 2001 From: Xavier Desoindre Date: Thu, 26 Sep 2024 18:18:09 +0200 Subject: [PATCH] feat: Add quiz --- app/(iframes)/iframes/quiz/page.tsx | 8 + app/(public)/outils/quiz/page.tsx | 32 +++ npm/react/README.md | 10 +- public/images/banner-quiz-cards.jpg | Bin 0 -> 43201 bytes public/images/fiches.png | Bin 0 -> 19595 bytes public/images/ico2.svg | 16 ++ public/images/tools-quiz-end.svg | 43 ++++ public/images/tools-quiz.svg | 69 +++++++ public/meta/quiz.png | Bin 0 -> 27110 bytes src/components/base/buttons/Button.tsx | 30 +-- src/components/base/icons/full-arrow-left.tsx | 13 ++ src/components/base/icons/open.tsx | 6 +- .../base/icons/star-shap-critical.tsx | 50 +++++ .../base/icons/star-shap-success.tsx | 50 +++++ src/components/cards/tools.tsx | 7 + src/components/comparateur/Etiquette.tsx | 4 +- src/components/outils/Outils.tsx | 3 +- .../infographies/InfographySimulator.tsx | 7 +- .../simulators/EquivalentSimulator.tsx | 14 +- src/components/outils/quiz/Answer.module.css | 128 ++++++++++++ src/components/outils/quiz/Answer.tsx | 81 ++++++++ .../outils/quiz/Question.module.css | 50 +++++ src/components/outils/quiz/Question.tsx | 123 ++++++++++++ src/components/outils/quiz/Quiz.tsx | 16 ++ src/components/outils/quiz/QuizCards.tsx | 28 +++ src/components/outils/quiz/QuizPage.tsx | 56 ++++++ .../outils/quiz/QuizSimulator.module.css | 120 +++++++++++ src/components/outils/quiz/QuizSimulator.tsx | 187 ++++++++++++++++++ .../outils/quiz/infos/AvocatPoisson.tsx | 33 ++++ src/components/outils/quiz/infos/BoeufTGV.tsx | 33 ++++ src/components/outils/quiz/infos/EauThe.tsx | 32 +++ .../outils/quiz/infos/EmailSmartphone.tsx | 37 ++++ .../outils/quiz/infos/FriendsVoiture.tsx | 37 ++++ .../outils/quiz/infos/Icon.module.css | 8 + src/components/outils/quiz/infos/Icon.tsx | 15 ++ .../outils/quiz/infos/Infos.module.css | 20 ++ .../outils/quiz/infos/ManteauBouilloire.tsx | 32 +++ .../quiz/infos/RefrigirateurOrdinateur.tsx | 34 ++++ .../outils/quiz/infos/TabletteChaussure.tsx | 37 ++++ .../outils/quiz/infos/TelevisionPNY.tsx | 37 ++++ .../outils/quiz/infos/VeloMangue.tsx | 37 ++++ .../outils/quiz/question.config.tsx | 24 +++ .../shareable/overScreens/Values.tsx | 14 +- src/providers/TranslationProvider.tsx | 3 + src/providers/locales/en.json | 61 +++++- src/providers/locales/es.json | 61 +++++- src/providers/locales/fr.json | 61 +++++- src/utils/meta.ts | 10 + types/question.d.ts | 11 ++ 49 files changed, 1752 insertions(+), 36 deletions(-) create mode 100644 app/(iframes)/iframes/quiz/page.tsx create mode 100644 app/(public)/outils/quiz/page.tsx create mode 100644 public/images/banner-quiz-cards.jpg create mode 100644 public/images/fiches.png create mode 100644 public/images/ico2.svg create mode 100644 public/images/tools-quiz-end.svg create mode 100644 public/images/tools-quiz.svg create mode 100644 public/meta/quiz.png create mode 100644 src/components/base/icons/full-arrow-left.tsx create mode 100644 src/components/base/icons/star-shap-critical.tsx create mode 100644 src/components/base/icons/star-shap-success.tsx create mode 100644 src/components/outils/quiz/Answer.module.css create mode 100644 src/components/outils/quiz/Answer.tsx create mode 100644 src/components/outils/quiz/Question.module.css create mode 100644 src/components/outils/quiz/Question.tsx create mode 100644 src/components/outils/quiz/Quiz.tsx create mode 100644 src/components/outils/quiz/QuizCards.tsx create mode 100644 src/components/outils/quiz/QuizPage.tsx create mode 100644 src/components/outils/quiz/QuizSimulator.module.css create mode 100644 src/components/outils/quiz/QuizSimulator.tsx create mode 100644 src/components/outils/quiz/infos/AvocatPoisson.tsx create mode 100644 src/components/outils/quiz/infos/BoeufTGV.tsx create mode 100644 src/components/outils/quiz/infos/EauThe.tsx create mode 100644 src/components/outils/quiz/infos/EmailSmartphone.tsx create mode 100644 src/components/outils/quiz/infos/FriendsVoiture.tsx create mode 100644 src/components/outils/quiz/infos/Icon.module.css create mode 100644 src/components/outils/quiz/infos/Icon.tsx create mode 100644 src/components/outils/quiz/infos/Infos.module.css create mode 100644 src/components/outils/quiz/infos/ManteauBouilloire.tsx create mode 100644 src/components/outils/quiz/infos/RefrigirateurOrdinateur.tsx create mode 100644 src/components/outils/quiz/infos/TabletteChaussure.tsx create mode 100644 src/components/outils/quiz/infos/TelevisionPNY.tsx create mode 100644 src/components/outils/quiz/infos/VeloMangue.tsx create mode 100644 src/components/outils/quiz/question.config.tsx create mode 100644 types/question.d.ts diff --git a/app/(iframes)/iframes/quiz/page.tsx b/app/(iframes)/iframes/quiz/page.tsx new file mode 100644 index 000000000..f1eff8978 --- /dev/null +++ b/app/(iframes)/iframes/quiz/page.tsx @@ -0,0 +1,8 @@ +import React from 'react' +import Quiz from 'components/outils/quiz/Quiz' + +const page = () => { + return +} + +export default page diff --git a/app/(public)/outils/quiz/page.tsx b/app/(public)/outils/quiz/page.tsx new file mode 100644 index 000000000..1333cc993 --- /dev/null +++ b/app/(public)/outils/quiz/page.tsx @@ -0,0 +1,32 @@ +import { Metadata } from 'next' +import React from 'react' +import QuizPage from 'components/outils/quiz/QuizPage' +import { metaDescriptions, metaTitles } from 'utils/meta' +import Suggestion from 'components/layout/Suggestion' + +export async function generateMetadata({ + searchParams, +}: { + searchParams: { [key: string]: string | string[] | undefined } +}): Promise { + const language = (searchParams.language as string) || 'fr' + return { + title: `${metaTitles.quiz[language]} | Impact CO₂`, + description: metaDescriptions.quiz[language], + openGraph: { + creators: 'ADEME', + images: 'meta/quiz.png', + }, + } +} + +const page = () => { + return ( + <> + + + + ) +} + +export default page diff --git a/npm/react/README.md b/npm/react/README.md index 31a9b3f4c..b17d748c5 100644 --- a/npm/react/README.md +++ b/npm/react/README.md @@ -262,12 +262,12 @@ Liste des équivalents à comparer parmis la liste suivante : - visioconference : Heure de visioconférence - telechargement : go de donnée - Cas pratique - - avionpny : A/R paris - New-York en avion - - tgvparis-berlin" : A/R Paris - Berlin en tgv - - tgvparis-marseille" : A/R Paris - Marseille en tgv - - voiturelille-nimes" : A/R Lille - Nîmes en voiture + - avion-pny : A/R paris - New-York en avion + - tgv-paris-berlin" : A/R Paris - Berlin en tgv + - tgv-paris-marseille" : A/R Paris - Marseille en tgv + - voiture-lille-nimes" : A/R Lille - Nîmes en voiture - francais : % de l'empreinte carbone d'un citoyen français - - gameof-thrones : épisode de game of thrones en streaming + - game-of-thrones : épisode de game of thrones en streaming - friends : intégrale de friends en streaming diff --git a/public/images/banner-quiz-cards.jpg b/public/images/banner-quiz-cards.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5837a753f37afe4768daec3ebcc2622acc941ab2 GIT binary patch literal 43201 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

n@zHP|0g)LGPD)DL(<;LX0d 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 literal 0 HcmV?d00001 diff --git a/public/images/fiches.png b/public/images/fiches.png new file mode 100644 index 0000000000000000000000000000000000000000..20b8c8c62fd32a178be4c99a4917aa89a84c9b3e GIT binary patch literal 19595 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 + + + + + + + + + + + + + + + diff --git a/public/images/tools-quiz-end.svg b/public/images/tools-quiz-end.svg new file mode 100644 index 000000000..7393e7430 --- /dev/null +++ b/public/images/tools-quiz-end.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/tools-quiz.svg b/public/images/tools-quiz.svg new file mode 100644 index 000000000..245c26f83 --- /dev/null +++ b/public/images/tools-quiz.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/meta/quiz.png b/public/meta/quiz.png new file mode 100644 index 0000000000000000000000000000000000000000..c58b51744337117d140812e9d7ce3948c35710c1 GIT binary patch literal 27110 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 & { - asLink?: boolean - }) => { +const Button = ( + { + asLink, + className, + icon, + children, + priority, + size, + ...rest + }: { size?: 'sm' | 'lg'; priority?: 'outline'; icon?: ReactNode } & ButtonHTMLAttributes & { + asLink?: boolean + }, + ref: ForwardedRef +) => { return ( + ) +} + +export default Answer diff --git a/src/components/outils/quiz/Question.module.css b/src/components/outils/quiz/Question.module.css new file mode 100644 index 000000000..04eb2ec3a --- /dev/null +++ b/src/components/outils/quiz/Question.module.css @@ -0,0 +1,50 @@ +.container { + padding: 2rem 1.5rem; + background-color: var(--primary-10); + border-top: solid 2px var(--primary-30); + + @media screen and (max-width: 29.875rem) { + padding: 2rem 0.5rem; + } +} + +.question { + display: flex; + gap: 1rem; + align-items: stretch; + justify-content: center; + + @media screen and (max-width: 29.875rem) { + gap: 0.5rem; + } +} + +.orContainer { + display: flex; + align-items: center; + + @media screen and (max-width: 29.875rem) { + display: none; + } +} + +.or { + color: var(--primary-40); + font-size: 0.875rem; + font-weight: 700; + line-height: 1.25rem; + padding: 0.5rem 0; + border-top: 2px solid var(--primary-30); + border-bottom: 2px solid var(--primary-30); + height: fit-content; +} + +.nextButton { + margin: 1.5rem auto; +} + +.moreInfo { + border-radius: 0.75rem; + background: var(--primary-20, #C4EAE7); + padding: 1.25rem 1.5rem; +} \ No newline at end of file diff --git a/src/components/outils/quiz/Question.tsx b/src/components/outils/quiz/Question.tsx new file mode 100644 index 000000000..10547aa84 --- /dev/null +++ b/src/components/outils/quiz/Question.tsx @@ -0,0 +1,123 @@ +'use client' + +import { useTranslations } from 'next-intl' +import { SetStateAction } from 'preact/compat' +import React, { Dispatch, ForwardedRef, forwardRef, useCallback, useEffect, useMemo } from 'react' +import { computedEquivalents } from 'src/providers/equivalents' +import { Question as QuestionType } from 'types/question' +import Button from 'components/base/buttons/Button' +import FullArrowRightIcon from 'components/base/icons/full-arrow-right' +import Answer from './Answer' +import styles from './Question.module.css' + +const Question = ( + { + question, + answer, + setAnswer, + nextQuestion, + displayMore, + }: { + question: QuestionType + nextQuestion: () => void + answer: 'A' | 'B' | undefined + setAnswer: Dispatch> + displayMore: boolean + }, + nextRef: ForwardedRef +) => { + const t = useTranslations('quiz') + const equivalentA = useMemo( + () => computedEquivalents.find((equivalent) => equivalent.slug === question.slugA), + [question.slugA] + ) + const equivalentB = useMemo( + () => computedEquivalents.find((equivalent) => equivalent.slug === question.slugB), + [question.slugB] + ) + + const onKeyDown = useCallback( + (e: KeyboardEvent) => { + if (!answer) { + if (e.key === 'a') { + e.preventDefault() + setAnswer('A') + } + if (e.key === 'b') { + e.preventDefault() + setAnswer('B') + } + } + }, + [answer] + ) + + useEffect(() => { + window.addEventListener('keydown', onKeyDown) + + return () => { + window.removeEventListener('keydown', onKeyDown) + } + }, [onKeyDown]) + + return ( + equivalentA && + equivalentB && ( + <> +

+
+ setAnswer('A')} + answer={answer} + correctAnswer={question.answer} + proportion={ + question.answer === 'B' + ? 1 + : ((question.valueA || 1) * equivalentA.value) / ((question.valueB || 1) * equivalentB.value) + } + /> +
+
{t('ou')}
+
+ setAnswer('B')} + answer={answer} + correctAnswer={question.answer} + proportion={ + question.answer === 'A' + ? 1 + : ((question.valueB || 1) * equivalentB.value) / ((question.valueA || 1) * equivalentA.value) + } + /> +
+ {answer && ( +
+ +
+ {question.moreInfo} +
+
+ )} +
+ + ) + ) +} + +export default forwardRef(Question) diff --git a/src/components/outils/quiz/Quiz.tsx b/src/components/outils/quiz/Quiz.tsx new file mode 100644 index 000000000..92374d544 --- /dev/null +++ b/src/components/outils/quiz/Quiz.tsx @@ -0,0 +1,16 @@ +import React, { useMemo } from 'react' +import Shareable from 'components/shareable/Shareable' +import { overScreenQuizValues } from 'components/shareable/overScreens/Values' +import QuizSimulator from './QuizSimulator' + +const Quiz = () => { + const overScreens = useMemo(() => overScreenQuizValues(), []) + + return ( + + + + ) +} + +export default Quiz diff --git a/src/components/outils/quiz/QuizCards.tsx b/src/components/outils/quiz/QuizCards.tsx new file mode 100644 index 000000000..d7f815a2f --- /dev/null +++ b/src/components/outils/quiz/QuizCards.tsx @@ -0,0 +1,28 @@ +import Image from 'next/image' +import React from 'react' +import Card from 'components/cards/Card' +import Download from 'components/kit/Download' +import outilStyles from '../Outil.module.css' + +const QuizCards = () => { + return ( + +
+ +
+
+

Fiches du quiz

+ + Si vous souhaitez proposer le Quiz Carbone dans un autre contexte, nous mettons à disposition les fiches de + chacun des équivalents utilisés dans les questions dans un format imprimable.{' '} + + Pour obtenir les fiches, cliquez sur le bouton ci-dessous : +
+
+ +
+
+ ) +} + +export default QuizCards diff --git a/src/components/outils/quiz/QuizPage.tsx b/src/components/outils/quiz/QuizPage.tsx new file mode 100644 index 000000000..847544bce --- /dev/null +++ b/src/components/outils/quiz/QuizPage.tsx @@ -0,0 +1,56 @@ +import React, { Suspense } from 'react' +import Sources from 'components/base/Sources' +import Breadcrumbs from 'components/breadcrumbs/Breadcrumbs' +import Examples from 'components/examples/Examples' +import FAQs from 'components/faq/FAQs' +import Block from 'components/layout/Block' +import styles from '../CategoryPage.module.css' +import Quiz from './Quiz' +import QuizCards from './QuizCards' + +const QuizPage = () => { + return ( + <> + + + + + + + + + + + + + + + + ) +} + +export default QuizPage diff --git a/src/components/outils/quiz/QuizSimulator.module.css b/src/components/outils/quiz/QuizSimulator.module.css new file mode 100644 index 000000000..9bd444449 --- /dev/null +++ b/src/components/outils/quiz/QuizSimulator.module.css @@ -0,0 +1,120 @@ +.header { + padding: 1.5rem; + text-align: center; + outline: none; +} + +.question { + text-transform: uppercase; + color: var(--neutral-50); + font-size: 0.875rem; + font-weight: 500; + line-height: 1.5rem; +} + +.previousButton { + cursor: pointer; + position: absolute; + top: 1.5rem; + left: 1.5rem; + border-radius: 0.25rem; + background: var(--neutral-10); + display: flex; + padding: 0.25rem 0.5rem; + justify-content: center; + align-items: center; + gap: 0.5rem; + color: var(--neutral-50); + font-size: 0.75rem; + font-weight: 500; + line-height: 1rem; + + &:hover { + background-color: var(--neutral-20); + color: var(--neutral-60); + } + + @media screen and (max-width: 29.875rem) { + position: relative; + top: 0; + left: 0; + } +} + +.title { + font-size: 1.25rem; + line-height: 2rem; + margin: 0.5rem 0 0.75rem 0; + + b { + color: var(--neutral-80); + } +} + +.tag { + padding: 0.5rem 1.25rem; + border-radius: 0.5rem; + background-color: var(--neutral-10); + color: var(--neutral-60); + width: fit-content; + margin: auto; +} + +.correct { + color: var(--primary-60); + background-color: var(--primary-10); +} + +.missed { + color: var(--critical-60); + background-color: var(--critical-10); +} + + +.noBottom { + padding-bottom: 0; +} + +.reduced { + max-height: 36.5rem; + overflow: hidden; +} + +.moreButton { + cursor: pointer; + padding: 1rem; + color: var(--primary-60); + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + background-color: var(--neutral-00); + width: 100%; + border-top: 2px solid var(--primary-30); + font-weight: 500; + + &:hover { + background-color: var(--primary-10); + } + + &:active { + color: var(--primary-70); + } +} + +.result { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.75rem; + margin-bottom: 1.5rem; +} + +.ressources { + padding: 2rem 1.5rem; + display: flex; + flex-direction: column; + text-align: center; + gap: 1rem; + justify-content: center; +} \ No newline at end of file diff --git a/src/components/outils/quiz/QuizSimulator.tsx b/src/components/outils/quiz/QuizSimulator.tsx new file mode 100644 index 000000000..a21121df0 --- /dev/null +++ b/src/components/outils/quiz/QuizSimulator.tsx @@ -0,0 +1,187 @@ +'use client' + +import classNames from 'classnames' +import { useTranslations } from 'next-intl' +import Image from 'next/image' +import React, { useEffect, useMemo, useRef, useState } from 'react' +import Resource from 'components/base/Resource' +import Button from 'components/base/buttons/Button' +import DropdownArrowDownIcon from 'components/base/icons/dropdown-arrow-down' +import DropdownArrowUpIcon from 'components/base/icons/dropdown-arrow-up' +import FullArrowLeftIcon from 'components/base/icons/full-arrow-left' +import shareableStyles from '../../shareable/Shareable.module.css' +import Question from './Question' +import styles from './QuizSimulator.module.css' +import { questions } from './question.config' + +const QuizSimulator = () => { + const ref = useRef(null) + const nextRef = useRef(null) + + const [navigated, setNavigated] = useState(false) + const [question, setQuestion] = useState(0) + const score = useRef([]) + const [answer, setAnswer] = useState<'A' | 'B' | undefined>() + const [displayMore, setDisplayMore] = useState(false) + + const config = useMemo(() => questions[question], [question]) + const t = useTranslations('quiz') + + useEffect(() => { + if (answer && nextRef.current) { + nextRef.current.focus() + } + }, [answer, nextRef]) + + useEffect(() => { + if (displayMore && nextRef.current) { + nextRef.current.focus() + } + }, [nextRef, displayMore]) + + useEffect(() => { + if (navigated && ref.current) { + ref.current.focus() + } + }, [question, navigated]) + + return ( + <> +
+ {question > 0 && config && ( + + )} +
+ {config ? ( + <> + {t('question')} {question + 1} / 10 + + ) : ( + t('finished') + )} +
+
+ {config + ? t.rich('title') + : t.rich('score', { score: score.current.reduce((acc, current) => acc + current, 0) })} +
+ {config && ( +
+ {answer ? ( + answer === config.answer ? ( + t.rich('correct') + ) : ( + <> + {t.rich('missed')} {config.answer} ! + + ) + ) : ( + t('tag') + )} +
+ )} +
+ {config ? ( +
+ { + score.current[question] = answer === config.answer ? 1 : 0 + setNavigated(true) + setAnswer(undefined) + setQuestion(question + 1) + setDisplayMore(false) + }} + answer={answer} + setAnswer={setAnswer} + ref={nextRef} + displayMore={displayMore} + /> +
+ ) : ( + <> +
+ + +
+
+
+ {t('read-more')} + + + + +
+
+ + )} + {answer && ( + + )} + + ) +} + +export default QuizSimulator diff --git a/src/components/outils/quiz/infos/AvocatPoisson.tsx b/src/components/outils/quiz/infos/AvocatPoisson.tsx new file mode 100644 index 000000000..f67faa0f8 --- /dev/null +++ b/src/components/outils/quiz/infos/AvocatPoisson.tsx @@ -0,0 +1,33 @@ +'use client' + +import { useTranslations } from 'next-intl' +import React from 'react' +import InfographySimulator from 'components/outils/equivalents/infographies/InfographySimulator' +import Icon from './Icon' +import styles from './Infos.module.css' + +const AvocatPoisson = () => { + const t = useTranslations('quiz.avocat-poisson') + return ( + <> +
+
+ +
+ {t.rich('line-1')} +
+
+ {t.rich('line-2')} +
+
+
+
+ + + ) +} + +export default AvocatPoisson diff --git a/src/components/outils/quiz/infos/BoeufTGV.tsx b/src/components/outils/quiz/infos/BoeufTGV.tsx new file mode 100644 index 000000000..9fea8d53d --- /dev/null +++ b/src/components/outils/quiz/infos/BoeufTGV.tsx @@ -0,0 +1,33 @@ +'use client' + +import { useTranslations } from 'next-intl' +import React from 'react' +import InfographySimulator from 'components/outils/equivalents/infographies/InfographySimulator' +import Icon from './Icon' +import styles from './Infos.module.css' + +const BoeufTGV = () => { + const t = useTranslations('quiz.boeuf-tgv') + return ( + <> +
+
+ +
+ {t.rich('line-1')} +
+
+ {t('line-2')} +
+
+
+
+ + + ) +} + +export default BoeufTGV diff --git a/src/components/outils/quiz/infos/EauThe.tsx b/src/components/outils/quiz/infos/EauThe.tsx new file mode 100644 index 000000000..90d39fff0 --- /dev/null +++ b/src/components/outils/quiz/infos/EauThe.tsx @@ -0,0 +1,32 @@ +'use client' + +import { useTranslations } from 'next-intl' +import React from 'react' +import { computedEquivalents } from 'src/providers/equivalents' +import { Category } from 'types/category' +import { ComputedEquivalent } from 'types/equivalent' +import { categories } from 'data/categories' +import EquivalentSimulator from 'components/outils/equivalents/simulators/EquivalentSimulator' +import Icon from './Icon' +import styles from './Infos.module.css' + +const boisson = categories.find((category) => category.slug === 'boisson') as Category +const eau = computedEquivalents.find((equivalent) => equivalent.slug === 'eauenbouteille') as ComputedEquivalent + +const EauThe = () => { + const t = useTranslations('quiz.eau-the') + return ( + <> +
+
+ +
{t.rich('line-1')}
+
+
+
+ + + ) +} + +export default EauThe diff --git a/src/components/outils/quiz/infos/EmailSmartphone.tsx b/src/components/outils/quiz/infos/EmailSmartphone.tsx new file mode 100644 index 000000000..1dbc82f93 --- /dev/null +++ b/src/components/outils/quiz/infos/EmailSmartphone.tsx @@ -0,0 +1,37 @@ +'use client' + +import { useTranslations } from 'next-intl' +import React from 'react' +import { computedEquivalents } from 'src/providers/equivalents' +import { Category } from 'types/category' +import { ComputedEquivalent } from 'types/equivalent' +import { categories } from 'data/categories' +import EquivalentSimulator from 'components/outils/equivalents/simulators/EquivalentSimulator' +import Icon from './Icon' +import styles from './Infos.module.css' + +const numerique = categories.find((category) => category.slug === 'numerique') as Category +const smartphone = computedEquivalents.find((equivalent) => equivalent.slug === 'smartphone') as ComputedEquivalent + +const EmailSmartphone = () => { + const t = useTranslations('quiz.email-smartphone') + return ( + <> +
+
+ +
+ {t.rich('line-1')} +
+
+ {t.rich('line-2')} +
+
+
+
+ + + ) +} + +export default EmailSmartphone diff --git a/src/components/outils/quiz/infos/FriendsVoiture.tsx b/src/components/outils/quiz/infos/FriendsVoiture.tsx new file mode 100644 index 000000000..9d33582cb --- /dev/null +++ b/src/components/outils/quiz/infos/FriendsVoiture.tsx @@ -0,0 +1,37 @@ +'use client' + +import { useTranslations } from 'next-intl' +import React from 'react' +import useParamContext from 'src/providers/ParamProvider' +import Etiquette from 'components/comparateur/Etiquette' +import Icon from './Icon' +import styles from './Infos.module.css' + +const FriendsVoiture = () => { + const t = useTranslations('quiz.friends-voiture') + const { language } = useParamContext() + return ( + <> +
+
+ +
+ {t.rich('line-1')} +
+
+ {t.rich('line-2')} +
+
+
+
+ + + ) +} + +export default FriendsVoiture diff --git a/src/components/outils/quiz/infos/Icon.module.css b/src/components/outils/quiz/infos/Icon.module.css new file mode 100644 index 000000000..69d8ccdcd --- /dev/null +++ b/src/components/outils/quiz/infos/Icon.module.css @@ -0,0 +1,8 @@ +.icon { + display: flex; + padding: 0.5rem; + justify-content: center; + align-items: center; + border-radius: 50%; + background: var(--primary-10); +} \ No newline at end of file diff --git a/src/components/outils/quiz/infos/Icon.tsx b/src/components/outils/quiz/infos/Icon.tsx new file mode 100644 index 000000000..16ee8260c --- /dev/null +++ b/src/components/outils/quiz/infos/Icon.tsx @@ -0,0 +1,15 @@ +import Image from 'next/image' +import React from 'react' +import styles from './Icon.module.css' + +const Icon = () => { + return ( +
+
+ +
+
+ ) +} + +export default Icon diff --git a/src/components/outils/quiz/infos/Infos.module.css b/src/components/outils/quiz/infos/Infos.module.css new file mode 100644 index 000000000..213b2f5ad --- /dev/null +++ b/src/components/outils/quiz/infos/Infos.module.css @@ -0,0 +1,20 @@ +.container { + color: var(--primary-70); +} + +.withIcon { + display: flex; + gap: 0.75rem; +} + +.borders { + background-color: var(--neutral-00); + border-radius: 1rem; + border: 2px solid var(--primary-30); + box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.06); +} + +.center { + display: flex; + justify-content: center; +} \ No newline at end of file diff --git a/src/components/outils/quiz/infos/ManteauBouilloire.tsx b/src/components/outils/quiz/infos/ManteauBouilloire.tsx new file mode 100644 index 000000000..a5737f6e7 --- /dev/null +++ b/src/components/outils/quiz/infos/ManteauBouilloire.tsx @@ -0,0 +1,32 @@ +'use client' + +import { useTranslations } from 'next-intl' +import React from 'react' +import { computedEquivalents } from 'src/providers/equivalents' +import { Category } from 'types/category' +import { ComputedEquivalent } from 'types/equivalent' +import { categories } from 'data/categories' +import EquivalentSimulator from 'components/outils/equivalents/simulators/EquivalentSimulator' +import Icon from './Icon' +import styles from './Infos.module.css' + +const habillement = categories.find((category) => category.slug === 'habillement') as Category +const manteau = computedEquivalents.find((equivalent) => equivalent.slug === 'manteau') as ComputedEquivalent + +const ManteauBouilloire = () => { + const t = useTranslations('quiz.manteau-bouilloire') + return ( + <> +
+
+ +
{t.rich('line-1')}
+
+
+
+ + + ) +} + +export default ManteauBouilloire diff --git a/src/components/outils/quiz/infos/RefrigirateurOrdinateur.tsx b/src/components/outils/quiz/infos/RefrigirateurOrdinateur.tsx new file mode 100644 index 000000000..4871a1fbf --- /dev/null +++ b/src/components/outils/quiz/infos/RefrigirateurOrdinateur.tsx @@ -0,0 +1,34 @@ +'use client' + +import { useTranslations } from 'next-intl' +import React from 'react' +import { computedEquivalents } from 'src/providers/equivalents' +import { Category } from 'types/category' +import { ComputedEquivalent } from 'types/equivalent' +import { categories } from 'data/categories' +import EquivalentSimulator from 'components/outils/equivalents/simulators/EquivalentSimulator' +import Icon from './Icon' +import styles from './Infos.module.css' + +const electromenager = categories.find((category) => category.slug === 'electromenager') as Category +const refrigirateur = computedEquivalents.find( + (equivalent) => equivalent.slug === 'refrigirateur' +) as ComputedEquivalent + +const RefrigirateurOrdinateur = () => { + const t = useTranslations('quiz.refrigirateur-ordinateur') + return ( + <> +
+
+ +
{t.rich('line-1')}
+
+
+
+ + + ) +} + +export default RefrigirateurOrdinateur diff --git a/src/components/outils/quiz/infos/TabletteChaussure.tsx b/src/components/outils/quiz/infos/TabletteChaussure.tsx new file mode 100644 index 000000000..4e149a205 --- /dev/null +++ b/src/components/outils/quiz/infos/TabletteChaussure.tsx @@ -0,0 +1,37 @@ +'use client' + +import { useTranslations } from 'next-intl' +import React from 'react' +import { computedEquivalents } from 'src/providers/equivalents' +import { Category } from 'types/category' +import { ComputedEquivalent } from 'types/equivalent' +import { categories } from 'data/categories' +import EquivalentSimulator from 'components/outils/equivalents/simulators/EquivalentSimulator' +import Icon from './Icon' +import styles from './Infos.module.css' + +const numerique = categories.find((category) => category.slug === 'numerique') as Category +const tablette = computedEquivalents.find((equivalent) => equivalent.slug === 'tabletteclassique') as ComputedEquivalent + +const TabletteChaussure = () => { + const t = useTranslations('quiz.tablette-chaussures') + return ( + <> +
+
+ +
+ {t.rich('line-1')} +
+
+ {t.rich('line-2')} +
+
+
+
+ + + ) +} + +export default TabletteChaussure diff --git a/src/components/outils/quiz/infos/TelevisionPNY.tsx b/src/components/outils/quiz/infos/TelevisionPNY.tsx new file mode 100644 index 000000000..05ad87bbe --- /dev/null +++ b/src/components/outils/quiz/infos/TelevisionPNY.tsx @@ -0,0 +1,37 @@ +'use client' + +import { useTranslations } from 'next-intl' +import React from 'react' +import useParamContext from 'src/providers/ParamProvider' +import Etiquette from 'components/comparateur/Etiquette' +import Icon from './Icon' +import styles from './Infos.module.css' + +const TelevisionPNY = () => { + const t = useTranslations('quiz.television-pny') + const { language } = useParamContext() + return ( + <> +
+
+ +
+ {t.rich('line-1')} +
+
+ {t.rich('line-2')} +
+
+
+
+ + + ) +} + +export default TelevisionPNY diff --git a/src/components/outils/quiz/infos/VeloMangue.tsx b/src/components/outils/quiz/infos/VeloMangue.tsx new file mode 100644 index 000000000..5248e67d3 --- /dev/null +++ b/src/components/outils/quiz/infos/VeloMangue.tsx @@ -0,0 +1,37 @@ +'use client' + +import { useTranslations } from 'next-intl' +import React from 'react' +import { computedEquivalents } from 'src/providers/equivalents' +import { Category } from 'types/category' +import { ComputedEquivalent } from 'types/equivalent' +import { categories } from 'data/categories' +import EquivalentSimulator from 'components/outils/equivalents/simulators/EquivalentSimulator' +import Icon from './Icon' +import styles from './Infos.module.css' + +const repas = categories.find((category) => category.slug === 'repas') as Category +const mangue = computedEquivalents.find((equivalent) => equivalent.slug === 'mangue') as ComputedEquivalent + +const VeloMangue = () => { + const t = useTranslations('quiz.velo-mangue') + return ( + <> +
+
+ +
+ {t.rich('line-1')} +
+
+ {t.rich('line-2')} +
+
+
+
+ + + ) +} + +export default VeloMangue diff --git a/src/components/outils/quiz/question.config.tsx b/src/components/outils/quiz/question.config.tsx new file mode 100644 index 000000000..a06625c2a --- /dev/null +++ b/src/components/outils/quiz/question.config.tsx @@ -0,0 +1,24 @@ +import { Question } from 'types/question' +import AvocatPoisson from './infos/AvocatPoisson' +import BoeufTGV from './infos/BoeufTGV' +import EauThe from './infos/EauThe' +import EmailSmartphone from './infos/EmailSmartphone' +import FriendsVoiture from './infos/FriendsVoiture' +import ManteauBouilloire from './infos/ManteauBouilloire' +import RefrigirateurOrdinateur from './infos/RefrigirateurOrdinateur' +import TabletteChaussure from './infos/TabletteChaussure' +import TelevisionPNY from './infos/TelevisionPNY' +import VeloMangue from './infos/VeloMangue' + +export const questions: Question[] = [ + { answer: 'B', slugA: 'repasavecduboeuf', slugB: 'tgv-paris-marseille', moreInfo: }, + { answer: 'B', slugA: 'tabletteclassique', slugB: 'chaussuresencuir', valueB: 3, moreInfo: }, + { answer: 'A', slugA: 'avocat', slugB: 'repasavecdupoissonblanc', moreInfo: }, + { answer: 'B', slugA: 'refrigirateur', slugB: 'ordinateurportable', moreInfo: }, + { answer: 'B', slugA: 'eauenbouteille', slugB: 'the', valueB: 4, moreInfo: }, + { answer: 'A', slugA: 'friends', slugB: 'voiture-lille-nimes', moreInfo: }, + { answer: 'B', slugA: 'manteau', slugB: 'bouilloire', moreInfo: }, + { answer: 'A', slugA: 'television', slugB: 'avion-pny', moreInfo: }, + { answer: 'A', slugA: 'email', valueA: 1000, slugB: 'smartphone', moreInfo: }, + { answer: 'A', slugA: 'veloelectrique', valueA: 10, slugB: 'mangue', moreInfo: , last: true }, +] diff --git a/src/components/shareable/overScreens/Values.tsx b/src/components/shareable/overScreens/Values.tsx index 5831595eb..742983174 100644 --- a/src/components/shareable/overScreens/Values.tsx +++ b/src/components/shareable/overScreens/Values.tsx @@ -40,6 +40,18 @@ export const overScreenEquivalentEtiquetteValues: (equivalent: ComputedEquivalen }, } } +export const overScreenQuizValues: () => Record = () => { + return { + partager: { + title: 'share', + children: , + }, + integrer: { + title: 'integrate', + children: , + }, + } +} export const overScreenEquivalentInfographyValues: ( equivalent: ComputedEquivalent, @@ -264,7 +276,7 @@ export const overScreenCategoryValues: (category: Category) => Record { return ( {chunks}, + }} locale={language === 'fr' ? 'fr-FR' : language === 'es' ? 'es-ES' : 'en-EN'} messages={language === 'fr' ? french : language === 'es' ? spanish : english} timeZone='Europe/Paris' diff --git a/src/providers/locales/en.json b/src/providers/locales/en.json index e1194b725..15c9e7d2a 100644 --- a/src/providers/locales/en.json +++ b/src/providers/locales/en.json @@ -1,4 +1,58 @@ { + "quiz": { + "question": "Question", + "previous": "Prev.", + "title": "In your opinion, what has the least impact on the climate?", + "tag": "Choose your answer below:", + "ou": "or", + "correct": "Well done! That’s exactly right!", + "missed": "Missed... The correct answer was", + "more": "Read more", + "less": "Collapse", + "next": "Next question", + "result": "View score", + "finished": "It's finished!", + "score": "You scored {score} / 10 {score, plural, =1 {correct answer} other {correct answers}}!", + "restart": "Restart", + "read-more": "LEARN MORE", + "boeuf-tgv": { + "line-1": "The TGV is currently one of the modes of transport with the least carbon impact on the planet. Per person and per kilometer, trains pollute 8 times less than cars and 14 times less than airplanes.", + "line-2": "In contrast, beef consumption has a strong environmental impact. In fact, a meal with beef is equivalent to 14 vegetarian meals!" + }, + "tablette-chaussures": { + "line-1": "A tablet has 4x more impact than a pair of leather shoes!", + "line-2": "The carbon footprint of digital devices in general is mainly due to their manufacturing, rather than their usage, which is why it’s important to keep your tablet as long as possible." + }, + "avocat-poisson": { + "line-1": "Today, avocados are often criticized for their significant environmental impact. However, despite being an exotic fruit, the impact of 1 kg of avocados is slightly lower than that of a meal with white fish.", + "line-2": "The point is not to say ‘it’s better to eat avocado than fish’, but rather to put into perspective the relative scale of climate impact to make informed decisions." + }, + "refrigirateur-ordinateur": { + "line-1": "Household appliances also have a strong environmental impact. Like digital devices, their impact mainly lies in their manufacturing." + }, + "eau-the": { + "line-1": "A liter of bottled water has, on average, 6x more impact than a liter of tea! Its carbon footprint is primarily due to the impact of the plastic packaging and its distribution to different points of sale." + }, + "friends-voiture": { + "line-1": "Watching all 236 episodes of Friends via streaming has 50 times less environmental impact than a nearly 1000 km trip in a gasoline car.", + "line-2": "Indeed, today the transportation sector accounts for 30% of greenhouse gas emissions in France, while the digital sector only accounts for 2.5%." + }, + "manteau-bouilloire": { + "line-1": "Textiles have a significant carbon footprint on the environment, largely linked to the manufacturing phase and the extraction of raw materials. This is why it is important to take care of your clothes and make them last." + }, + "television-pny": { + "line-1": "Short, medium, and long-haul flights emit a substantial amount of CO2e.", + "line-2": "A round trip from Paris to New York emits nearly 2 tons of CO2, which is almost 20% of the annual carbon footprint of a French citizen today." + }, + "email-smartphone": { + "line-1": "Multiplied by billions of sends, the impact of emails at a global scale is necessarily significant.", + "line-2": "However, this information can divert attention from bigger issues like keeping your smartphone as long as possible. Indeed, the carbon impact of manufacturing a smartphone will always be higher than its usage." + }, + "velo-mangue": { + "line-1": "Electric bikes are part of soft mobility, which have a lower impact compared to other modes of transportation on the planet.", + "line-2": "On the contrary, the mango is one of the fruits with the highest environmental impact in France today, largely due to its air transport." + } + }, "clipboard": { "copier": "Copy", "copie": "Copied", @@ -404,10 +458,13 @@ "chauffage-bois": "Adopt wood heating", "wattris": "Simulate the electrical consumption of your home", "ngc": "Estimate your consumption carbon footprint", - "agir": "What does telecommuting change for the planet?", + "agir-tt": "What does telecommuting change for the planet?", + "agir": "Reduce your ecological footprint", "calendar": "Seasonal fruits and vegetables calendar", "livraison": "Download the guide 'E-consumer & responsible'", "leger": "How to work with a low impact ?", - "ecoresponsable": "Eco-responsible at work" + "ecoresponsable": "Eco-responsible at work", + "ico2": "Fun and educational resources on CO2 impact", + "fiches": "Download the printable quiz sheets" } } \ No newline at end of file diff --git a/src/providers/locales/es.json b/src/providers/locales/es.json index 84e1561e9..2b117ad3c 100644 --- a/src/providers/locales/es.json +++ b/src/providers/locales/es.json @@ -1,4 +1,58 @@ { + "quiz": { + "question": "Pregunta", + "previous": "Ant.", + "title": "Según tú, ¿qué tiene menos impacto en el clima?", + "tag": "Elige tu respuesta a continuación:", + "ou": "o", + "correct": "¡Bien hecho! ¡Eso es exactamente correcto!", + "missed": "Fallaste... La respuesta correcta era", + "more": "Leer más", + "less": "Reducir", + "next": "Siguiente pregunta", + "result": "Ver puntuación", + "finished": "¡Ha terminado!", + "score": "Has obtenido {score} / 10 {score, plural, =1 {respuesta correcta} other {respuestas correctas}}!", + "restart": "Reiniciar", + "read-more": "APRENDE MÁS", + "boeuf-tgv": { + "line-1": "El TGV es actualmente uno de los modos de transporte con menor impacto de carbono en el planeta. Por persona y por kilómetro, el tren contamina 8 veces menos que el coche y 14 veces menos que el avión.", + "line-2": "En cambio, el consumo de carne de res tiene un gran impacto ambiental. De hecho, ¡una comida con carne de res equivale a 14 comidas vegetarianas!" + }, + "tablette-chaussures": { + "line-1": "Una tableta tiene 4 veces más impacto que un par de zapatos de cuero.", + "line-2": "La huella de carbono de los dispositivos digitales en general se debe principalmente a su fabricación, más que a su uso, por lo que es importante conservar tu tableta el mayor tiempo posible." + }, + "avocat-poisson": { + "line-1": "Hoy en día, el aguacate a menudo es criticado por su significativo impacto ambiental. Sin embargo, a pesar de ser una fruta exótica, el impacto de 1 kg de aguacates es ligeramente menor que el de una comida con pescado blanco.", + "line-2": "No se trata de decir 'es mejor comer aguacate que pescado', sino simplemente de poner en perspectiva las magnitudes relativas del impacto climático para tomar decisiones informadas." + }, + "refrigirateur-ordinateur": { + "line-1": "Los electrodomésticos también tienen un fuerte impacto ambiental. Al igual que los dispositivos digitales, su impacto se encuentra principalmente en su fabricación." + }, + "eau-the": { + "line-1": "Un litro de agua embotellada tiene, en promedio, 6 veces más impacto que un litro de té. Su huella de carbono se debe principalmente al impacto del embalaje de plástico y a su distribución en los diferentes puntos de venta." + }, + "friends-voiture": { + "line-1": "Ver los 236 episodios de Friends en streaming tiene 50 veces menos impacto ambiental que un viaje de casi 1000 km en un coche a gasolina.", + "line-2": "De hecho, hoy el sector del transporte representa el 30% de las emisiones de gases de efecto invernadero en Francia, mientras que el sector digital solo representa el 2,5%." + }, + "manteau-bouilloire": { + "line-1": "El sector textil tiene una importante huella de carbono en el medio ambiente, en gran parte vinculada a la fase de fabricación y a la explotación de materias primas. Por ello, es importante cuidar la ropa y hacer que dure." + }, + "television-pny": { + "line-1": "Los vuelos de corto, medio y largo recorrido emiten una cantidad significativa de CO2e.", + "line-2": "Un viaje de ida y vuelta París/Nueva York emite casi 2 toneladas de CO2, lo que equivale a casi el 20% de la huella de carbono anual de un ciudadano francés hoy en día." + }, + "email-smartphone": { + "line-1": "Multiplicado por miles de millones de envíos, el impacto de los correos electrónicos a escala global es necesariamente significativo.", + "line-2": "Sin embargo, esta información puede desviar la atención de temas más importantes como mantener tu smartphone el mayor tiempo posible. De hecho, el impacto de carbono de la fabricación de un smartphone siempre será mayor que su uso." + }, + "velo-mangue": { + "line-1": "Las bicicletas eléctricas forman parte de las movilidades suaves, que tienen un impacto más bajo que otros modos de transporte en el planeta.", + "line-2": "Por el contrario, el mango es una de las frutas con mayor impacto ambiental en Francia hoy en día, debido en gran parte a su importación por avión." + } + }, "clipboard": { "copier": "Copiar", "copie": "Copiado", @@ -408,10 +462,13 @@ "chauffage-bois": "Adoptar calefacción de madera", "wattris": "Simular el consumo eléctrico de tu hogar", "ngc": "Estimar tu huella de carbono de consumo", - "agir": "¿El teletrabajo, qué cambia para el planeta?", + "agir-tt": "¿El teletrabajo, qué cambia para el planeta?", + "agir": "Reduce tu huella ecológica", "calendar": "Calendario de frutas y verduras de temporada", "livraison": "Descargar la guía “E-consumidor & responsable”", "leger": "¿Cómo trabajar con bajo impacto?", - "ecoresponsable": "Eco-responsabilidad en el trabajo" + "ecoresponsable": "Eco-responsabilidad en el trabajo", + "ico2": "Recursos divertidos y educativos sobre el impacto del CO2", + "fiches": "Descargue las hojas del cuestionario para imprimir" } } \ No newline at end of file diff --git a/src/providers/locales/fr.json b/src/providers/locales/fr.json index 401936682..d8d5b88e4 100644 --- a/src/providers/locales/fr.json +++ b/src/providers/locales/fr.json @@ -1,4 +1,58 @@ { + "quiz": { + "question": "Question", + "previous": "Prec.", + "title": "D’après vous, qu’est ce qui a le moins d’impact sur le climat ?", + "tag": "Choisissez votre réponse ci dessous :", + "ou": "ou", + "correct": "Bien joué ! C’est exactement ça !", + "missed": "Raté... C’était la réponse", + "more": "Lire la suite", + "less": "Réduire", + "next": "Question suivante", + "result": "Voir le score", + "finished": "C'est terminé !", + "score": "Vous avez obtenu {score} / 10 {score, plural, =1 {bonne réponse} other {bonnes réponses}} !", + "restart": "Recommencer", + "read-more": "POUR ALLER PLUS LOIN", + "boeuf-tgv": { + "line-1": "Le TGV est aujourd’hui est un des modes de déplacement qui a le moins d’impact carbone sur la planète. Par personne et par kilomètre, le train pollue 8 fois moins que la voiture et 14 fois moins que l’avion.", + "line-2": "A contrario, la consommation de boeuf a un fort impact sur l’environnement. En effet, un repas avec du boeuf correspond à 14 repas végétariens !" + }, + "tablette-chaussures": { + "line-1": "Une tablette a 4x plus d’impact qu’une paire de chaussures en cuir !", + "line-2": "L’impact carbone des appareils numériques en général, réside principalement dans leur fabrication, plus que dans leur usage, c’est pourquoi il est important de conserver sa tablette le plus longtemps possible." + }, + "avocat-poisson": { + "line-1": "Aujourd’hui, l’avocat est souvent montré du doigt pour son impact environnemental important. Pourtant, bien que ce soit un fruit exotique, l’impact lié à 1 kg d’avocat est légèrement inférieur à celui d’un repas avec poisson blanc.", + "line-2": "Il ne s’agit pas de dire “il vaut mieux manger de l’avocat que du poisson”, mais simplement de mettre en perspective les ordres de grandeur d’impact sur le climat afin de pouvoir prendre des décisions avisées." + }, + "refrigirateur-ordinateur": { + "line-1": "Les appareils électroménagers ont aussi un fort impact sur l’environnement. Tout comme les appareils numériques, leur impact réside principalement dans leur fabrication." + }, + "eau-the": { + "line-1": "Un litre d’eau en bouteille a en moyenne 6x plus d’impact qu’un litre de thé ! Son empreinte carbone est en majorité dû à l’impact de l’emballage plastique de la bouteille et de sa distribution dans les différents points de ventes." + }, + "friends-voiture": { + "line-1": "Regarder les 236 épisodes de Friends en streaming a 50 fois moins d’impact sur l’environnement qu’un déplacement de presque 1000 km en voiture thermique.", + "line-2": "En effet, aujourd’hui le secteur du transport représente 30% des émission de gaz à effet de serre en France, alors que le secteur du numérique seulement 2,5%." + }, + "manteau-bouilloire": { + "line-1": "Le textile a une forte empreinte carbone sur l’environnement, en grande partie liée à la phase de fabrication et l’exploitation des matières premières. C’est pourquoi il est important de prendre soin de ses vêtements et de les faire durer. " + }, + "television-pny": { + "line-1": "Les déplacements en avion, court moyen et long courrier, émettent une quantité très importante de CO2e.", + "line-2": "Un aller-retour Paris/New York émet près de 2 tonnes de CO2, soit presque 20% de l’empreinte carbone annuelle d’un citoyen français aujourd’hui." + }, + "email-smartphone": { + "line-1": "Multiplié par des milliards d’envois, l’impact des e-mails à l’échelle planétaire est nécessairement important.", + "line-2": "Pour autant, cette information peut détourner des enjeux de taille comme garder son smartphone le plus longtemps possible. En effet l’impact carbone de la fabrication d’un smartphone restera toujours plus élevé que son usage." + }, + "velo-mangue": { + "line-1": "Le vélo électrique fait partie des mobilités douces, qui ont un impact plus faible que les autres modes de déplacement sur la planète.", + "line-2": "Au contraire, la mangue est un des fruits ayant le plus d’impact sur l’environnement aujourd’hui en France, en grande partie liée à son importation en avion." + } + }, "clipboard": { "copier": "Copier", "copie": "Copié", @@ -407,10 +461,13 @@ "chauffage-bois": "Adopter le chauffage au bois", "wattris": "Simuler la consommation électrique de son logement", "ngc": "Estimer son empreinte carbone de consommation", - "agir": "Le télétravail, ça change quoi pour la planète ?", + "agir-tt": "Le télétravail, ça change quoi pour la planète ?", + "agir": "Réduire votre empreinte écologique", "calendar": "Calendrier des fruits et légumes de saison", "livraison": "Télécharger le guide “E-consommateur & responsable”", "leger": "Comment télétravailler léger ?", - "ecoresponsable": "Écoresponsable au bureau" + "ecoresponsable": "Écoresponsable au bureau", + "ico2": "Les ressources ludiques et pédagogiques sur l’impact CO2", + "fiches": "Télécharger les fiches du quizz à imprimer" } } \ No newline at end of file diff --git a/src/utils/meta.ts b/src/utils/meta.ts index 7e18f0197..3e24ad20a 100644 --- a/src/utils/meta.ts +++ b/src/utils/meta.ts @@ -4,6 +4,11 @@ export const metaDescriptions: Record> = { en: 'Compare and visualize a carbon quantity using the Impact CO2 simulator and equivalents to get a sense of the correct orders of magnitude.', es: 'Compare y visualice las cantidades de carbono utilizando el simulador Impact CO2 y sus equivalentes, para obtener los órdenes de magnitud correctos.', }, + quiz: { + fr: 'Sensibiliser et jouer avec les équivalences pour mieux se représenter les ordres de grandeur.', + en: 'Raise awareness and play with equivalences to better represent orders of magnitude.', + es: 'Sensibilizar y jugar con equivalencias para representar mejor órdenes de magnitud.', + }, transport: { fr: "Comparer l'impact carbone des déplacements en fonction de son itinéraire ou d'une distance donnée, grâce au simulateur d’Impact CO2.", en: 'Compare the carbon impact of travel based on your itinerary or a given distance using the Impact CO2 simulator.', @@ -77,6 +82,11 @@ export const metaTitles: Record> = { en: 'Carbon comparator', es: 'Comparador de carbono', }, + quiz: { + fr: 'Quiz carbone', + en: 'carbon quiz', + es: 'cuestionario de carbono', + }, transport: { fr: 'Transport', en: 'Transport', diff --git a/types/question.d.ts b/types/question.d.ts new file mode 100644 index 000000000..4f313c040 --- /dev/null +++ b/types/question.d.ts @@ -0,0 +1,11 @@ +import { ReactNode } from 'react' + +export type Question = { + answer: 'A' | 'B' + slugA: string + valueA?: number + slugB: string + valueB?: number + moreInfo: ReactNode + last?: boolean +}