);
}
function MiniHRule({ w = "100%" }) {
return ;
}
function MiniWriteLine({ w = "100%" }) {
return ;
}
function MiniWriteBox({ h = 28 }) {
return ;
}
function MiniDot({ c = "var(--ae-primary)" }) {
return ;
}
function MiniQR({ size = 44 }) {
return (
);
}
/* ───────────────────────────────────────────────────────────────────────
PLANCHE 1 — Hero
─────────────────────────────────────────────────────────────────────── */
function P7Hero() {
return (
Pack 7 · Patterns
Design Patterns & Composition Rules
La planche visuelle des 18 blocs autorisés dans Allo Education Books. Pour le rédacteur :
combien d'items écrire. Pour le dev : quels blocs existent. Pour l'auditeur PDF : ce qui est
valide, ce qui ne l'est pas, et comment composer une page qui respire.
v1.2 · verrouillé18 blocs documentés5 compositions OK5 compositions KO
);
}
/* ───────────────────────────────────────────────────────────────────────
PLANCHE 2 — Les 18 blocs
─────────────────────────────────────────────────────────────────────── */
const BLOCKS = [
/* 01 — Objectif */
{
num: 1, name: "Objectif",
usage: "Énonce ce que l'élève doit savoir faire à la fin de la page. Toujours en haut, jamais ailleurs.",
max: { items: "1 objectif", lines: "1 à 2 lignes" },
combine: ["À retenir", "Méthode", "Exemple guidé", "Exercice"],
avoid: ["Autre Objectif", "Bilan final"],
overflow: "Si l'objectif dépasse 2 lignes, réécris plus court — n'ajoute pas une 3ᵉ ligne.",
std: (
Comparer deux fractions de même dénominateur.
),
compact: (
Comparer 2 fractions.
),
},
/* 02 — À retenir */
{
num: 2, name: "À retenir",
usage: "Règle, définition ou notion-clé que l'élève doit mémoriser. Style fond jaune, marqueur visuel fort.",
max: { items: "1 règle + 0–4 bullets", lines: "5 lignes max" },
combine: ["Objectif", "Exemple guidé", "Méthode", "Exercice"],
avoid: ["Mini-sujet", "Correction compacte"],
overflow: "Découper en deux \"À retenir\" plutôt qu'un seul trop long. Pas de paragraphe fleuve.",
std: (
Une fraction représente une partie d'un tout. Numérateur en haut. Dénominateur en bas.
),
compact: (
Numérateur ÷ Dénominateur.
),
},
/* 03 — Méthode / Étapes */
{
num: 3, name: "Méthode / Étapes",
usage: "Procédure pas-à-pas, numérotée. Verts. Disponible en vertical (standard) et horizontal (compact).",
max: { items: "3 à 6 étapes", lines: "1 ligne / étape" },
combine: ["Objectif", "Exemple guidé", "Problème"],
avoid: ["Autre Méthode", "Mini-sujet"],
overflow: "Au-delà de 6 étapes : c'est deux méthodes. Ou ce n'est pas une méthode.",
std: (
{["Je lis l'énoncé.", "Je repère les données.", "Je pose le calcul.", "Je rédige la phrase."].map((s, i) => (
),
},
/* 04 — Exemple guidé */
{
num: 4, name: "Exemple guidé",
usage: "Un exemple résolu sous les yeux de l'élève. Énoncé court + démarche courte + résultat. Disponible en variante maths, français, sciences.",
max: { items: "1 exemple", lines: "3 à 5 lignes de calcul" },
combine: ["À retenir", "Méthode", "Exercice"],
avoid: ["Autre exemple", "Correction compacte"],
overflow: "Si la démarche dépasse 5 lignes, soit la méthode est mal expliquée, soit l'exemple est trop dur.",
std: (
Compare 3/5 et 4/5.
3/5 < 4/5
même dénominateur → on compare les numérateurs.
),
compact: (
3/5 < 4/5
),
},
/* 05 — Exercice simple */
{
num: 5, name: "Exercice simple",
usage: "Grille d'items courts, même format. 2 colonnes. Chaque item = énoncé minimal + zone réponse.",
max: { items: "4 à 6 items", lines: "1 ligne d'énoncé / item" },
combine: ["Objectif", "À retenir", "Méthode"],
avoid: ["Exercice progressif (sur la même page)", "Mini-sujet"],
overflow: "Plus de 6 items → c'est un exercice progressif, pas un exo simple. Utilise le bloc 06.",
std: (
{[1, 2, 3, 4].map(n => (
{n}
))}
),
compact: (
{[1, 2, 3, 4].map(n => (
{n}. ___
))}
),
},
/* 06 — Exercice progressif */
{
num: 6, name: "Exercice progressif",
usage: "Deux exercices structurés sur la même page, du plus facile au plus difficile. Zones de calcul compactes.",
max: { items: "2 exercices · 4 items / exo", lines: "2 lignes de calcul / item" },
combine: ["Objectif", "Méthode", "Auto-évaluation"],
avoid: ["Exemple guidé long", "Problème guidé", "Mini-sujet"],
overflow: "Si un seul exo prend toute la page, c'est un Problème guidé, pas un exo progressif.",
std: (
),
compact: (
),
},
/* 07 — QCM */
{
num: 7, name: "QCM",
usage: "Questions à choix multiples. Trois choix A/B/C systématiques. Option justification courte.",
max: { items: "3 à 5 questions", lines: "1 ligne / option" },
combine: ["Objectif", "À retenir", "Auto-évaluation"],
avoid: ["Problème guidé", "Mini-sujet (le QCM EST déjà un mini-sujet)"],
overflow: "Au-delà de 5 questions → couper en deux QCM ou passer en mini-sujet (bloc 15).",
std: (
Un cahier d'exercices DOIT respirer. La V1.2 verrouille trois densités. Si une page est trop
serrée OU trop vide, c'est qu'on a choisi la mauvaise densité — pas qu'on doit improviser des marges.
Si une zone vide dépasse 1.5 in de haut → ajouter un bloc, agrandir une zone réponse, ou réduire la densité.
Si deux blocs se touchent (gap < 0.14 in) → c'est trop serré, on passe en densité standard ou air.
Une page d'exercices DOIT avoir au moins 3 blocs distincts. Sinon = trop vide.
Une page DOIT avoir au plus 6 blocs principaux. Au-delà = trop chargé.
Le footer ne compte pas comme bloc. Le header non plus.
);
}
/* ───────────────────────────────────────────────────────────────────────
PLANCHE 5 — Le composant principal
─────────────────────────────────────────────────────────────────────── */
function Pack7DesignPatterns() {
return (
{/* Bloc-by-bloc */}
Les 18 blocs autorisés
Bloc → règles → standard + compact
{BLOCKS.map(b => )}
{/* OK */}
Combinaisons recommandées par page
Cinq compositions canoniques. Reprends-les telles quelles plutôt que d'inventer.
{COMPOSITIONS_OK.map((c, i) => )}
{/* KO */}
Combinaisons à éviter
Cinq combinaisons que l'auditeur PDF doit rejeter automatiquement.
{COMPOSITIONS_KO.map((c, i) => )}
{/* Spacing */}
{/* Closer */}
Pourquoi cette planche existe
Cette planche n'est pas une page de livre. C'est l'outil de référence partagé entre rédacteur,
dev et auditeur PDF. Si un nouveau template doit naître, il commence ici : choisis 3 à 5
blocs autorisés, vérifie les compositions OK / KO, applique la densité, puis seulement écris le contenu.