19 KiB
ð¯ Analyse : Architecture de Toolbar pour ObsiGate
Date : 2026-06-05 Auteur : Hermes-Claw (Agent IA) Contexte : Recherche et recommandation du meilleur design de barre d'outils pour l'éditeur ObsiGate Fonctionnalités cibles : Ãdition Markdown, Actions IA, Insertion PDF, Insertion Images
ð Sources d'inspiration
L'analyse repose sur l'étude des éditeurs leaders du marché :
| Ãditeur | Pattern clé | Pertinence pour ObsiGate |
|---|---|---|
| Notion | Slash menu + Bubble menu + Quick insert + |
âââââ Forte |
| Novel.sh | Slash menu + AI autocomplete (++) |
âââââ Forte |
| Medium | Bubble menu minimal sur sélection | ââââ Ãlevée |
| Dropbox Paper | Quick insert + + Slash commands |
ââââ Ãlevée |
| Cursor / Windsurf | AI Side Panel + Inline AI | ââââ Ãlevée |
| Google Docs | Top toolbar traditionnelle | ââ Faible (trop chargée) |
| Obsidian | Command palette + Sidebar | âââ Moyenne |
| Tiptap | API de menus : Fixed / Bubble / Floating / Slash | âââââ Fondation technique |
ð Recommandation : Architecture Multi-Zone
Les éditeurs modernes n'utilisent plus une toolbar unique en haut. Ils distribuent les contrÎles dans 5 zones contextuelles qui apparaissent uniquement quand elles sont pertinentes.
Principe fondamental
"Montre le bon contrÃŽle, au bon endroit, au bon moment."
Une toolbar fixe traditionnelle (style Google Docs) ne fonctionne plus pour un éditeur moderne avec IA intégrée. La complexité est trop grande pour tout afficher en permanence.
ð Zone 1 â Top Fixed Bar (toujours visible)
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â â° [Obsigate] Document Title... ð® AI ð âïž ðŸ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Contenu
| Position | Ãlément | Description |
|---|---|---|
| Gauche | â° Menu hamburger | Navigation, settings, historique |
| Gauche | Titre du document | Ãditable inline, se sauvegarde automatiquement |
| Droite | ð® AI Assistant | Bouton principal, couleur d'accent â le différenciateur produit |
| Droite | ð Quick Insert | Dropdown : Image, PDF, Table, Embed |
| Droite | âïž Actions | Export, Settings, Share |
| Droite | ðŸ Save indicator | Auto-save status (saved / saving / error) |
Design notes
- Hauteur : ~48px
- Fond : légÚrement distinct de l'éditeur (ombre ou bordure)
- Le bouton AI est le plus visible (couleur primaire, légÚre glow)
- Barre fixe au scroll (sticky top)
Pourquoi
Barre minimale, toujours accessible. Les actions document-level (PDF, images) sont à portée mais ne polluent pas l'interface. Le bouton AI est le hero â le différenciateur d'ObsiGate face aux autres éditeurs.
ð Zone 2a â Slash Command Menu (tape / sur ligne vide)
ââââââââââââââââââââââââââââââââââââ
â ð Filtrer... â
â ââââââââââââââââââââââââââââââââ â
â ð Text Just start â
â â
To-do List Track... â
â H1 Heading 1 Big... â
â H2 Heading 2 Medium... â
â H3 Heading 3 Small... â
â ⢠Bullet List Simple... â
â 1. Numbered List Ordered.. â
â ð¬ Quote Block... â
â ð Code Block Syntax... â
â ââ Divider Horiz... â
â ââââââââââââââââââââââââââââââââ â
â ðŒïž Insert Image Upload... â
â ð Insert PDF Attach... â
â ð Insert Table Data... â
â ð Insert Link URL... â
â ââââââââââââââââââââââââââââââââ â
â âš AI: Continue Write... â
â âš AI: Summarize Condense â
â âš AI: Translate To... â
â âš AI: Brainstorm Ideas... â
â âš AI: Fix grammar Correct â
â âš AI: Change tone Formal... â
ââââââââââââââââââââââââââââââââââââ
Design notes
- Menu flottant (popover) positionné sous le curseur
- Hauteur max : ~400px, scroll si plus
- Chaque item : icÃŽne + titre + description courte
- Sections séparées par un divider subtil
- Navigation : flÚches ââ + Entrée pour sélectionner
- Barre de filtrage en haut (taper filtre les résultats)
- Fond : blanc/carte avec ombre légÚre + border-radius 8px
- Animation : fade-in + slide-up (150ms)
Pourquoi c'est le game-changer
Le slash menu remplace 90% des besoins de toolbar. Plus besoin d'une barre fixe pour les actions de formatage. L'utilisateur tape / et tout est là , accessible au clavier. C'est le pattern qui a fait le succÚs de Notion.
ð Zone 2b â Bubble Menu (apparaît sur sélection de texte)
ââââââââââââââââââââââââââââââââââââââââ
â ð ðŒ S̶ </> ð ⯠⚠AI ⟠â
ââââââââââââââââââââââââââââââââââââââââ
Contenu
| IcÃŽne | Action | Raccourci |
|---|---|---|
| B | Bold | Ctrl+B |
| I | Italic | Ctrl+I |
| Strikethrough | Ctrl+Shift+X | |
</> |
Code inline | Ctrl+E |
| ð | Link | Ctrl+K |
| ⯠| More (Quote, Highlight) | â |
| âš AI ⟠| Dropdown AI actions | â |
Dropdown AI (âš)
| Action | Description |
|---|---|
| Improve writing | Améliore le style |
| Fix spelling & grammar | Corrige les erreurs |
| Translate to... | Traduit vers langue cible |
| Continue writing | Continue le texte |
| Summarize | Résume la sélection |
| Change tone | Ajuste le ton (formel/informel) |
| Explain | Explique le texte sélectionné |
Design notes
- Apparaît au-dessus de la sélection (évite de cacher le texte)
- Position calculée dynamiquement (reste dans le viewport)
- Animation : scale-in + fade (120ms)
- Fond : blanc + ombre
0 4px 12px rgba(0,0,0,0.15)+ radius 8px - Disparaît quand la sélection est perdue
- Délai d'apparition : 50ms aprÚs sélection (pas de flash intempestif)
Pourquoi
Pattern Medium/Notion. Le plus efficace car le curseur est déjà proche de la sélection. Ãvite les allers-retours avec une toolbar fixe distante.
ð Zone 3 â Floating Quick Insert (ligne vide)
â â___________________________________________
Comportement
- Apparaît à gauche d'une ligne vide quand le curseur est dessus
- Au clic sur â, ouvre un mini-menu compact (4-5 options)
âââââââââââââââââââââââ
â ðŒïž Image â
â ð PDF â
â ð Code Block â
â ð Table â
â âš AI Actions âž â
âââââââââââââââââââââââ
Design notes
- IcÃŽne â semi-transparente, devient opaque au hover
- Cercle de 24px, centré verticalement sur la ligne
- Mini-menu : compact, sans description (icÃŽne + texte uniquement)
- Animation : fade-in (100ms)
Pourquoi
Pattern Dropbox Paper. Ultra-rapide pour les insertions fréquentes â pas besoin de taper / ni d'aller dans la toolbar. Complémentaire au slash menu.
ð Zone 4 â AI Side Panel (toggle droite)
ââââââââââââââââââââââââââââ¬âââââââââââââââââââ
â â âš AI Assistant â
â Zone d'édition â âââââââââââââââ â
â â â
â Ceci est le contenu â ð¬ Chat â
â du document en cours â ââââââââââââââ â
â d'édition... â â Pose ta â â
â â â question.. â â
â â ââââââââââââââ â
â â [Send] â
â â â
â â ð Suggestions â
â â ⢠Improve style â
â â ⢠Add section â
â â ⢠Translate â
â â ⢠Generate PDF â
â â â
ââââââââââââââââââââââââââââŽâââââââââââââââââââ
Contenu
| Section | Description |
|---|---|
| Chat | Conversation IA contextuelle (connaît le document) |
| Suggestions | Actions IA contextuelles basées sur le contenu |
| History | Historique des interactions IA récentes |
| One-click actions | "Fix grammar", "Translate to EN", "Generate summary" |
Design notes
- Panel rétractable (toggle via bouton ð® de la Zone 1)
- Largeur : 320-380px
- Fond légÚrement distinct
- Slide-in depuis la droite (200ms)
- L'éditeur se réduit (responsive, pas d'overlay)
- Persiste entre les sessions (état sauvegardé)
- Sur mobile : passe en bottom sheet
Pourquoi
Pour les interactions AI complexes (brainstorm, réécriture multi-paragraphes, recherche). Le bubble menu gÚre le micro ; le panel gÚre le macro. Pattern Cursor/Windsurf.
ð Zone 5 â Drag & Drop Zone (invisible, toujours actif)
ââââââââââââââââââââââââââââââââââââââââââââââââââ
â â
â â â â â â â â â â â â â â â â â â â â â â
â â â â
â â ðŒïž Déposez vos fichiers ici â â
â â Images, PDFs, documents â â
â â â â
â â â â â â â â â â â â â â â â â â â â â â
â â
ââââââââââââââââââââââââââââââââââââââââââââââââââ
Comportement
- Zone active sur tout l'éditeur
- Au survol d'un fichier : bordure pointillée bleue + overlay semi-transparent
- Accepte : images (png, jpg, webp, gif, svg), PDFs, .md, .txt
- Feedback visuel pendant le drop : animation + barre de progression
Design notes
- Bordure pointillée : 2px dashed
#4A90D9 - Overlay : fond bleu à 5% d'opacité
- IcÎne + texte centrés, large
- Disparaît quand le drag quitte la zone
- Upload progressif avec prévisualisation
ðš Layout complet intégré
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â â° [ObsiGate] Mon Document... ð® AI ð Insert âïž ðŸ â â Zone 1
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â â â ## Introduction â âš AI â â Zone 4
â â ââââââââ â
â â Ceci est le contenu du document... â â
â â â Chat â
â â ââââââââââââââââââââââââââââ â â
â â â ð ðŒ S̶ </> ð âš AI âŸâ â Zone 2b (sel.) â â
â â ââââââââââââââââââââââââââââ â â
â â â â
â â Du texte sélectionné ici... â â
â â â â
â â â â â
â â / â â
â â ââââââââââââââââââââââââââââ â â
â â â ð Text â â Zone 2a (slash) â â
â â â H1 Heading 1 â â â
â â â âš AI: Improve writing â â â
â â ââââââââââââââââââââââââââââ â â
â â â â
â â â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â âšïž / pour menu | Ctrl+K pour commandes | 1200 mots â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Barre de statut (footer)
- Toujours visible, fine (24-28px)
- Affiche : raccourcis utiles, compteur de mots, statut connexion
- IcÃŽne IA clignotante si l'IA est en train de traiter
ð¯ Tableau comparatif : besoin vs solution
| Besoin ObsiGate | Solution | Pattern utilisé par |
|---|---|---|
| Ãdition Markdown rapide | Slash / + Bubble menu |
Notion, Medium, Dropbox Paper |
| Actions IA fréquentes | Bouton ð® proéminent + Bubble AI dropdown + Panel | Cursor, Novel.sh, Windsurf |
| Insertion PDF/Images | Slash menu + Quick insert â + Drag & drop | Notion, Dropbox Paper |
| Pas de clutter | Zones contextuelles (rien de visible inutilement) | Medium, iA Writer |
| Accessibilité clavier | Tout accessible via /, Ctrl+K, Ctrl+P |
Notion, Linear |
| Feedback IA | Barre de statut + animations | Cursor, Copilot |
ð Les 3 patterns différenciateurs
1. Slash Command Menu
Le game-changer. Plus besoin de toolbar fixe pour 90% des actions. Tu tapes / et tout est là , navigable au clavier.
2. L'IA comme citoyen de premiÚre classe
L'IA n'est pas cachée dans un sous-menu. Elle est :
- En bouton dédié visible (Zone 1)
- Dans le slash menu (Zone 2a)
- Dans le bubble menu (Zone 2b)
- En panel latéral (Zone 4)
3. Bubble Menu on Selection
Plus proche du curseur, plus rapide. Medium l'a popularisé, tout le monde l'a copié depuis.
ð ïž Implémentation technique recommandée
Option A : Tiptap + Custom Extensions (recommandé)
// Base : Tiptap (React)
import { Editor } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
// Extensions pour ObsiGate
import { SlashCommand } from './extensions/slash-command'
import { BubbleMenuAI } from './extensions/bubble-menu-ai'
import { QuickInsert } from './extensions/quick-insert'
import { AIPanel } from './extensions/ai-panel'
import { DropZone } from './extensions/drop-zone'
Avantages :
- ContrÃŽle total sur chaque zone
- ÃcosystÚme mature (ProseMirror)
- Extensions custom faciles à créer
- Support React/Vue natif
Option B : Novel.sh (rapide)
import { Editor } from 'novel'
Avantages :
- 80% du comportement Notion direct
- Slash menu + AI autocomplete intégrés
- MIT License
- Moins flexible que Tiptap pur
BibliothÚques UI complémentaires
| Composant | Librairie | Usage |
|---|---|---|
| Popover / Menu flottant | @radix-ui/react-popover |
Slash menu, Bubble menu |
| Panel rétractable | @radix-ui/react-dialog ou custom |
AI Panel |
| Drag & Drop | react-dnd ou natif HTML5 |
Zone 5 |
| Animations | framer-motion ou CSS transitions |
Toutes les zones |
ð± Considérations Responsive / Mobile
Desktop (>768px)
- Toutes les zones actives
- AI Panel : rétractable à droite
Tablette (480-768px)
- AI Panel : overlay (pas de réduction de l'éditeur)
- Bubble menu : taille réduite
- Slash menu : pleine largeur
Mobile (<480px)
- AI Panel : bottom sheet
- Bubble menu : repositionné en bas d'écran
- Top bar : simplifiée (icÎnes uniquement)
- Quick insert â : plus grand (32px) pour le toucher
â¡ Raccourcis clavier
| Raccourci | Action | Zone |
|---|---|---|
/ |
Slash command menu | 2a |
Ctrl+B |
Bold | 2b |
Ctrl+I |
Italic | 2b |
Ctrl+K |
Insert link | 2b |
Ctrl+Shift+I |
Insert image | 2a |
Ctrl+Shift+P |
Insert PDF | 2a |
Ctrl+J |
Toggle AI Panel | 4 |
Ctrl+Shift+K |
AI quick action | 2b |
Ctrl+P |
Quick open / Command palette | â |
Ctrl+S |
Force save | 1 |
Ctrl+/ |
Show all shortcuts | â |
𧪠Prochaines étapes
- Mockup HTML interactif â Créer un prototype statique pour valider le layout
- POC Tiptap â Implémenter les zones 1, 2a, 2b dans un projet test
- User testing â Faire tester le prototype pour recueillir du feedback
- Implémentation progressive :
- Sprint 1 : Zone 1 (Top bar) + Zone 2a (Slash menu)
- Sprint 2 : Zone 2b (Bubble menu) + Zone 3 (Quick insert)
- Sprint 3 : Zone 4 (AI Panel) + Zone 5 (Drag & drop)
- Intégration IA â Brancher le backend AI existant (
backend/ai_routes.py) au panel et au bubble menu