// charte-tabs-stress.jsx // PREVIEW-ONLY — navigation chrome around the stress-test pages. // The 10 stress pages themselves (stress-pages.jsx) are emoji-free; only the wrapping // chrome here uses doc glyphs and will NEVER ship to PDF/KDP. // Tab: "Stress Test Pack" — 10 test pages built only from locked blocks. // One nav strip lets you flip between the 10 templates; one frame at 8.5×11. const { useState: __useStateStress } = React; const STRESS_TEMPLATES = [ { id: "diagnostic", num: "01", label: "Diagnostic de départ", comp: StressDiagnostic, note: "Test rapide d'entrée · 10 questions · score à reporter sur le footer." }, { id: "lesson-exercise", num: "02", label: "Mini-leçon + exercices", comp: StressLessonExercise, note: "Méthode + exemple guidé + 4 exercices courts. Pattern le plus utilisé du cahier." }, { id: "problem-exercise", num: "03", label: "Exercice problème", comp: StressProblem, note: "Énoncé long, données utiles, étapes guidées, zone de réponse rédigée." }, { id: "table-exercise", num: "04", label: "Tableau à compléter", comp: StressTable, note: "Composant TableBlock testé en proportionnalité ET conjugaison sur la même page." }, { id: "figure-graph", num: "05", label: "Graphique / figure", comp: StressFigure, note: "FigureBlock + SVG natif (graphique de fonction + triangle rectangle)." }, { id: "correction-compact", num: "06", label: "Correction compacte", comp: StressCorrection, note: "Densité dense forcée. 6 corrigés alignés sur grille 2×3 sans casser la grille principale." }, { id: "mini-exam", num: "07", label: "Mini-sujet examen", comp: StressExam, note: "Bandeau Durée · Barème · Conditions, puis 3 ExerciseCard avec AnswerBox réglés." }, { id: "mindmap", num: "08", label: "Carte mentale", comp: StressMindmap, note: "FigureBlock haut (2.4in), MindMap SVG, branche perso à compléter." }, { id: "qr-resources", num: "09", label: "Ressources QR", comp: StressQrResources, note: "4 cartes ressource + QR principal grand format. Page 100% numérique." }, { id: "diploma", num: "10", label: "Diplôme · fin de cahier", comp: StressDiploma, note: "Densité light. Bordure double, sceau SVG, KettyBubble celebrating." }, ]; function TabStressTest({ tweaks }) { const [active, setActive] = __useStateStress("diagnostic"); const tpl = STRESS_TEMPLATES.find(t => t.id === active); const Comp = tpl.comp; return ( <>

Template Stress Test Pack — 10 pages

Vérification finale de la charte : 10 pages réalistes, du CP à la Terminale, construites strictement avec les composants verrouillés. Même PageShell, même header, même footer, mêmes tokens. Si ces 10 pages tiennent l'harmonie, la charte peut être verrouillée pour produire les 50+ cahiers.

{STRESS_TEMPLATES.map(t => ( ))}
{tpl.num}
{tpl.label}
{tpl.note}
8.5 × 11 in PageShell verrouillé Tweaks live

Ce que ce pack prouve

1 · Shell verrouillé
Header, footer, hauteurs, position du logo, du QR, du n° de page : identiques sur les 10 pages, sans exception.
2 · Grille centrale stable
Tous les blocs partagent --ae-block-gap et la même marge latérale, qu'ils contiennent un texte, un tableau ou une figure SVG.
3 · Échelle typo unique
Aucune page n'a redéfini une taille de texte en dur. La densité (light / std / dense) est le seul levier d'ajustement.
4 · QR cohérent
Footer, bloc QRBlock, ressources, diplôme : même placeholder réaliste V4, mêmes proportions, même contraste.
5 · Ketty composée
Une seule API : <KettyBubble pose label tone>. La pose change, le composant ne change pas.
6 · Niveaux unifiés
CP, CM2, 6ᵉ, 4ᵉ, 3ᵉ, 1ʳᵉ — l'identité reste la même, seuls le contenu et la densité s'adaptent.

Verdict

Charte prête à être verrouillée
Les 10 templates restent harmonieux entre eux malgré leurs contenus très différents. La production des 50+ cahiers Allo Education Books peut maintenant démarrer sur cette base : un seul fichier theme.json, un seul shell, un catalogue de blocs verrouillés.
); } Object.assign(window, { TabStressTest, STRESS_TEMPLATES });