// template-pack-2-francais-langues.jsx // PACK 2 · FRANÇAIS / LANGUES / LECTURE / ÉCRITURE — Allo Education Books v1.2 // 10 production templates centrés sur le texte. Strictement composés à partir // des blocs verrouillés (PageShell, PageTitle, Box, Cols, KettyBubble, QRBlock, // TableBlock, FigureBlock). Aucun emoji, tous les pictos via iconKey / . const { Fragment: P2_F } = React; /* ──────────────────────────────────────────────────────────────────────── Helpers locaux — composent les primitives sans les redéfinir ──────────────────────────────────────────────────────────────────────── */ function P2NumTag({ n, tone = "primary" }) { return ( {n} ); } function VFCell2() { return ( ); } function P2WritingLines({ lines = 6 }) { return (
{Array.from({ length: lines }).map((_, i) => (
))}
); } // Petite carte mot — utilisée par le vocabulaire bilingue function VocabCard({ iconKey, fr, en, sample }) { return (
{en}
FR · {fr}
« {sample} »
); } /* ════════════════════════════════════════════════════════════════════════ 1 · LEÇON VOCABULAIRE (template: "vocabulary-lesson") ════════════════════════════════════════════════════════════════════════ */ function P2VocabLesson({ density, qrVisible, scoreVisible, scale = 1 }) { return ( précis, précise {" "} (adj.) {" — "} Qui est net, exact, sans approximation. On l'utilise pour décrire une mesure, une explication, un geste ou un horaire.
Exemple : « Donne-moi l'heure précise du rendez-vous. »
Synonymes · exact, juste, rigoureux, net.
Antonymes · vague, flou, approximatif.
Famille · précision (n.f.), préciser (v.), précisément (adv.).
Pour réussir un dessin technique, il faut beaucoup de . Pourrais-tu ta réponse ? Le train est arrivé à 18h12. Sa description du voleur n'était pas assez . Pour retenir un mot, écris-le, lis-le à voix haute, puis utilise-le dans une phrase qui parle de toi. Tu vas le retenir d'un coup.
); } /* ════════════════════════════════════════════════════════════════════════ 2 · FICHE VOCABULAIRE BILINGUE (template: "bilingual-vocabulary") ════════════════════════════════════════════════════════════════════════ */ function P2BilingualVocab({ density, qrVisible, scoreVisible, scale = 1 }) { const words = [ { fr: "livre", en: "book", sample: "I read a book every evening.", iconKey: "icon-livre" }, { fr: "crayon", en: "pencil", sample: "Pass me the red pencil, please.", iconKey: "icon-crayon" }, { fr: "horloge", en: "clock", sample: "The clock says it is six o'clock.", iconKey: "icon-horloge" }, { fr: "trophée", en: "trophy", sample: "She won a small silver trophy.", iconKey: "icon-trophee" }, { fr: "ampoule", en: "light bulb",sample: "I have a great idea — like a light bulb!", iconKey: "icon-ampoule" }, { fr: "loupe", en: "magnifier", sample: "He used a magnifier to read the map.", iconKey: "icon-loupe" }, ]; return (
{words.map(w => )}
); } /* ════════════════════════════════════════════════════════════════════════ 3 · LEÇON CONJUGAISON (template: "conjugation-lesson") ════════════════════════════════════════════════════════════════════════ */ function P2ConjLesson({ density, qrVisible, scoreVisible, scale = 1 }) { return ( À l'imparfait, tous les verbes en -er prennent les mêmes terminaisons. On les ajoute au radical du verbe (verbe sans son -er). Pour les verbes en -cer et -ger, on adapte le radical devant les terminaisons commençant par a : nous mangeions, il lançait. (jouer) — Je dans le jardin chaque été. (chanter) — Nous tous en chœur. (manger) — Vous ensemble le dimanche. (rêver) — Elles de partir en voyage. Si tu hésites, dis la phrase à voix haute en commençant par « hier… » : ton oreille reconnaît tout de suite l'imparfait. ); } /* ════════════════════════════════════════════════════════════════════════ 4 · EXERCICE GRAMMAIRE (template: "grammar-exercise") ════════════════════════════════════════════════════════════════════════ */ function P2GrammarExercise({ density, qrVisible, scoreVisible, scale = 1 }) { return ( La nature dit ce qu'est le mot (nom, verbe, adjectif…). La fonction dit à quoi il sert dans la phrase (sujet, COD, COI, complément circonstanciel…). Les fleurs que j'ai cueilli sont fanées. Elle a couru tout le matin. Les amis sont arrivé tard. ); } /* ════════════════════════════════════════════════════════════════════════ 5 · LECTURE COMPRÉHENSION (template: "reading-comprehension") ════════════════════════════════════════════════════════════════════════ */ function ReadingTextCard() { return (
« La cabane au fond du jardin »

Léna avait toujours été curieuse. Ce matin-là, en repoussant les ronces du fond du jardin, elle découvrit une vieille cabane de bois qu'elle n'avait jamais remarquée. La porte, à moitié arrachée, grinçait au moindre souffle de vent. À l'intérieur, des étagères croulaient sous des livres poussiéreux et, sur un petit bureau, une lampe à huile attendait, comme oubliée. Léna s'avança avec précaution. Une enveloppe, posée bien en évidence, portait son prénom écrit à l'encre violette. Elle hésita un instant, puis l'ouvrit doucement. Ce qu'elle lut allait changer sa journée — peut-être même sa vie.

— Extrait d'une nouvelle de C. Bertin, Les Étés en bois, 2019.

); } function P2Reading({ density, qrVisible, scoreVisible, scale = 1 }) { return ( Que découvre Léna au fond du jardin ? Cite deux éléments qui montrent que la cabane est ancienne. Pourquoi Léna hésite-t-elle avant d'ouvrir l'enveloppe ? Justifie avec le texte : Léna est-elle une enfant prudente ? ); } /* ════════════════════════════════════════════════════════════════════════ 6 · ÉTUDE DE DOCUMENT (FRANÇAIS) (template: "document-study") ════════════════════════════════════════════════════════════════════════ */ function PoemCard() { return (
« Le dormeur du val » — extrait
C'est un trou de verdure où chante une rivière
Accrochant follement aux herbes des haillons
D'argent ; où le soleil, de la montagne fière,
Luit : c'est un petit val qui mousse de rayons.

— Arthur Rimbaud, Poésies, 1870.

); } function P2DocStudy({ density, qrVisible, scoreVisible, scale = 1 }) { return (
  • Nature :
  • Auteur :
  • Date :
  • Thème :
Quel paysage est décrit ? Cite 3 éléments.
); } /* ════════════════════════════════════════════════════════════════════════ 7 · DICTÉE PRÉPARÉE (template: "prepared-dictation") ════════════════════════════════════════════════════════════════════════ */ function P2Dictation({ density, qrVisible, scoreVisible, scale = 1 }) { return (

Ce matin d'octobre, les feuilles dorées tombaient lentement des grands chênes. Léa enfila son manteau, attrapa son cartable et partit vers l'école d'un pas pressé. Les flaques d'eau, qui brillaient sous le soleil, témoignaient de l'orage de la veille.

chênes · accent circonflexe
cartable · pas de double consonne
témoignaient · imparfait, 3ᵉ pers. plur.
brillaient · double l + -aient
Les noms en -eu ne prennent pas de -x au pluriel s'ils sont déjà au singulier en -e. Vérifie aussi les accords des participes en -é(e)(s) avec leur sujet.
); } /* ════════════════════════════════════════════════════════════════════════ 8 · EXPRESSION ÉCRITE — version pack 2 (template: "writing-task") ════════════════════════════════════════════════════════════════════════ */ function P2Writing({ density, qrVisible, scoreVisible, scale = 1 }) { return (

Choisis un seul souvenir précis (un anniversaire, une rencontre, un voyage, une journée d'école…) et raconte-le en 15 à 20 lignes, à la première personne, en utilisant les temps du passé.

Où ? lieu précis · sensations
Quand ? saison, heure, météo
Avec qui ? 1 à 2 personnages
Quoi ? l'évènement principal
Et toi ? émotion ressentie
Temps · ce jour-là, soudain, ensuite, enfin.
Ajout · de plus, surtout, par ailleurs.
Cause · parce que, car, puisque.
Conclusion · finalement, depuis ce jour, je n'oublierai jamais.
); } /* ════════════════════════════════════════════════════════════════════════ 9 · DIALOGUE / CONVERSATION (template: "dialogue-conversation") ════════════════════════════════════════════════════════════════════════ */ function DialogueBubble({ side = "left", name, color = "primary", children }) { const isLeft = side === "left"; const bg = color === "primary" ? "var(--ae-primary-soft)" : "var(--ae-orange-soft, #FFE0C2)"; const fg = color === "primary" ? "var(--ae-primary-deep)" : "var(--ae-orange)"; return (
{name[0]}
{name}
{children}
); } function P2Dialogue({ density, qrVisible, scoreVisible, scale = 1 }) { return ( Hi Mia! Are you hungry? Let's order something — I'm starving. Yes, I'd love a pancake stack with maple syrup. What about you? I think I'll try the avocado toast and a fresh orange juice. Good idea! Excuse me, could we order, please?
to be starving — avoir très faim
a pancake stack — une pile de pancakes
maple syrup — sirop d'érable
could we order? — formule polie pour commander
What does Mia want to order? Why does Sam say « I'm starving » ?
); } /* ════════════════════════════════════════════════════════════════════════ 10 · TRADUCTION (template: "translation-exercise") ════════════════════════════════════════════════════════════════════════ */ function P2Translation({ density, qrVisible, scoreVisible, scale = 1 }) { const sentences = [ "She always reads in the garden after lunch.", "We didn't know that the museum was closed on Mondays.", "If it rains tomorrow, we will stay at home.", "He has been learning Spanish for three years.", "Could you tell me where the train station is, please?", ]; return (
museum — musée
to learn (for + duration) — apprendre depuis
train station — gare
could you? — formule de politesse (cond.)
on Mondays — le lundi (habitude)
Le present perfect se traduit souvent par un présent + depuis.
« If it rains » → présent en français, jamais futur.
« on Mondays » → « le lundi », pas « les lundis ».
{sentences.map((s, i) => (
{s}
))}
); } /* ──────────────────────────────────────────────────────────────────────── Export ──────────────────────────────────────────────────────────────────────── */ Object.assign(window, { P2VocabLesson, P2BilingualVocab, P2ConjLesson, P2GrammarExercise, P2Reading, P2DocStudy, P2Dictation, P2Writing, P2Dialogue, P2Translation, });