feat: Wizard IA + Export PDF + fixes blocs
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 1m7s
CI / Deploy production (on server) (push) Has been skipped

- Wizard IA: création de carnet complet (étudiant/prof/ingénieur)
  - 3 profils, choix niveau, nombre de notes (3-12)
  - Étapes numérotées, messages de progression, écran de succès
  - Notes riches avec callouts, toggles, équations, colonnes
  - Structured View auto-créé avec propriétés Statut/Difficulté
  - Embeddings en arrière-plan
- Export PDF: clone le DOM réel, rend KaTeX, préserve couleurs callouts
- Fix: boutons toggle/callout en hover-only
- Fix: parsing JSON robuste (backslashes LaTeX)
- Fix: flushSync warning (queueMicrotask)
- Fix: drag handle clamp viewport
- Bouton wizard dans la sidebar ( à côté du +)
- i18n FR/EN complet
This commit is contained in:
Antigravity
2026-06-14 19:51:02 +00:00
parent f7b62009cf
commit 940c3daf62
10 changed files with 915 additions and 33 deletions

View File

@@ -33,7 +33,7 @@ const ToggleView = ({ node, updateAttributes, deleteNode, getPos, editor }: any)
}
return (
<NodeViewWrapper className="toggle-block my-1 rounded-lg border border-border/50 bg-muted/20" dir="auto">
<NodeViewWrapper className="toggle-block group/toggle my-1 rounded-lg border border-border/50 bg-muted/20" dir="auto">
<div className="flex items-center gap-1.5 px-2 py-1.5 border-b border-border/30">
<button
onClick={toggle}
@@ -53,22 +53,24 @@ const ToggleView = ({ node, updateAttributes, deleteNode, getPos, editor }: any)
>
{opened ? t('richTextEditor.toggleOpened') : t('richTextEditor.toggleClosed')}
</span>
<button
onClick={unwrap}
contentEditable={false}
className="flex-shrink-0 p-0.5 rounded hover:bg-muted text-muted-foreground"
title={t('richTextEditor.toggleUnwrap')}
>
<X className="h-3.5 w-3.5" />
</button>
<button
onClick={deleteNode}
contentEditable={false}
className="flex-shrink-0 p-0.5 rounded hover:bg-destructive/10 text-muted-foreground hover:text-destructive"
title={t('richTextEditor.toggleDelete')}
>
<Trash2 className="h-3.5 w-3.5" />
</button>
<div className="flex items-center gap-0.5 opacity-0 group-hover/toggle:opacity-100 transition-opacity">
<button
onClick={unwrap}
contentEditable={false}
className="p-0.5 rounded hover:bg-muted text-muted-foreground"
title={t('richTextEditor.toggleUnwrap')}
>
<X className="h-3.5 w-3.5" />
</button>
<button
onClick={deleteNode}
contentEditable={false}
className="p-0.5 rounded hover:bg-destructive/10 text-muted-foreground hover:text-destructive"
title={t('richTextEditor.toggleDelete')}
>
<Trash2 className="h-3.5 w-3.5" />
</button>
</div>
</div>
<div className={cn('px-3 py-2', !opened && 'hidden')}>