// charte-tabs-2.jsx // PREVIEW-ONLY — design-system documentation tab content. Not a production template. // The "À éviter" example INTENTIONALLY contains emojis to illustrate the rule. // All other glyphs are doc chrome and will NEVER ship to PDF/KDP. // Tab content panels — part 2. // Components, Ketty, Levels, Density, Do/Don't, Templates, Tokens. /* ---------- Tab: Composants ---------- */ function ComponentDemo({ title, code, children }) { return (
{title}
{code && {code}}
{children}
); } function TabComponents() { return ( <>

Composants graphiques standards

Les briques réutilisables de la collection. Chaque composant est représenté ici à l'échelle réelle (in), tel qu'il apparaîtra en page 8.5×11.

{/* Carte de leçon */}
💡 Je retiens

Encadré pédagogique pour énoncer une règle, une définition ou une formule. Fond jaune soft + bordure jaune dark + tab pill jaune sur le bord supérieur.

A² + B² = C²
{/* Encadré méthode */}
Méthode
  1. Identifie le côté connu
  2. Pose la formule
  3. Calcule étape par étape
Erreur à éviter

Ne pas utiliser le théorème de Pythagore si le triangle n'est pas rectangle. Vérifie toujours la présence d'un angle droit.

{/* Bulle Ketty */}
Astuce Ketty
Repère d'abord l'hypoténuse : c'est toujours le côté opposé à l'angle droit.
{/* Exercice + QCM */}
Exercice 1
Résous chaque opération.
1 35 + 28 =
2 84 − 47 =
3 12 × 6 =
4 96 ÷ 8 =
QCM
Coche la bonne réponse.
A 5 cm B 7 cm C 9 cm D 13 cm
{/* Zones de réponse */}
Ligne pointillée
Réponds :
1 mot · 1 chiffre · réponse courte
Boîte vide
1 phrase · calcul posé court
Lignes guidées
Rédaction · 2-4 lignes · 0.21in entre lignes
{/* Tableau */}
MotSensSynonyme
curieuxqui veut découvrir……………………
tendredonner avec la main……………………
souvenirimage en mémoire……………………
{/* Checklist */}
    {["J'ai relu la consigne.", "J'ai vérifié mes calculs.", "J'ai écrit lisiblement.", "J'ai mis les unités."].map(t => (
  • {t}
  • ))}
{/* QR Block */}
Scanne pour retrouver Ketty
et des bonus en ligne !
{/* Bilan + Mini-défi */}
Bilan : tu as révisé l'addition à retenue. Bravo !
Défi Ketty
Trouve trois mots qui riment avec « souvenir ».
{/* Correction compacte */}
Corrigé Page 12 · Exercice 1
1 AB = 10 cm
3 BC ≈ 7,9 cm
2 AC = 24 cm
4 BC = 12 cm
); } /* ---------- Tab: Ketty ---------- */ function TabKetty() { const poses = [ ["hello", "Accueil, ouverture de chapitre, première rencontre."], ["pointing", "Astuce méthode, instruction clé, pointer un élément."], ["thinking", "Question ouverte, défi, réflexion, problème difficile."], ["celebrating", "Bilan réussi, fin de chapitre, récompense."], ["thumbsup", "Validation, encouragement, fin d'exercice court."], ]; return ( <>

Ketty — la coach pédagogique

Ketty est une mascotte 3D existante de la collection. Elle n'est jamais redessinée en SVG ou en illustration plate. Dans la charte, on prévoit un slot <KettySlot pose=… /> dans lequel on insère un PNG transparent.

{poses.map(([pose, role]) => (
pose="{pose}"
{role}
))}
Important : dans une maquette sans le PNG final, afficher le slot avec la mention « Ketty PNG transparent — pose à insérer ici » exactement comme ci-dessus.

Règles d'usage

{[ ["Ketty est utile, jamais décorative", "Toujours associée à une bulle pédagogique : astuce, méthode, encouragement, défi. Pas de Ketty « pour faire joli »."], ["Maximum 2 apparitions par page", "1 apparition pédagogique + éventuellement 1 mini bilan / encouragement. Au-delà, le contenu disparaît derrière la mascotte."], ["Côté droit ou dans un encadré", "Ne jamais coller Ketty contre la bordure gauche d'un exercice. Elle vit à droite, ou dans un bloc dédié."], ["Taille modérée", "Largeur conseillée : 0.85 in (compact) à 1.2 in (héros). Au-delà → propre encadré, pas dans le flux."], ["Pas pour collège+ en mascotte géante", "À partir de la 4ᵉ, Ketty est plus discrète : portrait + bulle, pas pleine page."], ["Ne pas redessiner / re-styliser", "Pas de Ketty SVG, pas de version flat, pas de copie d'autre mascotte."], ].map(([t, d]) => (
✓ {t}
{d}
))}

Patterns de bulle

{[ ["Astuce Ketty", "var(--ae-primary)", "Repère d'abord l'hypoténuse : c'est toujours le côté opposé à l'angle droit."], ["Méthode", "var(--ae-success)", "1) Lis la consigne · 2) Identifie ce qu'on cherche · 3) Pose le calcul."], ["Erreur à éviter", "var(--ae-error)", "Ne pas oublier l'unité de mesure ! Une longueur sans unité n'est pas une réponse."], ["Défi Ketty", "var(--ae-orange)", "Trouve trois autres exemples dans ton quotidien. Note-les sur ton cahier."], ["Bravo !", "var(--ae-success)", "Tu as terminé. Vérifie ton score et passe à la page suivante."], ].map(([lab, color, txt]) => (
{lab}
{txt}
))}
); } /* ---------- Tab: Variantes par niveau ---------- */ function TabLevels() { const levels = [ { key: "cp", label: "CP / CE1", age: "6–7 ans", color: "Bleu + jaune dominants, orange ponctuel.", density: "Très aéré · 3 blocs / page max.", text: "0.16 – 0.18 in", illu: "Beaucoup. Ketty très présente.", meter: 1, tone: "Doux, illustré, ludique." }, { key: "ce", label: "CE2 / CM1 / CM2", age: "8–10 ans", color: "Palette complète, jaune généreux.", density: "Aéré · 4–5 blocs / page.", text: "0.14 – 0.16 in", illu: "Régulière. Ketty 1×/page.", meter: 2, tone: "Chaleureux, structuré." }, { key: "6e", label: "6ᵉ / 5ᵉ", age: "11–12 ans", color: "Bleu dominant, jaune en accent.", density: "Standard · 5–6 blocs / page.", text: "0.13 – 0.14 in", illu: "Mesurée. Ketty en astuce.", meter: 3, tone: "Motivant, clair." }, { key: "4e", label: "4ᵉ / 3ᵉ", age: "13–14 ans", color: "Bleu + neutres, accent orange ciblé.", density: "Standard · 6–7 blocs / page.", text: "0.13 in", illu: "Fonctionnelle. Ketty discrète.", meter: 4, tone: "Structuré, efficace." }, { key: "lyc", label: "Lycée", age: "15–18 ans", color: "Bleu + neutres, accents très contrôlés.", density: "Dense · 7–9 blocs / page.", text: "0.12 – 0.13 in", illu: "Schémas / docs, peu de Ketty.", meter: 5, tone: "Sobre, académique, premium." }, ]; return ( <>

5 variantes pilotées par theme.level

La même charte se décline en 5 niveaux d'intensité. On change la densité, la taille de texte, la quantité d'illustrations et la présence de Ketty. Les couleurs et la structure (header / footer / grille) restent identiques.

{levels.map(l => (
{l.age}

{l.label}

{l.tone}
{[1,2,3,4,5].map(i => )}
  • Couleur : {l.color}
  • Densité : {l.density}
  • Texte : {l.text}
  • Illustrations : {l.illu}
))}

Recommandations transversales

CP/CE1 — éviter
Texte mass, paragraphes > 4 lignes, QCM > 3 options, formules abstraites.
CE2/CM2 — viser
Variétés de blocs (lecture, exo, défi), Ketty pédagogique 1×/page.
6e/5e — viser
Méthodes pas-à-pas, Je retiens systématique, défis bonus.
4e/3e — éviter
Surcharge décorative, Ketty pleine page, jaune en grand aplat.
Lycée — viser
Documents authentiques, schémas denses, cours structuré 2 colonnes.
Lycée — éviter
Tons enfantins, bulles « bravo », emojis dans l'iconographie.

Densité — 3 réglages

Indépendant du niveau : le mode aéré peut être imposé sur un cahier de vacances lycée pour respirer, et le mode dense sur un brevet blanc.

{[ ["Aéré", "0.26in", "3–5 blocs / page · 1.6 line-height · zones de réponse +20%", "var(--ae-success)"], ["Standard", "0.20in", "5–7 blocs / page · 1.5 line-height · zones standard", "var(--ae-primary)"], ["Dense", "0.14in", "7–9 blocs / page · 1.45 line-height · zones compactes", "var(--ae-orange)"], ].map(([t, gap, d, c]) => (
{t}
block-gap {gap}
{d}
))}
); } /* ---------- Tab: Do / Don't ---------- */ function DoDontCard({ kind, title, body, visual }) { return (
{visual}
{kind === "do" ? "✓" : "✕"} {kind === "do" ? "À faire" : "À éviter"} — {title}
{body}
); } function TabDoDont() { return ( <>

Do / Don't

Quelques cas concrets pour calibrer le système.

Le théorème
Résous les problèmes.
1 AC = 6 cm, BC = 8 cm…
} />
Le théorème de Pythagore
Résous les problèmes
1. AC = 6 cm, BC = 8 cm
2. AC = 12 cm, AB = 13 cm
} />
Réponds :
} />
Réponds :
← trop courte
} />
Scanne pour la correction · alloeducation.fr
} />
← trop petit, fond orange, sans texte
} />
💡 Je retiens
Une règle simple, des couleurs maîtrisées.
} />
Note
🎉 ⭐ 🌈 ❤ Une règle simple ✨
} />
} />
} />
Astuce
Repère d'abord l'hypoténuse.
} />
} />
); } Object.assign(window, { TabComponents, TabKetty, TabLevels, TabDoDont, });